明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1559|回复: 9

[已解答] 选取劣弧,如何判断劣弧自身是凸面朝上还是凸面朝下

[复制链接]
发表于 2015-1-8 15:37 | 显示全部楼层 |阅读模式
本帖最后由 Kye 于 2015-1-8 15:46 编辑

这个问题考虑很长时间,找不到一点思路,特求助坛上的老师指点下,提供的思路,谢谢各位老师,情况是:一根直线和劣弧有共同点,在直线向上偏移后,劣弧也向上偏移,如何知道劣弧自身是凸面朝上还是凸面朝下以便在下面程序中(感谢smartstar老师的程序及程序的原作者)加个判断,如果凸面朝上,用大半径,如果凸面朝下,用小半经。劣弧出现位置:以绕共同点为圆心旋转360度任一位置(与直线交点的只有一个,不会出现直线穿过劣弧,多于两个交点这种情况),图片上劣弧凸面朝上,实际也会出现凸面朝下这个情况,但单个劣弧只会出现其中的一种情况;图片中第一个起始情况,最后一个是结果,红箭头表示变化方向,也不知道把问题说清楚没有,谢谢各位大侠耐心




;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;★4★arcsx;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun arcsx (ename  dist     /        bigarc   entdata
       entdata1  newlayer   rnew       rnewlist   roldlist
       smallarc
      )
  (setq entdata (entget ename))
  (setq roldlist (assoc 40 entdata)
rnew  (cdr roldlist)
rnew  (+ rnew (* dist 0.5))
rnewlist (cons 40 rnew)
newlayer (assoc 8 entdata)
entdata1 (subst rnewlist roldlist entdata)
entdata1 (subst newlayer (assoc 8 entdata1) entdata1)
  )
  (setq ss (entmake entdata1))
  (setq bigarc (vlax-ename->vla-object (entlast)))
  (setq rnew  (- rnew dist)
rnewlist (cons 40 rnew)
newlayer (assoc 8 entdata)
entdata1 (subst rnewlist roldlist entdata)
entdata1 (subst newlayer (assoc 8 entdata1) entdata1)
  )
  (entmake entdata1)
  (setq smallarc (vlax-ename->vla-object (entlast)))
  (list smallarc bigarc)
)

本帖子中包含更多资源

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

x
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2015-1-8 15:55 | 显示全部楼层
你这不是双边偏移吗?????
 楼主| 发表于 2015-1-8 16:08 | 显示全部楼层
ysq101 发表于 2015-1-8 15:55
你这不是双边偏移吗?????

谢谢老师!smartstar老师的程序是双向偏移,实际情况是很多线共一个端点,所以需要先加个判断
发表于 2015-1-8 16:20 | 显示全部楼层
串接再偏移如何

点评

Kye
谢谢长老,帖子7楼有更新,请帮忙再指点下  发表于 2015-1-8 23:28
发表于 2015-1-8 16:41 | 显示全部楼层
本帖最后由 llsheng_73 于 2015-1-8 16:58 编辑

你的问题不是要判断它向上还是向下,那向左或者向右呢?
建议考虑偏移后求交点,用交点和圆心改算起始(终止)角或者进行打断或者延伸(应该打断哪一边需要通过计算来确定)
如果只是直线和弧相接,可以先转为多线段,进行拼接后再偏移(如果必要再炸开)这样基本不涉及计算和DXF数据,可以全用command堆出来
如果可能还有其它线如spline,可以做成块进行缩放(如果必要再炸开)但是它的插入点不一定好计算

当然,如果真有需要判断弧向哪边,可以用弧中点和它的圆心计算方位角来确定
发表于 2015-1-8 18:46 | 显示全部楼层
Andyhon 发表于 2015-1-8 16:20
串接再偏移如何

看楼主的意思就是这样

点评

Kye
谢谢老师,帖子7楼有更新,请帮忙再指点下  发表于 2015-1-8 23:34
 楼主| 发表于 2015-1-8 23:25 | 显示全部楼层
本帖最后由 Kye 于 2015-1-9 22:35 编辑
llsheng_73 发表于 2015-1-8 16:41
你的问题不是要判断它向上还是向下,那向左或者向右呢?
建议考虑偏移后求交点,用交点和圆心改算起始(终止 ...


谢谢llsheng_73 老师,foreach 函数还是从您那里学到怎么用的。
我说的不严谨,我的问题是判断劣弧朝向外还是朝向内,顶楼图片我假定为弧朝向外,公司电脑也没有CAD,用CAXA做的,没有图片真难说清楚,请见下面图片,我参考了smartstar老师的程序改的 http://bbs.mjtd.com/thread-93681-1-1.html,我的思路是先将直线按照角度排序,然后将相邻直线从第一条直线开始向上(以交点为圆心逆时针)偏移,然后与相邻的直线(以交点为圆心顺时针)偏移线用fillet 修整下 (command "fillet" enline1 enline2),enline1 第一条直线的偏移线图元,enline2 相邻直线的偏移线图元;一个循环后,再次从第二条开始前面类似循环,实现了将所有相邻的偏移线fillet一遍

现在我希望就是将图片中一条直线改为ARC线,进行类似偏移,ARC线利用角度(起始点与终点的角度)也可排序,顶楼程序可以实现圆弧双向偏移,因为是循环两次,所以需要判断弧朝向内外,请老师能否帮忙将您帖子中的最后一点讲细点

我自己理解判断条件似乎应该是终止角度减去起始角度绝对值大于或小于某个值,测试了好像没有什么规律

Andyhon 老师及您讲的转为多段线是一个意思吧?我开始也怎么想过,看过您有个帖子讲解过这个问题,难度有点太深,如果转为多段线,可能更好,但其他共点的线偏移也不好处理,这个问题等我水平上去再去想这个问题

本帖子中包含更多资源

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

x
发表于 2015-1-9 12:14 | 显示全部楼层
Kye 发表于 2015-1-8 23:25
谢谢llsheng_73 老师,foreach 函数还是从您那里学到怎么用的。我说的不严谨,我的问题是判断劣弧朝向外 ...

楼主哪个专业??用CAXA??

点评

Kye
机械啊,老板要用caxa那就caxa 呵呵  发表于 2015-1-9 22:30
发表于 2015-1-10 16:03 | 显示全部楼层
Kye 发表于 2015-1-8 23:25
谢谢llsheng_73 老师,foreach 函数还是从您那里学到怎么用的。我说的不严谨,我的问题是判断劣弧朝向外 ...

用CAD画好调入CAXA不是更好??
 楼主| 发表于 2015-1-15 15:08 | 显示全部楼层
本帖最后由 Kye 于 2015-1-15 16:12 编辑

就llsheng_73 老师最后一句思路,起始点与结束点、起始点与圆弧中点(圆心点)的方位角,凸面朝上朝下这个问题算解决了

但最后生成的直线与圆弧fillet处理很乱,这个是新问题,把程序贴出,我也搞不定了,如有哪位热心的大侠可帮解答,在此谢谢了

ysq101 大侠提出的建议表示谢谢,其实CAXA 我也不常用

程序也不知道什么原因,偶尔能贴上,大多数情况下贴不上,只好作为附件吧

本帖子中包含更多资源

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

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

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-3-28 23:10 , Processed in 0.241677 second(s), 37 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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