在Auto CAD中关于VBA或Auto LISP进行编程,画出三角形。

在AutoCAD中,使用VBA或AutoLISP进行编程,实现下述功能:输入三角形A点坐标(x,y)与三边长AB、BC、AC,可自动画出该三角形。... 在Auto CAD中,使用VBA或Auto LISP进行编程,实现下述功能:输入三角形A点坐标(x,y)与三边长AB、BC、AC,可自动画出该三角形。 展开
 我来答
朱06CAD
2014-08-07 · 知道合伙人软件行家
朱06CAD
知道合伙人软件行家
采纳数:4172 获赞数:18068
高中,熟悉AutoCAD。会autolisp及VBA程序。

向TA提问 私信TA
展开全部
(defun c:3jx (/ @os4 #os #cm @p1 #os1 #os2 #os3 #l1 #l2 #l3 #lh #th #ar)
 (setq #cm (getvar "cmdecho"))
 (setvar "cmdecho" 0)
 (setvar "blipmode" 0)
 (if (null @os4) (setq @os4 '(500.0 500.0)) )
 (setq @p1 (getpoint "\n请输入三角形左下角的点或默认坐标点(500.0,500.0)"))
 (if (null @p1) (setq @p1 @os4) (setq @os4 @p1) )
 (if (null #os1) (setq #os1 300.0) )
 (if (null #os2) (setq #os2 400.0) )
 (if (null #os3) (setq #os3 500.0) )
 (setq #l1 (getdist @p1 (strcat "\n请输入三角形底边长度:<" (rtos #os1 2) ">")))
 (setq #l2 (getdist @p1 (strcat "\n请输入三角形左边直线的长度:<" (rtos #os2 2) ">")))
 (setq #l3 (getdist @p1 (strcat "\n请输入三角形右边直线的长度:<" (rtos #os3 2) ">")))
 (if (null #l1) (setq #l1 #os1) (setq #os1 #l1) )
 (if (null #l2) (setq #l2 #os2) (setq #os2 #l2) )
 (if (null #l3) (setq #l3 #os3) (setq #os3 #l3) )
 (if (and (> (+ #l1 #l2)) (> (+ #l2 #l3) #l1) (> (+ #l1 #l3) #l2))
  (progn
   (setq #lh (/ (area3 #l1 #l2 #l3) #l1 0.5))
   (setq #th (sqrt (- (sqr #l2) (sqr #lh))))
   (if (= #th 0) (setq #ar (/ pi 2)) )
   (if (> #th 0) (setq #ar (atan (/ #lh #th))) )
   (setq #lh (-(sqr #l3) (+ (sqr #l1) (sqr #l2))))
   (if (> #lh 0) (setq #ar (- pi #ar)) )
   (setq @p2 (polar @p1 #ar #l2))
   (setq @p3 (polar @p1 0 #l1))
   (setq #os (getvar "osmode"))
   (setvar "osmode" 0)
   (command "_.pline" @p1 @p2 @p3 "c")
   (setvar "osmode" #os)
  )
 (princ "\n三条边长无法绘制有效的三角形!")
 )
 (setvar "cmdecho" #cm)
 (princ)

(prompt "\n《C:3JX.lsp》根据三边画三角形")
(prin1)

(defun sqr (xx)
 (* xx xx)
);;数值平方

(defun area3 (a b c)
 (sqrt (* (* 0.5 (+ a b c)) (- (* 0.5 (+ a b c)) a) (- (* 0.5 (+ a b c)) b) (- (* 0.5 (+ a b c)) c)))
);;三角形三边求面积
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式