明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 806|回复: 9

[提问] 难题求教!如何判断一个图块是否被裁剪

[复制链接]
发表于 2022-11-11 18:07:10 | 显示全部楼层 |阅读模式
2明经币
求教一下各位大神、如何判断出一个图块或参照是否被裁剪、

找了好久也没找到相应组码、CAD文件我放到附件里面了,


求各位大神支招、感谢
附件: 您需要 登录 才可以下载或查看,没有账号?注册

最佳答案

查看完整内容

(cdr(assoc 3(entget(cdr(assoc 360 (entget (car(entsel)))))))) 试试这个
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2022-11-11 18:07:11 | 显示全部楼层
(cdr(assoc 3(entget(cdr(assoc 360 (entget (car(entsel))))))))   试试这个
回复

使用道具 举报

发表于 2022-11-11 18:28:33 | 显示全部楼层
裁剪过的块会 多个这玩意吧
(102 . "{ACAD_XDICTIONARY")
回复

使用道具 举报

 楼主| 发表于 2022-11-11 18:36:10 | 显示全部楼层
xj6019 发表于 2022-11-11 18:28
裁剪过的块会 多个这玩意吧
(102 . "{ACAD_XDICTIONARY")

我之前是用102这个判断的、但是你看我附件提供的两个块、上面那个没裁剪的也有102这个东西、所以现在就没法用这个判断了
回复

使用道具 举报

发表于 2022-11-11 19:18:06 | 显示全部楼层
;判断图中是否有剪裁块
(vla-getobject (vla-getextensiondictionary (vlax-ename->vla-object (car (entsel)))) "ACAD_FILTER")

评分

参与人数 1明经币 +1 收起 理由
xj6019 + 1 很给力!

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2022-11-11 19:23:13 | 显示全部楼层
xj6019 发表于 2022-11-11 19:18
(cdr(assoc 3(entget(cdr(assoc 360 (entget (car(entsel))))))))   试试这个

谢谢、这个可以、我刚刚在晓东上面也看到类似代码了、不过他还加了一个71组码的判断、我没懂是啥意思

  1. ;;移除剪裁块的剪裁边界
  2. ;;(gxl-RemoveXclip (car(entsel)))
  3. (defun gxl-RemoveXclip (en2 / IsXClip el)
  4.   ;;判断图元是否为剪裁块
  5.   (defun IsXClip (en2 / xdict)
  6.     (if (setq xdict (cdr (assoc 360 (entget en2))))
  7.                         (IsXClip xdict)
  8.                         (if
  9.                                 (and
  10.                                         (eq "SPATIAL_FILTER"
  11.                                                 (cdr (assoc 0 (setq en2 (entget en2))))
  12.                                         )
  13.                                         (eq 1 (cdr (assoc 71 en2)))
  14.                                 )
  15.                                 en2
  16.                         )
  17.                 )
  18.         )
  19.   (if (setq el (IsXClip en2))
  20.     (progn
  21.                         (entmod (subst (cons 71 0) (cons 71 1) el))
  22.                         (entupd en2)
  23.     )
  24.         )
  25. )
  26. ;;测试命令
  27. (defun c:tt ()
  28.   (while
  29.     (setq e (car (entsel "\n选择剪裁块:")))
  30.                 (gxl-RemoveXclip e)
  31.         )
  32.   (princ)
  33. )

评分

参与人数 1明经币 +1 收起 理由
xj6019 + 1 赞一个!

查看全部评分

回复

使用道具 举报

发表于 2022-11-11 19:32:23 | 显示全部楼层
好用就行  代码能套就套
回复

使用道具 举报

 楼主| 发表于 2022-11-11 19:36:03 | 显示全部楼层
本帖最后由 xiaocainiao 于 2022-11-11 20:04 编辑
xj6019 发表于 2022-11-11 19:32
好用就行  代码能套就套

试了好几个图块、貌似只靠这一行代码不太管用、明天再试试晓东上面的代码吧、还是谢谢你了
回复

使用道具 举报

发表于 2022-11-12 11:56:45 | 显示全部楼层
(defun RemoveXclip (s1 / en)
  (setq en (entget s1))
  (if (and (= (cdr (assoc 0 en)) "INSERT")
           (assoc 102 en)
           (assoc 360 en)
      )
    (command "xclip" s1 "" "d")
  )
)
回复

使用道具 举报

 楼主| 发表于 2022-11-15 19:14:54 | 显示全部楼层
xyp1964 发表于 2022-11-12 11:56
(defun RemoveXclip (s1 / en)
  (setq en (entget s1))
  (if (and (= (cdr (assoc 0 en)) "INSERT")

我已经找到方法了、还是要谢谢你
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-16 02:39 , Processed in 0.195176 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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