明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4494|回复: 13

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

[复制链接]
发表于 2013-9-6 10:43:42 | 显示全部楼层 |阅读模式
问题比较长,感谢有耐心看完的朋友,更感谢帮忙的朋友。

目标,要编写一段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
发表于 2013-9-6 10:53:49 | 显示全部楼层
Script 内 直接用 Layer 命令取代 Call Command
另 楼主使用的 CAD version?
 楼主| 发表于 2013-9-6 10:55:53 | 显示全部楼层
感谢回复
我试试layer

AutoCAD2014
其他版本有不同设置吗?
 楼主| 发表于 2013-9-6 11:09:31 | 显示全部楼层
maeofasu 发表于 2013-9-6 10:55
感谢回复
我试试layer

如果用这个(write-line (strcat "Layer off " OffLayerName " ") FP)语句,.SCR完全不执行layer命令。
如果用这个(write-line (strcat "Layer off " OffLayerName "  ") FP)语句,多一个空格,也不行。
发表于 2013-9-6 11:42:09 | 显示全部楼层
尚未启用 2014 的版本 ...

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

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

请自行调试
 楼主| 发表于 2013-9-6 11:51:27 | 显示全部楼层
Andyhon 发表于 2013-9-6 11:42
尚未启用 2014 的版本 ...

SCR

不能用
OffLayerName后面如果留一个空格就不执行,两个空格就重复前面的layer命令了
各种方法都是这样的结果。
请问有没有其他的方式终结layer命令的循环?
发表于 2013-9-6 12:39:02 | 显示全部楼层
可否上传 ×××.SCR
 楼主| 发表于 2013-9-6 12:48:02 | 显示全部楼层
献丑了。
附上粗制滥造的程序,麻烦解答一下。
目前输入界面工作正常。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2013-9-6 13:06:39 | 显示全部楼层
是否有一种可能...
关闭现用图层(Clayer)...

另 Layer  接受
"1,2,A,C*"   的万用字元格式
(详情请查 WcMatch 函数)
(又 请参考 Expert 这个系统变量)
 楼主| 发表于 2013-9-6 13:15:45 | 显示全部楼层
不太理解关闭现用图层的目的?

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

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

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

现在的问题是执行完一串layer命令后跳不出来。一旦跳出就直接退出script,需要用resume命令继续执行。这样太难看了。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-18 13:49 , Processed in 0.187938 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表