找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 4405|回复: 22

[原创]:选择线段图元进行多边形拓朴,请测试

[复制链接]

已领礼包: 3个

财富等级: 恭喜发财

发表于 2006-6-3 01:08:32 | 显示全部楼层 |阅读模式

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

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

×
感兴趣的可以先看一下录像[/COLOR]
[swf w=550 h=400]http://p4.xdcad.net/forum/file_upload/530469_1.swf[/swf]
可在本帖最后下载打包编译好的VLX测试,已经对程序进行了改进,支持PLINE和LINE,并修正了有些多边形带小尾巴的Bug,命令名:TEST[/COLOR]

输出了多边形之间的关系,以便于有不同用途的进一步编程

以有时间了继续完成:1。点选多边形中自动索取包含该点的最小多边形,类似BHATCH

                                   2。相交处不需有折点也能自动判断

用到很多通用函数,请在
http://www.xdcad.net/forum/showt ... 2723430#post2723430 [/COLOR]
下载

还用到了关于计算几何的函数,请在
http://www.xdcad.net/forum/showt ... 2723451#post2723451 [/COLOR]
下载



  1. (defun c:test (/        data   n      i     k    j      pt_lst dbx_lst
  2.          gx_lst dbx       dbx_po n_pt     n_dbx    e1     e2     pt1
  3.          st1    st2       x      y
  4.         )
  5.   (setvar "cmdecho" 0)
  6.   (setq    data    (toupu_select 0.1);选取线段输出数据
  7.     data    (toupu data);进行多边形拓朴,输出拓朴后多边形关系
  8.     pt_lst    (car data)
  9.     n_pt    (length pt_lst)
  10.     dbx_lst    (nth 1 data)
  11.     n_dbx    (length dbx_lst)
  12.     gx_lst    (nth 2 data)
  13.   )
  14.   ;;展点
  15.   (setq i 0)
  16.   (repeat n_pt
  17.     (command "text" (nth i pt_lst) 0.5 0 (rtos i 2) "")
  18.     (setq i (1+ i))
  19.   )
  20.   ;;绘每一个多边形
  21.   (setq i 0)
  22.   (repeat n_dbx
  23.     (setq dbx     (nth i dbx_lst)
  24.       k     (length dbx)
  25.       j     0
  26.       dbx_po nil
  27.     )
  28.     ;;生成多边形的坐标数据表
  29.     (repeat k
  30.       (setq dbx_po (append dbx_po (list (nth (nth j dbx) pt_lst)))
  31.         j       (1+ j)
  32.       )
  33.     )
  34.     ;;根据多边形数据表生成多边形
  35.     (makepline dbx_po 1 0 nil)
  36.     (setq e1  (entlast)
  37.       pt1 (in_point_dbx dbx_po)    ;生成多边形内一点,用来标注多边形序号
  38.     )
  39.     (command "text" pt1 1.5 0 (rtos i 2) "") ;注记多边形序号
  40.     (setq e2 (entlast))
  41.     (vla-put-color (vlax-ename->vla-object e2) acred)
  42.     ;;编无组
  43.     (vl-cmdf "-group" "create" "*" "" e1 e2 "")
  44.     (setq i (1+ i))
  45.   )
  46.   ;;写出多边关系表
  47.   (setq    i  0
  48.     pt (getpoint "\n选择显示多边形关系表的地方:")
  49.     x  (nth 0 pt)
  50.     y  (nth 1 pt)
  51.   )
  52.   (repeat n_dbx
  53.     (setq pt1 (list x (- y (* i 14)) 0)
  54.       st1 (car (nth i gx_lst))
  55.       st1 (vl-prin1-to-string st1)
  56.     )
  57.     (command "text" pt1 2 0 (strcat (rtos i 2) "(") "")
  58.     (setq pt1 (list (+ 5 x) (- y (* i 14) 3) 0))
  59.     (command "text" pt1 2 0 st1 "")
  60.     (setq pt1 (list (+ 5 x) (- y (* i 14) 7) 0)
  61.       st1 (nth 1 (nth i gx_lst))
  62.       st1 (vl-prin1-to-string st1)
  63.     )
  64.     (command "text" pt1 2 0 st1 "")
  65.     (setq pt1 (list x (- y (* i 14) 11) 0))
  66.     (command "text" pt1 2 0 ")" "")

  67.     (setq i (1+ i))
  68.   )
  69. )


大家有兴趣后再发源码
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2006-6-3 10:41:19 | 显示全部楼层
很感兴趣,有没有形象点的图示?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 3个

财富等级: 恭喜发财

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

使用道具 举报

发表于 2006-6-3 14:47:45 | 显示全部楼层
能否把相关函数打包做成一个fas或vlx供测试?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 3个

财富等级: 恭喜发财

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

使用道具 举报

已领礼包: 3个

财富等级: 恭喜发财

 楼主| 发表于 2006-6-3 21:02:19 | 显示全部楼层
已经对程序进行了改进,支持PLINE和LINE,并修正了有些多边形带小尾巴的Bug,命令名:TEST[/COLOR]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 3个

财富等级: 恭喜发财

 楼主| 发表于 2006-6-5 16:49:30 | 显示全部楼层
再次对多边形关系进行了优化,为以后处理孤岛作好了准备
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-6-30 23:33:58 | 显示全部楼层
我下了,运行时选择了对象之后提示 参数类型错误: consp nil
不知为何呢
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 3个

财富等级: 恭喜发财

 楼主| 发表于 2006-7-1 00:05:16 | 显示全部楼层
我这里没有这个问题,但不知是不是上传错了没有修改的,现在再上传上来,前面的也重新上传了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-7-1 11:50:56 | 显示全部楼层
真是厉害阿,不知道xiao_longxin 您的这个"toupu"函数是否可提供源码供研究?
谢谢~
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2006-7-1 21:20:10 | 显示全部楼层
两个命令均支持 所有曲线(闭合&非闭合)
spline,*polyline,line,arc,circle,ellipse
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 3个

财富等级: 恭喜发财

 楼主| 发表于 2006-7-1 23:34:27 | 显示全部楼层
风雨兄应该做成函数,返回的是所生的面域的选择集,以方便别人可以进一步编程
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2006-7-5 01:55:06 | 显示全部楼层
最初由 雨箭风刀 发布
[B]ssbr  曲线交点打断
sstopu  曲线交点打断生成面域 [/B]

这几天正在重写这个曲线交点断开,目前完成了 Line、Arc、Circle、Ellipse、Spline,还差 *Polyline。简单测试了下 200 根 Line 组成的网格 10000 个交点,用时 8.55 s。上面的附件无法下载,不知道你这个程序的效率如何。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

发表于 2006-7-13 21:45:32 | 显示全部楼层
最初由 eachy 发布
[B]
这几天正在重写这个曲线交点断开,目前完成了 Line、Arc、Circle、Ellipse、Spline,还差 *Polyline。简?.. [/B]


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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-25 16:41 , Processed in 0.453306 second(s), 58 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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