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

感谢楼主分享好程序
页: 1 [2] 3 4
查看完整版本: 不開啟圖檔 選取要 Purge、打開、解凍、解鎖所有圖層及要炸開圖的目錄夾