乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 85|回复: 17

[编程交流] DOSLib |开发者工具Pop

[复制链接]

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 09:25:00 | 显示全部楼层 |阅读模式
这篇文章的灵感来自Alanjt,他亲切地提醒我DOSLib的有用性,我之前已经忘记和/或忽略了它。
 
下面是我制作的一个弹出菜单示例(多亏了Alan的kick start),其中包含一些开发人员工具:
 
  1. (defun c:`  (/ *error* lst opt oldCmdecho)
  2. ;; © RenderMan, 2011, CADTutor.net
  3. ;; Inspired by Alan J. Thompson
  4. ;; Error handler
  5. (defun *error*  (msg)
  6.    (cond ((not msg))                                                   ; Normal exit
  7.          ((member msg '("Function cancelled" "quit / exit abort")))    ; <esc> or (quit)
  8.          ((princ (strcat "\n** Error: " msg " ** "))))                 ; Fatal error, display it
  9.    (and oldCmdecho (setvar 'cmdecho oldCmdecho))
  10.    (princ))
  11. ;; Main code
  12. (if (setq opt
  13.             (dos_popupmenu
  14.               (setq lst '("DUMP        | Dump Object"
  15.                           "DUMPDOC | Dump Active Document"
  16.                           "DUMPLAY  | Dump Layer" ""
  17.                           "BATT         | List Block Attributes"
  18.                           "ELS            | List Entity Data" ""
  19.                           "Load ACAD.lsp" "Load ACADDOC.lsp" ""
  20.                           "System Variable Editor" "" "Visual LISP IDE"
  21.                           "" "Visual Basic for Applications IDE" "" "Visual Basic 2010 Express"
  22.                           "Visual C++ 2010 Express" "Visual C# 2010 Express" ))
  23.               (mapcar (function (lambda (x)
  24.                                   (if (eq "" x)
  25.                                     1
  26.                                     0)))
  27.                       lst)))
  28.    (progn
  29.      (and (setq oldCmdecho (getvar 'cmdecho)) (setvar 'cmdecho 0))
  30.      (cond ((= 0 opt)
  31.             (princ "\rDUMP OBJECT ")
  32.             (c:DUMP))
  33.            ((= 1 opt)
  34.             (princ "\rDUMP ACTIVE DOCUEMENT")
  35.             (c:DUMPDOC))
  36.            ((= 2 opt)
  37.             (princ "\rDUMP LAYER ")
  38.             (C:DUMPLAY))
  39.            ((= 3 opt)
  40.             (princ "\rLIST BLOCK ATTRIBUTES ")
  41.             (c:BATT))
  42.            ((= 4 opt)
  43.             (princ "\rLIST ENTITY DATA ")
  44.             (c:ELS))
  45.            ((= 5 opt)
  46.             (load "acad.lsp"))
  47.            ((= 6 opt)
  48.             (load "acaddoc.lsp"))
  49.            ((= 7 opt)
  50.             (princ "\rSYSTEM VARIABLE EDITOR ")
  51.             (command "._sysvdlg"))
  52.            ((= 8 opt)
  53.             (princ "\rVLIDE ")
  54.             (c:VLIDE))
  55.            ((= 9 opt)
  56.             (princ "\rVBAIDE ")
  57.             (command "vbaide"))
  58.            ((= 10 opt)
  59.             (princ "\rSTART: VISUAL BASIC 2010 EXPRESS ")
  60.             (command "start" "vbexpress.exe"))
  61.            ((= 11 opt)
  62.             (princ "\rSTART: VISUAL C++ 2010 EXPRESS ")
  63.             (command "start" "VCExpress.exe"))
  64.            ((= 12 opt)
  65.             (princ "\rSTART: VISUAL C# 2010 EXPRESS ")
  66.             (command "start" "VCSExpress.exe")))
  67.      (setvar 'cmdecho oldCmdecho)))
  68. (princ))

 
注-不包括子功能。
 
屏幕截图:
102505n21syksxizs217cx.png
 
无论我发多少帖子,总有更多的东西需要学习——这也是我喜欢成为CADTutor会员的众多原因之一!
 
希望这能帮助你们中的一些人,就像它帮助我一样。
 
干杯
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
438
发表于 2022-7-6 09:29:08 | 显示全部楼层
这是我为曲线/轴承工具做的一个。。。
 
这是我开始的一个,但太懒/太忙了(你选),无法添加任何其他工具。它适用于我必须进行竣工调查的随机场合。这很少见,所以更新工具的优先级很低。。。
 
  1. (defun c:ABT (/ foo lst opt)
  2. ;; As-Built Tools
  3. ;; Alan J. Thompson, 05.02.11
  4. (defun foo (lg / lst) (while (< (length lst) lg) (setq lst (cons 0 lst))))
  5. (if (setq opt (dos_popupmenu
  6.                  (append '(" * - * AS-BUILT TOOLS * - * " "")
  7.                          (mapcar (function car)
  8.                                  (setq lst '(("Remove TOP/INV prefixes" . (c:AB_NoTopOrInvLabels))
  9.                                              ("Move Structure label" . (c:AB_MoveLabel))
  10.                                              ("Slope Calculator" . (c:SlopeCalcLabel))
  11.                                             )
  12.                                  )
  13.                          )
  14.                  )
  15.                  (append '(1 1) (foo (length lst)))
  16.                )
  17.      )
  18.    (eval (cdr (nth (1- opt) lst)))
  19. )
  20. (princ)
  21. )
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 09:34:17 | 显示全部楼层
是的,当然!我忘记了eval(因此我重新构建了lst)!!
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
438
发表于 2022-7-6 09:36:32 | 显示全部楼层
别担心。我只是想再举几个例子。我希望我没有踩到任何脚趾。
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 09:41:25 | 显示全部楼层
一点也不。
回复

使用道具 举报

8

主题

50

帖子

42

银币

初来乍到

Rank: 1

铜币
40
发表于 2022-7-6 09:45:26 | 显示全部楼层
不幸的是,带负载无法工作
 
mit load funktioniert das leider nicht公司
 
  1. (defun c:A (/ foo lst opt)
  2. ;; As-Built Tools
  3. ;; Alan J. Thompson, 05.02.11
  4. (defun foo (lg / lst) (while (< (length lst) lg) (setq lst (cons 0 lst))))
  5. (if (setq opt (dos_popupmenu
  6.                  (append '(" * - * ZÄHLER TOOLS * - * " "")
  7.                          (mapcar (function car)
  8.                                  (setq lst '(("Nummer + +0" . ((load"zahl_plus")(c:Zahl_plus)))
  9.                                              ("Nummer - -0" . ((load"zahl_minus")(c:Zahl_minus)))
  10.                                              ("Nummer + 200/1/+" . ((load"nummerhoch")(c:nummerhoch)))
  11.                          ("Nummer - 200/1/-" . ((load"nummerminus")(c:nummerminus)))
  12.                                     )
  13.                                  )
  14.                          )
  15.                  )
  16.                  (append '(1 1) (foo (length lst)))
  17.                )
  18.      )
  19.    (eval (cdr (nth (1- opt) lst)))
  20. )
  21. (princ)
  22. )
回复

使用道具 举报

8

主题

50

帖子

42

银币

初来乍到

Rank: 1

铜币
40
发表于 2022-7-6 09:49:17 | 显示全部楼层
为什么不能使用load命令
 
Warum kann man hier den负载befehl nicht verwenden
 
丹克
 
(mapcar(功能车)(setq lst’((“Nummer++0”。((load“zahl\u plus”)(c:zahl\u plus))(“Nummer--0”。((load“zahl\u负号”)(c:zahl\u负号))(“Nummer+200/1/+”((load“nummerhoch”)(c:nummerhoch))(“Nummer-200/1/-”((load“nummerminus”)(c:nummerminus)))
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 09:53:04 | 显示全部楼层
DOSLib安装了dober吗?
回复

使用道具 举报

8

主题

50

帖子

42

银币

初来乍到

Rank: 1

铜币
40
发表于 2022-7-6 09:53:24 | 显示全部楼层
是的,我有,他不仅要我执行加载命令。
我会在装货之前离开。
 
  1.   (if (setq opt (dos_popupmenu
  2.                  (append '(" * - * ZÄHLER TOOLS * - * " "")
  3.                          (mapcar (function car)
  4.                                  (setq lst '(("Nummer + +0" . ((load "plusnummer.lsp")(c:plusnummer)))
  5.                                              ("Nummer - -0" . ((load "minusnummer.lsp")(c:minusnummer)))
  6.                                              ("Nummer + 200/1/+" . (c:nummerhoch))
  7.                          ("Nummer - 200/1/-" . (c:nummerminus))
  8.                          ("Nummer + 200/+/0" . (c:z3hoch))
  9.                          ("Nummer - 200/-/0" . (c:z3minus))
  10.                                     )
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
438
发表于 2022-7-6 10:00:00 | 显示全部楼层
您有两个选项,可以将调用包装在progn语句中,也可以单独评估每个项。
 
如。
  1. (defun c:A (/ foo lst opt)
  2. ;; Alan J. Thompson, 05.02.11
  3. ;; Modified by: dober
  4. (defun foo (lg / lst) (while (< (length lst) lg) (setq lst (cons 0 lst))))
  5. (if (setq
  6.        opt (dos_popupmenu
  7.              (append
  8.                '(" * - * ZÄHLER TOOLS * - * " "")
  9.                (mapcar (function car)
  10.                        (setq lst '(("Nummer + +0" . (progn (load "zahl_plus") (c:Zahl_plus)))
  11.                                    ("Nummer - -0" . (progn (load "zahl_minus") (c:Zahl_minus)))
  12.                                    ("Nummer + 200/1/+" . (progn (load "nummerhoch") (c:nummerhoch)))
  13.                                    ("Nummer - 200/1/-" . (progn (load "nummerminus") (c:nummerminus)))
  14.                                   )
  15.                        )
  16.                )
  17.              )
  18.              (append '(1 1) (foo (length lst)))
  19.            )
  20.      )
  21.    (eval (cdr (nth (1- opt) lst)))
  22. )
  23. (princ)
  24. )

 

  1. (defun c:A (/ foo lst opt)
  2. ;; Alan J. Thompson, 05.02.11
  3. ;; Modified by: dober
  4. (defun foo (lg / lst) (while (< (length lst) lg) (setq lst (cons 0 lst))))
  5. (if (setq
  6.        opt (dos_popupmenu
  7.              (append
  8.                '(" * - * ZÄHLER TOOLS * - * " "")
  9.                (mapcar (function car)
  10.                        (setq lst '(("Nummer + +0" . ((load "zahl_plus") (c:Zahl_plus)))
  11.                                    ("Nummer - -0" . ((load "zahl_minus") (c:Zahl_minus)))
  12.                                    ("Nummer + 200/1/+" . ((load "nummerhoch") (c:nummerhoch)))
  13.                                    ("Nummer - 200/1/-" . ((load "nummerminus") (c:nummerminus)))
  14.                                   )
  15.                        )
  16.                )
  17.              )
  18.              (append '(1 1) (foo (length lst)))
  19.            )
  20.      )
  21.    (mapcar (function eval) (cdr (nth (1- opt) lst)))
  22. )
  23. (princ)
  24. )
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-7 03:10 , Processed in 1.001069 second(s), 75 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表