大家好,
我发现了许多lisp例程,可以在有一个外部参照实例时分离未加载/未引用的外部参照和所有工作。我遇到的问题是,我试图删除具有多个引用的未加载外部参照。我有一个带有6个图纸空间选项卡的图形,我试图删除的外部参照是一个标题栏,它插入到所有6个图纸空间选项卡上,因为它存在于多个图纸空间中,所以它不会删除外部参照。有什么办法可以强制这样做吗?
我试图实现的是删除未加载的外部参照。但因为它有多个参考文献;它不会删除的每个图纸空间选项卡一个。如果我使用下面的代码,它将从每个选项卡中删除所有引用,并允许我拆离外部参照。下面的代码现在的问题是,它删除了对所有外部参照的所有引用。我想修改代码,使其仅对未加载和未找到的外部参照执行此操作。此处的最终目标是创建一个将绑定所有外部参照的lisp,但当图形具有未加载和/或未找到的外部参照时,bind all命令不起作用。
我希望我解释得很好,有人能帮我。
- (defun c:test6 ()
- (vl-load-com)
- ;retrieve a reference to the Active Document
- (setq activedocument (vla-get-activedocument (vlax-get-Acad-Object)))
- ;retrieve a reference to the blocks
- (setq theblocks (vla-get-blocks activedocument))
- ;process each block
- (vlax-for item theblocks
- ;check if it's an Xref
- (setq yesxref (vlax-get-property item 'isXref))
- ;if it is
- (if (= yesxref :vlax-true)
-
- ;do the following
- (progn
- ;get the Xref name
- (setq ablock (vlax-get-property item 'Name))
- ;remove all instances of xref from each tab__________________________________________________________________________________
- (if (ssget "_x" (list '(0 . "INSERT")(cons 2 ablock)))
- (vlax-for n (vla-get-activeselectionset(vla-get-activedocument(vlax-get-acad-object)))(vla-delete n))
- )
- (repeat 4 (vla-purgeall (vla-get-activedocument (vlax-get-acad-object))))
- ;_______________________________________________________________________________________________________
- );progn
- );if
- );vlax-for
- (princ)
- )
|