明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3327|回复: 32

[源码] 不開啟圖檔 選取要 Purge、打開、解凍、解鎖所有圖層及要炸開圖的目錄夾

  [复制链接]
发表于 2024-8-18 05:26:43 | 显示全部楼层 |阅读模式
本帖最后由 lee50310 于 2024-8-18 15:28 编辑

不開啟圖檔選取要Purge、開啟、解凍、解鎖所有圖層及要炸開圖的目錄夾


執行指令:bexp
         
            說明:在不開圖情況下 ,執行bexp指令 並選取測試圖檔資料夾 bk-test 按確認
                    執行前 如圖1  ,執行後如圖2


本帖子中包含更多资源

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

x

评分

参与人数 3明经币 +3 金钱 +10 收起 理由
tranque + 1 很给力!
寒潮大冬瓜 + 1
tigcat + 1 + 10 大侠早,这个厉害

查看全部评分

"觉得好,就打赏"
还没有人打赏,支持一下
 楼主| 发表于 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-ModelSpace  acdoc))                                ; 模型空間的對象
                (foreach xn '(ss-block ss-arc ss-circle ss-mtext ss-text ss-pline ss-line) (set xn 'nil)) ;清除各項表內容
        (vlax-for obj msop        
                         (setq  sel_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:須注意 ,不開圖要對物體作處理 如:塊炸開,或對文字做替換...等 都須用 對象去做
    ,不要把 對象轉為 圖元名稱 處理 這樣會抓不到物體出現錯誤!

本帖子中包含更多资源

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

x
 楼主| 发表于 2024-9-15 04:07:39 | 显示全部楼层
本帖最后由 lee50310 于 2024-9-15 04:17 编辑
yyz123121 发表于 2024-9-15 00:04
大神你好,请问下不需要炸块,也不需要对图层操作,只是“清理”一遍并保存,应该保留哪几行代码?

將程式中

  1.    
  2. .
  3. .
  4.        (setq acdoc(LM:GetDocumentObject (vlax-get-acad-object) filePath)) ;獲取活動文檔對象
  5.         (setq msop (vla-get-ModelSpace  acdoc))              ; 取模型空間的對象

  6. ;|  ------------------------------ 當成註解  -----START
  7.         (setq nt (vla-get-count msop) i 0 j 0)                 ;取得變體合集之總數量, 炸開物體數量i,j清為 0)
  8.         (vlax-for obj msop  
  9.              (setq  sel_objtype (vla-get-objectname obj))              
  10.                      (cond                                       
  11.               ((= sel_objtype "AcDbBlockReference")      ;判斷物體是否為 block ,若是則炸開
  12.                                                                            ;炸開物體三種寫法皆可      
  13.                            (vla-explode obj)                     
  14.                        (vla-delete  obj)                    
  15.                            (setq i(+ i 1))               
  16.                           )
  17.            );end_cond   
  18.                     (setq j(+ j i))
  19.         );end_vlax-for
  20.         (layall_true  acdoc)                                      ;打開,解凍,解鎖所有圖層
  21. |;  ------------------------------ 當成註解  -----END


  22.            (if (= 1 (getvar 'dwgtitled))
  23.                  (progn                       
  24.                        (repeat 3 (vla-purgeall acdoc))       ; PURGE 指令清理圖形
  25.                  );end_progn
  26.         );end_if
  27.                
  28.                  (vla-saveas acdoc filePath)                  ;存檔
  29.                  (vlax-release-object acdoc)                 ;釋放後,繪圖物件不再可以透過 obj存取

  30.       )
  31.     )
  32.     (alert "未選擇任何文件夾.")
  33.   );end_if


 楼主| 发表于 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        
                         (setq  sel_objtype (vla-get-objectname obj))            

..
..

                              (setq j(+ j i))
        );end_vlax-for



  1.    
  2.   (vlax-for obj msop  
  3.              (setq  sel_objtype (vla-get-objectname obj))              
  4.                      (cond                                       
  5.               ((= sel_objtype "AcDbBlockReference")  ;判斷物體是否為 block ,若是則炸開
  6.             (if (not(= (vlax-method-applicable-p obj 'GetAttributes) 'T)) ;判斷若是屬性塊則跳過
  7.                 (progn                     
  8.                        (vla-explode obj)                    
  9.                        (vla-delete  obj)                    
  10.                        (setq i(+ i 1))  
  11.                 );end_progn
  12.             );end_if
  13.             )
  14.                      );end_cond   
  15.                     (setq j(+ j i))
  16.         );end_vlax-for


將上方找到相同對應的值 覆蓋存檔即可
发表于 2024-8-18 06:12:08 来自手机 | 显示全部楼层
可以不来图 使用自定义lisp 命令吗
发表于 2024-8-18 06:15:23 来自手机 | 显示全部楼层
炸开块(属性块不炸)怎么设置?
发表于 2024-8-18 08:06:54 | 显示全部楼层
谢谢分享,实用程序
发表于 2024-8-18 08:46:11 | 显示全部楼层
多谢楼主分享,下载试试
发表于 2024-8-18 09:21:16 | 显示全部楼层
好资料,谢谢分享
发表于 2024-8-18 12:08:20 | 显示全部楼层
很好→很棒!很好~很棒!!很好……很棒!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 07:41 , Processed in 0.172868 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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