明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: lee50310

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

  [复制链接]
发表于 2024-8-24 21:08:53 | 显示全部楼层
感谢楼主的源码,非常nice ! 有个问题请教,使用你这个方法,试图不开图删除图纸中多余的布局,在(vla-delete layoutname)时出错“错误: Automation 错误。 不存在可删除的布局”,纠其原因是因为vla-delete是在当前打开的图纸里执行的,如何解决这个问题,有方法吗?
发表于 2024-8-25 14:35:23 | 显示全部楼层
i小小白i 发表于 2024-8-24 21:08
感谢楼主的源码,非常nice ! 有个问题请教,使用你这个方法,试图不开图删除图纸中多余的布局,在(vla-del ...

代码是这样的:
flst=(("c:\\drawing1" "A1")("c:\\drawing2" "A2")("c:\\drawing3" "A3")

(foreach x flst
        (setq f (car x) y (cadr x))
        (setq ados (LM:GetDocumentObject (vlax-get-acad-object) f))
        (setq msop (vla-get-ModelSpace  ados))
        (setq lyts (vla-get-layouts ados))
        (vlax-for lyi lyts
          (setq lyiname (vla-get-name lyi))
          (if (and (/= lyiname "Model") (/= lyiname y))
            (vla-delete lyi);;运行到这里出错
          )
        )
        (vla-saveas ados f)
        (vlax-release-object ados)
      )
发表于 2024-8-26 11:49:05 | 显示全部楼层
大哥讲究,还搞了两版,辛苦了
 楼主| 发表于 2024-8-26 14:28:01 | 显示全部楼层
本帖最后由 lee50310 于 2024-8-26 17:59 编辑
i小小白i 发表于 2024-8-25 14:35
代码是这样的:
flst=(("c:\\drawing1" "A1")("c:\\drawing2" "A2")("c:\\drawing3" "A3")

我試過 情況與你相同, 很抱歉! 目前還沒有辦法解決!
在不開圖上 1f.dw 的 布局空間   新增   "配置1" "配置2"
及 開啟的圖面上 的 布局空間 也新增    "配置1" "配置2"
然後執行程式  希望不開圖情況下刪除 1f.dwg 的 "配置2"
結果居然 是刪除當下開啟圖檔的 "配置2"
並出現 "不存在可删除的布局"
所以初步判斷 (vla-delete obj)  這個刪除指令 只能針對當下的圖檔做刪除






发表于 2024-8-27 09:22:32 | 显示全部楼层
lee50310 发表于 2024-8-26 14:28
我試過 情況與你相同, 很抱歉! 目前還沒有辦法解決!
在不開圖上 1f.dw 的 布局空間   新增   "配置1" " ...

的确很奇怪!但在你原始的代码里同样使用了(vla-delete  **)指令,用来删除炸开前的源物件,而当用作删除布局对象时却不能生效了~~~,似乎是这个指令的bug.
  1. (vla-explode obj)                     ;1.(Vlax-Invoke-Method obj 'Explode) , 2. (vla-explode obj) 3.(vlax-invoke obj 'explode)
  2. (vla-delete  obj)                     ;vla的炸开方法会先对来源物件进行复制然后炸开,故 之后应删除来源物件
  3. (setq i(+ i 1))
发表于 2024-9-2 10:26:24 | 显示全部楼层
lee50310 发表于 2024-8-19 15:53
可以做到 要處理 塊,弧,圓,多行文字, 文字......線段等
假如 要處理的目的資料夾 bk-test 內有一 圖檔  ...

感谢,有时间,按你的指引我自己摸索一下修改。谢谢你
发表于 2024-9-15 00:04:28 | 显示全部楼层
大神你好,请问下不需要炸块,也不需要对图层操作,只是“清理”一遍并保存,应该保留哪几行代码?
 楼主| 发表于 2024-9-15 04:07:39 | 显示全部楼层
本帖最后由 lee50310 于 2024-12-19 17:20 编辑
yyz123121 发表于 2024-9-15 00:04
大神你好,请问下不需要炸块,也不需要对图层操作,只是“清理”一遍并保存,应该保留哪几行代码?

可將程式中某些行 註解掉
但, 試過了!   很抱歉!
vla-purgeall 指令 並不支援 不開圖 清理圖

点评

試過了,很抱歉! 不支援不開圖清理圖  发表于 2024-12-19 17:22
按这个改了下,命令有出错,可以发一个完整的吗?  发表于 2024-12-19 12:15
发表于 2024-9-17 13:56:22 | 显示全部楼层
感谢回复,谢谢!
发表于 2024-9-17 15:35:45 | 显示全部楼层
; 错误: 参数类型错误: fixnump: nil
我做了几个文件实验,出来这个错误,
在飞诗上提示

本帖子中包含更多资源

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

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

本版积分规则

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

GMT+8, 2025-1-15 16:51 , Processed in 0.160114 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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