找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1557|回复: 10

[求助] [求助]:如何修正lwpolyline线型组码中凸度错误?

[复制链接]
发表于 2004-9-4 16:15:21 | 显示全部楼层 |阅读模式

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

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

×
本人一直被这个问题困扰着,正常情况下LWPOLYLINE线型生成的圆弧的组码中"凸度"应为正值,单经常发现这一凸度值会出错,变成负值,如:
((-1 . <图元名: 40d17160>) (0 . "LWPOLYLINE") (330 . <图元名:
40d13cf8>) (5 . "A24") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 .
"设计") (100 . "AcDbPolyline") (90 . 8) (70 . 0) (43 . 0.7) (38 . 0.0) (39 .
0.0) (10 850.598 193.265) (40 . 0.7) (41 . 0.7) (42 . 0.0) (10 841.867 192.507)
(40 . 0.7) (41 . 0.7) (42 . 0.0) (10 818.613 190.581) (40 . 0.7) (41 . 0.7) (42
. 0.0) (10 795.346 188.835) (40 . 0.7) (41 . 0.7) (42 . -0.0130891) (10 690.926
184.285) (40 . 0.7) (41 . 0.7) (42 . 0.0) (10 667.595 184.0) (40 . 0.7) (41 .
0.7) (42 . 0.0) (10 644.261 183.897) (40 . 0.7) (41 . 0.7) (42 . 0.0) (10
621.035 183.884) (40 . 0.7) (41 . 0.7) (42 . 0.0) (210 0.0 0.0 1.0))
其中的一个凸度值为:-0.0130891,不知哪位大虾有高招,可以修正该值?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 6530个

财富等级: 富甲天下

发表于 2004-9-4 18:16:24 | 显示全部楼层
凸度为负值表示此段弧是顺时针,这是正常的。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-9-8 14:41:33 | 显示全部楼层
请问长老有没有办法将其顺时针值转变为逆时针值?或者说可否通过上述已知的组码求出逆时针的凸度值?谢谢!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6530个

财富等级: 富甲天下

发表于 2004-9-8 17:30:20 | 显示全部楼层
凸度就是圆弧的曲率,是两倍的矢高与弦长的比值。
凸度是根据节点与线条绘制方向确定的,不是手动修改的,负的凸度与正的凸度代表的凸度数值其实是一样的,只是表示不同的行进方向,负凸度与正凸度的圆弧是关于两个端点对称的。
你可以设想一下,附图中的凸度全部为正值将变为什么样的图形。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-9-8 18:54:31 | 显示全部楼层
谢谢长老的解释,我的真实目的是想通过端点坐标及凸度求出曲线的圆心和半径,可能我的计算公式有问题,在出现负凸度时,结果会出错!如果长老有更好的计算方法,还希望您指点一二!再次表示感谢!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6530个

财富等级: 富甲天下

发表于 2004-9-9 07:46:50 | 显示全部楼层
供参考:
[php](defun pl_cen (pt1 pt2 td)               ;圆弧段圆心
  (setq        xit (angle pt1 pt2)
        b   (distance pt1 pt2)
        h   (- (* b td 0.5))
        r   (/ (+ (* b b) (* 4 h h)) 8 h)     ;半径:abs(r)
        hh  (- r h)
        x0  (/ (+ (car pt1) (car pt2)) 2)
        y0  (/ (+ (cadr pt1) (cadr pt2)) 2)
        ptc (polar (list x0 y0) (- xit (/ pi 2)) hh)
  )
)
[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-9-9 14:40:52 | 显示全部楼层
再请教长老,凸度的正负应该不会影响到端点坐标的值吧,如下组码10后的x坐标为负值,而在图形中,这几个点的x坐标均为正值,及绝对值是相等的!而这段弧线是开口向上的,再坐标考虑改弧应该是逆时针的,那么其凸度应该是正值,是否和其端点坐标的错误有关呢?
((-1 . <图元名: 40052170>) (0 . "LWPOLYLINE") (330 . <图元名:
4004ecf8>) (5 . "A26") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 .
"设计") (100 . "AcDbPolyline") (90 . 4) (70 . 0) (43 . 0.5) (38 . 0.0) (39 .
0.0) (10 -603.024 188.863) (40 . 0.5) (41 . 0.5) (42 . 0.0) (10 -656.071
188.863) (40 . 0.5) (41 . 0.5) (42 . -0.0216942) (10 -829.379 196.387) (40 .
0.5) (41 . 0.5) (42 . 0.0) (10 -850.038 198.184) (40 . 0.5) (41 . 0.5) (42 .
0.0) (210 0.0 0.0 -1.0))
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

发表于 2004-9-9 23:17:04 | 显示全部楼层
每一段都有起点和端点的,凸度相对于这两个点的连线而言的.
pt-start pt-mid pt-end  是顺还是逆 ;;pt-mid是弧线的中点.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6530个

财富等级: 富甲天下

发表于 2004-9-10 18:20:49 | 显示全部楼层
最初由 light_dream 发布
[B]再请教长老,凸度的正负应该不会影响到端点坐标的值吧,如下组码10后的x坐标为负值,而在图形中,这几个点的x坐标均为正值,及绝对值是相等的!而这段弧线是开口向上的,再坐标考虑改弧应该是逆时针的,那么其凸度应... [/B]


这不是错误,之所以出现X坐标数值“不对”,是因为210组码中的Z=-1决定的,这就行是在仰视状态绘制曲线,然后再到俯视状态(Acad默认视图)来看。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-9-10 18:48:08 | 显示全部楼层
请问长老,那有没有办法进行“更正”?是否将210的组码值改过来就可以呢?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6530个

财富等级: 富甲天下

发表于 2004-9-11 12:47:46 | 显示全部楼层
LWPOLYLINE是二维实体,却能在三维空间中应用,这全是210组码的功劳,这也说明,210组码不是那么简单的,其实是空间坐标系转换问题,也就是说要进行矩阵变换,单单一个Z当然好办,如果X、Y都有值就难办了。eachy斑竹好像贴过矩阵转换的程序,如果有兴趣,可以找找看。
就事论事,只是要求圆心、半径么?也有简单的办法,就是使用trans函数进行转换,转换时使用物体坐标系:
  1. [B](trans cenpt objname 0)[/B]
复制代码

其中cenpt就是使用节点与凸度求出的圆心坐标,Objname就是多义线实体名,这种方法同样可以转换其他点。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-27 10:11 , Processed in 0.469995 second(s), 53 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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