karrotbear 发表于 2022-7-5 17:13:47

打开和插入多个

好的,第一次海报,长期潜伏者,超基本的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将每个对应的图形外部参照到每个对应的布局中。
 
如果我没有正确地澄清这一点,我很抱歉。

BIGAL 发表于 2022-7-5 17:21:37

采取另一种方法,只需读取包含外部参照名称列表的文本文件。未测试。

(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

karrotbear 发表于 2022-7-5 17:24:33

嘿伙计,
 
我已经复制了代码并尝试运行它,但它返回了一个“错误:错误的参数类型:stringp 1”,但我不知道这意味着什么。

abra-CAD-abra 发表于 2022-7-5 17:30:29

尝试
 
改变:
(setvar "ctab" (atof x))
 
收件人:
(setvar "ctab" (itoa x))

karrotbear 发表于 2022-7-5 17:34:09

好的,这解决了stringp 1错误。但是现在它告诉我“\\X-MC10 XS1.dwg”不是有效的文件名*无效*;错误:功能已取消“
 
在错误报告中,它告诉我,它的文件路径与我原来的lisp完全相同,但不适用于较短的智能版本

karrotbear 发表于 2022-7-5 17:40:06

我成功了!
 
谢谢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)

abra-CAD-abra 发表于 2022-7-5 17:48:04

凉的
 
更改:
 
(defun xreflay ( / x fname)
 

 
(defun c:xreflay ( / x fname)
 
并删除
 
(xreflay)

BIGAL 发表于 2022-7-5 17:49:25

谢谢Abr CAD abra很抱歉ITOA我从头顶输入了一些东西,在写作时无法测试。

abra-CAD-abra 发表于 2022-7-5 17:58:38

 
一切都很好

karrotbear 发表于 2022-7-5 18:01:42

是的,你们两个真的让我的生活变得更轻松了哈哈,你们中有谁知道写LISP的好工具吗?一、 例如,xyz是否使用abc来定义?我从未在学校学习过编程等课程,所以我对语言本身的知识非常有限。我一直在拆开其他的Lisp程序,看看它们是如何工作的,但最终我觉得自己就像一个13世纪的医生在人们的脑袋上钻洞!
页: [1] 2
查看完整版本: 打开和插入多个