不打开图纸修改外部dwg图纸中属性标记的可见性
(defun $xiu-gai-wai-bu-dwg-ke-jian-xing$ (dwg tag-invisible/ app blocks
dbx doc dwg-n
dwl invisible
open-zttag vrs
)
;修改外部dwg的可见性,注意,1是不可见,0是可见
;($xiu-gai-wai-bu-dwg-ke-jian-xing$(zx-czwj "电线7.dwg" "")(list(cons "选项" 0)(cons "OPO" 0)(cons "OPS" 1)(CONS "备注哦" "1 是不可见,0是可见")))
(if (and dwg
(findfile dwg)
(setq dwg-name (vl-filename-base dwg))
tag-invisible
(setq tags (mapcar 'car tag-invisible))
)
(progn
(setq dbx
(vl-catch-all-apply
'vla-getinterfaceobject
(list (setq app (vlax-get-acad-object))
(if (< (setq vrs (atoi (getvar 'acadver))) 16)
"objectdbx.axdbdocument"
(strcat "objectdbx.axdbdocument." (itoa vrs))
)
)
)
)
(if (vl-catch-all-error-p dbx)
(progn (setq dbx nil) (setq app nil))
)
(if
(vl-mkdir
(setq
tmp(strcat
(getenv "temp")
"\\"
(menucmd
"M=$(edtime,$(getvar,date),YYYYMODDHHMMSSMSEC)"
)
)
)
) ;
()
(progn
(setq tmp nil)
(print "在temp目录下创建文件夹失败了,无法做块同步操作了")
)
)
(and
tmp
dwg-name
(vl-file-copy
dwg
(setq dwg-n (vl-filename-mktemp (strcat tmp "\\" "1.dwg")))
) ;复制一个dwg再打开
(vl-file-rename
dwg-n
(setqdwg-n (strcat tmp "\\" dwg-name ".dwg")
)
)
(setq dwg dwg-n)
(setq
open-zt (vl-catch-all-error-p
(vl-catch-all-apply 'vla-open (list dbx dwg-n))
)
)
(not (vl-catch-all-error-p open-zt))
)
(if
(and (not (vl-catch-all-error-p open-zt))
(setq doc dbx)
)
(progn
(SETQ blockS(vla-get-block
(vl-catch-all-apply
'vla-item
(list (vla-get-layouts doc)
"Model"
)
)
)
)
(vlax-for object blockS
(if
(AND (= "AcDbAttributeDefinition"
(vla-get-objectname object)
)
(setq tag (vla-get-tagstring object))
(vl-position tag tags)
(setq invisible (cdr (assoc tag tag-invisible)))
)
(progn
(vl-catch-all-apply
'vla-put-invisible
(list
object
invisible
)
)
)
)
)
(vl-catch-all-apply
'vla-saveas
(list doc dwg-n)
)
)
(princ(strcat"dwg打开失败了: "
dwg-name
".dwg"
)
)
)
(if (= 'vla-object (type dbx))
(vlax-release-object dbx)
)
)
)
dwg-n
)
大佬,经常使用的一个功能是,批量把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 谢谢楼主分享!
页:
[1]
2