打开和插入多个
好的,第一次海报,长期潜伏者,超基本的Lisp程序技能。目前正在定义点(布局空间的中心)插入大量外部参照。
外部参照名称非常传统,即X-MC10 XS1。dwg,下一个是X-MC10 XS2。图纸。。。。。所以每个文件都是前一个+1
我已将布局名称设置为1、2、3。。。。。x
我有一个lisp,基本上做我想要的,除了我不想添加一个额外的行到lisp每次我需要改变一些东西等。
这是我的Lisp程序(我不知道如何在论坛上写得特别)
(defun c:运行()
(setvar“ctab”“1”)
(命令“-layer”SET“0”)
(命令“-XREF”“OVERLAY”“扩展文件路径\\X-MC10 XS1.dwg”“428.561326.886,0”“1”“1”“0”)
(setvar“ctab”“2”)
(命令“-XREF”“OVERLAY”“扩展文件路径\\X-MC10 XS2.dwg”“428.561326.886,0”“1”“1”“0”)
(setvar“ctab”“3”)
(命令“-XREF”“OVERLAY”“扩展文件路径\\X-MC10 XS3.dwg”“428.561326.886,0”“1”“1”“0”)
(setvar“ctab”“4”)
(命令“-XREF”“OVERLAY”“扩展文件路径\\X-MC10 XS4.dwg”“428.561326.886,0”“1”“1”“0”)
(setvar“ctab”“5”)
(命令“-XREF”“OVERLAY”“扩展文件路径\\X-MC10 XS5.dwg”“428.561326.886,0”“1”“1”“0”)
所以你明白了。我只想写一些表达式,我可以定义有X个布局,然后lisp将每个对应的图形外部参照到每个对应的布局中。
如果我没有正确地澄清这一点,我很抱歉。 采取另一种方法,只需读取包含外部参照名称列表的文本文件。未测试。
(defun xreflay ( / x fname)
(setq oldlay (getvar "clayer"))
(setvar "clayer" "0")
(setq x 1)
(setq fname (open "c:\\temp\\mydwglist.txt" "r"))
(while (setq dwgname (read-line fname))
(setvar "ctab" (itoa x))
(COMMAND "-XREF" "OVERLAY" dwgname "428.561,326.886,0" 1 1 0)
(setq x (+ x 1))
)
(close fname)
(setvar "clayer" layold)
(princ)
)
(xreflay)
EXTENDED FILE PATH\\X-MC10 XS1.dwg
EXTENDED FILE PATH\\X-MC10 XS2.dwg
EXTENDED FILE PATH\\X-MC10 XS3.dwg
嘿伙计,
我已经复制了代码并尝试运行它,但它返回了一个“错误:错误的参数类型:stringp 1”,但我不知道这意味着什么。 尝试
改变:
(setvar "ctab" (atof x))
收件人:
(setvar "ctab" (itoa x)) 好的,这解决了stringp 1错误。但是现在它告诉我“\\X-MC10 XS1.dwg”不是有效的文件名*无效*;错误:功能已取消“
在错误报告中,它告诉我,它的文件路径与我原来的lisp完全相同,但不适用于较短的智能版本 我成功了!
谢谢BIGAL和abra!问题是如何将我的文件路径复制到文本文件中。我刚把“\\”换成“/”,看起来已经成功了,突然所有的画都好了!我附上了完整的代码,任何人谁需要做类似的事情在未来。
快速提问,如何将其转换为defun c:type lisp?因为我试着把c:blahblah放在那里,但它仍然在appload上自动运行,我宁愿把它作为命令输入类型lisp*编辑-我是一个面条。从底部删除(xreflay)将其固定*
(defun xreflay ( / x fname)
(setq oldlay (getvar "clayer"))
(setvar "clayer" "0")
(setq x 1)
(setq fname (open "G:...\\LISPS AND SCRIPTS\\0_2 XSDRAWINGLIST.txt" "r"))
(while (setq dwgname (read-line fname))
(setvar "ctab" (itoa x))
(COMMAND "-XREF" "OVERLAY" dwgname "428.561,326.886,0" 1 1 0)
(setq x (+ x 1))
)
(close fname)
(setvar "clayer" layold)
(princ)
)
(xreflay) 凉的
更改:
(defun xreflay ( / x fname)
到
(defun c:xreflay ( / x fname)
并删除
(xreflay) 谢谢Abr CAD abra很抱歉ITOA我从头顶输入了一些东西,在写作时无法测试。
一切都很好 是的,你们两个真的让我的生活变得更轻松了哈哈,你们中有谁知道写LISP的好工具吗?一、 例如,xyz是否使用abc来定义?我从未在学校学习过编程等课程,所以我对语言本身的知识非常有限。我一直在拆开其他的Lisp程序,看看它们是如何工作的,但最终我觉得自己就像一个13世纪的医生在人们的脑袋上钻洞!
页:
[1]
2