强大的
这里有一个简单的例子。
- ;;;author : BDYCAD
- ;;;2005-03-18
- (defun c:tt(/ BLB EP ESPL N-EP N-SP NEW-T SD SD-DXF SEA SEB SP SS1 SS2 SS3)
- (setq SD (entsel "\nChoose dimension:"))
- (if SD
- (PROGN
- (SETQ SD-DXF (ENTGET (CAR SD)))
- (WHILE (NOT (wcmatch (CDR (ASSOC 0 SD-DXF)) "*DIM*"))
- (setq SD (entsel "\nChoose dimension:"))
- (SETQ SD-DXF (ENTGET (CAR SD))))
- (SETQ SP (CDR (ASSOC 13 SD-DXF))
- EP (CDR (ASSOC 14 SD-DXF))
- ESPL (DISTANCE SP EP)
- SEA (ANGLE SP EP)
- SEB (ANGLE EP SP)
- NEW-T (getdist "\nNew value:"))
- (while (eq nil NEW-T)
- (setq NEW-T (getdist "\nNew value:")))
- (if NEW-T
- (progn
- (setq BLB (* 0.5 (abs (- NEW-T ESPL))))
- (if (> ESPL NEW-T )
- (setq N-SP (POLAR SP SEA BLB)
- N-EP (POLAR EP (+ PI SEA) BLB))
- (setq N-SP (POLAR SP SEB BLB)
- N-EP (POLAR EP (+ PI SEB) BLB))
- )
- (setvar "osmode" (logior (getvar "osmode") 16384))
- (setvar "cmdecho" 0)
- (vl-cmdf "_.undo" "_group")
- (SETQ SS1 (SSGET "C" (POLAR SP (+ PI (* 0.25 PI)) 0.4)(POLAR SP (* 0.25 PI) 0.4))
- SS2 (SSGET "C" (POLAR EP (+ PI (* 0.25 PI)) 0.4)(POLAR EP (* 0.25 PI) 0.4))
- )
- (IF SS1
- (COMMAND "STRETCH" (SSGET "C" (POLAR SP (+ PI (* 0.25 PI)) 0.4)(POLAR SP (* 0.25 PI) 0.4))
- ""SP N-SP))
- (IF SS3
- (COMMAND "STRETCH" (SSGET "C" (POLAR EP (+ PI (* 0.25 PI)) 0.4)(POLAR EP (* 0.25 PI) 0.4))
- ""EP N-EP))
- (vl-cmdf "_.undo" "_end")
- (setvar "osmode" (logand (getvar "osmode") 49151))
- (PRINC"\nComplete!")))
- )
- )
- (princ)
- )
|