仅限通过ssget函数过滤的多段线。当我可以替换现有的assoc 62时,效果很好,但如果颜色是bylayer,则assoc 62不存在。所以,我需要把它放进去,给所有的多段线分配颜色30。
这是我做了一些可能违法的事情的代码。我用assoc 8代替图层,用assoc 62代替颜色。它起作用了。“entmod”重建实体,记住assoc 8并将(62.30)添加到正确的位置。但是,正如我所说,这可能是一次“非法行动”。我只是想知道其他人如何处理实体定义组代码中缺少assoc 62的问题。
谢谢
- (defun c:w2 (/ c co cp ecl se sl sn ss)
- (setq co 30);(getint "\n Colour number for all polylines: "))
- (cond
- ((= polylinelist-pm nil)
- (setq ss (ssget "_X" '((0 . "LWPOLYLINE")))
- sl (sslength ss)
- c 0
- )
- (repeat sl
- (setq sn (ssname ss c)
- se (entget sn)
- c (1+ c)
- )
- (if (assoc 62 se)
- (setq cp (cdr (assoc 62 se)))
- (setq cp 256)
- )
- (setq ecl (cons sn cp)
- polylinelist-pm (cons ecl polylinelist-pm)
- )
- (if (assoc 62 se)
- (setq se (entmod (subst (cons 62 co)(assoc 62 se) se)))
- (setq se (entmod (subst (cons 62 co)(assoc 8 se) se)))
- )
- )
- )
- (t
- (alert
- "Polylines colour has already been changed
- Run W3 to return colours to their original state"
- )
- )
- )
- (princ)
- )
|