乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 55|回复: 0

[编程交流] 在图形中打开外部参照并清除

[复制链接]

33

主题

117

帖子

85

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
170
发表于 2022-7-5 18:45:47 | 显示全部楼层 |阅读模式
我有一个包含20个或更多外部参照的图形。需要从文件中清除未引用的图像。
 
我有以下步骤,但使用下面的例程,我必须打开外部参照并运行命令PUI,然后关闭图形并重新加载外部参照。耗时的
 
我想知道是否有更简单的方法可以实现这一点。
 
 
  1. ; (purge-unreferenced-images)
  2. (defun purge-unreferenced-images (/ ss1 ctr id symlst enamelst delent vl_delent ipath iname tmp)
  3. (defun remlst (/ tmp1)
  4. (setq
  5.    tmp        (length (member (cdr (assoc 340 (entget delent))) enamelst))
  6. )
  7. (repeat (- (length symlst) tmp)
  8.    (setq tmp1 (cons (car symlst) tmp1))
  9.    (setq symlst (cdr symlst))
  10. )
  11. (setq tmp (list (car symlst)))
  12. (setq symlst (append (reverse tmp1) (cdr symlst)))
  13. )
  14. (defun massoc (key alist / x nlist)
  15. (foreach x alist
  16.    (if        (eq key (car x))
  17.      (setq nlist (cons (cdr x) nlist))
  18.    )
  19. )
  20. (reverse nlist)
  21. )
  22. (vl-load-com)
  23. (setq ss1 (ssget "x" '((0 . "IMAGE"))))
  24. (setq ctr 0)
  25. (setq id (dictsearch (namedobjdict) "acad_image_dict"))
  26. (setq symlst (massoc 3 id))
  27. (setq enamelst (massoc 350 id))
  28. (if ss1
  29.    (progn
  30.      (while (< ctr (sslength ss1))
  31. (setq delent (ssname ss1 ctr))
  32. (setq vl_delent (vlax-ename->vla-object delent))
  33. (setq ipath (vla-get-ImageFile vl_delent))
  34. (remlst)
  35. (setq iname (strcat (vl-filename-base ipath) (vl-filename-extension ipath)))
  36. (if (and (not (findfile ipath))
  37.          (not (findfile iname))
  38.     )
  39.   (progn
  40.     (dictremove (cdr (car id)) (car tmp))
  41.     (append tmp symlst)
  42.     (ssdel delent ss1)
  43.     (vla-delete vl_delent)
  44.   )
  45.   (progn
  46.     (setq ctr (1+ ctr))
  47.   )
  48. )
  49.      )
  50.    )
  51. )
  52. (while symlst
  53.    (dictremove (cdr (car id)) (car symlst))
  54.    (setq symlst (cdr symlst))
  55. )
  56. )
  57. (defun c:PUI()
  58. (purge-unreferenced-images)
  59. (princ)
  60. )
  61. (princ)

 
 
 
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-12 13:21 , Processed in 0.667149 second(s), 54 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表