找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

楼主: bbswen

[求助] 统计圆的交集次数及填充

[复制链接]

已领礼包: 859个

财富等级: 财运亨通

发表于 2014-8-22 11:28:32 | 显示全部楼层
本帖最后由 csharp 于 2014-8-22 11:32 编辑
雪山飞狐(lzh) 发表于 2014-8-22 11:21
简单点 都是圆的话。。。打断与点 做成面域 再判断面域的边数

面域边数是哪个属性?NumChanges?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2476个

财富等级: 金玉满堂

发表于 2014-8-22 11:30:25 | 显示全部楼层
速度也不快...就用E大的吧...
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2014-8-22 12:31:16 | 显示全部楼层
csharp 发表于 2014-8-21 17:13
eachy 效果,感觉有点慢,用 Net 试着写一个
圆外侧的也没有过滤掉

代码发到.net论坛吧。

点评

lzh 版主提到的方法再学习学习, 整理好了贴上来  详情 回复 发表于 2014-8-22 14:26
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 75个

财富等级: 招财进宝

 楼主| 发表于 2014-8-22 13:00:04 | 显示全部楼层
雪山飞狐(lzh) 发表于 2014-8-22 11:21
简单点 都是圆的话。。。打断与点 做成面域 再判断面域的边数

可以详细点吗?

面域的边数和覆盖次数是什么关系?

我在手算的时候,遇到过,这个情况不知道考虑到了没有

面域完全在另外一个圆内,

是不是算的时候就会被忽略。

麻烦详细解释下算法。

点评

直线边界面域的顶点都在一个圆内的话,那面域也在圆内了。  详情 回复 发表于 2014-8-22 13:56
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2014-8-22 13:56:54 | 显示全部楼层
bbswen 发表于 2014-8-22 13:00
可以详细点吗?

面域的边数和覆盖次数是什么关系?

直线边界面域的顶点都在一个圆内的话,那面域也在圆内了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 75个

财富等级: 招财进宝

 楼主| 发表于 2014-8-22 14:04:51 | 显示全部楼层
TO
eachy

QQ图片20140822140141.jpg QQ图片20140822140155.jpg
我正在看你写的程序
发现BUG,在个数比较少时,容易出现这样的问题。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 859个

财富等级: 财运亨通

发表于 2014-8-22 14:26:11 | 显示全部楼层
XDSoft 发表于 2014-8-22 12:31
代码发到.net论坛吧。

lzh 版主提到的方法再学习学习, 整理好了贴上来
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 75个

财富等级: 招财进宝

 楼主| 发表于 2014-8-22 14:48:52 | 显示全部楼层
把eachy的程序学习了一篇,
结果最主要那几句就是没有搞清楚。

点评

哪几句没看懂可以 单独 贴上来。  详情 回复 发表于 2014-8-22 14:56
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 75个

财富等级: 招财进宝

 楼主| 发表于 2014-8-22 14:51:59 | 显示全部楼层
没有看懂,自然也没有办法找到那个问题出在哪里了。
  1. (defun c:tt (/ e pts ss d lst s1 s2 lst1 cl nl lst2 hl)
  2.   (if (and (setq e (car        (xdrx_entsel
  3.                           "\nPick Curve: "
  4.                           '((0 . "*Polyline,CIRCLE,ELLIPSE,SPLINE"))
  5.                         )
  6.                    );拾取一个曲线
  7.            )
  8.            (vlax-curve-isclosed e) ;确定指定曲线是否闭合(即起点与端点是否重合)

  9.            (setq pts (xdrx_getsamplept e));;得到这个曲线的模拟顶点表

  10.            (setq ss (ssget "WP" pts '((0 . "CIRCLE"))));根据 圈围选定对像创建选择集
  11.            (setq d (getdist "\nRadius: "))
  12.       )
  13.     (progn
  14.       (setq lst         (mapcar
  15.                    '(lambda (x / p)
  16.                       (setq p (xdrx_getpropertyvalue x "Center"));实体属性获取 (p 圆心)
  17.                       (setq cl (cons (xdrx_circle_make p d) cl));创建圆实体
  18.                       p
  19.                     )
  20.                    (xdrx_pickset->ents ss);选择集中的实体表

  21.                  )
  22.             lst1 (cons (ssname (xdrx_entity_copy e) 0) cl) ;实体拷贝

  23.             s1         (xdrx_curve_intersectbreak (XD::Entity->Pickset lst1) 0);将选择集中的曲线在所有交点处break

  24.             s2         (xdrx_geom_searchregions s1 0);求给定选择集内的实体的连通区域所有边界

  25.             lst2 (xdrx_pickset->ents s2);选择集中的实体表

  26.             lst2 (vl-sort lst2 ;根据给定的比较函数来对表中的元素排序

  27.                           '(lambda (x1 x2)
  28.                              (>        (car (xdrx_getarea x1));求AutoCAD AcDbCurve(曲线)类的面积和周长(长度)

  29.                                 (car (xdrx_getarea x2))
  30.                              )
  31.                            )
  32.                  )
  33.       )
  34.       (xdrx_entity_delete (car lst2));删除当前空间或者块定义中的实体

  35.       (setq
  36.         nl (mapcar
  37.              '(lambda (x / p)
  38.                 (if (setq
  39.                       p
  40.                        (cadr (assoc "Centroid" (xdrx_curve_info x)));获得AcDbCurve曲线实体(polyline,lwpolyline,arc,circle,ellipse,spline) 和AcDbRegion(REGION面域)实体的面积,周长,质心,惯性矩,回转半径,边界盒等信息。


  41.                     )
  42.                   (list
  43.                     (length
  44.                       (vl-remove nil
  45.                                  (mapcar '(lambda (a)
  46.                                             (if        (< (distance p a) d)
  47.                                               t
  48.                                               nil
  49.                                             )
  50.                                           )
  51.                                          lst;->a
  52.                                  )
  53.                       )
  54.                     )
  55.                     x
  56.                   )
  57.                 )
  58.               )
  59.              (cdr lst2)
  60.            )
  61.       )
  62.       (mapcar
  63.         '(lambda (x / ent)
  64.            (setq ent (xdrx_hatch_make (cadr x)));创建HATCH填充实体

  65.            (setq hl (cons ent hl))
  66.            (if (zerop (car x));查验是否是0
  67.              (xdrx_entity_setcolor ent 15);设置一个实体的颜色

  68.              (xdrx_entity_setcolor ent (car x))
  69.            )
  70.          )
  71.         (vl-remove nil nl)
  72.       )
  73.       (apply 'xdrx_draworder->back hl);将参数实体和选择集的任意组合的实体顺序放到最后面

  74.     )
  75.   )
  76.   (princ)
  77. )


  78. (defun XD::Entity->PickSet (entl / n ss x)
  79.   (setq ss (ssadd))
  80.   (foreach n entl
  81.     (ssadd n ss)
  82.   )
  83.   ss
  84. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2014-8-22 14:56:12 | 显示全部楼层
bbswen 发表于 2014-8-22 14:48
把eachy的程序学习了一篇,
结果最主要那几句就是没有搞清楚。

哪几句没看懂可以 单独 贴上来。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2014-8-23 08:25:22 来自手机 | 显示全部楼层
netap的面域有getcurves函数获取面域的ge曲线集合

点评

没有找到这个方法,源码贴Net论坛了  详情 回复 发表于 2014-8-23 09:23
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 859个

财富等级: 财运亨通

发表于 2014-8-23 09:23:08 | 显示全部楼层
雪山飞狐(lzh) 发表于 2014-8-23 08:25
netap的面域有getcurves函数获取面域的ge曲线集合

没有找到这个方法,源码贴Net论坛了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 75个

财富等级: 招财进宝

 楼主| 发表于 2014-8-23 12:00:36 | 显示全部楼层
.net 的程序在07里无显示,12版无法运行,也不知道是什么情况

lisp的程序在选择集与圆心距离判断后,不知道是什么意思,

也就是如何判断这个域在那个圆中,

颜色上也没有看太明白,是判断在一个圆内就加一个颜色,还是怎么处理的

点评

记录每个圆心位置,生成的 Region 的质心和圆心的距离与覆盖半径比较,有几个小于半径的就是在几个圆内 最大 Region 面积大于等于第一次拾取圆面积,舍弃  详情 回复 发表于 2014-8-23 12:16
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 75个

财富等级: 招财进宝

 楼主| 发表于 2014-8-23 12:01:24 | 显示全部楼层
可不可以把算法写一下,
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 859个

财富等级: 财运亨通

发表于 2014-8-23 12:16:18 | 显示全部楼层
本帖最后由 csharp 于 2014-8-23 12:30 编辑
bbswen 发表于 2014-8-23 12:00
.net 的程序在07里无显示,12版无法运行,也不知道是什么情况

lisp的程序在选择集与圆心距离判断后,不 ...

记录每个圆心位置,生成的 Region 的质心和圆心的距离与覆盖半径比较,有几个小于半径的就是在几个圆内

最大 Region 面积大于等于第一次拾取圆面积,舍弃

生成的 Region 质心据第一次拾取圆的圆心距离大于该圆半径时在圆外,舍弃


if and 拾取圆
       获取圆模拟点
       构造 WP 选择(内部有圆)
       输入半径
   遍历选集
       构造圆心列表
       生成圆列表(将拾取圆加入)
   对圆列表进行交点断开
   根据断开的线生成 Region 并构造集合
   遍历 Region 集合
       if 面积大于拾取圆或质心到拾取圆心大于拾取圆半径
          删除Region
          progn
            由质心和圆心列表逐一比较找出小于半径的圆心数量和 Region 构造表
   对 Rgion 和数量表遍历
       由 Region 生成 Hatch
       由 数量 设置 Hatch 颜色

点评

由质心和圆心列表逐一比较找出小于半径的圆心数量和 Region 构造表 对 Rgion 和数量表遍历 由 Region 生成 Hatch 由 数量 设置 Hatch 颜色 那我应该就是这里没有搞清楚了, 是不是  详情 回复 发表于 2014-8-24 12:51
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2025-9-3 05:31 , Processed in 0.284020 second(s), 65 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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