好主意,Stefan,这是对你的代码的一点改进,希望你不介意:
- ([color=BLUE]defun[/color] c:brec
- ( [color=BLUE]/[/color] *error* _getdist en va vr )
- [color=GREEN];; Block Rectangle[/color]
- [color=GREEN];; By Lee Mac, based on ideas by Stefan BMR[/color]
- ([color=BLUE]defun[/color] *error* ( msg )
- ([color=BLUE]if[/color] va ([color=BLUE]mapcar[/color] '[color=BLUE]setvar[/color] vr va))
- ([color=BLUE]if[/color] ([color=BLUE]not[/color] ([color=BLUE]wcmatch[/color] ([color=BLUE]strcase[/color] msg) [color=MAROON]"*BREAK,*CANCEL*,*EXIT*"[/color]))
- ([color=BLUE]princ[/color] ([color=BLUE]strcat[/color] [color=MAROON]"\nError: "[/color] msg))
- )
- ([color=BLUE]princ[/color])
- )
- ([color=BLUE]if[/color] ([color=BLUE]null[/color] ([color=BLUE]tblsearch[/color] [color=MAROON]"BLOCK"[/color] [color=MAROON]"$MyRectangle$"[/color]))
- ([color=BLUE]progn[/color]
- ([color=BLUE]entmake[/color]
- '(
- (0 . [color=MAROON]"BLOCK"[/color])
- (8 . [color=MAROON]"0"[/color])
- (2 . [color=MAROON]"$MyRectangle$"[/color])
- (10 0.0 0.0 0.0)
- (70 . 0)
- )
- )
- ([color=BLUE]entmake[/color]
- '(
- (0 . [color=MAROON]"LWPOLYLINE"[/color])
- (100 . [color=MAROON]"AcDbEntity"[/color])
- (100 . [color=MAROON]"AcDbPolyline"[/color])
- (8 . [color=MAROON]"0"[/color])
- (90 . 4)
- (70 . 1)
- (10 0.0 0.0)
- (10 1.0 0.0)
- (10 1.0 1.0)
- (10 0.0 1.0)
- )
- )
- ([color=BLUE]entmake[/color]
- '(
- (0 . [color=MAROON]"ENDBLK"[/color])
- (8 . [color=MAROON]"0"[/color])
- )
- )
- )
- )
- ([color=BLUE]defun[/color] _getdist ( a b c )
- ([color=BLUE]set[/color] a
- ([color=BLUE]cond[/color]
- (
- ([color=BLUE]getdist[/color]
- ([color=BLUE]strcat[/color] b [color=MAROON]" <"[/color]
- ([color=BLUE]rtos[/color] ([color=BLUE]set[/color] a ([color=BLUE]cond[/color] ( ([color=BLUE]eval[/color] a) ) ( c )))) [color=MAROON]">: "[/color]
- )
- )
- )
- ( ([color=BLUE]eval[/color] a) )
- )
- )
- )
- ([color=BLUE]setq[/color] vr '(CMDECHO QAFLAGS)
- va ([color=BLUE]mapcar[/color] '[color=BLUE]getvar[/color] vr)
- )
- ([color=BLUE]mapcar[/color] '[color=BLUE]setvar[/color] vr '(0 1))
- (_getdist '*len* [color=MAROON]"\nSpecify Length"[/color] 1.0)
- (_getdist '*wid* [color=MAROON]"\nSpecify Width"[/color] 1.0)
- ([color=BLUE]setq[/color] en ([color=BLUE]entlast[/color]))
- ([color=BLUE]command[/color] [color=MAROON]"_.-insert"[/color] [color=MAROON]"$MyRectangle$"[/color] [color=MAROON]"_X"[/color] *len* [color=MAROON]"_Y"[/color] *wid*)
- ([color=BLUE]princ[/color] [color=MAROON]"\nSpecify Insertion Point: "[/color])
- ([color=BLUE]setvar[/color] 'CMDECHO 1)
- ([color=BLUE]while[/color] ([color=BLUE]=[/color] 1 ([color=BLUE]logand[/color] 1 ([color=BLUE]getvar[/color] 'CMDACTIVE)))
- ([color=BLUE]command[/color] [color=BLUE]pause[/color])
- )
- ([color=BLUE]setvar[/color] 'CMDECHO 0)
- ([color=BLUE]if[/color] ([color=BLUE]not[/color] ([color=BLUE]equal[/color] en ([color=BLUE]setq[/color] en ([color=BLUE]entlast[/color]))))
- ([color=BLUE]command[/color] [color=MAROON]"_.explode"[/color] en [color=MAROON]""[/color])
- )
- ([color=BLUE]mapcar[/color] '[color=BLUE]setvar[/color] vr va)
- ([color=BLUE]princ[/color])
- )
|