协会62
如何将(62.30)插入实体dxf组码定义中,其中未列出assoc 62(颜色bylayer)?我用entmod函数尝试了cons和append,但都没用。通常,我会将“subst”与“entmod”函数一起使用,但在这种情况下,我不知道该怎么做。有人知道吗?
谢谢 也许 吧:
(附加elst’(62.30))
-大卫 大卫,我已经试过了。它将元素(62.30)作为组列表的第一个元素,并且不会修改实体。”entmod'返回nil。 正如大卫所说。
例如
(setq s (car (entsel)))
(entmake (append (entget s) '((62 . 30))))
谢谢塔瓦。但是,这会返回一个错误:
错误:错误的参数类型:lentyp nil 这很奇怪。
你必须把代码添加到另一个例程中,对吗?
你想改变颜色的物体是什么? 仅限通过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 8se) se)))
)
)
)
(t
(alert
"Polylines colour has already been changed
Run W3 to return colours to their original state"
)
)
)
(princ)
) 您是否在提示器上试用过塔瓦的代码,或者您是否将其包含在自己的代码中?在最后一种情况下,您可能希望将其发布到此处以进行进一步调试。
对Tharwat示例的一个观察是,它不会修改所选实体,而是实际创建其副本。要修改实体的特征,请使用ENTMOD而不是ENTMAKE。 考虑以下代码:
(defun c:w2 ( / c co e i l s )
(if (setq co 30) ; (acad_colordlg 1 nil))
(if polylinelist-pm
(alert "Polylines colour has already been changed.\nRun W3 to return colours to their original state")
(if (setq s (ssget "_X" '((0 . "LWPOLYLINE"))))
(repeat (setq i (sslength s))
(setq e (ssname s (setq i (1- i)))
l (entget e)
)
(if (setq c (assoc 62 l))
(entmod (subst (cons 62 co) c l))
(entmod (append l (list (cons 62 co))))
)
(setq polylinelist-pm (cons (cons e (cond ((cdr c)) (256))) polylinelist-pm))
)
(princ "\nNo LWPolylines found in drawing.")
)
)
)
(princ)
) 谢谢你,李。它工作得很好,我现在可以看到诀窍了。将多段线列表添加到(list(cons 62 co)),将(62.30)放在末尾。
太简单了!
再次感谢李和大家。
页:
[1]
2