砥砺前行 发表于 2023-1-1 22:05:38

判断矩形内部是否存在图元

请问如何判断矩形内部是否存在图元呢,相交的也算。

砥砺前行 发表于 2023-1-1 22:08:01

C:\Users\86198\Pictures\Camera Roll

aws 发表于 2023-1-1 22:56:55


[*](defun c:ff ()
[*](setq i 0)(setq lss nil)                              
[*](setq juxing (entsel))                                 
[*](command "measure" juxing "2" "")                  
[*](setq dianji (ssget "p"))
[*](repeat (sslength dianji)
[*]    (setq point1(cdr(assoc 10 (entget(ssname dianji i)))))
[*]    (setq lss (cons point1 lss))
[*]    (setq i (+ 1 i))
[*])
[*](command "erase" dianji "")
[*](Setq jxss (ssget "CP" lss))
[*](sssetfirst jxss jxss)
[*](setq n (sslength jxss))
[*](setq n1 (1- n))
[*](alert (strcat "所选取的矩形内共有"(itoa n1)"个对象!"))
[*](princ)
[*])


看看这个方法怎么样





vitalgg 发表于 2023-1-2 07:49:23

本帖最后由 vitalgg 于 2023-1-2 08:01 编辑

;; 选择一个多段线
(setq ent (car (entsel "选择一个矩形:")))
;; 得到矩形的点序
(setq pts (curve:get-points ent))
;; 用点序围选
(setq ents (pickset:to-list(ssget "cp" pts )))
;; 去除 矩形图元
(setq ents (vl-remove ent ents))
;; 如果不空,亮显选中的图元
(if ents (sssetfirst nil (pickset:from-list ents)) (alert "没有选中"))

支持任意形状的多段线。

用到的函数:









llsheng_73 发表于 2023-1-3 08:58:17

根据角点坐标用SSGET"cp"方式就可以了吧,至于是不是矩形得另行判断。。。
页: [1]
查看完整版本: 判断矩形内部是否存在图元