根据矩形对角线生成矩形
如何根据对角线生成矩形,并把对角线删除 ,可以支持多选小白请教 请求大佬帮助:call:本帖最后由 煮茗 于 2024-6-21 11:28 编辑
理论上一个对角线能绘制出无数个矩形,看你的示例图,是依据坐标系xy方向绘制,那就唯一了。
之前唐突,没看到批量绘制。
想说如果量不多,直接用矩形命令绘制更快。
是的不多的画手动也可以 主要挺多的 而且手动容易漏
你这个直接获取包围盒然后绘制就是了 橡皮 发表于 2024-6-21 11:31
你这个直接获取包围盒然后绘制就是了
大佬小白没听懂:'(
手动话也很快 (defun c:tt()
(if (setq ss (ssget '((0 . "line"))))
(progn
(setq n -1)
(while (setq ent (ssname ss (setq n (1+ n))))
(vla-GetBoundingBox (vlax-ename->vla-object ent) 'minpt 'maxpt)
(entdel ent)
(setq lst (mapcar '(lambda(x) (vlax-safearray->list x)) (list minpt maxpt)))
(setq minpt (car lst) maxpt (cadr lst))
(setq lst (list minpt (list (car maxpt) (cadr minpt)) maxpt (list (car minpt) (cadr maxpt))))
(entmake (append (list '(0 . "LWPOLYLINE") '(100 . "AcDbEntity") '(100 . "AcDbPolyline") (cons 90 (length lst)) '(70 . 1)) (mapcar '(lambda (pt) (cons 10 pt)) lst)))
)
)
)
(prin1)
) (defun c:tt( / ss e ent kk pt1 pt2 pt3 pt4)
(command "undo" "be")
(setq ss (ssget '((0 . "LINE"))))
(repeat (setq kk (sslength ss))
(setq e (ssname ss (setq kk (1- kk)))
ent (entget e)
pt1 (cdr (assoc 10 ent))
pt3 (cdr (assoc 11 ent))
pt2 (list (car pt1) (cadr pt3))
pt4 (list (car pt3) (cadr pt1))
)
(MakePL (list pt1 pt2 pt3 pt4))
(entdel e)
)
(command "undo" "e")
(prin1)
)
(defun MakePL(ptlst)
(entmake (append (list
'(0 . "LWPOLYLINE") '(100 . "AcDbEntity") '(100 . "AcDbPolyline")
(cons 90 (length ptlst)) (cons 70 1))
(mapcar '(lambda (x) (cons 10 x)) ptlst)
)
)
)
来个新手版的:lol
fangmin723 发表于 2024-6-21 16:37
新手想问下是代码复制到文本文档 然后改后缀为LSP吗
fangmin723 发表于 2024-6-21 16:37
感谢大佬能用了 提高很多效率
页:
[1]
2