找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 6941|回复: 27

[求助] 怎样判断多义线之间的关系,怎样求两条多义线围成区域的面积

[复制链接]
发表于 2013-4-18 15:58:04 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
求助怎样自动判断两条多义线的关系,怎样自动求算两条多义线交叉(包括包含)围成的面积?
未标题-1.jpg

评分

参与人数 1D豆 +4 收起 理由
XDSoft + 4 出题引导交流奖!

查看全部评分

本帖被以下淘专辑推荐:

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

已领礼包: 9051个

财富等级: 富甲天下

发表于 2013-4-18 21:42:08 | 显示全部楼层

如果不要删除的话不就可以了!
...............        
       (progn
          (setq area (vla-get-area rn1))
         ;(vla-delete rn1)
           area
................
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 0 反对 1

使用道具 举报

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

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2013-4-18 16:22:35 | 显示全部楼层
用 xdapi 就简单了
xdrx_curve_subtract

功    能:两个曲线求差(曲线1-曲线2)

调用格式:(xdrx_curve_subtract <曲线实体名1> <曲线实体名2> [生成差集POLYLINE标志])

说    明:1.实体为曲线,包括:line,*polyline,arc,circle,ellipse,spline。
          2.若给参数[生成并集POLYLINE标志],且为T,则该函数提示用户交互绘制两曲线求差后的轮廓线。
          3.若曲线不封闭,则把曲线起始点和终止点连线作为封闭曲线处理。

返 回 值:1.若不给绘出标志,则返回求差后的轮廓线的顶点表,格式:((顶点1...顶点n)...(顶点1...顶点n))
            求得几个差集,就有几个项。

          2.若给绘出标志T,则生成差集轮廓线,且返回T.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-4-18 16:27:32 | 显示全部楼层
本帖最后由 Gu_xl 于 2013-4-18 16:30 编辑

先给你个思路,程序你自己尝试写一下:
1、将多段线1和多段线2分别转为面域1和面域2,分别计算出面积S1和S2
2、判断相互间关系:
   面域1 和面域2作 union布尔运算,的到新的面域,计算出新面域的面积S3
a、若 S3 = S1 + s2 ,若多段线1和多段线2无交点,则多段线1和多段线2相离,若多段线1和多段线2有交点,则多段线1和多段线2相邻
b、若S3 = S1=s2,则多段线1和多段线2重合
c、若s3=s1,则多段线1包含多段线2,若有必要,可进一步判断多段线1和多段线2 有无交点
d、若s3=s2,则多段线2包含多段线1,若有必要,可进一步判断 多段线1和多段线2  有无交点  
e、若 S3<S1+S2,则多段线1和多段线2相交,重合面积为s1+s2-s3
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2013-4-18 17:10:36 | 显示全部楼层
eachy 发表于 2013-4-18 16:22
用 xdapi 就简单了
xdrx_curve_subtract

一提API,我就有点惭愧,我争取尽量尽快把它升级到高版本下。现在要做的事太多{:soso_e109:}
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2013-4-18 17:15:47 | 显示全部楼层
wowan1314 发表于 2013-4-18 16:11
用面域! 面域相减

面域是一个思路,能简化程序,面域提供了很多函数,比如点是否在面域上等等都可以使用。

不过还是希望大家能讨论出基本的图形计算解决方法,用LISP实现出来。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

发表于 2013-4-18 17:36:42 | 显示全部楼层
个人认为,位置关系无非下面几种情形

1、完全在另外一个多段线内 并集面积为为外面的多段线面积。
2、两多段线交叉, 并集面积大于相对大的多段线面积,但小于两条多段线面积之和。
3、在另外一条多段线外面,并集面积等于两多段线面积之和。

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

使用道具 举报

发表于 2013-4-18 17:41:54 | 显示全部楼层
[pcode=lisp,true](defun RegionSub (e1 e2 / addregion va axerr ms rn1 rn2 area)
  (defun addregion (ms obj / va axerr)
    (setq va (vlax-make-safearray vlax-vbObject '(0 . 0)))
    (vlax-safearray-put-element va 0 obj)
    (if        (VL-CATCH-ALL-ERROR-P
          (setq        axErr
                 (VL-CATCH-ALL-APPLY
                   'vla-addregion
                   (list ms va)
                 )
          )
        )
      nil
      (car (vlax-safearray->list
             (vlax-variant-value axErr)
           ) ;_ 结束vlax-safearray->list
      ) ;_ 结束car
    )
  )
  (setq        ms  (vla-get-modelspace
              (vla-get-activedocument (vlax-get-acad-object))
            )
        rn1 (addregion ms (vlax-ename->vla-object e1))
        rn2 (addregion ms (vlax-ename->vla-object e2))
  )
  (if (and rn1
           rn2
      )
    (progn
      (vla-boolean rn1 acInterSection rn2)
      (if (vl-catch-all-error-p
            (vl-catch-all-apply 'vlax-get (list rn2 'area))
          )
        (progn
          (setq area (vla-get-area rn1))
          (vla-delete rn1)
          area
        )
      )
    )
  )
)[/pcode]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

使用道具 举报

已领礼包: 8613个

财富等级: 富甲天下

发表于 2013-4-18 22:29:48 | 显示全部楼层
XDSoft 发表于 2013-4-18 17:10
一提API,我就有点惭愧,我争取尽量尽快把它升级到高版本下。现在要做的事太多

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

使用道具 举报

已领礼包: 9051个

财富等级: 富甲天下

发表于 2013-4-19 07:33:55 | 显示全部楼层
cuyongping 发表于 2013-4-18 21:58
输入命令没有反应!

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

使用道具 举报

已领礼包: 837个

财富等级: 财运亨通

发表于 2013-4-19 11:59:13 | 显示全部楼层
不封闭的多义线呢?

点评

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

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

发表于 2013-4-19 12:09:01 | 显示全部楼层
hao3ren 发表于 2013-4-19 11:59
不封闭的多义线呢?

严格几何意义上,不封闭就没面积了。不过如果想算,那么就是认为首尾闭合的吧。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-22 16:45 , Processed in 0.493796 second(s), 71 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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