初级问题
大家好,嗯,由于AlanJT的温和鼓励,我正在潜入编写自己的lisp例程的世界。首先,我已经阅读了(并且部分理解)这个网站上发布的LISP教程。我有几个新手快速提问:
1.您是否应该剪切并粘贴要在Acad20xx中使用的lisp例程。文档文件,以便在每次启动新图形时加载,还是应该逐个加载?
如果是后者。。。你能把所有的例程组合成一个大的lisp文件,这样你只需要加载一次吗?
3.我已经阅读了教程,但我对何时使用仍有点模糊:
(defun拉线(/pntl pnt2)
与之相反:
(defun C:抽绳(/pntl pnt2)
4.2008年运行的lisp是否应在AutoCAD 2010和2011中运行?
任何帮助都将不胜感激。。。如果我把这篇文章贴错了论坛,我很抱歉。
M 不应编辑Acad20xx。lsp。不要将其与阿卡多克混淆。lsp
这是两个不同的文件。你会想要创建一个阿卡多克。lsp 嗯,我和你的关系不远,但我想我可以回答你的问题。
1、最佳做法是不使用ACAD20??。lsp文件,因为这在技术上属于ACAD,他们可以随意覆盖它,此外,每次你得到一个新版本,你必须迁移去年到今年。不过,很多人确实使用ACADyear文件。
阿卡多克。LSP文件是专用于用户的,不应被覆盖,并且无论您使用的是什么版本都保持不变。
2.是的,您可以将多个LISP附加到ACADDOC中。lsp文件(一旦它们工作!)每次打开新图形时,CAD都会加载它们。
3.LISP通常向前兼容。有时会添加新命令,因此如果使用2008年不可用的2010命令,LISP将存在向后兼容问题。
4.我认为区别在于defun C:允许在命令行从CAD调用函数。取消。。。函数只能从中定义的LISP中调用。
祝你更好地了解LISP,欢迎来到论坛。
格伦
为了避免兼容性问题,建议根据实体的关联列表而不是使用命令语句来构建实体。
关于向后兼容性,下面两行代码都在工作(TEXT命令的提示会随着时间的推移而变化):
(command "_TEXT" "_J" "_MC" '(0.0 0.0) 5.0 0 "Hello World!")
(command "_TEXT" "_MC" '(0.0 0.0) 5.0 0 "Hello World!")
这是关联列表方法:
(entmake (list '(0 . "TEXT")
(cons '10 '(0.0 0.0 0.0))
(cons '11 '(0.0 0.0 0.0))
(cons '1 "Hello World!")
'(40 . 5.0)
'(72 . 1)
'(73 . 2)))
当做
最好的方法是编写参数可变的函数IMHO
像这样方便的东西
(你可以在上面写上类似的内容,以便输入)
;;author unknown
(defun text-draw (txt pnt height rotation justification)
(if (null pnt)(command "_.-TEXT" "" txt)
(if (= (cdr (assoc 40 (tblsearch "STYLE" (getvar "TEXTSTYLE"))))
0.0
)
(progn
(if justification
(command "_.-TEXT" "_J" justification "_none" pnt height rotation txt)
(command "_.-TEXT" "_none" pnt height rotation txt)
)
)
(progn
(if justification
(command "_.-TEXT" "_J" justification "_none" pnt rotation txt)
(command "_.-TEXT" "_none" pnt rotation txt)
)
)
)
)
(entlast)
)
~'J'~
页:
[1]