在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,可自动画出该三角形。
展开
2014-08-07 · 知道合伙人软件行家
关注
展开全部
(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)))
);;三角形三边求面积
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询