找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1114|回复: 10

[求助] 获取圆弧的起点 中点 端点

[复制链接]

已领礼包: 79个

财富等级: 招财进宝

发表于 2013-5-21 15:35:28 | 显示全部楼层 |阅读模式

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

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

×
下面是我在网上看到的一段程序,不知道是哪位前辈的了,
  1. ;取线的<起点>,<中点>,<终点>
  2. (DEFUN xl-3p (e / ps pe pm)
  3.    (setq ps (vlax-curve-getstartparam e)
  4.          pe (vlax-curve-getendparam e)
  5.          pm (/ (- pe ps) 2))
  6.    (mapcar 'vlax-curve-getpointatparam (list e e e) (list ps pm pe))
  7. )


我反复试了很多次,就是不能实现圆弧的起点 中点  端点 ,求大神们帮忙看看

评分

参与人数 1D豆 +5 收起 理由
炫翔 + 5 出题引导交流奖!

查看全部评分

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

已领礼包: 2688个

财富等级: 家财万贯

发表于 2013-5-21 15:57:36 | 显示全部楼层
(setq ps (vlax-curve-getstartparam e)
         pe (vlax-curve-getendparam e)应改为==>
(setq ps (vlax-curve-getstartpoint e)
         pe (vlax-curve-getendpoint e)

点评

你确定可以?  发表于 2013-5-21 15:59

评分

参与人数 1D豆 +3 收起 理由
炫翔 + 3 及时回复奖!

查看全部评分

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

使用道具 举报

已领礼包: 32个

财富等级: 招财进宝

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

使用道具 举报

已领礼包: 2688个

财富等级: 家财万贯

发表于 2013-5-21 16:56:23 | 显示全部楼层
To 炫翔版主:
用pl线实验是可以。不过,我是菜鸟,也不确定是否就是完全正确的。
如有错误之处,还请版主指正,谢谢。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1742个

财富等级: 堆金积玉

发表于 2013-5-21 17:01:18 | 显示全部楼层
提供思路:
  1. ;一个比较传统的求法
  2. (defun c:XX()
  3.    (if (setq ent (car (entsel "\n请选择圆弧:")))
  4.        (if (= (cdr (assoc 0 (setq db (entget ent)))) "ARC")
  5.            (progn
  6.                (setq pc (cdr (assoc 10 db)) ;圆心
  7.        r  (cdr (assoc 40 db)) ;半径
  8.        a0 (cdr (assoc 50 db))
  9.        a1 (cdr (assoc 51 db))
  10.        ps (polar pc a0 r);起点
  11.        pe (polar pc a1 r);止点
  12.        pd (mapcar '* '(0.5 0.5) (mapcar '+ ps pe))
  13.        pm (polar pc (angle pc pd) r);中点
  14.        an (- a1 a0);圆心角
  15.         )
  16.         (if (< an 0) (setq an (+ an (* 2.0 pi))))
  17.         (princ (strcat "\n圆心=" (rtos (car pc) 2 3) "," (rtos (cadr pc) 2 3)))
  18.         (princ (strcat "\n起点=" (rtos (car ps) 2 3) "," (rtos (cadr ps) 2 3)))
  19.         (princ (strcat "\n止点=" (rtos (car pe) 2 3) "," (rtos (cadr pe) 2 3)))
  20.         (princ (strcat "\n中点=" (rtos (car pm) 2 3) "," (rtos (cadr pm) 2 3)))
  21.         (princ (strcat "\n圆心角=" (angtos an 1 6) ))
  22.            )
  23.            (alert "所选取的不是圆弧!")
  24.        )
  25.    )
  26. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2013-5-21 17:22:23 | 显示全部楼层
对圆弧 param 是角度,所以
  pm (/ (- pe ps) 2)) -> pm (/ (+ pe ps) 2.)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

发表于 2013-5-21 18:17:57 | 显示全部楼层
eachy 发表于 2013-5-21 17:22
对圆弧 param 是角度,所以
  pm (/ (- pe ps) 2)) -> pm (/ (+ pe ps) 2.)

帮你改了

  1. (DEFUN xl-3p (e / ps pe pm)
  2.    (setq ps (vlax-curve-getstartparam e)
  3.          pe (vlax-curve-getendparam e)
  4.          pm (/ (+ pe ps) 2))
  5.    (mapcar 'vlax-curve-getpointatparam (list e e e) (list ps pm pe))
  6. )
首尾参数相加/2是中间点的。什么东西的中点,也应该是 相加除2啊。

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

使用道具 举报

已领礼包: 344个

财富等级: 日进斗金

发表于 2013-5-21 18:27:27 来自手机 | 显示全部楼层
取中点用vlax-curve-getpointatdist函数比较可靠!可以适用各种曲线!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 3394个

财富等级: 富可敌国

发表于 2013-5-21 18:32:39 | 显示全部楼层
本帖最后由 liuyun242 于 2013-5-21 18:42 编辑

pm (/ (- pe ps) 2))   =》pm (/ (+ pe ps) 2))

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

使用道具 举报

已领礼包: 3394个

财富等级: 富可敌国

发表于 2013-5-21 18:36:47 | 显示全部楼层

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-25 14:25 , Processed in 0.269152 second(s), 46 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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