这是cad的autolisp的编程题,求助啊、、、

编程题,利用AutoLISP语言编程,使用鼠标在AutoCAD绘图区域中任意输入三个点,PT1、PT2、PT3,求出PT3点到直线PT1、PT2的最短距离。这个图大家都知... 编程题, 利用AutoLISP语言编程,使用鼠标在AutoCAD绘图区域中任意输入三个点,PT1、PT2、PT3,求出PT3点到直线PT1、 PT2的最短距离。这个图大家都知道。我就不画了,就是线外一点到直线的距离问题。怎么编程,大家帮忙啊。。。。重赏啊。。。还有追加赏啊。。。denfun。。。setq。。。。 展开
 我来答
匿名用户
2012-06-14
展开全部
;;;计算某直线外一点到直线的最短距离,即为垂线,不判断垂足点是否在直线上
;;;设定命令为mm
(defun c:mm()
(setvar "cmdecho" 0)
(setq pt1 (getpoint "第1点"))
(setq pt2 (getpoint "第2点"))
(setq pt3 (getpoint "第3点"))
(command "line" pt1 pt2 "")
(command "point" pt3 "")
;;;
;;;不判断pt1、2、3是否共线,

;;; 方法一:
;;;pt4x,pt4y点的确定
;;;
;;;分别获取pt1、2、3的坐标值
(setq pt1x (car pt1))
(setq pt1y (cadr pt1))
(setq pt2x (car pt2))
(setq pt2y (cadr pt2))
(setq pt3x (car pt3))
(setq pt3y (cadr pt3))
;;;计算方法:
;;;pt4与pt1 pt2 共线
;;;(pt4x-pt1x)/(pt4y-pt1y)=(pt2x-pt1x)/(pt2y-pt1y)
;;;
;;;pt4 pt3的斜率与pt1 pt2的斜率乘积为1
;;;(pt4x-pt3x)/(pt4y-pt3y)*(pt2x-pt1x)/(pt2y-pt1y)=-1
;;;自行解方程计算出pt4x、y的表达式

;;;计算pt3到直线pt1 pt2的最短距离
(setvar dist (sqrt( (pt4x-pt3x)*(pt4x-pt3x)+(pt4y-pt3y)*(pt4y-pt3y) ) ) )

;;;方法二:
;;;使用getdist函数,不计算具体的垂足点的坐标
;;;开启对象捕捉仅为垂足点
(setq dist (getdist pt3 (“选择垂足点”)))

(princ)
)
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式