难题求教!如何判断一个图块是否被裁剪
求教一下各位大神、如何判断出一个图块或参照是否被裁剪、找了好久也没找到相应组码、CAD文件我放到附件里面了,
求各位大神支招、感谢
(cdr(assoc 3(entget(cdr(assoc 360 (entget (car(entsel)))))))) 试试这个 裁剪过的块会 多个这玩意吧
(102 . "{ACAD_XDICTIONARY") xj6019 发表于 2022-11-11 18:28
裁剪过的块会 多个这玩意吧
(102 . "{ACAD_XDICTIONARY")
我之前是用102这个判断的、但是你看我附件提供的两个块、上面那个没裁剪的也有102这个东西、所以现在就没法用这个判断了 ;判断图中是否有剪裁块
(vla-getobject (vla-getextensiondictionary (vlax-ename->vla-object (car (entsel)))) "ACAD_FILTER") xj6019 发表于 2022-11-11 19:18
(cdr(assoc 3(entget(cdr(assoc 360 (entget (car(entsel)))))))) 试试这个
谢谢、这个可以、我刚刚在晓东上面也看到类似代码了、不过他还加了一个71组码的判断、我没懂是啥意思
;;移除剪裁块的剪裁边界
;;(gxl-RemoveXclip (car(entsel)))
(defun gxl-RemoveXclip (en2 / IsXClip el)
;;判断图元是否为剪裁块
(defun IsXClip (en2 / xdict)
(if (setq xdict (cdr (assoc 360 (entget en2))))
(IsXClip xdict)
(if
(and
(eq "SPATIAL_FILTER"
(cdr (assoc 0 (setq en2 (entget en2))))
)
(eq 1 (cdr (assoc 71 en2)))
)
en2
)
)
)
(if (setq el (IsXClip en2))
(progn
(entmod (subst (cons 71 0) (cons 71 1) el))
(entupd en2)
)
)
)
;;测试命令
(defun c:tt ()
(while
(setq e (car (entsel "\n选择剪裁块:")))
(gxl-RemoveXclip e)
)
(princ)
) 好用就行代码能套就套 本帖最后由 xiaocainiao 于 2022-11-11 20:04 编辑
xj6019 发表于 2022-11-11 19:32
好用就行代码能套就套
试了好几个图块、貌似只靠这一行代码不太管用、明天再试试晓东上面的代码吧、还是谢谢你了 (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")
)
) xyp1964 发表于 2022-11-12 11:56
(defun RemoveXclip (s1 / en)
(setq en (entget s1))
(if (and (= (cdr (assoc 0 en)) "INSERT")
我已经找到方法了、还是要谢谢你
页:
[1]