Mezalaja 发表于 2022-7-6 10:51:53

初级问题

大家好,
 
嗯,由于AlanJT的温和鼓励,我正在潜入编写自己的lisp例程的世界。首先,我已经阅读了(并且部分理解)这个网站上发布的LISP教程。我有几个新手快速提问:
 
1.您是否应该剪切并粘贴要在Acad20xx中使用的lisp例程。文档文件,以便在每次启动新图形时加载,还是应该逐个加载?
 
如果是后者。。。你能把所有的例程组合成一个大的lisp文件,这样你只需要加载一次吗?
 
3.我已经阅读了教程,但我对何时使用仍有点模糊:
 
(defun拉线(/pntl pnt2)
 
与之相反:
 
(defun C:抽绳(/pntl pnt2)
 
4.2008年运行的lisp是否应在AutoCAD 2010和2011中运行?
 
任何帮助都将不胜感激。。。如果我把这篇文章贴错了论坛,我很抱歉。
 
M

The Buzzard 发表于 2022-7-6 11:08:21

不应编辑Acad20xx。lsp。不要将其与阿卡多克混淆。lsp
这是两个不同的文件。你会想要创建一个阿卡多克。lsp

Glen Smith 发表于 2022-7-6 11:26:01

嗯,我和你的关系不远,但我想我可以回答你的问题。
 
1、最佳做法是不使用ACAD20??。lsp文件,因为这在技术上属于ACAD,他们可以随意覆盖它,此外,每次你得到一个新版本,你必须迁移去年到今年。不过,很多人确实使用ACADyear文件。
 
阿卡多克。LSP文件是专用于用户的,不应被覆盖,并且无论您使用的是什么版本都保持不变。
 
2.是的,您可以将多个LISP附加到ACADDOC中。lsp文件(一旦它们工作!)每次打开新图形时,CAD都会加载它们。
 
3.LISP通常向前兼容。有时会添加新命令,因此如果使用2008年不可用的2010命令,LISP将存在向后兼容问题。
 
4.我认为区别在于defun C:允许在命令行从CAD调用函数。取消。。。函数只能从中定义的LISP中调用。
 
祝你更好地了解LISP,欢迎来到论坛。
 
格伦

MSasu 发表于 2022-7-6 11:46:21

 
为了避免兼容性问题,建议根据实体的关联列表而不是使用命令语句来构建实体。
 
关于向后兼容性,下面两行代码都在工作(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)))
 
当做

fixo 发表于 2022-7-6 11:53:45

 
最好的方法是编写参数可变的函数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]
查看完整版本: 初级问题