明经CAD社区

 找回密码
 注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 179|回复: 11

[源码] 急需识别多个字符的拆除外部参照语句

[复制链接]
发表于 2021-6-2 09:13 | 显示全部楼层 |阅读模式
5明经币
想卸载除了带有“结构参照”、“建筑参照”、“设备参照”的外部参照

(Defun C:dxrs ( )         
        (setvar "cmdecho" 0)           
        (command "-xref" "Detach" "~结构参照*")
          (princ)
)
(Defun C:gxrs ( )         
        (setvar "cmdecho" 0)              
        (command "-xref" "unload" "~结构参照*")
          (princ)
);■■■■

最佳答案

发表于 2021-6-2 09:13 | 显示全部楼层
[code="lisp] (defun getxrefnames (/ BLKS I NAME XREFNAMES)
  (setq        blks (vla-get-blocks
               (vla-get-ActiveDocument (VLAX-GET-ACAD-OBJECT))
             )
  )
  (setq xrefnames '())
  (vlax-for item blks
    (setq name (vla-get-name item))
    (if        (and (setq i (VL-STRING-SEARCH "|" name))
             (/= (substr name 1 1) "*")
             (setq name (substr name 1 i))
             (not (member name xrefnames))
        )
      (setq xrefnames (cons name xrefnames))
    )
  )
  xrefnames
)

(defun Detach-xrefs (names / )
  (foreach item names
    (if (member item (getxrefnames))
      (command "-xref" "Detach" item)
      )
    )
  t
  )

(defun unload-xrefs (names / )
  (foreach item names
    (if (member item (getxrefnames))
      (command "-xref" "unload" item)
      )
    )
  t
  )[/code]
回复

使用道具 举报

发表于 2021-6-2 10:05 | 显示全部楼层
试一下行不行
  (command "-xref" "Detach" "*结构参照*")
回复

使用道具 举报

 楼主| 发表于 2021-6-2 11:16 | 显示全部楼层

具体要把我想要的关键字“结构参照”“建筑参照”放在哪里呢?
回复

使用道具 举报

 楼主| 发表于 2021-6-2 11:18 | 显示全部楼层
start4444 发表于 2021-6-2 10:05
试一下行不行
  (command "-xref" "Detach" "*结构参照*")

我想同时屏蔽 结构参照 、建筑参照
回复

使用道具 举报

发表于 2021-6-2 11:26 | 显示全部楼层
iamhuangjinming 发表于 2021-6-2 11:18
我想同时屏蔽 结构参照 、建筑参照

(command "-xref" "Detach" "*结构参照*")
(command "-xref" "Detach" "*建筑参照*")
要什么下面继续写就是了
回复

使用道具 举报

 楼主| 发表于 2021-6-2 11:37 | 显示全部楼层
start4444 发表于 2021-6-2 11:26
(command "-xref" "Detach" "*结构参照*")
(command "-xref" "Detach" "*建筑参照*")
要什么下面继续 ...

*~结构参照* 我想要带这个字符的,不要拆除,按你的,应该是拆掉了吧

点评

关键是字符,解决了你拆不拆都行啦,只是给个参考你  发表于 2021-6-2 11:41
回复

使用道具 举报

发表于 2021-6-2 15:05 | 显示全部楼层
[code="lisp] (defun remove (lst str / )
  (vl-remove-if '(lambda(x)
                       (VL-STRING-SEARCH str x)) lst)
  )
(defun remove-not (lst str / )
  (vl-remove-if-not '(lambda(x)
                       (VL-STRING-SEARCH str x)) lst)
  )
(defun removes (lst strs / )
  (foreach item strs
    (setq lst (remove lst item))
    )
  )
(defun remove-nots (lst strs / )
  (foreach item strs
    (setq lst (remove-not lst item))
    )
  )


_$ (setq lst '("123" "234" "345" "456" "567"))
("123" "234" "345" "456" "567")
_$ (setq str "4")
"4"
_$ (remove lst str)
("123" "567")
_$ (remove-not lst str)
("234" "345" "456")
_$ (setq strs '("3" "4"))
("3" "4")
_$ (removes lst strs)
("567")
_$ (remove-nots lst strs)
("234" "345")
_$ [/code]
回复

使用道具 举报

 楼主| 发表于 2021-6-2 16:27 | 显示全部楼层

不会用呢。。 可以按提的需求整个直接能用的么。。。谢谢大佬~
回复

使用道具 举报

发表于 2021-6-3 09:07 | 显示全部楼层
本帖最后由 lijiao 于 2021-6-3 17:15 编辑

想卸载除了带有“结构参照”、“建筑参照”、“设备参照”的外部参照:
(unload-xrefs (removes (getxrefnames) '(“结构参照” “建筑参照” “设备参照”)))

想撤离除了带有“结构参照”、“建筑参照”、“设备参照”的外部参照:
(Detach-xrefs (removes (getxrefnames) '(“结构参照” “建筑参照” “设备参照”)))
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2021-10-25 11:33 , Processed in 0.455584 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.3

© 2001-2013 Comsenz Inc.

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