这篇文章的灵感来自Alanjt,他亲切地提醒我DOSLib的有用性,我之前已经忘记和/或忽略了它。
下面是我制作的一个弹出菜单示例(多亏了Alan的kick start),其中包含一些开发人员工具:
- (defun c:` (/ *error* lst opt oldCmdecho)
- ;; © RenderMan, 2011, CADTutor.net
- ;; Inspired by Alan J. Thompson
- ;; Error handler
- (defun *error* (msg)
- (cond ((not msg)) ; Normal exit
- ((member msg '("Function cancelled" "quit / exit abort"))) ; <esc> or (quit)
- ((princ (strcat "\n** Error: " msg " ** ")))) ; Fatal error, display it
- (and oldCmdecho (setvar 'cmdecho oldCmdecho))
- (princ))
- ;; Main code
- (if (setq opt
- (dos_popupmenu
- (setq lst '("DUMP | Dump Object"
- "DUMPDOC | Dump Active Document"
- "DUMPLAY | Dump Layer" ""
- "BATT | List Block Attributes"
- "ELS | List Entity Data" ""
- "Load ACAD.lsp" "Load ACADDOC.lsp" ""
- "System Variable Editor" "" "Visual LISP IDE"
- "" "Visual Basic for Applications IDE" "" "Visual Basic 2010 Express"
- "Visual C++ 2010 Express" "Visual C# 2010 Express" ))
- (mapcar (function (lambda (x)
- (if (eq "" x)
- 1
- 0)))
- lst)))
- (progn
- (and (setq oldCmdecho (getvar 'cmdecho)) (setvar 'cmdecho 0))
- (cond ((= 0 opt)
- (princ "\rDUMP OBJECT ")
- (c:DUMP))
- ((= 1 opt)
- (princ "\rDUMP ACTIVE DOCUEMENT")
- (c:DUMPDOC))
- ((= 2 opt)
- (princ "\rDUMP LAYER ")
- (C:DUMPLAY))
- ((= 3 opt)
- (princ "\rLIST BLOCK ATTRIBUTES ")
- (c:BATT))
- ((= 4 opt)
- (princ "\rLIST ENTITY DATA ")
- (c:ELS))
- ((= 5 opt)
- (load "acad.lsp"))
- ((= 6 opt)
- (load "acaddoc.lsp"))
- ((= 7 opt)
- (princ "\rSYSTEM VARIABLE EDITOR ")
- (command "._sysvdlg"))
- ((= 8 opt)
- (princ "\rVLIDE ")
- (c:VLIDE))
- ((= 9 opt)
- (princ "\rVBAIDE ")
- (command "vbaide"))
- ((= 10 opt)
- (princ "\rSTART: VISUAL BASIC 2010 EXPRESS ")
- (command "start" "vbexpress.exe"))
- ((= 11 opt)
- (princ "\rSTART: VISUAL C++ 2010 EXPRESS ")
- (command "start" "VCExpress.exe"))
- ((= 12 opt)
- (princ "\rSTART: VISUAL C# 2010 EXPRESS ")
- (command "start" "VCSExpress.exe")))
- (setvar 'cmdecho oldCmdecho)))
- (princ))
注-不包括子功能。
屏幕截图:
无论我发多少帖子,总有更多的东西需要学习——这也是我喜欢成为CADTutor会员的众多原因之一!
希望这能帮助你们中的一些人,就像它帮助我一样。
干杯 |