pixel8er 发表于 2022-7-6 09:10:48

帮助排除LISP到i的故障

大家好
我创建了一个非常简单的LISP例程来:
 
1.将绘图选项卡设置为A0L
2.外部参照A0标题栏线条
3、插入属性文本块
 
...但它不起作用。该例程将绘图选项卡设置为A0L,然后停止。我的LISP知识相当基础,但我不确定是什么阻止了它的工作。我已经在命令行上测试了例程的下一部分,它可以正常工作。
 
有人能指出我做错了什么吗?
 
提前感谢您的帮助
 
当做
保罗
 
;; Type CDA0 to insert the A0 CD Titleblock
;;
(defun c:CDA0 ()
   
   (setvar "cmdecho" 0)
   (setvar "expert" 5)

;;Sets the drawing layout tab to A0L (A0 Landscape)
   (command "ctab" "A0L")

;;Xrefs the A0 titleblock as overlay
   (command "-xref" "Overlay" "C:\Users\P8\Documents\_Library\_ABC\AutoCAD\Templates\Blocks\TB-A0-CD-PL.dwg" "0,0,0" "1" "1" "0")

;;Inserts the A0 titleblock attribute text
   (command "-insert" "C:\Users\P8\Documents\_Library\_ABC\AutoCAD\Templates\Blocks\MAC-TB-A0-CD-PL-ATT.dwg" "0,0,0" "1" "0")

   (setvar "expert" 2)
   (setvar "cmdecho" 1)
(princ)
)

Lee Mac 发表于 2022-7-6 09:25:33

嗨,保罗,
 
首先,阅读本文,了解帖子中的格式化代码。
 
现在,在LISP中,反斜杠是转义字符,因此用于为后续字符赋予另一种含义,例如换行符“\n”或制表符“\t”。要使用文字反斜杠,需要在反斜杠前面加上另一个:
 
还可以进行一些其他改进:
 
2

pixel8er 发表于 2022-7-6 09:26:50

嗨,李,麦克
 
真 的!感谢您的及时和非常详细的答复。这套程序现在与您的精彩添加完美结合。我现在正要去工作,但今晚我有很多关于你的提示和信息的阅读要做,以更好地理解LISP。
 
非常感谢
 
当做
保罗

BIGAL 发表于 2022-7-6 09:37:30

另一种方式“C:/Users/P8/Documents/U Library/ABC/AutoCAD/Templates/Blocks/MAC-TB-A0-CD-PL-ATT.dwg”
 
在unix机器上,斜杠的反斜杠一直存在。相反,斜杠很容易混淆,不过最好使用\\更容易记住的。

pixel8er 发表于 2022-7-6 09:43:54

我可能也需要在Mac上实现这一点。有人知道Mac OS X中的文件路径分隔符是什么吗?是正斜杠“/”还是冒号“:”

SLW210 发表于 2022-7-6 09:49:53

 
请阅读并编辑您的帖子。

Lee Mac 发表于 2022-7-6 09:57:52

 
不客气,保罗。如果你对我的修改有任何进一步的问题,尽管问。

irneb 发表于 2022-7-6 10:10:03

 
实际上,我会使用正斜杠(即使在windows上)。鉴于Mac(OSX)实际上是基于BSD的(BSD是Unix的衍生物,与Linux相同),如果他们使用的不是正向斜杠,我会非常惊讶。。。这就是所有基于Unix的/派生操作系统的用途。现在只有DOS/Windows使用反斜杠。 
坚持使用正斜杠的另一个原因是,如果将代码直接放入宏(在CUI编辑器中),反斜杠突然表示:“暂停以供用户输入”。所以在这种情况下,你必须使用正斜杠。
 
在我看来,出于这两个原因,最好摆脱使用双反斜杠的习惯。如果有一天ACad迁移到Mac/*nix(或下一个版本),您就不需要更改那么多代码,而且您可以轻松地将代码直接复制到宏中,而不用担心出错。

pixel8er 发表于 2022-7-6 10:12:52

SLW210-谢谢你编辑我的帖子,你比我先到。现在已经阅读了指南,以便下次了解程序。
 
是的,这似乎是我研究的共识。正斜杠是最好的选择
页: [1]
查看完整版本: 帮助排除LISP到i的故障