gashaglava,
不确定这是你需要的,但你可以试试这个lisp。
希望这有帮助。
- ; DLA.LSP - dimension length of arc
- ; modified version of DIMARC from (^v^) XANADU, http://www.xanadu.cz
- ; runs continuously - <Esc> to exit
- (defun C:DLA ( / *ERROR* pt1 pt2 cen a1 a2 ad D1 D2 D i r oldOs oldCmde)
- (defun *ERROR* (msg)
- (princ " function")
- (setvar "OSMODE" oldOs)
- (setvar "CMDECHO" oldCmde)
- (princ)
- )
- (setq oldCmde (getvar "CMDECHO"))
- (setq oldOs (getvar "OSMODE"))
- (setvar "CMDECHO" 0)
- (while T
- (princ "\n Pick 2 points on an arc - ")
- (setvar "OSMODE" 33)
- (while (not cen)
- (setq pt1 (getpoint "\n 1st pt: ")
- cen (osnap pt1 "_CEN")
- )
- (if (not cen) (alert "Doesn't lay on an arc, retry")
- (setq pt2 (getpoint pt1 "\n 2nd pt: "))
- )
- ) ; while
- (setvar "OSMODE" 0)
- (setq a1 (angle cen pt1)
- a2 (angle cen pt2)
- ad (abs (- a2 a1))
- r (distance pt1 cen)
- D1 (* r ad)
- D2 (* r (- (* 2 pi) ad))
- )
- (princ (strcat "\n Arc length (1) = " (rtos D1) ", Complement (2) = " (rtos D2)))
- (setq D D1)
- (initget "1 2")
- (setq i (getkword "\n Dim which? [1 2] : "))
- (princ "\n Place dimension : ")
- (if (= i "2") (setq D D2))
- (command "_DIMANGULAR" "" cen pt1 pt2 "_T" (rtos D) pause "")
- (setq cen nil)
- ) ; while
- (setvar "OSMODE" oldOs)
- (setvar "CMDECHO" oldCmde)
- (princ)
- )
|