明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: 邹锋

[讨论] 研究过最大包围框的,请进

    [复制链接]
发表于 2014-5-12 17:00:33 | 显示全部楼层
llsheng_73 发表于 2014-5-12 09:47
我觉得可以求出所有图元的包容盒,设置一个容差值,对所有包容盒进行处理
如果两个包容盒相交或者包含或者 ...

我也觉得这种算法好一点,问题的归根结底就是算出那些实体是在同一个模糊范围内的,除了要求作图相对规范外,也无法提更高要求,当然,人为做块是一种方法,但耗时、耗力是肯定的,对于实体,求包围盒其实就是求最大最小坐标,速度差异是很小的,因此,我感觉你这个方法是合理的。

点评

自己试试,看到结果就知……  发表于 2014-5-12 17:55
发表于 2014-5-12 17:53:51 | 显示全部楼层
cxjzxh 发表于 2014-5-12 16:50
具体描述为:
1.选择集a,第一个图元外框ssget(外框四点点集)
2.以选择到的图元作为一个新的外框;

这样的图会出现啥效果?

本帖子中包含更多资源

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

x
发表于 2014-5-12 18:06:39 | 显示全部楼层
来个比较特殊的例子:


本帖子中包含更多资源

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

x
发表于 2014-5-12 18:15:25 | 显示全部楼层
焊接演变:



本帖子中包含更多资源

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

x
 楼主| 发表于 2014-5-12 18:36:04 | 显示全部楼层
本帖最后由 邹锋 于 2014-5-12 18:47 编辑

  再来试试这些图   
boundary     你们都是用这命令来的吗

本帖子中包含更多资源

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

x
发表于 2014-5-12 19:16:15 | 显示全部楼层

本帖子中包含更多资源

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

x
发表于 2014-5-12 19:35:09 | 显示全部楼层

本帖子中包含更多资源

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

x
发表于 2014-5-12 20:05:15 | 显示全部楼层
邹锋 发表于 2014-5-12 18:36
再来试试这些图   
boundary     你们都是用这命令来的吗


程序:
游客,本帖隐藏的内容需要发帖数高于 30 才可浏览,你当前发帖数只有 0

本帖子中包含更多资源

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

x

点评

G版的一定支持!  发表于 2014-5-13 07:07
太厉害了!!  发表于 2014-5-12 22:13
谢谢G版主,我会仔细翻看资料了解你的原理,你的算法比网上一些求最大包围框的代码还要精确,受教了,  发表于 2014-5-12 21:42

评分

参与人数 5明经币 +6 金钱 +44 收起 理由
zctao1966 + 1 很给力!
434939575 + 1 太厉害了。乃仙人打屁不同凡想
lucas_3333 + 1 “王重阳”出手,必引起武林的轰动……
邹锋 + 1 + 20 你这个取SPLINE最大包围框的,实在太牛了,.
langjs + 2 + 24 版主太牛

查看全部评分

发表于 2014-5-12 20:34:56 | 显示全部楼层
本帖最后由 langjs 于 2014-5-12 21:20 编辑

测试图纸没通过


(defun c:qqq ( / i lst lst1 lst2 lst3 n nn nnn ss)
  (setq lst '()        lst1 '() lst3 '())
  (setq ss (ssget '((0 . "LINE"))))
  (repeat (setq i (sslength ss))
    (setq lst (cons (ssname ss (setq i (1- i))) lst))
  )
  (while (setq n (car lst))
    (setq lst (vl-remove n lst)         lst2 (list n)  lst3 (cons n lst3))
    (foreach nn lst
      (if (inters (cdr (assoc 10 (entget n)))  (cdr (assoc 11 (entget n)))
                  (cdr (assoc 10 (entget nn))) (cdr (assoc 11 (entget nn))))
        (setq lst2 (cons nn lst2))
      )
    )
    (setq lst1 (cons lst2 lst1))
  )
  (while (setq n (car lst3))
    (setq lst2 '())
    (foreach nn lst1
      (if (member n nn)
        (setq lst2 (append lst2  nn ))
      )
      (foreach nnn lst2
        (setq lst2 (cons nnn (vl-remove nnn lst2)))
      )
    )
    (foreach nn lst2
      (setq lst3 (vl-remove nn lst3))
    )
    (setq lst (cons lst2 lst))
  )
)
发表于 2014-5-12 20:43:48 | 显示全部楼层
cxjzxh 发表于 2014-5-12 16:50
具体描述为:
1.选择集a,第一个图元外框ssget(外框四点点集)
2.以选择到的图元作为一个新的外框;

这个思路很好哈
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-16 12:23 , Processed in 0.203917 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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