找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 6537|回复: 59

[求助] 多段线偏移,弧曲率不变,弧长为offset下的长度

[复制链接]

已领礼包: 604个

财富等级: 财运亨通

发表于 2013-10-26 14:24:47 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 /db_自贡黄明儒_ 于 2013-10-26 16:25 编辑

多段线偏移,弧曲率不变,弧长为offset下的长度
请各位高手帮帮忙
1.png

test.rar

22.84 KB, 下载次数: 6, 下载积分: D豆 -1 , 活跃度 1

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

已领礼包: 685个

财富等级: 财运亨通

发表于 2013-10-26 14:42:03 | 显示全部楼层
这个对于我等新手来说。。。有点难度哦。。。。
支持一下。。等高手来吧

点评

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

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

发表于 2013-10-26 14:50:36 | 显示全部楼层
凸度已知了,你修改下BULGE就行了。

点评

首先谢谢你的回复 就这么简单,我简直不敢相信。如果弧后面还有直线、弧线。。。仅修改offset后多段线的bulge就行了?  详情 回复 发表于 2013-10-26 15:01
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 604个

财富等级: 财运亨通

 楼主| 发表于 2013-10-26 15:01:46 | 显示全部楼层
Lispboy 发表于 2013-10-26 14:50
凸度已知了,你修改下BULGE就行了。

首先谢谢你的回复
就这么简单,我简直不敢相信。如果弧后面还有直线、弧线。。。仅修改offset后多段线的bulge就行了?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-10-26 15:08:26 | 显示全部楼层
给你个参考, 距离输入负值向内, 正值向外, xdrx_arc_make没有测试成功,用 Vla 方法
如果你用纯Lisp,最简单的就是计算三个点,用 command 三点绘制圆弧,然后 offset entlast
  1. (defun c:tt (/ e pam karc p0 d arc)
  2.   (if (and (setq e (xdrx_entsel
  3.        "\nPick Point on Arc of Pline: "
  4.        '((0 . "*polyline"))
  5.      )
  6.     )
  7.     (setq pam (fix (apply 'xdrx_curve_getparamatpoint e)))
  8.     (setq p0 (apply 'xdrx_curve_getclosestpoint e))
  9.     (setq e (car e))
  10.     (not (zerop (xdrx_polyline_getbulgeat e pam)))
  11.     (setq d (getreal "\nOffset dist: "))
  12.       )
  13.     (progn
  14.       (setq karc (xdrx_polyline_getarcsegat e pam))
  15.       (if (car karc)
  16. (vla-addarc
  17.    (vla-get-modelspace
  18.      (vla-get-activedocument (vlax-get-acad-object))
  19.    )
  20.    (vlax-3d-point (cadr karc))
  21.    (+ (caddr karc) d)
  22.    (cadddr karc)
  23.    (last karc)
  24. )
  25. (vla-addarc
  26.    (vla-get-modelspace
  27.      (vla-get-activedocument (vlax-get-acad-object))
  28.    )
  29.    (vlax-3d-point (cadr karc))
  30.    (+ (caddr karc) d)
  31.    
  32.    (last karc)(cadddr karc)
  33. )
  34.       )
  35.       (xdrx_entity_setPropertiesFrom (entlast) e)
  36.     )
  37.     (princ "\nNot arc seg on pline!")
  38.   )
  39.   (princ)
  40. )

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

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-10-26 15:11:51 | 显示全部楼层
Pline Offset 后还是平行的啊,仅修改凸度不行,还要改端点的!
不过你怎么 Offset 成不同心的?

点评

就是要呀,改端点,怎么改。可能还要判断弧是旋转方向?  详情 回复 发表于 2013-10-26 15:24
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 604个

财富等级: 财运亨通

 楼主| 发表于 2013-10-26 15:24:49 | 显示全部楼层
本帖最后由 /db_自贡黄明儒_ 于 2013-10-26 15:27 编辑
st788796 发表于 2013-10-26 15:11
Pline Offset 后还是平行的啊,仅修改凸度不行,还要改端点的!
不过你怎么 Offset 成不同心的?


就是要呀,改端点,怎么改。可能还要判断弧是旋转方向?
不同心没有关系。
如果能offset后修改各个端点就好,关键是怎么计算这些端点

点评

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

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-10-26 15:36:47 | 显示全部楼层
/db_自贡黄明儒_ 发表于 2013-10-26 15:24
就是要呀,改端点,怎么改。可能还要判断弧是旋转方向?
不同心没有关系。
如果能offset后修改各个端 ...

你怎么 Offset 出来不平行的?

点评

我是想用cad命令offset,生成对象后修改它。  详情 回复 发表于 2013-10-26 15:52
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 604个

财富等级: 财运亨通

 楼主| 发表于 2013-10-26 15:52:14 | 显示全部楼层
本帖最后由 /db_自贡黄明儒_ 于 2013-10-26 16:00 编辑
st788796 发表于 2013-10-26 15:36
你怎么 Offset 出来不平行的?


我是想用cad命令offset,生成对象后修改它。
关键是怎么计算各点
上面图片中的红线,我是拷贝出来,然后延长弧得到的

点评

把白线直接 Offset 不就可以吗?  发表于 2013-10-26 15:57
你要把 ARC 局部偏移出来?  详情 回复 发表于 2013-10-26 15:55
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-10-26 15:55:47 | 显示全部楼层
/db_自贡黄明儒_ 发表于 2013-10-26 15:52
我是想用cad命令offset,生成对象后修改它。
关键是怎么计算各点

你要把  ARC 局部偏移出来?
用 XDRX_Polyline_GetArcSegAt 就可以取得 ARC 信息

点评

我希望多段线偏移后仍是多段线,弧半径不变,但长度要等于在offset下的长度  详情 回复 发表于 2013-10-26 15:58
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 604个

财富等级: 财运亨通

 楼主| 发表于 2013-10-26 15:58:00 | 显示全部楼层
本帖最后由 /db_自贡黄明儒_ 于 2013-10-26 15:59 编辑
st788796 发表于 2013-10-26 15:55
你要把  ARC 局部偏移出来?
用 XDRX_Polyline_GetArcSegAt 就可以取得 ARC 信息


我希望多段线偏移后仍是多段线,弧半径不变,但弧的长度要等于在offset下的长度

点评

这就明白了, Offset 后只要修改顶点就可以, 计算一下弧长, vlax-curve 等几个函数的组合应用而已  详情 回复 发表于 2013-10-26 16:03
从你的图看, 曲线的曲率肯定不一样了啊,你需要算出新的凸度去修改它。  详情 回复 发表于 2013-10-26 16:03
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

发表于 2013-10-26 16:03:34 | 显示全部楼层
/db_自贡黄明儒_ 发表于 2013-10-26 15:58
我希望多段线偏移后仍是多段线,弧半径不变,但弧的长度要等于在offset下的长度

从你的图看, 曲线的曲率肯定不一样了啊,你需要算出新的凸度去修改它。

点评

我混淆了一个概念,凸度是变化的,弧线曲率是不变的  发表于 2013-10-26 16:38
凸度就是多段线offset前的凸度  发表于 2013-10-26 16:31
红线和上面的白色线凸度是一样的,这是我希望得到的结果。下面那条白色线是offset出来的  发表于 2013-10-26 16:07
计算原来的弧段长度,在新 Offset 的线上在 ARC 点处用 vlax-curve-getpointatdist ,取点后修改端点  发表于 2013-10-26 16:06
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-10-26 16:03:45 | 显示全部楼层
/db_自贡黄明儒_ 发表于 2013-10-26 15:58
我希望多段线偏移后仍是多段线,弧半径不变,但弧的长度要等于在offset下的长度

这就明白了, Offset 后只要修改顶点就可以, 计算一下弧长, vlax-curve 等几个函数的组合应用而已

点评

正是,关系到是怎么计算,算出来后修改就容易了,有高手发过怎么修改端点的程序  发表于 2013-10-26 16:05
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

发表于 2013-10-26 16:14:44 | 显示全部楼层
本帖最后由 Lispboy 于 2013-10-26 16:15 编辑

QQ截图20131026161226.png


你的图画的不准,应该是上面图吧,长度没变

条件: 起点没变,长度没变,相当于白色的弧绕着起点往里面转个角度吧? 还有什么不变? 曲率不变,那就是凸度也不变,那变化的就是圆心了,那还需要个参数确定那个转角,转角你怎么定的? 你算出圆心,修改多段线弧段数据。

点评

转角就只有通过offset后的弧长来反算了  发表于 2013-10-26 16:29
还有一个条件就是弧长不变  详情 回复 发表于 2013-10-26 16:27
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

发表于 2013-10-26 16:22:48 | 显示全部楼层
1楼的帖子,你说的条件约束不了红色的线,曲率不变,长度不变,线有N个,另外一个约束条件什么?

点评

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-15 09:17 , Processed in 0.191973 second(s), 61 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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