找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 6865|回复: 29

[几何] 利用API拓扑多边形

[复制链接]

已领礼包: 344个

财富等级: 日进斗金

发表于 2013-7-12 23:39:42 | 显示全部楼层 |阅读模式
函数发布
函数名称: XD::Curve:TopoPoly
调用格式: (XD::Curve:TopoPoly SS DistFuzz AngFuzz)
参数说明: ss 曲线选择集
DistFuzz 距离容差值
AngFuzz 角度荣差值
返回值: 多边形选择集
函数简介: 选择任意曲线,拓扑多边形,返回多边形选择集!返回的多边形删除了外围最大多边形!
函数来源: 二次修改
函数作者: 牢固
适用版本: XDRX API 
最后更新时间: 2013-07-12
备注: -
演示图片:

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

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

×
本帖最后由 牢固 于 2013-7-13 00:05 编辑

  1. (defun XD::Curve:TopoPoly (SS DISTFUZZ ANGFUZZ / E LST OUT PTS S1)
  2.   (xdrx_begin '("cmdecho" 0
  3.                "osmode" 0
  4.               )
  5.   )
  6.   (xdrx_document_ucson)
  7.   (xdrx_document_setprec DistFuzz AngFuzz)
  8.   (xdrx_setsstodb ss 0)
  9.   (xdrx_setmark)
  10.   (xdrx_pickset_removeDupLine ss)
  11.   (setq ss (xdrx_getss))
  12.   (if (not ss)
  13.     (setq ss (ssadd))
  14.   )
  15.   (while (setq e (xdrx_getentdata 0))
  16.     (ssadd e ss)
  17.   )
  18.   (setq ss (XDRX_CURVE_INTERSECTBREAK ss))
  19.   (setq ss (xdrx_geom_searchRegions ss 0.0))
  20.   (if ss
  21.     (progn
  22.       (setq lst (XDRX_PICKSET->ENTS ss))
  23.       (setq lst (vl-sort lst '(lambda (a b)
  24.                                 (> (car (xdrx_GETAREA a)) (car (xdrx_GETAREA b)))
  25.                               )
  26.                 )
  27.       )
  28.       (if (> (length lst) 1)
  29.         (progn
  30.           (setq out (car lst)
  31.                 lst (cdr lst)
  32.                 pts (xdrx_getsamplept out)
  33.           )
  34.           (entdel out)
  35.           (XDRX_DOCUMENT_ASSUREINCURRENTVIEW (apply
  36.                                                'mapcar
  37.                                                (cons 'min pts)
  38.                                              ) (apply
  39.                                                  'mapcar
  40.                                                  (cons 'max pts)
  41.                                                )
  42.           )
  43.           (setq ss (ssget "CP" pts '((0 . "lwpolyline"))))
  44.           (setq lst (vl-remove-if '(lambda (x)
  45.                                      (ssmemb x ss)
  46.                                    ) lst
  47.                     )
  48.           )
  49.           (while lst
  50.             (if (> (length lst) 1)
  51.               (progn
  52.                 (setq out (car lst)
  53.                       lst (cdr lst)
  54.                       pts (xdrx_getsamplept out)
  55.                 )
  56.                 (entdel out)
  57.                 (XDRX_DOCUMENT_ASSUREINCURRENTVIEW (apply
  58.                                                      'mapcar
  59.                                                      (cons 'min pts)
  60.                                                    ) (apply
  61.                                                        'mapcar
  62.                                                        (cons 'max pts)
  63.                                                      )
  64.                 )
  65.                 (setq s1 (ssget "CP" pts '((0 . "lwpolyline"))))
  66.                 (setq lst (vl-remove-if '(lambda (x)
  67.                                            (ssmemb x s1)
  68.                                          ) lst
  69.                           )
  70.                 )
  71.                 (setq ss (XDRX_PICKSET_UNION ss s1))
  72.               )
  73.               (progn
  74.                 (ssadd (car lst) ss)
  75.                 (setq lst (cdr lst))
  76.               )
  77.             )
  78.           )
  79.         )
  80.       )
  81.     )
  82.   )
  83.   (xdrx_document_ucsoff)
  84.   (xdrx_end)
  85.   ss
  86. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 19个

财富等级: 恭喜发财

发表于 2013-7-13 00:36:48 | 显示全部楼层
G版,这个一般什么情况下用到呢?

点评

用处是可以找出曲线中的封闭区域,可以统计面积,可以在封闭区域中心标注编号等!这个在统计宗地地块面积,房产测绘中统计房屋面积中有用! 其他应该还有不少用处吧!各专业不一样,可能会有不同需求!  详情 回复 发表于 2013-7-13 00:55
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 344个

财富等级: 日进斗金

 楼主| 发表于 2013-7-13 00:55:58 | 显示全部楼层
Lisphk 发表于 2013-7-13 00:36
G版,这个一般什么情况下用到呢?

用处是可以找出曲线中的封闭区域,可以统计面积,可以在封闭区域中心标注编号等!这个在统计宗地地块面积,房产测绘中统计房屋面积中有用!
其他应该还有不少用处吧!各专业不一样,可能会有不同需求!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2688个

财富等级: 家财万贯

发表于 2013-7-13 09:09:04 | 显示全部楼层
这个用处可多了,在房产测绘、地籍测绘、GIS数据处理都有用,而且还很重要
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2476个

财富等级: 金玉满堂

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

使用道具 举报

已领礼包: 2476个

财富等级: 金玉满堂

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

使用道具 举报

已领礼包: 2476个

财富等级: 金玉满堂

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

使用道具 举报

已领礼包: 2476个

财富等级: 金玉满堂

发表于 2013-7-13 10:24:06 | 显示全部楼层
本帖最后由 q3_2006 于 2013-7-13 10:30 编辑

拓扑时会自动删除样条及多段线!不好意思,前面的回复请删除,新手,不知道怎么修改{:soso_e110:}
0.gif

点评

关于删除SPLINE,POLYLINE的等新的API发布。 样条曲线不能拓扑的,需要在LISP程序里面,先用POLYLINE模拟。  详情 回复 发表于 2013-7-13 13:48
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2013-7-13 13:48:09 | 显示全部楼层
q3_2006 发表于 2013-7-13 10:24
拓扑时会自动删除样条及多段线!不好意思,前面的回复请删除,新手,不知道怎么修改

关于删除SPLINE,POLYLINE的等新的API发布。

样条曲线不能拓扑的,需要在LISP程序里面,先用POLYLINE模拟。

点评

但G版之前的mkpoly程序是可以的呀。。。  详情 回复 发表于 2013-7-13 14:27
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2476个

财富等级: 金玉满堂

发表于 2013-7-13 14:27:09 | 显示全部楼层
本帖最后由 q3_2006 于 2013-7-13 14:30 编辑
XDSoft 发表于 2013-7-13 13:48
关于删除的等新的API发布。

样条曲线不能拓扑的,需要在LISP程序里面,先用POLYLINE模 ...


但G版之前的mkpoly程序是可以的呀,SPLINE,POLYLINE不能拓扑,函数就没有通用性了!

点评

等发布新版API后,再测试下。  详情 回复 发表于 2013-7-13 14:45
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2013-7-13 14:45:54 | 显示全部楼层
q3_2006 发表于 2013-7-13 14:27
但G版之前的mkpoly程序是可以的呀,SPLINE,POLYLINE不能拓扑,函数就没有通用性了!

等发布新版API后,再测试下。

点评

0715版测试,04 12交点打断后退出,08未作任何处理就退出程序!  详情 回复 发表于 2013-7-17 06:51
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2476个

财富等级: 金玉满堂

发表于 2013-7-17 06:51:31 | 显示全部楼层
XDSoft 发表于 2013-7-13 14:45
等发布新版API后,再测试下。

0715版测试,04 12交点打断后退出,08未作任何处理就退出程序!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2013-7-17 08:01:03 | 显示全部楼层
把你的测试图附件发上来,我看看。

点评

看来还有新问题,刚才我是每个版本CAD试了一次,现在04测试图又来一次,变成这样了。  详情 回复 发表于 2013-7-17 08:25
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2476个

财富等级: 金玉满堂

发表于 2013-7-17 08:25:31 | 显示全部楼层
XDSoft 发表于 2013-7-17 08:01
把你的测试图附件发上来,我看看。

看来还有新问题,刚才我是每个版本CAD试了一次,现在04测试图又来一次,变成这样了。

0.rar

6.39 KB, 下载次数: 8, 下载积分: D豆 -1 , 活跃度 1

点评

测试了你发上来的图,在2008下面,用下面的语句,正常。 (xd::curve:topopoly (ssget) 0.01 1) [attachimg]3285[/attachimg]  详情 回复 发表于 2013-7-17 08:52
你用函数的时候,参数给的是多少? DistFuzz AngFuzz 这两个值。 一个是距离精度,一个是角度精度, 角度精度是度。  详情 回复 发表于 2013-7-17 08:46
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2013-7-17 08:46:44 | 显示全部楼层
q3_2006 发表于 2013-7-17 08:25
看来还有新问题,刚才我是每个版本CAD试了一次,现在04测试图又来一次,变成这样了。

你用函数的时候,参数给的是多少?

DistFuzz AngFuzz

这两个值。

一个是距离精度,一个是角度精度, 角度精度是度。


点评

精度都改成0.1后04 12正常了 08重新加载提示如下:xdrx_api.r17.x32.arx 是无效 ARX 文件 xdrx_api加载失败!程序将退出!; 错误: no function definition: xdrx_matrix_identity  详情 回复 发表于 2013-7-17 09:39
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-22 00:00 , Processed in 0.227443 second(s), 63 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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