找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

楼主: nuance

[求助] [求助]:高手帮忙-曲线交点断开及自身交点讨论

[复制链接]

已领礼包: 593个

财富等级: 财运亨通

发表于 2004-2-13 19:42:42 | 显示全部楼层
最初由 nuance 发布
[B]请楼上直接赐教。

我找到LUCAS过去贴的一个程序intlines.lsp,在通过交点建立选择集时用的是(ssget "c" (nth n pt-list)(nth n pt-list)),当是无宽度的物体,如LINE时,运行正常,但有宽度时,如PL,若在屏幕显?.. [/B]

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

使用道具 举报

发表于 2004-2-13 20:05:22 | 显示全部楼层
最初由 LUCAS 发布
[B]


自身交点表&顶点表如何求?(spline) [/B]

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

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2004-2-13 20:09:06 | 显示全部楼层
最初由 陌生人 发布
[B]
spline就不必做这一步了。它的求自身交点返回正常 [/B]

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

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

发表于 2004-2-14 22:48:00 | 显示全部楼层
最初由 LUCAS 发布
[B]


自身交点表&顶点表如何求?(spline) [/B]



spline:自相交求"自相交交点"就"自己和自己"求.

(vla-IntersectWith  spline spline 0)

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

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2004-2-15 09:16:34 | 显示全部楼层
最初由 aeo 发布
[B]


spline:自相交求"自相交交点"就"自己和自己"求.

(vla-IntersectWith  spline spline 0)

Polyline应该再去掉?.. [/B]

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

使用道具 举报

发表于 2004-2-15 15:10:28 | 显示全部楼层
我的:多余点出现。查看过程记录。发现点已经找到了,但是就是没过滤掉,我是用member判断点重合的,看来因为cad求点的计算误差,可能导致member对比失败。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2004-2-15 16:17:34 | 显示全部楼层
求出的点不是顶点+交点数
知道原因了,图示的自身交点不包括起点和终点,下面是测试代码

  1. [PHP]
  2. (defun c:test (/ e pt1 pt2)
  3.   (defun xl-div        (lst x / lst2)
  4.     (foreach n lst
  5.       (if (and lst2 (/= x (length (car lst2))))
  6.         (setq lst2 (cons (append (car lst2) (list n)) (cdr lst2)))
  7.         (setq lst2 (cons (list n) lst2))
  8.       )
  9.     )
  10.     (reverse lst2)
  11.   )
  12.   (defun vvl-remove (A L /)
  13.     (apply 'append
  14.            (mapcar '(lambda (x)
  15.                       (if (not (equal x A 0.001))
  16.                         (list x)
  17.                       )
  18.                     )
  19.                    L
  20.            )
  21.     )
  22.   )
  23.   (if (setq e (car (entsel)))
  24.     (progn
  25.       (setq pt1        (mapcar        'cdr
  26.                         (vl-remove-if-not
  27.                           '(lambda (x) (= (car x) 10))
  28.                           (entget e)
  29.                         )
  30.                 )
  31.             pt2        (vlax-safearray->list
  32.                   (vlax-variant-value
  33.                     (vla-intersectwith
  34.                       (vlax-ename->vla-object e)
  35.                       (vlax-ename->vla-object e)
  36.                       0
  37.                     )
  38.                   )
  39.                 )
  40.             pt2        (mapcar        '(lambda (y) (list (car y) (cadr y)))
  41.                         (xl-div pt2 3)
  42.                 )
  43.       )
  44.       (foreach p pt1
  45.         (setq pt2 (vvl-remove p pt2))
  46.       )
  47.     )
  48.   )
  49. )[/PHP]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-2-15 17:35:31 | 显示全部楼层
贴一段过程数据
Command: 'VLIDE
Select object:
*vla的intersect 点
((54547.0 -56298.4 0.0) (55056.2 -56851.3 0.0) (54823.1 -56693.0 0.0) (55692.4
-55910.8 0.0) (56291.3 -55238.4 0.0) (56426.2 -55666.7 0.0) (56988.3 -56300.3
0.0) (56991.8 -56774.0 0.0) (56020.1 -56794.1 0.0) (56991.8 -56774.0 0.0)
(56988.3 -56300.3 0.0) (57641.6 -56856.9 0.0) (58591.9 -55748.4 0.0) (56291.3
-55238.4 0.0) (56386.8 -55563.4 0.0) (55056.2 -56851.3 0.0) (54823.1 -56693.0
0.0) (56426.2 -55666.7 0.0) (56020.1 -56794.1 0.0) (54720.2 -56583.5 0.0))
20  (求出交点数)
(lw顶点)
((54589.5 -56397.3 0.0) (54720.2 -56583.5 0.0) (56386.8 -55563.4 0.0) (58591.9
-55748.4 0.0) (57641.6 -56856.9 0.0) (57267.4 -56960.3 0.0) (57233.9 -56116.8
0.0) (57318.3 -55239.2 0.0) (56809.0 -56093.0 0.0) (55993.8 -56736.3 0.0)
(56311.1 -55791.0 0.0) (55993.8 -55239.2 0.0) (55692.4 -55910.8 0.0) (55433.4
-56756.6 0.0) (55022.6 -56063.7 0.0) (55229.6 -55157.8 0.0) (54694.8 -55225.0
0.0) (54547.0 -56298.4 0.0))
18 (顶点数)
(用member过滤后的点表,发现有些没有过滤掉)
((54547.0 -56298.4 0.0) (55056.2 -56851.3 0.0) (54823.1 -56693.0 0.0) (55692.4
-55910.8 0.0) (56291.3 -55238.4 0.0) (56426.2 -55666.7 0.0) (56988.3 -56300.3
0.0) (56991.8 -56774.0 0.0) (56020.1 -56794.1 0.0) (56991.8 -56774.0 0.0)
(56988.3 -56300.3 0.0) (58591.9 -55748.4 0.0) (56291.3 -55238.4 0.0) (56386.8
-55563.4 0.0) (55056.2 -56851.3 0.0) (54823.1 -56693.0 0.0) (56426.2 -55666.7
0.0) (56020.1 -56794.1 0.0) (54720.2 -56583.5 0.0))
19 (程序求出的交点数)

图上实际交点有7个:
((56991.8 -56774.0 0.0) (56988.3 -56300.3 0.0) (56426.2 -55666.7 0.0) (56291.3
-55238.4 0.0) (56020.1 -56794.1 0.0) (55056.2 -56851.3 0.0) (54823.1 -56693.0
0.0))

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

使用道具 举报

发表于 2005-6-23 16:20:46 | 显示全部楼层
出错了!选择对象: ; 错误: ActiveX 服务器返回错误: 无效索引。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2007-6-30 11:15:36 | 显示全部楼层
最初由 eachy 发布
[B]求出的点不是顶点+交点数
知道原因了,图示的自身交点不包括起点和终点,下面是测试代码
[CODE]
[PHP]
(defun c:test (/ e pt1 pt2)
  (defun xl-div        (lst x / lst2)
    (foreach n lst
      (if (and lst2... [/B]



对于多段线交点与顶点重合的情况则交点会溜掉。

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

使用道具 举报

发表于 2007-7-3 17:41:14 | 显示全部楼层
看我的,这两个函数,这里不能上传。
或者到我的网盘下载 http://muzicad.ys168.com
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-17 08:37 , Processed in 0.617428 second(s), 49 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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