lee50310
发表于 2024-8-18 12:09:34
本帖最后由 lee50310 于 2024-8-26 14:42 编辑
jh3030912 发表于 2024-8-18 06:15
炸开块(属性块不炸)怎么设置?
用編輯器 bexp_chs.lsp 找到
..
..
(vlax-for obj msop
(setqsel_objtype (vla-get-objectname obj))
..
..
(setq j(+ j i))
);end_vlax-for
(vlax-for obj msop
(setqsel_objtype (vla-get-objectname obj))
(cond
((= sel_objtype "AcDbBlockReference");判斷物體是否為 block ,若是則炸開
(if (not(= (vlax-method-applicable-p obj 'GetAttributes) 'T)) ;判斷若是屬性塊則跳過
(progn
(vla-explode obj)
(vla-deleteobj)
(setq i(+ i 1))
);end_progn
);end_if
)
);end_cond
(setq j(+ j i))
);end_vlax-for
將上方找到相同對應的值 覆蓋存檔即可
kozmosovia
发表于 2024-8-18 22:32:03
这才是大杀器 https://lee-mac.com/odbxbase.html
gble119
发表于 2024-8-19 00:36:21
支持源码分享
水洗可口可乐
发表于 2024-8-19 09:32:47
不開啟圖檔 查找DWG文件目錄夾 的文字/图块,LISP可以做到吗?
tranque
发表于 2024-8-19 09:39:42
支持楼主,我很喜欢这种能批量处理功能的插件
阿猪蛋
发表于 2024-8-19 09:52:11
谢谢分享,实用程序
lxl217114
发表于 2024-8-19 11:10:00
谢谢lee50310的分享
隔了一段时间没有出现
一出现又是上新的作品了
Noangler
发表于 2024-8-19 11:29:03
谢谢分享新程序。
lee50310
发表于 2024-8-19 15:53:59
本帖最后由 lee50310 于 2024-8-19 17:49 编辑
水洗可口可乐 发表于 2024-8-19 09:32
不開啟圖檔 查找DWG文件目錄夾 的文字/图块,LISP可以做到吗?
可以做到 要處理 塊,弧,圓,多行文字, 文字......線段等
假如 要處理的目的資料夾 bk-test 內有一 圖檔 圖檔內如圖a
將程式的內容 部分 改為
...
...
(setq acdoc(LM:GetDocumentObject (vlax-get-acad-object) filePath)) ;獲取活動文檔對象
(setq msop (vla-get-ModelSpaceacdoc)) ; 模型空間的對象
(foreach xn '(ss-block ss-arc ss-circle ss-mtext ss-text ss-pline ss-line) (set xn 'nil)) ;清除各項表內容
(vlax-for obj msop
(setqsel_objtype (vla-get-objectname obj))
(cond
((= sel_objtype "AcDbBlockReference") ;判斷物體是否為 block
(setq ss-block(cons obj ss-block )) );列表塊
((= sel_objtype "AcDbArc") (setq ss-arc (cons obj ss-arc )) );列表弧
((= sel_objtype "AcDbCircle") (setq ss-circle(cons obj ss-circle)) );列表圓
((= sel_objtype "AcDbMText") (setq ss-mtext(cons obj ss-mtext )) );列表多行文字
((= sel_objtype "AcDbText") (setq ss-text (cons obj ss-text)) );列表文字
((= sel_objtype "AcDbLWPolyline")(setq ss-pline(cons obj ss-pline )) );列表多段線
((= sel_objtype "AcDbLine") (setq ss-line (cons obj ss-line)) );列表線段
);end_cond
);end_vlax-for
...
...
上式是在不開圖的情況下 將要處理的每個項目收集成表
如 列表弧 ss-arc 圖a上有三個 實際取到的對象也是三個 再根據自己的需求 去做處理
(#<VLA-OBJECT IAcadArc 000001e2138afde8>
#<VLA-OBJECT IAcadArc 000001e2138acf88>
#<VLA-OBJECT IAcadArc 000001e2138ae028>)
ps:須注意 ,不開圖要對物體作處理 如:塊炸開,或對文字做替換...等 都須用 對象去做
,不要把 對象轉為 圖元名稱 處理 這樣會抓不到物體出現錯誤!
muai2010
发表于 2024-8-21 10:46:39
感谢楼主分享好程序