;;;灯管T4
(defun C:T4206()
用户输入T4206执行命令(不带任何参数)以加载并立即运行后续的程序。
(graphscr)
(setvar "cmdecho" 0)
;;;命令行显示关闭
(setq P1(getpoint "n请指定灯管(T4 206.5mm 6W)放置位置:"))
;;;设定一个插入点P1,返回点
(command "-INSERT" "D:/YZ_ZCAD/TK/DGT/T4206.dwg" "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:dz (/ oce1 n1 zn h1 sxh1 p1)
(vl-load-com)
(setq oce1 (getvar "cmdecho"))
(setvar "cmdecho" 0)
(setq ms (vla-get-modelspace
(vla-get-activedocument (vlax-get-acad-object)) 这行代码用于在AutoCAD中获取当前活动文档的对象。它使用了AutoCAD的VLAX(Visual LISP ActiveX)接口,通过vlax-get-acad-object函数获取AutoCAD的应用程序对象,然后使用vla-get-activedocument方法获取当前活动文档的对象。这样我们就可以对当前文档进行各种操作,如访问其属性、修改对象等。这一行代码在AutoCAD的LISP编程中非常常见,并且在处理文档对象时非常
)
)
(if qz
()
(setq qz "")
)
(if hz
()
(setq hz "")
)
(initget "c")
(setq nqz (getstring (strcat "n请输入前缀/c(为空): " )))
(cond
((= nqz "c") (setq qz ""))
(T (if (/= nqz "")(setq qz nqz)))
)
(setq hz "")
(if (not (setq n1 (getint "n请输入起始顺序号 : ")))
(setq n1 1)
)
(setq zn 1)
(if (not (setq h1 (getreal "n请指定文字高度 : ")))
(setq h1 2.5)
)
(setq sxh1 (strcat qz (itoa n1) hz))是一个常见的LISP表达式。在这个表达式中,qz、n1和hz是变量,通过拼接它们的值来创建一个新的字符串sxh1。 我将为您解释一下这个表达式的具体意思。 - qz是表示前缀的变量,它存储了一个字符串,例如"前缀"。 - n1是一个整数变量,它存储了一个数字值,例如10
(setq p1 (getpoint "n请指定插入点: "))
(while (/= p1 nil)
(setq p1 (vlax-3d-point p1))
(setq txt (vla-addtext
ms
sxh1
p1
h1
)
)
(setq
n1 (+ n1 zn)
sxh1 (strcat qz (itoa n1) hz)
p1 (getpoint "n请指定下一插入点: ")
)
)
(setvar "cmdecho" oce1)
(vlax-release-object ms)
(princ)
)
改为如下即可:
(defun c:sdd ( dwg )
(setq dwg (getfiled "选择路径和文件名" "" "Dwg" 1))
(if (wcmatch dwg "* ####-##-## ##:##.dwg")
(setq dwg (substr dwg 1 (vl-string-search " " dwg)))
给定一个字符串变量`dwg`,我们可以使用`(setq dwg (substr dwg 1 (- (strlen dwg) 4)))`来对其进行处理。这行代码的作用是将`dwg`字符串的最后四个字符截取掉,并将结果重新赋值给`dwg`变量。这样做的目的可能是为了去除文件名或其他标识符中的文件扩展名。通过这行代码,我们可以实现对`dwg`字符串的修改,使其符合特定的要求或格式。
)
(setq dwg (strcat dwg " " (menucmd "M=$(edtime,$(getvar,date),YYYY-MO-DD HH:MM)") ".dwg"))
(command "_.saveas" "" dwg)
(princ)
)
以上是如何进行CAD Autolisp的二次开发?的详细内容。更多信息请关注PHP中文网其他相关文章!