马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
本帖最后由 newer 于 2017-8-8 00:36 编辑
利用晓东API进行多边形拓扑的应用示例
MAPGIS拓扑造区工具实现插件
求大神如何在cad里像mapgis6.7里一样拓扑造区???
上面是以前讨论和实现的“拓扑造区”的实现,随着API越来越强大,下面介绍另外一种函数组合的实现,代码更短,边界对SPLINE,ARC等等不在像以前的多段线模拟,而是真正实现了“本来实体类型”的边界。
[Actionscript3] 纯文本查看 复制代码 (defun c:tt ()
(xdrx_begin)
(if (and (setq ss (ssget '((0 . "*line,arc,ellipse,circle"))))
(setq ss (xdrx_curve_intersectbreak ss)) ;;所有曲线交点打断
(setq ss (xdrx_region_make ss)) ;;生成region
(setq ss (xdrx_region->curve ss)) ;;region转出曲线(保持原来边界类型)
)
(progn
;;面积+实体名关联表
(setq
lst (mapcar
'(lambda (x) (list (xdrx_getpropertyvalue x "area") x))
(xdrx_pickset->ents ss)
)
)
;;按面积排序关联表
(setq lst (vl-sort lst '(lambda (x y) (> (car x) (car y)))))
;;删除最外的轮廓
(xdrx_entity_delete (cadar lst))
;;随机颜色每个区域填充
(mapcar '(lambda (x)
(xdrx_hatch_make (cadr x))
(xdrx_setpropertyvalue
(entlast)
"color"
(xdrx_math_rand 255)
)
)
(cdr lst)
)
)
)
(xdrx_end)
(princ)
)
|