明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖

绘制洞开线及门开启方向线求大神修改

[复制链接]
 楼主| 发表于 2020-3-25 23:02:01 | 显示全部楼层
cq4920 发表于 2020-3-23 19:47
感觉真的没啥用

主体代码在这了,基本上改一改 可以画很多东西了!比如我帖子里的木工板 壁纸硬包  ...

最好是点选和窗选两种,鼠标确定开启方向,随层,8号色,虚线
发表于 2022-11-1 22:00:40 来自手机 | 显示全部楼层
如果不是正方向的矩形(如平行四边形),怎么进行四个点的排序?
发表于 2023-4-11 13:57:50 | 显示全部楼层
cq4920 发表于 2020-3-23 19:47
感觉真的没啥用

主体代码在这了,基本上改一改 可以画很多东西了!比如我帖子里的木工板 壁纸硬包  ...

大佬你好,你这个开启识别是是直线吗,怎么改成只识别矩形呢,你这个现在有2个问题,如果框内有别的线直线就不行,如果有标注就会把标注文字生成一框线
发表于 2023-4-12 18:41:16 | 显示全部楼层
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)
                                                        )
    )
  )
  (setq  minx (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
)
发表于 2023-4-14 14:11:40 | 显示全部楼层
cq4920 发表于 2023-4-12 18:41
(setq ent (entlast))
(vl-cmdf "_BOUNDARY" (getpoint) "")
(setq ss (last_ent ent))

大佬,我看不懂代码,你好事做到底,给个完整的吧,万分感谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-18 08:29 , Processed in 0.163199 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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