找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 3819|回复: 7

[研讨] GetSplitCurves 在样条化多段线上错误

[复制链接]

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-4-24 07:50:30 | 显示全部楼层 |阅读模式

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

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

×
看注释语句
  1. (defun c:tt (/ e ss pts)
  2.   (if
  3.     (and (setq
  4.            e (car (xdrx_entsel "\mPick Pline: " '((0 . "*LINE"))))
  5.          )
  6.          (setq pts (xdrx_getsamplept e))
  7.          (setq ss (ssget "_F" pts '((0 . "*polyline"))))
  8.     )
  9.      (progn
  10.        (mapcar '(lambda        (x / e z pam)
  11.                   (setq        e   (car x)
  12.                         z   (xdrx_getpropertyvalue e "Elevation")
  13.                         pam (*
  14.                               0.5
  15.                               (apply '+
  16.                                      (mapcar '(lambda (b)
  17.                                                 (xdrx_curve_getparamatpoint
  18.                                                   e
  19.                                                   (list (car b) (cadr b) z)
  20.                                                 )
  21.                                               )
  22.                                              (cadr x)
  23.                                      );_对有宽度的Pline,会返回两个点,Pline的轮廓与线的交点
  24.                               )
  25.                             )
  26.                   )
  27.                   ;;(xdrx_point_make (vlax-curve-getpointatparam e pam));_验证点是正确的
  28.                   ;;(xdrx_curve_getsplitcurves e pam);_这句不对
  29.                   ;;(xdrx_curve_break e (vlax-curve-getpointatparam e pam));_这个函数对样条化曲线失效,提示getSplitCurves failed : es = eInvalidInput
  30.                 )
  31.                (mapcar '(lambda        (a)
  32.                           (list        (cadr a)
  33.                                 (mapcar 'cadr (cdddr a))
  34.                           )
  35.                         )
  36.                        (ssnamex ss)
  37.                )
  38.        )
  39.      )
  40.   )
  41.   (princ)
  42. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 145个

财富等级: 日进斗金

发表于 2014-4-24 08:19:09 | 显示全部楼层
把 参数 e   和 ePam的值打印出来贴上来看看。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

 楼主| 发表于 2014-4-24 08:23:10 | 显示全部楼层
本帖最后由 st788796 于 2014-4-24 08:25 编辑
XDSoft 发表于 2014-4-24 08:19
把 参数 e   和 ePam的值打印出来贴上来看看。

e 是曲线,这个没有问题, Pam 是参数,怀疑是 ARX 的Bug, 用这个附件测试

http://bbs.xdcad.net/forum.php?mod=redirect&goto=findpost&ptid=673417&pid=3513384

点评

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

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2014-4-24 10:42:21 | 显示全部楼层
st788796 发表于 2014-4-24 08:23
e 是曲线,这个没有问题, Pam 是参数,怀疑是 ARX 的Bug, 用这个附件测试

http://bbs.xdcad.net/foru ...

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

使用道具 举报

已领礼包: 344个

财富等级: 日进斗金

发表于 2014-5-8 17:00:28 来自手机 | 显示全部楼层
样条化多段线不能直接getsplitcurves
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 344个

财富等级: 日进斗金

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

使用道具 举报

已领礼包: 859个

财富等级: 财运亨通

发表于 2014-5-11 15:29:52 来自手机 | 显示全部楼层
点是对的,只是把点转换到参数时不对了,解决办法是获取其Spline或者获得其投影曲线(0 0 1)后再获取参数
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

 楼主| 发表于 2014-5-14 08:53:40 | 显示全部楼层
牢固 发表于 2014-5-8 17:02
需先转成spline 才可以

仔细看了看Lwpolyline(AcDbPolyline)样条化后的曲线,这个线是 Polyline (AcDb2dPolyline),用捕捉测试增加很多端点、中点,分解后就是一段段Line,是用Curve->Spline 可以看到和真正的 Spline 不是完全吻合

目前方法

1 用 command break @ 命令方法

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-28 22:53 , Processed in 0.484516 second(s), 43 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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