永发信息网

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

答案:2  悬赏:80  手机版
解决时间 2021-02-21 22:20
  • 提问者网友:浪荡绅士
  • 2021-02-21 19:03
编程题, 利用AutoLISP语言编程,使用鼠标在AutoCAD绘图区域中任意输入三个点,PT1、PT2、PT3,求出PT3点到直线PT1、 PT2的最短距离。这个图大家都知道。我就不画了,就是线外一点到直线的距离问题。怎么编程,大家帮忙啊。。。。重赏啊。。。还有追加赏啊。。。denfun。。。setq。。。。
最佳答案
  • 五星知识达人网友:怀裏藏嬌
  • 2021-02-21 19:53
;;;计算某直线外一点到直线的最短距离,即为垂线,不判断垂足点是否在直线上
;;;设定命令为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)
)
全部回答
  • 1楼网友:怙棘
  • 2021-02-21 20:14
(defun c:xxx() (setvar "cmdecho" 0) (setq pt1 (getpoint " \n 第一点:")) (setq pt2 (getpoint pt1 " \n 第二点:")) (setq ll (distance pt1 pt2)) ;计算两点间距离 (setq ang (angle pt1 pt2)) ;计算两点间角度 (setq pt3 (polar pt2 (+ ang (/ (* 120 pi) 180)) ll)) ;计算三角形第三点坐标 (command "polygon" 3 "e" pt1 pt2) ;绘制三角形 (prin1) )
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯