dbx填充求助
想写一个,不打开CAD文件就能填充的程序,东拼西凑但是没有成功,请各位老师帮忙指导一下。不胜感激(defun c:tt ()
(setq *DOC* (vlax-create-object (strcat "ObjectDBX.AxDbDocument." (substr (getvar "ACADVER") 1 2) )))
(vla-open *DOC* "D:\\222.dwg")
(setq gMspace (vla-get-modelSpace (vla-get-activeDocument *DOC*)))
(setq HatchObj (vla-AddHatch gMspace acHatchPatternTypePredefined "SOLID" :vlax-true))
(vlax-for dbx (vla-get-modelspace *DOC*)
(if (= (vla-Get-ObjectName dbx) "AcDbPolyline")
(vlax-safearray-fill
(vlax-make-safearray
vlax-vbobject
(cons 0 (1- (length (list obj))))
)
(list obj)
)
)
)
(vla-saveas *DOC* "D:\\222.dwg")
(vlax-release-object *DOC*)
(princ)
)
本帖最后由 qifeifei 于 2025-12-8 21:13 编辑
推荐下载版本4进行研究
示意图是版本4的;只能达到演示效果
其他的自行修复把;https://i.imgs.ovh/2025/12/08/CQz7sH.gif
(defun c:tt ()
(setq *DOC* (vlax-create-object
(strcat "ObjectDBX.AxDbDocument."
(substr (getvar "ACADVER") 1 2)
)
)
)
(vla-open *DOC* "D:\\222.dwg")
(setq gMspace (vla-get-modelSpace (vla-get-activeDocument *DOC*)))
(setq HatchObj (vla-AddHatch
gMspace
acHatchPatternTypePredefined
"SOLID"
:vlax-true
)
)
(vlax-for dbx (vla-get-modelspace *DOC*)
(if (= (vla-Get-ObjectName dbx) "AcDbPolyline")
(vla-AppendOuterLoop
HatchObj
(vlax-safearray-fill
(vlax-make-safearray vlax-vbobject (cons 0 0))
(list dbx)
)
)
)
)
(vla-saveas *DOC* "D:\\222.dwg")
(vlax-release-object *DOC*)
(princ)
) qifeifei 发表于 2025-12-8 10:42
推荐下载版本4进行研究
示意图是版本4的;只能达到演示效果
其他的自行修复把;
大师通过您的代码,我对dbx有了深刻的认识,代码我也有了比以前更深刻的立即,只是还有一事不明,为什么我这边截图的位置(vla-AppendOuterLoop HatchObj (vlax-make-variant extLoop))无法运行。E:\Desktop\64f300bd-dca9-45f9-a7d6-81fa91661538.png 可以搞个演示吗 看不懂呢
qifeifei 发表于 2025-12-8 10:17
可以搞个演示吗 看不懂呢
在新建的cad中运行命令,222.dwg内的矩形就会填充上,初步想达到这个效果。
创建填充后,还需要给填充绑定边界
https://help.autodesk.com/view/O ... A-9E1D-A0E8220F69F4
更简单的方式是在当前doc创建(可以用command),Copyobjects进DBX,再删除
qifeifei 发表于 2025-12-8 10:42
是这样的吗
不是 ,意思是不打开cad文件就能把dwg文件里面的图形填充上。
kozmosovia 发表于 2025-12-8 11:08
创建填充后,还需要给填充绑定边界
https://help.autodesk.com/view/O ... A-9E1D-A0E8220F69F4
思路明白了,但是不会操作,也不是我想的效果,感谢大师。 qifeifei 发表于 2025-12-8 10:42
是这样的吗
其实用来填充竖向构件参照文件用的,这样我就可以批量填充竖向构件文件了
modelSpace不对,应该是在dbx的模型空间,而不是激活文档的模型空间