明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 499|回复: 23

[提问] dbx填充求助

[复制链接]
发表于 4 天前 | 显示全部楼层 |阅读模式
想写一个,不打开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)
)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
"觉得好,就打赏"
还没有人打赏,支持一下
回复

使用道具 举报

发表于 4 天前 | 显示全部楼层
本帖最后由 qifeifei 于 2025-12-8 21:13 编辑


推荐下载版本4进行研究
示意图是版本4的;只能达到演示效果
其他的自行修复把;

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x

点评

我觉得应该不是;你的描述很离谱;新建1个cad;然后222内的矩形就要被填充;莫名其妙的功能  发表于 4 天前
回复 支持 1 反对 0

使用道具 举报

发表于 4 天前 | 显示全部楼层
  1. (defun c:tt ()
  2.   (setq        *DOC* (vlax-create-object
  3.                 (strcat        "ObjectDBX.AxDbDocument."
  4.                         (substr (getvar "ACADVER") 1 2)
  5.                 )
  6.               )
  7.   )
  8.   (vla-open *DOC* "D:\\222.dwg")
  9.   (setq gMspace (vla-get-modelSpace (vla-get-activeDocument *DOC*)))
  10.   (setq        HatchObj (vla-AddHatch
  11.                    gMspace
  12.                    acHatchPatternTypePredefined
  13.                    "SOLID"
  14.                    :vlax-true
  15.                  )
  16.   )
  17.   (vlax-for dbx        (vla-get-modelspace *DOC*)
  18.     (if        (= (vla-Get-ObjectName dbx) "AcDbPolyline")
  19.       (vla-AppendOuterLoop
  20.         HatchObj
  21.         (vlax-safearray-fill
  22.           (vlax-make-safearray vlax-vbobject (cons 0 0))
  23.           (list dbx)
  24.         )
  25.       )
  26.     )
  27.   )
  28.   (vla-saveas *DOC* "D:\\222.dwg")
  29.   (vlax-release-object *DOC*)
  30.   (princ)
  31. )
回复 支持 反对

使用道具 举报

 楼主| 发表于 3 天前 | 显示全部楼层
qifeifei 发表于 2025-12-8 10:42
推荐下载版本4进行研究
示意图是版本4的;只能达到演示效果
其他的自行修复把;

大师通过您的代码,我对dbx有了深刻的认识,代码我也有了比以前更深刻的立即,只是还有一事不明,为什么我这边截图的位置(vla-AppendOuterLoop HatchObj (vlax-make-variant extLoop))无法运行。E:\Desktop\64f300bd-dca9-45f9-a7d6-81fa91661538.png

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
回复 支持 反对

使用道具 举报

发表于 4 天前 | 显示全部楼层
可以搞个演示吗 看不懂呢
回复 支持 反对

使用道具 举报

 楼主| 发表于 4 天前 | 显示全部楼层
qifeifei 发表于 2025-12-8 10:17
可以搞个演示吗 看不懂呢

在新建的cad中运行命令,222.dwg内的矩形就会填充上,初步想达到这个效果。
回复 支持 反对

使用道具 举报

发表于 4 天前 | 显示全部楼层
创建填充后,还需要给填充绑定边界
https://help.autodesk.com/view/O ... A-9E1D-A0E8220F69F4

更简单的方式是在当前doc创建(可以用command),Copyobjects进DBX,再删除
回复 支持 反对

使用道具 举报

 楼主| 发表于 4 天前 | 显示全部楼层

不是 ,意思是不打开cad文件就能把dwg文件里面的图形填充上。
回复 支持 反对

使用道具 举报

 楼主| 发表于 4 天前 | 显示全部楼层
kozmosovia 发表于 2025-12-8 11:08
创建填充后,还需要给填充绑定边界
https://help.autodesk.com/view/O ... A-9E1D-A0E8220F69F4

思路明白了,但是不会操作,也不是我想的效果,感谢大师。
回复 支持 反对

使用道具 举报

 楼主| 发表于 4 天前 | 显示全部楼层

其实用来填充竖向构件参照文件用的,这样我就可以批量填充竖向构件文件了

回复 支持 反对

使用道具 举报

发表于 4 天前 | 显示全部楼层
modelSpace  不对,应该是在dbx的模型空间,而不是激活文档的模型空间
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-12-12 06:12 , Processed in 0.196011 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表