1. (defun $xiu-gai-wai-bu-dwg-ke-jian-xing$ (dwg     tag-invisible
  2.             /     app      blocks
  3.             dbx     doc      dwg-n
  4.             dwl     invisible
  5.             open-zt  tag      vrs
  6.            )
  7.           ;修改外部dwg的可见性,注意,1是不可见,0是可见
  8.           ;($xiu-gai-wai-bu-dwg-ke-jian-xing$(zx-czwj "电线7.dwg" "")(list(cons "选项" 0)(cons "OPO" 0)(cons "OPS" 1)(CONS "备注哦" "1 是不可见,0是可见")))

  9.   (if (and dwg
  10.      (findfile dwg)
  11.      (setq dwg-name (vl-filename-base dwg))
  12.      tag-invisible
  13.      (setq tags (mapcar 'car tag-invisible))
  14.       )
  15.     (progn
  16.       (setq dbx
  17.        (vl-catch-all-apply
  18.          'vla-getinterfaceobject
  19.          (list (setq app (vlax-get-acad-object))
  20.          (if (< (setq vrs (atoi (getvar 'acadver))) 16)
  21.            "objectdbx.axdbdocument"
  22.            (strcat "objectdbx.axdbdocument." (itoa vrs))
  23.          )
  24.          )
  25.        )
  26.       )
  27.       (if (vl-catch-all-error-p dbx)
  28.   (progn (setq dbx nil) (setq app nil))
  29.       )
  30.       (if
  31.   (vl-mkdir
  32.     (setq
  33.       tmp  (strcat
  34.       (getenv "temp")
  35.       "\\"
  36.       (menucmd
  37.         "M=$(edtime,$(getvar,date),YYYYMODDHHMMSSMSEC)"
  38.       )
  39.     )
  40.     )
  41.   )        ;
  42.    ()
  43.    (progn
  44.      (setq tmp nil)
  45.      (print "在temp目录下创建文件夹失败了,无法做块同步操作了")
  46.    )
  47.       )
  48.       (and
  49.   tmp
  50.   dwg-name
  51.   (vl-file-copy
  52.     dwg
  53.     (setq dwg-n (vl-filename-mktemp (strcat tmp "\\" "1.dwg")))
  54.   )        ;复制一个dwg再打开
  55.   (vl-file-rename
  56.     dwg-n
  57.     (setq  dwg-n (strcat tmp "\\" dwg-name ".dwg")
  58.     )
  59.   )
  60.   (setq dwg dwg-n)
  61.   (setq
  62.     open-zt (vl-catch-all-error-p
  63.         (vl-catch-all-apply 'vla-open (list dbx dwg-n))
  64.       )
  65.   )
  66.   (not (vl-catch-all-error-p open-zt))
  67.       )
  68.       (if
  69.   (and (not (vl-catch-all-error-p open-zt))
  70.        (setq doc dbx)
  71.   )
  72.    (progn
  73.      (SETQ blockS  (vla-get-block
  74.         (vl-catch-all-apply
  75.           'vla-item
  76.           (list (vla-get-layouts doc)
  77.           "Model"
  78.           )
  79.         )
  80.       )
  81.      )
  82.      (vlax-for object blockS
  83.        (if
  84.          (AND (= "AcDbAttributeDefinition"
  85.            (vla-get-objectname object)
  86.         )
  87.         (setq tag (vla-get-tagstring object))
  88.         (vl-position tag tags)
  89.         (setq invisible (cdr (assoc tag tag-invisible)))
  90.          )
  91.     (progn
  92.       (vl-catch-all-apply
  93.         'vla-put-invisible
  94.         (list
  95.           object
  96.           invisible
  97.         )
  98.       )
  99.     )
  100.        )
  101.      )
  102.      (vl-catch-all-apply
  103.        'vla-saveas
  104.        (list doc dwg-n)
  105.      )
  106.    )
  107.    (princ  (strcat  "dwg打开失败了: "
  108.       dwg-name
  109.       ".dwg"
  110.     )
  111.    )
  112.       )
  113.       (if (= 'vla-object (type dbx))
  114.   (vlax-release-object dbx)
  115.       )
  116.     )
  117.   )
  118.   dwg-n
  119. )



网友答: 大佬,经常使用的一个功能是,批量把dwg中的动态块变成普通块的功能,此不开图修改属性标记的是否可见功能,是否可以拿来运用实现不开图批量把动态块变成普通块的效果呢?

网友答:
weimeng555 发表于 2025-11-29 17:02
大佬,经常使用的一个功能是,批量把dwg中的动态块变成普通块的功能,此不开图修改属性标记的是否可见功能 ...

肯定是可以的

网友答:
weimeng555 发表于 2025-11-30 17:11
试过了,貌似lisp不能跨文件操作,如果要批量还是算了,还是用旧的方法批量开图运行指定lsp

批量不是单个的循环吗?

网友答: 不错,感谢分享

网友答: 感谢分享,学习一下

网友答:
感谢分享,学习一下+1

网友答:
weimeng555 发表于 2025-11-29 17:02
大佬,经常使用的一个功能是,批量把dwg中的动态块变成普通块的功能,此不开图修改属性标记的是否可见功能 ...

你试试。。。。。

网友答:
dcl1214 发表于 2025-11-30 08:35
你试试。。。。。

试过了,貌似lisp不能跨文件操作,如果要批量还是算了,还是用旧的方法批量开图运行指定lsp

网友答: 谢谢楼主分享!
  • 上一篇:板材框架结构
  • 下一篇:没有了