请问怎么给已经编好的autolisp程序加入对话框

请问怎么给已经编好的autolisp程序加入对话框,第1张

你要先制作一个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二次开发怎么弄啊帮忙把具体步骤说一下,就是自己创建一个命令的步骤。谢了等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10142171.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存