请帮忙修改一下
(defun c:AAA (/ pt1 pt2 old_layer old_linetype old_color ss rect_ent diagonal_ent1 diagonal_ent2)(setq old_layer (getvar "clayer"))
(setq old_linetype (getvar "celtype"))
(setq old_color (getvar "cecolor"))
(setvar "orthomode" 0)
(setq pt1 (getpoint "\n请指定矩形的第一个对角点: "))
(if pt1
(setq pt2 (getpoint pt1 "\n请指定矩形的第二个对角点: "))
)
(if (and pt1 pt2)
(progn
(setq rect_ent (entlast))
(command "line" pt1 pt2 "")
(setq diagonal_ent1 (entlast))
(command "line" (list (car pt1) (cadr pt2)) (list (car pt2) (cadr pt1)) "")
(setq diagonal_ent2 (entlast))
(setq ss (ssadd))
(setq ename (ssget "C" pt1 pt2))
(if ename
(progn
(setq i 0)
(while (< i (sslength ename))
(setq ent (ssname ename i))
(if (not (or (= ent rect_ent) (= ent diagonal_ent1) (= ent diagonal_ent2)))
(ssadd ent ss)
)
(setq i (1+ i))
)
(if (> (sslength ss) 0)
(command "erase" ss "")
)
)
)
(command "-layer" "s" "0" "")
(command "color" "1")
(command "rectang" pt1 pt2)
(command "line" pt1 pt2 "")
(command "line" (list (car pt1) (cadr pt2)) (list (car pt2) (cadr pt1)) "")
)
(alert "未成功指定矩形的对角点,请重新运行命令。")
)
(command "-layer" "s" old_layer "")
(command "linetype" "s" old_linetype "")
(command "color" old_color)
(princ) 运行的时候有时候存在删除不完整是怎么回事
)
本帖最后由 你有种再说一遍 于 2025-4-16 21:20 编辑
因为选择集范围需要在可视区域,
低版本可以zoom "e" 再进行范围选择.
高版本2018有系统变量SELECTIONOFFSCREEN控制可视范围以外.
选择对角点是getCorner.
如果低版本不想zoom "e",需要改用C#或者ARX写四叉树.
十万图元插入到四叉树也只是几十毫秒而已.
能顺利画出矩形和对角线! 运行的时候有时候存在删除不完整.
应该是你程序中删除有问题。
(defun c:AAA (/ pt1 pt2 old_layer old_linetype old_color ss rect_ent diagonal_ent1 diagonal_ent2)
(setq old_layer (getvar "clayer"))
(setq old_linetype (getvar "celtype"))
(setq old_color (getvar "cecolor"))
(setvar "orthomode" 0)
(setq pt1 (getpoint "\n请指定矩形的第一个对角点: "))
(if pt1
(setq pt2 (getpoint pt1 "\n请指定矩形的第二个对角点: "))
)
(if (and pt1 pt2)
(progn
(setq ss (ssget "C" pt1 pt2))
(if ss
(progn
(command "erase" ss "")
(command "-layer" "s" "0" "")
(command "color" "1")
(command "rectang" pt1 pt2)
(command "line" pt1 pt2 "")
(command "line" (list (car pt1) (cadr pt2)) (list (car pt2) (cadr pt1)) "")
)
)
)
(alert "未成功指定矩形的对角点,请重新运行命令。")
)
(command "-layer" "s" old_layer "")
(command "linetype" "s" old_linetype "")
(command "color" old_color)
(princ)
) gzcsun 发表于 2025-4-17 18:37
运行的时候有时候存在删除不完整.
应该是你程序中删除有问题。
(defun c:AAA (/ pt1 pt2 old_layer old_l ...
好的,谢谢 你有种再说一遍 发表于 2025-4-16 21:15
因为选择集范围需要在可视区域,
低版本可以zoom "e" 再进行范围选择.
高版本2018有系统变量SELECTIONOFFS ...
谢谢大佬的指点
页:
[1]