找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 33016|回复: 231

[拓扑] MAPGIS拓扑造区工具实现插件

 火.. [复制链接]

已领礼包: 40个

财富等级: 招财进宝

发表于 2013-9-11 09:42:04 | 显示全部楼层 |阅读模式
  • 插件名称 : 拓扑造区
  • 作  者 : newer
  • 运行环境 :XDRX API 
  • 发布时间 :2013-09-11
  • 命令名称 :XDTB_ToPoMkRegion
  • 插件介绍 :拓扑造区,拓扑出多边形后随机颜色填充
  • 备  注 : (点击图片可以放大)
(点击图片可以放大)

晓东温馨提示 1、运行环境为 晓东工具箱XDRX API 的插件,请下载最新版本的 晓东工具箱XDRX API开发环境 一键安装
2、在ACAD中如何加载插件,请看 论坛插件使用方法
3、如果您有要求需要定制插件,请到 编程申请 论坛发帖求助

插件详细内容

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

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

×
游客,如果您要查看本帖隐藏内容请回复

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

已领礼包: 862个

财富等级: 财运亨通

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

使用道具 举报

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

使用道具 举报

发表于 2013-9-11 13:17:19 来自手机 | 显示全部楼层
老大,我发的测试那张图还是不能拓扑造区

点评

对了,程序用了最新API提供的随机数函数,你下载了今天刚发布的0911版本的API了吗? 同时还要加载晓东通用LISP函数库。  详情 回复 发表于 2013-9-11 13:21
不能造有什么提示? 只要你的图形是 曲线组成的,就可以。你截取个图贴上来说明下吧。  详情 回复 发表于 2013-9-11 13:20
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2013-9-11 13:20:22 | 显示全部楼层
renyong119 发表于 2013-9-11 13:17
老大,我发的测试那张图还是不能拓扑造区

不能造有什么提示? 只要你的图形是 曲线组成的,就可以。你截取个图贴上来说明下吧。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2013-9-11 13:21:36 | 显示全部楼层
renyong119 发表于 2013-9-11 13:17
老大,我发的测试那张图还是不能拓扑造区

对了,程序用了最新API提供的随机数函数,你下载了今天刚发布的0911版本的API了吗? 同时还要加载晓东通用LISP函数库。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-9-11 13:38:09 来自手机 | 显示全部楼层
已经可以了,已不要知道什么原因,拓扑不成功的时候会删除掉里面的线,有时候会填充一大片出来,我删除填充,发现里面的线被删除,

点评

是的,不能构成封闭区域的线要删除。 对SPLINE,如果你想完美处理它,先用工具把SPLINE转换成PLINE模拟再做。  详情 回复 发表于 2013-9-11 15:06
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

已领礼包: 862个

财富等级: 财运亨通

发表于 2013-9-11 13:47:51 | 显示全部楼层
如果只需要最大边界多边形,并填充为ANSI31样式怎么改?~~~~~~~~~~~~~~~~~~~~~··

点评

程序里面有详细的注释,把删除最大变界那行去掉,把CDR的数据都删除掉,就是只保留最大边界了。 然后用: (setq e (xdrx_hatch_make ent)) 生成SOLID填充,然后用 (xdrx_hatch_setPattern ) 设置填充模  详情 回复 发表于 2013-9-11 15:11
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-9-11 14:15:41 来自手机 | 显示全部楼层
测试了5张图,成功完美拓扑造区,就是对样条曲线拓扑造区有问题。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2013-9-11 15:06:46 | 显示全部楼层
renyong119 发表于 2013-9-11 13:38
已经可以了,已不要知道什么原因,拓扑不成功的时候会删除掉里面的线,有时候会填充一大片出来,我删除填充 ...

是的,不能构成封闭区域的线要删除。
对SPLINE,如果你想完美处理它,先用工具把SPLINE转换成PLINE模拟再做。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2013-9-11 15:11:22 | 显示全部楼层
zhangq_cai1 发表于 2013-9-11 13:47
如果只需要最大边界多边形,并填充为ANSI31样式怎么改?~~~~~~~~~~~~~~~~~~~~~··

程序里面有详细的注释,把删除最大变界那行去掉,把CDR的数据都删除掉,就是只保留最大边界了。

然后用:

(setq e  (xdrx_hatch_make ent))  生成SOLID填充,然后用

(xdrx_hatch_setPattern <hatch 实体名> <图案模式>) 设置填充模式
(xdrx_hatch_setScale <hatch实体名> <新的比例>)     修改比例

就可以实现你的要求了。你自己改改,测试好 贴上来,谢谢!

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

使用道具 举报

已领礼包: 862个

财富等级: 财运亨通

发表于 2013-9-11 15:55:31 | 显示全部楼层
  1. (defun c:Exhazardzoning (/ e ent entl ss x x1 x2)
  2.   (if (setq ss (ssget '((0 . "*line,arc,circle,ellipse"))))
  3.     (progn
  4.       (XD::Begin)
  5.       (setq ss (xdrx_entity_explode ss);;炸开曲线
  6.             ss (xdrx_pickset_removedupLine ss) ; 消除重线
  7.             ss (xdrx_curve_intersectbreak ss);;交点打断
  8.             ss (xdrx_geom_searchRegions ss 0);;拓扑多边形
  9.             entl (xdrx_pickset->ents ss);;选择集转实体表
  10.       )
  11.       (if (> (length entl) 0)
  12.         (progn
  13.           (setq entl (mapcar;;查找最大边界多边形
  14.                        '(lambda (x)
  15.                           (cons (car (xdrx_getarea x)) x)
  16.                         )
  17.                        entl
  18.                      )
  19.                 entl (vl-sort entl '(lambda (x1 x2)
  20.                                       (> (car x1) (car x2))
  21.                                     )
  22.                      )
  23.                 entl (mapcar
  24.                        'cdr
  25.                        entl
  26.                      )
  27.           )
  28.           (foreach e (cdr entl);;遍历多边形表,删除除最大边界多边形外其它图形
  29.             (xdrx_entity_delete (cdr entl))
  30.           )
  31.            (setq ent (xdrx_hatch_make (car entl)))
  32.            (xdrx_hatch_setPattern  ent  "ANSI31");;生成"ANSI31"填充
  33.            (xdrx_hatch_setScale  ent  (* 10 *bl));;填充比例 *bl为比例常量
  34.           )
  35.       )
  36.       (XD::End)
  37.     )
  38.   )
  39.   (princ)
  40. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 862个

财富等级: 财运亨通

发表于 2013-9-11 16:07:45 | 显示全部楼层
能用(xdrx_geom_searchoutline )求最大边界吗?我把(xdrx_geom_searchRegions ss 0);;拓扑多边形换为(xdrx_geom_searchoutline ss 50)下面查找最大多边形等删了,没测试成功

点评

你上面贴的代码能完成你的要求了不? NEWER的程序把所有边界都给你求出 了,里面有排序,entl表里面,car 是最大的轮廓,其他是内部的拓扑多边形。你根据需要处理就行了。 xdrx_geom_searchOutline 是搜索块,HAT  详情 回复 发表于 2013-9-11 16:14
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2013-9-11 16:14:44 | 显示全部楼层
zhangq_cai1 发表于 2013-9-11 16:07
能用(xdrx_geom_searchoutline )求最大边界吗?我把(xdrx_geom_searchRegions ss 0);;拓扑多边形换为(xdrx_ ...

你上面贴的代码能完成你的要求了不? NEWER的程序把所有边界都给你求出 了,里面有排序,entl表里面,car 是最大的轮廓,其他是内部的拓扑多边形。你根据需要处理就行了。

xdrx_geom_searchOutline 是搜索块,HATCH,二维曲线组成的选择集的 最大外轮廓,只生成一个。

xdrx_geom_searchAllOutLine 搜索所有的外部轮廓,可多个。

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-26 18:42 , Processed in 0.217760 second(s), 61 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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