你要先制作一个DCL对话框,然后在LISP里面加载对话框,判断用户点的是否“确定”,然后读取数据,继续下一步处理。
下面是LISP对dydcl数据的读取:
(DEFUN get_dyss_TITLE( / )
(SETQ lltype (GET_TILE "lltype") ;电缆型号
size1 (atoi (GET_TILE "size")) ;电缆型号
COSFI (atof (GET_TILE "COSFI")) ;功率因素
PE (atof (GET_TILE "PE")) ;有功功率
long (atof (GET_TILE "long")) ;电缆长度
)
)
(defun c:dys( / )
(SETQ DCL_ID (LOAD_DIALOG "dysdcl"))
(NEW_DIALOG "dys" DCL_ID)
(if (/= nil lltype) (SET_TILE "lltype" lltype))
(if (/= nil size1) (SET_TILE "size" (itoa size1)))
(if (/= nil COSFI) (SET_TILE "COSFI" (rtos COSFI 2 2)))
(if (/= nil PE) (SET_TILE "PE" (rtos PE 2 2)))
(if (/= nil LONG) (SET_TILE "long" (rtos LONG 2 3)))
(ACTION_TILE "accept" "(get_dyss_TITLE)(DONE_DIALOG)")
(START_DIALOG) (UNLOAD_DIALOG DCL_ID)
;继续对获得的数据处理
(princ)
)
假设你上面的程序没有错误(不考虑程序是否有错误)的情况下。把你上面的代码保存成一个文本格式的文件。名字可以用jkxlsp等。然后在cad中加载这个程序:一般可以使用appload 命令,会出现对话框,点“文件”,找到你硬盘上的Lisp文件后,点击“加载”即可。 或者用工具菜单中的加载应用程序功能。还可以把LSP文件直接拖到ACAD的绘图窗口。完成加载后。在命令行里输入“jkx”命令就可以运行程序了。程序会提示输入中心点,半径什么的,根据情况输入就行了。
根据lz留言补充:新建一个文本文档,打开文档,把代码粘贴到文件里,保存。然后把扩展名由txt改成lsp。就行了。(如果看不见扩展名,到windows的文件夹选项中把显示扩展名打开)
;;;灯管T4
(defun C:T4206()
;;;用户输入T4206执行命令(不带任何参数,如果没有此行,加载后立即运行以后的程式)
(graphscr)
(setvar "cmdecho" 0)
;;;命令行显示关闭
(setq P1(getpoint "\n请指定灯管(T4 2065mm 6W)放置位置:"))
;;;设定一个插入点P1,返回点
(command "-INSERT" "D:/YZ_ZCAD/TK/DGT/T4206dwg" "S" "1" P1 "0")
;;;执行CAD标准命令,前面加“-”(此问题参考CAD命令),为命令行执行命令,不使用对话框
;;;在程式执行时,不能便用对话框,在命令前加“-”或用变量FILEDIA控制;少数用其它方式控制
(setvar "cmdecho" 1)
;;;命令行显示打开
(princ)
;;;结束语
)
;;;将以上文字放到LISP里面以任何英文名命名保存
;;;在保存以后,在CAD中用AP加载文件,
;;;执行T4206命令执行插入命令,(确;认文件的存在)
我个人认为VBA开发要比LISP更为方便,LISP会一点就好了,不必学太深,LISP对话框开发(DCL)比VBA复杂得多,但要用部分LISP函数用于命令执行VBA的函数在AutoCAD帮助里面有开发人员帮助,里面很多东西都很详细,那些编书人好多东西也是直接用里面的东西,你不妨去看一下。
源程序如下:
(defun c:box (/ p p1 p2 a)
(setq p (getpoint "Left & Bottom point: ")
a (getdist p "A=")
)
(command "PLINE" p (setq p1 (polar p 0 a)) (setq p2 (polar p1 (/ pi 2) a)) (polar p2 (- pi) a) "C")
)
(defun c:tes ( / i n p1 p2 r r1 r2 r3 r4 ss1 ss2)
(vl-load-com)
(if (and
(setq p1 (getpoint "\n请选择同心圆圆心"))
(setq r1 (s180828a p1 "\n请输入第一个同心圆半径:"))
(setq r2 (s180828a p1 "\n请输入第二个同心圆半径:"))
(setq r3 (s180828a p1 "\n请输入第三个同心圆半径:"))
(setq p2 (polar p1 0 (setq r4 (cadr (setq ss1 (vl-sort (list r1 r2 r3) '<))))))
(setq r (s180828a p2 "\n请输入小圆半径"))
(setq n (s180828s))
)
(progn
(setq ss2 '())
(while (setq r1 (car ss1))
(setq ss1 (cdr ss1))
(entmake (list '(0 "CIRCLE") (cons 10 p1) (cons 40 r1)))
(setq ss2 (cons (entlast) ss2))
);while
(setq i -10)
(while (< (setq i (1+ i)) n)
(setq p2 (polar p1 (/ ( pi i 2) n) r4))
(entmake (list '(0 "CIRCLE") (cons 10 p2) (cons 40 r)))
);while
)
)
(princ)
);autolisp程序,复制到记事本,以lsp为后缀命名,AutoCAD命令appload加载。
;输入圆半径
(defun s180828a (p1 str1 / p1 str1)
(initget 6)
(getdist p1 str1)
)
;输入小圆数量
(defun s180828s ()
(initget 6)
(getint "\n请输入小圆数量:")
)
首先打开AutoCAD
2
在菜单栏点击工具。
3
选择AutoLISP--->Visual LISP编辑器
4
LISP的 *** 作介面就出现了,点击新建。
5
输入的介面已经出现,现在可在编辑器内输入你的程序。
END
方法/步骤2
1
也可以用命令启用编辑器,在命令栏输入vlide。
2
可得到相同效果。
以上就是关于请问怎么给已经编好的autolisp程序加入对话框全部的内容,包括:请问怎么给已经编好的autolisp程序加入对话框、请教AutoLISP二次开发怎么使用、请问CAD autolisp二次开发怎么弄啊帮忙把具体步骤说一下,就是自己创建一个命令的步骤。谢了等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)