感觉真的没啥用
主体代码在这了,基本上改一改 可以画很多东西了!比如我帖子里的木工板 壁纸硬包...
最好是点选和窗选两种,鼠标确定开启方向,随层,8号色,虚线
如果不是正方向的矩形(如平行四边形),怎么进行四个点的排序? cq4920 发表于 2020-3-23 19:47
感觉真的没啥用
主体代码在这了,基本上改一改 可以画很多东西了!比如我帖子里的木工板 壁纸硬包...
大佬你好,你这个开启识别是是直线吗,怎么改成只识别矩形呢,你这个现在有2个问题,如果框内有别的线直线就不行,如果有标注就会把标注文字生成一框线 huisguiji 发表于 2023-4-11 13:57
大佬你好,你这个开启识别是是直线吗,怎么改成只识别矩形呢,你这个现在有2个问题,如果框内有别的线直 ...
(setq ent (entlast))
(vl-cmdf "_BOUNDARY" (getpoint) "")
(setq ss (last_ent ent))
(repeat (setq n (sslength ss))
(setq obj (vlax-ename->vla-object (ssname ss (setq n (1- n)))))
(vla-getboundingbox obj 'x 'y)
(setq lst (cons (vlax-safearray->list y)
(cons (vlax-safearray->list x) lst)
)
)
)
(setqminx (car (vl-sort (mapcar 'car lst) '<))
miny (car (vl-sort (mapcar 'cadr lst) '<))
maxx (car (vl-sort (mapcar 'car lst) '>))
maxy (car (vl-sort (mapcar 'cadr lst) '>))
)
(setq pt1 (list minx miny))
(setq pt2 (list maxx miny))
(setq pt3 (list maxx maxy))
(setq pt4 (list minx maxy))
(vl-cmdf "ERASE" ss"")
这样处理,就不限制内空是不是矩形有没有文字或者是其他的标注
;;40最后生产出的图元
(defun last_ent (en / ss)
(if en
(progn
(setq ss (ssadd))
(while (setq en (entnext en))
(if (not (member (cdr (assoc 0 (entget en)))
'("ATTRIB" "VERTEX" "SEQEND")
)
)
(ssadd en ss)
);if
);while
(if (zerop (sslength ss)) (setq ss nil))
ss
);progn
(ssget "_x")
);if
)
cq4920 发表于 2023-4-12 18:41
(setq ent (entlast))
(vl-cmdf "_BOUNDARY" (getpoint) "")
(setq ss (last_ent ent))
大佬,我看不懂代码,你好事做到底,给个完整的吧,万分感谢{:1_1:}
页:
1
[2]