我已经在下面这段代码的最新版本中修复了背景色问题。我唯一要解决的问题是为什么它不能处理动态块。有没有其他方法可以调用块内动态的图案填充?
编辑
你说得对,这是因为动态块内的图案填充设置为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))))
- [color="red"] (if (and (= "08_Proposed Data" (vla-get-layer blk))
- (= :vlax-false (vla-get-isxref blk))
- )[/color]
- (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
|