展开全部
;确定C、D点位置
(defun c:CDwz()
(vl-load-com)
(setq cmd (getvar "cmdecho"))
(setq osm (getvar "osmode"))
(setvar "cmdecho" 0)
(command "_undo" "be")
(setvar "osmode" 33)
(while (setq pa (getpoint "\n请指定A点:"))
(if (setq pb (getpoint pa "\n请指定B点:"))
(progn
;给定B点到C点,直接回车为默认值10
(if (= (setq Dbc (getreal "\n请给定B点到C点的距离<10>=")) nil)
(setq Dbc 10.0)
)
(setq dist (distance pa pb)) ;A点到B点的距离
(setq ang (angle pa pb)) ;A点到B点的方位角
(setq pd (polar pa (+ ang (* 0.5 pi)) Dbc)) ;计算出D点的位置
(setq pc (polar pb (+ ang (* 0.5 pi)) Dbc)) ;计算出D点的位置
;画出A、B、C、D四点之间的连接线
(setvar "osmode" 0)
(command "_pline" pa pb pc pd "c")
;显示出C、D点的位置坐标
(princ (strcat "\nC点位置(X=" (rtos (car pc) 2 3) ", Y=" (rtos (cadr pc) 2 3) ")"
62616964757a686964616fe4b893e5b19e31333436316336 "\nD点位置(X=" (rtos (car pd) 2 3) ", Y=" (rtos (cadr pd) 2 3) ")"
)
)
(setvar "osmode" 33)
)
(princ "\n没有指定B点,不能确定C、D两点!")
)
)
(command "_undo" "e")
(setvar "osmode" osm)
(setvar "cmdecho" cmd)
(princ)
)