设为首页收藏本站

晓东CAD家园-论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2353|回复: 19

[编程申请] 曲线粘连选择

[复制链接]

签到天数: 1840 天

连续签到: 19 天

[LV.Master]伴坛终老I

已领礼包: 5087个

财富等级: 富甲天下

发表于 2013-7-23 13:13:34 | 显示全部楼层 |阅读模式

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

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

x
用于管网的快速选择,应该可以按图层选择,要有精度控制。这个以前写过的人也不少,江南的那个比较好,但在管网比较大的情况下,选择起来很慢,且有遗漏。直线管网比较容易,顾版曾写过一个程序,很好用,但无法选择曲线管网,是个遗憾。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

签到天数: 1028 天

连续签到: 18 天

[LV.10]以坛为家III

已领礼包: 40个

财富等级: 招财进宝

发表于 2013-7-23 14:52:48 | 显示全部楼层
楼主最好详细说下,贴个图上来,并附上测试的DWG图纸,我是没看清楚你的要求。

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

使用道具 举报

签到天数: 1275 天

连续签到: 19 天

[LV.10]以坛为家III

点击这里给我发消息

已领礼包: 144个

财富等级: 日进斗金

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

使用道具 举报

签到天数: 973 天

连续签到: 1 天

[LV.10]以坛为家III

点击这里给我发消息

已领礼包: 1255个

财富等级: 财源广进

发表于 2013-7-23 17:38:11 | 显示全部楼层
LZ 要求类似拓扑, 选一根线, 和其相连(或在一定间隙内的)构造一个选择集

点评

如这么说,应该不难写,曲线用点表模拟出来就行了,等楼主上图吧。  详情 回复 发表于 2013-7-23 18:02
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

签到天数: 1028 天

连续签到: 18 天

[LV.10]以坛为家III

已领礼包: 40个

财富等级: 招财进宝

发表于 2013-7-23 18:02:21 | 显示全部楼层
st788796 发表于 2013-7-23 17:38
LZ 要求类似拓扑, 选一根线, 和其相连(或在一定间隙内的)构造一个选择集

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

使用道具 举报

签到天数: 1840 天

连续签到: 19 天

[LV.Master]伴坛终老I

已领礼包: 5087个

财富等级: 富甲天下

 楼主| 发表于 2013-7-23 21:02:35 | 显示全部楼层
st兄说的差不多,拿个很简单的例子演示一下,限于自己的水平,我只能做到这样了,不知各位大师有什么好方法.
111.gif
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

签到天数: 1840 天

连续签到: 19 天

[LV.Master]伴坛终老I

已领礼包: 5087个

财富等级: 富甲天下

 楼主| 发表于 2013-7-23 21:05:11 | 显示全部楼层
对每个图元缩放以取得端点是个很笨的方法,尤其在图纸很大的时候,慢得受不了

点评

把你现在这个实现的代码贴论坛来吧。 另外,在附个DWG图,你的图片里面的,实体都是LINE吗? 每个地方都是断开不连续的吗?都是一个图层?  详情 回复 发表于 2013-7-23 21:08
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

签到天数: 1275 天

连续签到: 19 天

[LV.10]以坛为家III

点击这里给我发消息

已领礼包: 144个

财富等级: 日进斗金

发表于 2013-7-23 21:08:34 | 显示全部楼层
liuyj 发表于 2013-7-23 21:05
对每个图元缩放以取得端点是个很笨的方法,尤其在图纸很大的时候,慢得受不了

把你现在这个实现的代码贴论坛来吧。

另外,在附个DWG图,你的图片里面的,实体都是LINE吗? 每个地方都是断开不连续的吗?都是一个图层?

点评

老大,不都是line,所以比较麻烦,一般我不用spline线,其他的是有可能用的,当然最多的还是直线和圆弧  详情 回复 发表于 2013-7-23 22:19
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

签到天数: 480 天

连续签到: 3 天

[LV.9]以坛为家II

点击这里给我发消息

已领礼包: 588个

财富等级: 财运亨通

发表于 2013-7-23 21:44:01 | 显示全部楼层
用端点判断,可以参考Checkopen算法

点评

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

使用道具 举报

签到天数: 1028 天

连续签到: 18 天

[LV.10]以坛为家III

已领礼包: 40个

财富等级: 招财进宝

发表于 2013-7-23 21:54:11 | 显示全部楼层
从楼主的图看,是个树,应该可以用树的算法,

问个问题,楼主,你的这些官网有形成闭合回路的情况没? 看图好像都是开放的。

点评

我主要是计算树状管网用,所以一般没有闭合回路的情况,不过老兄的话也提醒了我,应该考虑环状管网的情况  详情 回复 发表于 2013-7-23 22:17
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

签到天数: 1840 天

连续签到: 19 天

[LV.Master]伴坛终老I

已领礼包: 5087个

财富等级: 富甲天下

 楼主| 发表于 2013-7-23 22:14:54 | 显示全部楼层
本人水平有限,程序是在江南兄的代码上修改而来,借用了多位大师的代码,也记不住是谁了。弄得很啰嗦,现在自己看起来也很吃力。

  1. (defun xss2olst (ss / i e lst)
  2.   (setq i -1)
  3.   (while (setq e (ssname ss (setq i (1+ i))))
  4.     (setq lst (cons (vlax-ename->vla-object e) lst))
  5.   )
  6. )
  7. (defun xssobox (sso / ps xs ys lst)
  8.   (setq ps  (apply 'append
  9.      (mapcar '(lambda (x)
  10.          (vla-getboundingbox x 'll 'rr)
  11.          (mapcar 'vlax-safearray->list (list ll rr))
  12.        )
  13.       sso
  14.      )
  15.      )
  16. xs  (vl-sort (mapcar 'car ps) '<)
  17. ys  (vl-sort (mapcar 'cadr ps) '<)
  18. lst (list (list (car xs) (car ys)) (list (last xs) (last ys)))
  19.   )
  20. )
  21. (defun ZoomObject (objlst / dir ang 3x3 4x4 ptlst)
  22.   (setq dir (trans '(0 0 1) 2 0 T)
  23. ang (- (getvar "viewtwist"))
  24. 3x3 (mxm (mapcar '(lambda (x) (trans x 0 dir))
  25.     '((1 0 0) (0 1 0) (0 0 1))
  26.    )
  27.    (list (list (cos ang) (- (sin ang)) 0)
  28.          (list (sin ang) (cos ang) 0)
  29.          '(0 0 1)
  30.    )
  31.      )
  32. 4x4 (append (mapcar '(lambda (v o) (append v (list o))) 3x3 '(0 0 0))
  33.       (list '(0 0 0 1))
  34.      )
  35.   )
  36.   (foreach obj objlst
  37.     (setq obj (vlax-ename->vla-object obj))
  38.     (vla-TransformBy obj (vlax-tmatrix (trp 4x4)))
  39.     (vla-getBoundingBox obj 'minpt 'maxpt)
  40.     (vla-TransformBy obj (vlax-tmatrix 4x4))
  41.     (setq ptlst (cons (vlax-safearray->list minpt)
  42.         (cons (vlax-safearray->list maxpt) ptlst)
  43.   )
  44.     )
  45.   )
  46.   (vla-ZoomWindow
  47.     (vlax-get-acad-object)
  48.     (vlax-3d-point (mxv 3x3 (apply 'mapcar (cons 'min ptlst))))
  49.     (vlax-3d-point (mxv 3x3 (apply 'mapcar (cons 'max ptlst))))
  50.   )
  51.   (vlax-invoke (vlax-get-acad-object) 'ZoomScaled 0.95 1)
  52. )
  53. (defun yad_ssadd (oldss ss / n)
  54.   (setq n -1)
  55.   (repeat (sslength ss)
  56.     (ssadd (ssname ss (setq n (1+ n))) oldss)
  57.   )
  58.   oldss
  59. )
  60. (defun SSBoundingBox (ss / _GetBoundingBox _SStoObjects _Main)
  61.   (defun _GetBoundingBox (object / p1 p2)
  62.     (vl-catch-all-apply
  63.       '(lambda ()
  64.   (vlax-invoke-method object 'GetBoundingBox 'p1 'p2)
  65.        )
  66.     )
  67.     (if p1
  68.       ((lambda (data)
  69.   (mapcar
  70.     '(lambda (funcs)
  71.        (mapcar '(lambda (func) (apply func data)) funcs)
  72.      )
  73.     '((caar cadar) (caadr cadar) (caadr cadadr) (caar cadadr))
  74.   )
  75.        )
  76. (list (mapcar 'vlax-safearray->list (list p1 p2)))
  77.       )
  78.     )
  79.   )
  80.   (defun _SStoObjects (ss / i objects)
  81.     (if (eq 'pickset (type ss))
  82.       (repeat (setq i (sslength ss))
  83. (setq objects
  84.         (cons
  85.    (vlax-ename->vla-object (ssname ss (setq i (1- i))))
  86.    objects
  87.         )
  88. )
  89.       )
  90.     )
  91.     objects
  92.   )
  93.   (defun _Main (ss / boundingboxes)
  94.     (cond
  95.       ((setq boundingboxes
  96.        (vl-remove-if
  97.   'null
  98.   (mapcar '_GetBoundingBox (_SStoObjects ss))
  99.        )
  100.        )
  101.        (mapcar
  102.   '(lambda (func pair / lst)
  103.      (list
  104.        (apply (car pair)
  105.        (mapcar 'car (setq lst (mapcar func boundingboxes)))
  106.        )
  107.        (apply (cadr pair) (mapcar 'cadr lst))
  108.      )
  109.    )
  110.   '(car cadr caddr cadddr)
  111.   '((min min) (max min) (max max) (min max))
  112.        )
  113.       )
  114.     )
  115.   )
  116.   (_Main ss)
  117. )
  118. (defun get_touching (sscros lay / ss lst lstb lstc objl)
  119.   (and
  120.     (setq lstb (vl-remove-if 'listp (mapcar 'cadr (ssnamex sscros)))
  121.    objl (mapcar 'vlax-ename->vla-object lstb)
  122.     )
  123.     (setq ss
  124.     (ssget
  125.       "_CP"
  126.       (SSBoundingBox sscros)
  127.       (list
  128.         (cons 0
  129.        "LINE,ARC,SPLINE,LWPOLYLINE,POLYLINE,CIRCLE,ELLIPSE"
  130.         )
  131.         (cons 8 lay)
  132.         (cons 410 (getvar "ctab"))
  133.       )
  134.     )
  135.     )
  136.     (setq lst (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss))))
  137.     (setq lst (mapcar 'vlax-ename->vla-object lst))
  138.     (mapcar
  139.       '(lambda (x)
  140.   (mapcar
  141.     '(lambda (y)
  142.        (if (not (vl-catch-all-error-p
  143.     (vl-catch-all-apply
  144.       '(lambda ()
  145.          (vlax-safearray->list
  146.     (vlax-variant-value
  147.       (vla-intersectwith y x acextendnone)
  148.     )
  149.          )
  150.        )
  151.     )
  152.          )
  153.     )
  154.   (setq lstc (cons (vlax-vla-object->ename x) lstc))
  155.        )
  156.      )
  157.     objl
  158.   )
  159.        )
  160.       lst
  161.     )
  162.   )
  163.   lstc
  164. )
  165. (defun mx_getPtss (p0 hdist filter_list / e0)
  166.   (if filter_list
  167.     (if (and hdist (/= hdist 0))
  168.       (progn (setq hdist (abs (/ hdist (sin (* 0.25 pi)))))
  169.       (setq e0 (ssget "_C"
  170.         (polar p0 (* 1.25 pi) hdist)
  171.         (polar p0 (* 0.25 pi) hdist)
  172.         (if (= (type filter_list) 'LIST)
  173.           filter_list
  174.           (list (cons 8 filter_list))
  175.         )
  176.         )
  177.       )
  178.       )
  179.       (setq e0 (ssget p0
  180.         (if (= (type filter_list) 'LIST)
  181.    filter_list
  182.    (list (cons 8 filter_list))
  183.         )
  184.         )
  185.       )
  186.     )
  187.     (if (and hdist (/= hdist 0))
  188.       (progn (setq hdist (abs (/ hdist (sin (* 0.25 pi)))))
  189.       (setq e0 (ssget "_C"
  190.         (polar p0 (* 1.25 pi) hdist)
  191.         (polar p0 (* 0.25 pi) hdist)
  192.         )
  193.       )
  194.       )
  195.       (setq e0 (ssget p0))
  196.     )
  197.   )
  198.   (if e0
  199.     e0
  200.   )
  201. )
  202. (defun sslist (f_sel)
  203.   (if f_sel
  204.     (progn
  205.       (if (/= (type f_sel) 'PICKSET)
  206. (exit)
  207.       )
  208.       (setq f_ss_list nil
  209.      f_loop -1
  210.       )
  211.       (repeat (sslength f_sel)
  212. (progn (setq f_loop (1+ f_loop))
  213.         (setq
  214.    f_ss_list (append f_ss_list (list (ssname f_sel f_loop)))
  215.         )
  216. )
  217.       )
  218.     )
  219.     nil
  220.   )
  221. )
  222. ;; Returns a list with duplicate elements removed.
  223. (defun LM:Unique (l)
  224.   (if l
  225.     (cons (car l) (LM:Unique (vl-remove (car l) (cdr l))))
  226.   )
  227. )
  228. (defun c:fss (/ fil sso p1 p2 ssx ss ss1 ssn a1 a2 b1 b2 fz lay box box1
  229.        en etype lst)
  230.   (defun addnext (en pt / next)
  231.     (if (setq next (gotonexten en pt fz))
  232.       (foreach a next
  233. (if (not (ssmemb (car a) ss))
  234.    (progn (ssadd (car a) ss)
  235.    (ZoomObject (sslist ss))
  236.    (apply 'addnext a)
  237.    )
  238. )
  239.       )
  240.     )
  241.   )
  242.   (setq
  243.     fil '((0 . "LINE,POLYLINE,LWPOLYLINE,SPLINE,CIRCLE,ARC,ELLIPSE"))
  244.   )
  245.   (princ "\n粘连选集源:")
  246.   (if (setq etype (ssget ":s" fil))
  247.     (progn (setq sso (xss2olst etype))
  248.     (setq en (vlax-vla-object->ename (car sso)))
  249.     (ZoomObject (list en))
  250.     (setq lay (dxf1 8 en))
  251.     (or (setq fz (getdist "\n 阈值(负值不支持相交)/<10.0>:"))
  252.         (setq fz 10.)
  253.     )
  254.     )
  255.   )
  256.   (if lay
  257.     (setq fil (reverse (cons (cons 8 lay) fil)))
  258.   )
  259.   (setq box (* (/ (getvar "pickbox") (cadr (getvar "screensize")))
  260. ;;;        (getvar "viewsize")
  261.         5000.
  262.      )
  263.   )
  264.   (if en
  265.     (progn
  266.       (setq ss (ssadd))
  267.       (ssadd en ss)
  268.       (if (and (null (addnext en (vlax-curve-getstartpoint en)))
  269.         (null (addnext en (vlax-curve-getendpoint en)))
  270.    )
  271. (progn (setq ss_1 (mx_getPtss (vlax-curve-getstartpoint en) box lay)
  272.        ss_2 (mx_getPtss (vlax-curve-getendpoint en) box lay)
  273.         )
  274.         (if ss_1
  275.    (setq ss (yad_ssadd ss ss_1))
  276.         )
  277.         (if ss_2
  278.    (setq ss (yad_ssadd ss ss_2))
  279.         )
  280.         (if (setq ss1 (LM:Unique (get_touching ss lay)))
  281.    (foreach x ss1 (ssadd x ss))
  282.         )
  283.         (ZoomObject ss1)
  284. )
  285.       )
  286.       (setq ssn (ssadd))
  287.       (foreach a (sslist ss)
  288. (setq sso (list (vlax-ename->vla-object a)))
  289. (while
  290.    (apply
  291.      'or
  292.      (mapcar
  293.        '(lambda (x)
  294.    (setq i  -1
  295.          kk nil
  296.          k  T
  297.    )
  298.    (while (and k (setq y (nth (setq i (1+ i)) sso)))
  299.      (cond
  300.        ((member x sso) (setq k nil))
  301.        ((eq x y) nil)
  302.        ((or (if (<= 0. fz)
  303.        (vlax-invoke x 'intersectwith y acExtendNone)
  304.        nil
  305.      )
  306.      (progn ;; v1.1 for 相切.端点相邻(支持阈值 fz)
  307.      (setq a1 (vlax-curve-getstartpoint x)
  308.            a2 (vlax-curve-getendpoint x)
  309.            b1 (vlax-curve-getstartpoint y)
  310.            b2 (vlax-curve-getendpoint y)
  311.      )
  312.      (or (equal a1 b1 fz)
  313.          (equal a1 b2 fz)
  314.          (equal a2 b1 fz)
  315.          (equal a2 b2 fz)
  316.      )
  317.      )
  318.         )
  319.         (setq sso (cons x sso)
  320.        kk T
  321.        k nil
  322.         )
  323.        )
  324.        (T nil)
  325.      )
  326.    )
  327.    kk
  328.         )
  329.        (setq
  330.   lst (xss2olst
  331.         (ssget "c"
  332.         (mapcar '-
  333.          (car (setq box1 (xssobox sso)))
  334.          (list box box)
  335.         )
  336.         (mapcar '+ (cadr box1) (list box box))
  337.         fil
  338.         )
  339.       )
  340.        )
  341.      )
  342.    )
  343. ;;;   对于大量实体,用zoom命令比用zoomobject要快,但会有遗漏的情况
  344. ;;;   (command "._Zoom" "W" (car box1) (cadr box1) "._Zoom" "0.95x")
  345.     (ZoomObject (mapcar 'vlax-vla-object->ename sso))
  346. )
  347. (foreach x (LM:Unique (mapcar 'vlax-vla-object->ename sso))
  348.    (ssadd x ssn)
  349. )
  350.       )
  351.       (yad_ssadd ssn ss)
  352.       (ZoomObject (sslist ssn))
  353.       (sssetfirst nil ssn)
  354.     )
  355.   )
  356.   (princ)
  357. )

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

使用道具 举报

签到天数: 1840 天

连续签到: 19 天

[LV.Master]伴坛终老I

已领礼包: 5087个

财富等级: 富甲天下

 楼主| 发表于 2013-7-23 22:17:05 | 显示全部楼层
newer 发表于 2013-7-23 21:54
从楼主的图看,是个树,应该可以用树的算法,

问个问题,楼主,你的这些官网有形成闭合回路的情况没?  ...

我主要是计算树状管网用,所以一般没有闭合回路的情况,不过老兄的话也提醒了我,应该考虑环状管网的情况

点评

如果要是环状闭合的话,那程序就麻烦了吧,容易死循环,得小心判断。  详情 回复 发表于 2013-7-23 22:43
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

签到天数: 1840 天

连续签到: 19 天

[LV.Master]伴坛终老I

已领礼包: 5087个

财富等级: 富甲天下

 楼主| 发表于 2013-7-23 22:19:26 | 显示全部楼层
本帖最后由 liuyj 于 2013-7-23 22:22 编辑
XDSoft 发表于 2013-7-23 21:08
把你现在这个实现的代码贴论坛来吧。

另外,在附个DWG图,你的图片里面的,实体都是LINE吗? 每个地方 ...


老大,不都是line,所以比较麻烦,一般我不用spline线,其他的是有可能用的,当然最多的还是直线和圆弧。图层应该以选择的实体为基准。实体端点处一般应该是相接的,但有可能会有小间隙,所以希望能有精度控制。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

签到天数: 1840 天

连续签到: 19 天

[LV.Master]伴坛终老I

已领礼包: 5087个

财富等级: 富甲天下

 楼主| 发表于 2013-7-23 22:23:29 | 显示全部楼层
eachy 发表于 2013-7-23 21:44
用端点判断,可以参考Checkopen算法

eachy兄,checkopen的算法在哪里可供学习?有没有代码?

点评

Checkopen 的算法就是仅用端点进行 vlax-curve-getclosestpointto 后和端点比较,相等的时候就可以判断粘连,在间隙内也是“粘连”  详情 回复 发表于 2013-7-23 22:58
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

签到天数: 685 天

连续签到: 2 天

[LV.9]以坛为家II

已领礼包: 19个

财富等级: 恭喜发财

发表于 2013-7-23 22:43:37 | 显示全部楼层
liuyj 发表于 2013-7-23 22:17
我主要是计算树状管网用,所以一般没有闭合回路的情况,不过老兄的话也提醒了我,应该考虑环状管网的情况

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2018-6-22 15:20 , Processed in 0.245871 second(s), 71 queries , Gzip On, WinCache On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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