maeofasu 发表于 2013-9-6 10:43:42

在*.SCR脚本程序中使用-Layer命令的问题。

问题比较长,感谢有耐心看完的朋友,更感谢帮忙的朋友。

目标,要编写一段Autolisp程序自动生成并执行一个*.SCR程序,一一打开一系列的AutoCAD图纸,关闭某些图层。
注:DWGLIST和OffLayerList由主程序生成,测试没有问题。

问题出在-Layer这个命令上。该命令执行完一次图层操作之后就自动重复。即使我在命令末尾加入一个空格也无效。
如果我在(command "-layer" "off" "图层名“ ” ”)之后再加一个空格则自动重复之前的命令。
如果我在(command "-layer" "off" "图层名“ ” ”)之后加入一个(command)则完全跳出Script。
求高人指点该怎么写这段程序。
万分感谢!!!


(defun MAKE_SCRIPT (DWGLIST OffLayerList
                                     / DWGNAME               
                                       FP                       
                                       OffLayerName
                                   )
(setq FP (open "C:\\×××.SCR" "w"))
(write-line ".ZOOM" FP)
(write-line "E" FP)
(foreach DWGNAME DWGLIST
    (write-line ".OPEN" FP)
    (write-line DWGNAME FP)
    (write-line ".ZOOM" FP)
    (write-line "E" FP)
    (Foreach OffLayerName OffLayerList
          (write-line (strcat "(command \"-Layer\" \"off\" \"" OffLayerName "\" \" \")") FP)   
    );;end Foreach
    (write-line ".CLOSE" FP)
    (write-line "Y" FP)
)
(write-line ".DEL" FP)
(write-line "C:\\×××.SCR" FP)
(close FP)
);;end MAKE_SCRIPT

Andyhon 发表于 2013-9-6 10:53:49

Script 内 直接用 Layer 命令取代 Call Command
另 楼主使用的 CAD version?

maeofasu 发表于 2013-9-6 10:55:53

感谢回复
我试试layer

AutoCAD2014
其他版本有不同设置吗?

maeofasu 发表于 2013-9-6 11:09:31

maeofasu 发表于 2013-9-6 10:55 static/image/common/back.gif
感谢回复
我试试layer



如果用这个(write-line (strcat "Layer off " OffLayerName " ") FP)语句,.SCR完全不执行layer命令。
如果用这个(write-line (strcat "Layer off " OffLayerName "") FP)语句,多一个空格,也不行。

Andyhon 发表于 2013-9-6 11:42:09

尚未启用 2014 的版本 ...

SCR
...
Layer off
OffLayerName   ;<===Write-line

... 上留空白列 (= enter 键)

请自行调试

maeofasu 发表于 2013-9-6 11:51:27

Andyhon 发表于 2013-9-6 11:42 static/image/common/back.gif
尚未启用 2014 的版本 ...

SCR


不能用
OffLayerName后面如果留一个空格就不执行,两个空格就重复前面的layer命令了
各种方法都是这样的结果。
请问有没有其他的方式终结layer命令的循环?

Andyhon 发表于 2013-9-6 12:39:02

可否上传 ×××.SCR

maeofasu 发表于 2013-9-6 12:48:02

献丑了。
附上粗制滥造的程序,麻烦解答一下。
目前输入界面工作正常。


Andyhon 发表于 2013-9-6 13:06:39

是否有一种可能...
关闭现用图层(Clayer)...

另 Layer接受
"1,2,A,C*"   的万用字元格式
(详情请查 WcMatch 函数)
(又 请参考 Expert 这个系统变量)

maeofasu 发表于 2013-9-6 13:15:45

不太理解关闭现用图层的目的?

layer命令接受万用字元格式,但是执行完一次之后仍然是处在layer命令中,还是跳不出来啊。。。

Expert变量应该是屏蔽一些确认性的输入吧。layer命令是重复执行,应该跟expert无关吧。不过我可以试试。

整个程序就是要在输入界面读入一串带有+XXXX格式的代码,然后把每个加号及加号后面的字符分离出来作为一个图层的名字,然后逐一打开一系列图纸,把所有带加号的图层关闭,再把之前代码读入的+XXXX图层打开。

现在的问题是执行完一串layer命令后跳不出来。一旦跳出就直接退出script,需要用resume命令继续执行。这样太难看了。。。
页: [1] 2
查看完整版本: 在*.SCR脚本程序中使用-Layer命令的问题。