明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2891|回复: 16

[提问] 封闭框画X最快方法

[复制链接]
发表于 2020-4-12 16:53 | 显示全部楼层 |阅读模式
本帖最后由 邹锋 于 2020-4-12 18:36 编辑




不用写代码 ,我自己写,只是提供下你的思路
我有几千个X要画的,这是举例
这框大小不一样,差了点点的,每条线都不是阵列的,




上面有两个附件图档

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2020-4-15 06:23 | 显示全部楼层
本帖最后由 cq4920 于 2020-4-15 06:26 编辑

http://bbs.mjtd.com/forum.php?mo ... 6orderby%3Ddateline
G版的这个可以生产封闭图形

;;;********************************矩形连接对角线********************************
(defun c:xz ( / &kw ent ss x)
        (vl-load-com)
        (princ "\n请选择封闭多段线")
        (if (setq &kw (ssget '((0 . "LWPOLYLINE") (70 . 1))))
                (progn
                        (while (setq ent (ssname &kw 0))
                                (setq &kw (ssdel ent &kw))
                                (setq ss (mapcar 'cdr (vl-remove-if-not '(lambda (x) (= (car x) 10)) (entget ent))));提取多段线坐标
                                (if (= (length ss) 4);如果是4个点
                                        (progn
                                                (entmake (list '(0 . "LINE") (cons 10 (car ss)) (cons 11 (caddr ss))))
                                                (entmake (list '(0 . "LINE") (cons 10 (cadr ss)) (cons 11 (cadddr ss))));绘制直线
                                        )
                                )
                        )
                )
        )
        (princ)
)
这个可以连接对角线

你看看怎么修改一下   再结合一下  也许就能成功,


如果能直接把封闭区四个交点生产四边形,那就很简单了!


发表于 2020-4-14 09:53 | 显示全部楼层
本帖最后由 xvjiex 于 2020-4-14 10:57 编辑

抛砖引玉,傻办法开始:每根线判断线上的所有实交点,加入数组,实交点xy向排序,每2个交点中间,线的左右各取一点,看是否能生成填充,能则填充加入ss选择集,列遍所有线条后,去除重复的(重叠)填充,对每个填充外框取组码表4个顶点,判断对角点,对角点画X。
发表于 2020-4-12 18:26 | 显示全部楼层
本帖最后由 masterlong 于 2020-4-12 18:28 编辑

最好上个示例图
截图里上面范例的还好一点
下面的范例
线条是直线还是圆弧看不出来

我觉得
先对所有线条按角度分组
一个近似水平组,数量m
一个近似垂直组,数量n
各自以中点进行xy排序
再依次判断获取封闭框
会不会要容易点?
 楼主| 发表于 2020-4-12 18:17 | 显示全部楼层
我的想法是选择了n条,然后判断n的3次方,去看它其中一条线是否其他三次是否相交
发表于 2020-4-12 18:18 | 显示全部楼层
目测很有难度啊
建议私信 mahuan1279 大侠求助
他对算法方面很有研究
发表于 2020-4-13 09:38 | 显示全部楼层
三角剖分行不行?
发表于 2020-4-13 10:38 | 显示全部楼层
1 全选→2交点→3在每个交点处取四个点,用bo命令看是否能生成封闭图形。如果能生成四边形,就可以画X了。这一步有一个问题,如何取四个点的问题,也是好处理的。
发表于 2020-4-13 11:36 | 显示全部楼层
求交,每交点a对应二条线A、B,a对所有点求距离,除去A、B上的点,其它点根据距离排序,求最小四个,组成对,逐个循环,排除已有,最后可手动删除无用的,或BO判断是否封闭
发表于 2020-4-13 15:04 | 显示全部楼层
gu_xl有篇帖子专门讲这个啊,当年学习了一下,受益匪浅http://bbs.mjtd.com/thread-82692-1-1.html
发表于 2020-4-13 15:37 | 显示全部楼层
速度跟不上
发表于 2020-4-13 16:53 | 显示全部楼层
本帖最后由 lxl217114 于 2020-4-13 17:10 编辑

如果每个小格子都是封闭的四边形,可以把他的4个顶点按时针方向排序。
1和3号点连线
2和4号点连线

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

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

本版积分规则

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

GMT+8, 2024-4-28 16:56 , Processed in 0.269908 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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