明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 464|回复: 5

[提问] 请帮忙修改一下

[复制链接]
发表于 3 天前 | 显示全部楼层 |阅读模式
(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)   运行的时候有时候存在删除不完整是怎么回事
)

回复

使用道具 举报

发表于 3 天前 | 显示全部楼层
本帖最后由 你有种再说一遍 于 2025-4-16 21:20 编辑

因为选择集范围需要在可视区域,
低版本可以zoom "e" 再进行范围选择.
高版本2018有系统变量SELECTIONOFFSCREEN控制可视范围以外.


选择对角点是getCorner.

如果低版本不想zoom "e",需要改用C#或者ARX写四叉树.
十万图元插入到四叉树也只是几十毫秒而已.

评分

参与人数 1明经币 +1 收起 理由
zhoupeng220 + 1 很给力!

查看全部评分

回复 支持 反对

使用道具 举报

发表于 前天 00:28 | 显示全部楼层
能顺利画出矩形和对角线!
回复 支持 反对

使用道具 举报

发表于 前天 18:37 | 显示全部楼层
运行的时候有时候存在删除不完整.
应该是你程序中删除有问题。
(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)
)
回复 支持 反对

使用道具 举报

 楼主| 发表于 昨天 21:52 | 显示全部楼层
gzcsun 发表于 2025-4-17 18:37
运行的时候有时候存在删除不完整.
应该是你程序中删除有问题。
(defun c:AAA (/ pt1 pt2 old_layer old_l ...

好的,谢谢
回复 支持 反对

使用道具 举报

 楼主| 发表于 昨天 21:53 | 显示全部楼层
你有种再说一遍 发表于 2025-4-16 21:15
因为选择集范围需要在可视区域,
低版本可以zoom "e" 再进行范围选择.
高版本2018有系统变量SELECTIONOFFS ...

谢谢大佬的指点
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-4-19 16:51 , Processed in 0.193763 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表