编辑
你说得对,这是因为动态块内的图案填充设置为ByBlock layer,而不是08_建议的数据。我不理解为什么/如何在块内指定图案填充层,而不是块本身。层限定符的位置在哪里,以便编辑08_提议的数据层上块内的所有阴影?
我认为从我的观点来看,它应该指定块所在的图层,然后指定其中的图案填充选择,然后指定实体图案填充选择。似乎图层限定符影响的是块内的图案填充,而不是整个块。有什么建议吗?
(defun c:planproposedhatch (/ doc)
(or *colorobject*
(setq *colorobject*
(vla-getinterfaceobject
(vlax-get-acad-object)
(strcat "AutoCAD.AcCmColor." (substr (getvar "acadver") 1 2))
)
)
)
(if
(null (vl-catch-all-error-p (vl-catch-all-apply 'vla-setrgb (list *colorobject* 255 255 255))))
(progn (vlax-for blk (vla-get-blocks (setq doc (vla-get-Activedocument (vlax-get-acad-object))))
(if (= :vlax-false (vla-get-isxref blk))
(vlax-for obj blk
(if (and (vlax-write-enabled-p obj)
(= "08_Proposed Data" (vla-get-layer obj))
(= "AcDbHatch" (vla-get-objectname obj))
(= "SOLID" (strcase (vla-get-patternname obj)))
)
(progn
(vla-setPattern obj acHatchPatternTypePreDefined "ANSI31")
(vla-put-patternscale obj 12)
(vl-catch-all-apply 'vla-put-backgroundcolor (list obj *colorobject*))
)
)
)
)
)
(vla-regen doc acallviewports)
)
)
(vl-load-com)
(princ)
);defun
编辑2
我试着这样做,看看它是否只捕获块和get的layer属性,activex服务器错误“未知名称:layer”
(defun c:planproposedhatch (/ doc)
(or *colorobject*
(setq *colorobject*
(vla-getinterfaceobject
(vlax-get-acad-object)
(strcat "AutoCAD.AcCmColor." (substr (getvar "acadver") 1 2))
)
)
)
(if
(null (vl-catch-all-error-p (vl-catch-all-apply 'vla-setrgb (list *colorobject* 255 255 255))))
(progn
(vlax-for blk
(vla-get-blocks (setq doc (vla-get-Activedocument (vlax-get-acad-object))))
(if (and (= "08_Proposed Data" (vla-get-layer blk))
(= :vlax-false (vla-get-isxref blk))
)
(vlax-for obj blk
(if (and (vlax-write-enabled-p obj)
(= "AcDbHatch" (vla-get-objectname obj))
(= "SOLID" (strcase (vla-get-patternname obj)))
)
(progn
(vla-setPattern obj acHatchPatternTypePreDefined "ANSI31")
(vla-put-patternscale obj 12)
(vl-catch-all-apply 'vla-put-backgroundcolor (list obj *colorobject*))
)
)
)
)
)
(vla-regen doc acallviewports)
)
)
(vl-load-com)
(princ)
);defun
页:
1
[2]