xspacex 发表于 2022-7-6 12:09:57

将更改外部参照层的Lisp

大家好,
 
我正在研究编写一个lisp例程,该例程将允许我选择一个外部参照,也可能选择多个外部参照,然后我将能够更改外部参照中所有图层的颜色。
我的问题是,如果某些外部参照图层是bycolor,我将如何使用从选择中提取的外部参照名称将这些图层更改为bylayer??
 
 
谢谢

xspacex 发表于 2022-7-6 12:19:36

下面是我遇到麻烦的部分。。。
假设将byblock图层替换为bylayer,但它不起作用。
如有任何建议,我们将不胜感激。
 
 
(setq newclr(cons 62 256))
(setq xrefname(entget(tblobjname“block”(cdr(assoc 2(entget(car ent)ЮЮ)Ю)))))
(setq xrefdata(entget xrefname))
(setq oldclr(assoc 62 xrefdata))
(if(assoc 62 xrefdata)
(setq xrefent(subst newclr oldclr xrefdata))
(entmod xrefent)
)

VVA 发表于 2022-7-6 12:24:26

ColorX-更改图形所有对象的颜色。所有层解锁和解冻
颜色外部参照仅在当前会话中更改颜色外部参照。所有层解锁和解冻
ColorXL-更改图形所有对象的颜色。锁定层和冻结层上的对象将被忽略
颜色外部参照仅在当前会话中更改颜色外部参照。锁定层和冻结层上的对象将被忽略
 
COLORXLAY-更改外部参照层的颜色

xspacex 发表于 2022-7-6 12:28:24

你好,VVA,
 
谢谢你的回复,并张贴这些链接。然而,旧帖子中的lisp例程并没有达到我想要的效果;通常,它们会将外部参照图层更改为特定颜色。。。
我试图实现的是,基本上能够将强制使用颜色的外部参照层更改为“bylayer”。
 
再次感谢。

xspacex 发表于 2022-7-6 12:33:40

所以我正在取得一些进展,但仍然没有取得进展。。。
如果将外部参照附着到图形,我可以将具有强制颜色的直线、圆弧、圆和数据文字更改为“bylayer”,但是,如果外部参照具有具有强制颜色的PLINE、HATCH、椭圆或多行文字,我无法将其更改为“bylayer”。我的问题是,为什么我的代码不适用于所有内容,而只适用于直线、DTEXT、圆和圆弧??
 
谢谢
 
(setq newclr(cons 62 256))
(while(setq blkent(tblnext“block”(null blkent)))
(setq blkname(cdr(assoc-2 blkent)))
(而blkname
(entmod(list(cons-1 blkname)newclr))
(setq blkname(entnext blkname)))

VVA 发表于 2022-7-6 12:40:29

试试看

(setq newclr (cons 62 256))
(while (setq blkent (tblnext "block" (null blkent)))
(setq blkname (cdr (assoc -2 blkent)))
(while blkname
   (entmod
   (if (assoc 62 (entget blkname))
       (subst newclr (assoc 62 (entget blkname)) (entget blkname))
       (append (entget blkname) (list newclr))
   ) ;_ end of if
   ) ;_ end of entmod
   (setq blkname (entnext blkname))
) ;_ end of while
) ;_ end of while
(command "_regenall")

xspacex 发表于 2022-7-6 12:47:40

你好,VVA,
 
不幸的是,我仍然得到同样的结果。该代码将线、弧、DTEXT、圆从强制颜色更改为bylayer,但不会更改其他颜色,如PLINE、MTEXT。。。还有其他建议吗?
 
谢谢

tzframpton 发表于 2022-7-6 12:50:21

可以打开外部参照并使用SETBYLAYER,然后保存吗?

xspacex 发表于 2022-7-6 12:57:18

setbylayer将花费太长时间。我可以打开外部参照,打开图层管理器,选择所有图层,然后更改为“bylayer”。每个项目都会有多个外部参照,因此我试图避免绘图者打开每个外部参照并将图层更改为“bylayer”。此外,每次我们收到架构师的更新时,都必须重复打开外部参照并将颜色更改为“bylayer”的过程。

xspacex 发表于 2022-7-6 13:01:37

关于这个问题,我有一个有趣的更新。VVA发布的代码在MEP 2008中很有魅力,但在MEP 2010中不起作用。不同的是,在MEP 2010中,它只会将强制为颜色的线和圆更改为bylayer…
 
在同一主题上,如果我使用ENTSEL选择外部参照图元(例如直线、多行线、多行文字…),并使用entmod替换(cons 62 256),则会发生与上述相同的情况。它在2008年完美地工作,但在2010年它将只适用于直线和圆…
 
有没有关于为什么会发生这种情况的总体想法??
页: [1] 2
查看完整版本: 将更改外部参照层的Lisp