明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
123
返回列表 发新帖
楼主: 烟盒迷唇

[提问] 如何求得多个矩形框坐标

[复制链接]
发表于 2021-10-27 19:51:37 来自手机 | 显示全部楼层
每次打印图幅总一样,用高宽比过滤也可以
发表于 2021-10-27 21:28:19 | 显示全部楼层
wzg356 发表于 2021-10-27 17:29
接15楼
多个不自交多边形lst==(list 点集1 点集2.....)
排除包含或相交的多边形

朋友  为何运行(getpl)这个后得到的是12个呢? 谢谢!
发表于 2021-10-27 23:14:44 | 显示全部楼层
guosheyang 发表于 2021-10-27 21:28
朋友  为何运行(getpl)这个后得到的是12个呢? 谢谢!

我没有用你的图测试(我版本低),运行后
剩下的是没有互相相交,没有被其他多边形包含的多边形

你把cad当前颜色改一下
运行
(foreach l (getpl)(command "pline"
(foreach p (append l(list "c"))(command p)))
)
---选择矩形
画出来的就是过滤后剩下的
发表于 2021-10-27 23:55:40 | 显示全部楼层
wzg356 发表于 2021-10-27 23:14
我没有用你的图测试(我版本低),运行后
剩下的是没有互相相交,没有被其他多边形包含的多边形

谢谢你的回复   不过好像不对头
发表于 2021-10-27 23:57:08 | 显示全部楼层
;(qdjdzb (setq ss(ssget'((0 . "LWPOLYLINE")))) )
(defun qdjdzb(ss / DYG ENLIST E_IN GS GS2 LSS LST12 LST23 SS2 TYMB TYMB2 TYMB2_CP)
  (setq tymb(ss2tym ss)tymb2 tymb)
(repeat(setq gs(length tymb))
   (setq enlist (entget (setq dyg(car tymb)))
         lss (mapcar 'cdr (vl-remove-if '(lambda (x) (/= 10 (car x))) enlist)));提取多边形节点
   (if(and (setq ss2(ssget "W" (last lss)(cadr lss) ))(>(sslength ss2)1))
      (progn
        (setq e_in(ss2tym ss2))
        (repeat(setq gs2(length e_in))
          (if(not(equal(car e_in)(car tymb)))
             (setq tymb2(vl-remove(car e_in)tymb2))
          )
          (setq e_in(cdr e_in))
        )
       )
   )
    (setq tymb(cdr tymb))
)
  (setq tymb2_cp tymb2)
  (while(car tymb2)
    (setq lst12(mapcar 'cdr (vl-remove-if '(lambda (x) (/= 10 (car x))) (entget (car tymb2))))
          lst23(cons (list(last lst12)(cadr lst12))lst23)
          tymb2(cdr tymb2))
  )
  (list tymb2_cp lst23)
)
;;;自定义函数功能:选择集转图元名表
(defun ss2tym (ss)
  (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss)))
)

评分

参与人数 1明经币 +1 收起 理由
lee50310 + 1 赞一个!

查看全部评分

回复 支持 1 反对 0

使用道具 举报

发表于 2021-10-27 23:57:57 | 显示全部楼层
ssget  "w"   弄的  初步测试  可以
 楼主| 发表于 2021-10-28 07:12:40 | 显示全部楼层
wzg356 发表于 2021-10-27 19:51
每次打印图幅总一样,用高宽比过滤也可以

这个想法可以
 楼主| 发表于 2021-10-28 08:45:09 | 显示全部楼层
guosheyang 发表于 2021-10-27 23:57
;(qdjdzb (setq ss(ssget'((0 . "LWPOLYLINE")))) )
(defun qdjdzb(ss / DYG ENLIST E_IN GS GS2 LSS LST1 ...

这个不错,如果能添加对矩形块的支持就更好了
 楼主| 发表于 2021-10-28 10:14:55 | 显示全部楼层
块的支持我自己添加就得了,非常感谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 19:50 , Processed in 0.180295 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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