找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 548|回复: 6

[求助] [求助]:如何将ellipse及spline所绘声绘制的图形转换为arc线段

[复制链接]
发表于 2005-3-2 23:59:52 | 显示全部楼层 |阅读模式

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

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

×
现遇到一些麻烦,许多客户将所绘制的产品图用ellipse及spline线段制成,这样无法进行后续的加工制作,用超级打断亦会出现许多的小线段且棱角分明,这种方法行不通!!!

请教高手如何将ellipse及spline所绘声绘制的图形转换为arc线段
或者如何将此转化动作做成lisp程序来完成呢?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2005-3-3 10:02:34 | 显示全部楼层
可以将ellipse的每一小段画一段ARC,比如将一个完整的ellipse转化成N等分的ARC,在椭圆上取点来画圆弧,这个可以用程序办到
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-3-3 12:58:47 | 显示全部楼层
具体要怎样写这个程序呢,我不懂
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-3-3 14:45:00 | 显示全部楼层
先问一声楼主用的是什么版本,最好是R2004以上的。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2005-3-4 08:33:02 | 显示全部楼层
对曲率变化比较大的可能误差比较大

(defun c:test ()
  (vl-load-com)
  (setq os (getvar "osmode"))
  (setq curve-ent (car (entsel "\n选择椭圆或是样条曲线:")))
  (setq obj (vlax-Ename->Vla-Object curve-ent))
  (setq
    len        (vlax-curve-getDistAtParam obj (vlax-curve-getEndParam obj))
  )
  (setq        n 40 ;_这个N的值可以根据需要相应的加大或减小
        k (/ n 2)
  )
  (setq len0 (/ len n))
  (setq p1 (vlax-curve-getStartPoint obj))
  (setq p2 (vlax-curve-getPointAtDist obj len0))
  (setq p3 (vlax-curve-getPointAtDist obj (* len0 2)))
  (setvar "cmdecho" 0)
  (setvar "osmode" 0)
  (command "undo" "g")
  (command "arc" p1 p2 p3)
  (setq i 3)
  (repeat (1- k)
    (setq p1 p3)
    (setq p2 (vlax-curve-getPointAtDist obj (* len0 i)))
    (setq i (1+ i))
    (setq p3 (vlax-curve-getPointAtDist obj (* len0 i)))
    (setq i (1+ i))
    (command "arc" p1 p2 p3)
  )
  (command "undo" "E")
  (setvar "osmode" os)
  (setvar "cmdecho" 1)
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-28 00:40 , Processed in 0.187075 second(s), 44 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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