试试这个快速编写的程序:
- [color=GREEN];; Select Similar Area - Lee Mac[/color]
- [color=GREEN];; Prompts the user to select a source polyline and[/color]
- [color=GREEN];; selects all polylines in the active layout with a similar area.[/color]
- ([color=BLUE]defun[/color] c:ssarea ( [color=BLUE]/[/color] ent inc sel src )
- ([color=BLUE]if[/color]
- ([color=BLUE]and[/color]
- ([color=BLUE]setq[/color] src
- (LM:SelectIf [color=MAROON]"\nSelect Source Polyline: "[/color]
- '([color=BLUE]lambda[/color] ( x ) ([color=BLUE]wcmatch[/color] ([color=BLUE]cdr[/color] ([color=BLUE]assoc[/color] 0 ([color=BLUE]entget[/color] x))) [color=MAROON]"*POLYLINE"[/color]))
- )
- )
- ([color=BLUE]setq[/color] sel
- ([color=BLUE]ssget[/color] [color=MAROON]"_X"[/color]
- ([color=BLUE]list[/color] '(0 . [color=MAROON]"*POLYLINE"[/color])
- ([color=BLUE]if[/color] ([color=BLUE]=[/color] 1 ([color=BLUE]getvar[/color] 'cvport))
- ([color=BLUE]cons[/color] 410 ([color=BLUE]getvar[/color] 'ctab))
- '(410 . [color=MAROON]"Model"[/color])
- )
- )
- )
- )
- ([color=BLUE]setq[/color] src ([color=BLUE]vla-get-area[/color] ([color=BLUE]vlax-ename->vla-object[/color] src)))
- )
- ([color=BLUE]repeat[/color] ([color=BLUE]setq[/color] inc ([color=BLUE]sslength[/color] sel))
- ([color=BLUE]setq[/color] ent ([color=BLUE]ssname[/color] sel ([color=BLUE]setq[/color] inc ([color=BLUE]1-[/color] inc))))
- ([color=BLUE]if[/color] ([color=BLUE]not[/color] ([color=BLUE]equal[/color] src ([color=BLUE]vla-get-area[/color] ([color=BLUE]vlax-ename->vla-object[/color] ent)) 1e-3))
- ([color=BLUE]ssdel[/color] ent sel)
- )
- )
- )
- ([color=BLUE]sssetfirst[/color] [color=BLUE]nil[/color] sel)
- ([color=BLUE]princ[/color])
- )
- [color=GREEN];; Select If - Lee Mac[/color]
- [color=GREEN];; Continuously prompts the user for a selection[/color]
- [color=GREEN];; until a given predicate function is validated[/color]
- ([color=BLUE]defun[/color] LM:SelectIf ( msg prd [color=BLUE]/[/color] e )
- ([color=BLUE]setq[/color] prd ([color=BLUE]eval[/color] prd))
- ([color=BLUE]while[/color]
- ([color=BLUE]progn[/color] ([color=BLUE]setvar[/color] 'ERRNO 0) ([color=BLUE]setq[/color] e ([color=BLUE]car[/color] ([color=BLUE]entsel[/color] msg)))
- ([color=BLUE]cond[/color]
- ( ([color=BLUE]=[/color] 7 ([color=BLUE]getvar[/color] 'ERRNO))
- ([color=BLUE]princ[/color] [color=MAROON]"\nMissed, try again."[/color])
- )
- ( ([color=BLUE]eq[/color] 'ENAME ([color=BLUE]type[/color] e))
- ([color=BLUE]if[/color] ([color=BLUE]and[/color] prd ([color=BLUE]null[/color] (prd e)))
- ([color=BLUE]princ[/color] [color=MAROON]"\nInvalid Object."[/color])
- )
- )
- )
- )
- )
- e
- )
- ([color=BLUE]vl-load-com[/color]) ([color=BLUE]princ[/color])
上述程序认为多段线面积等于1e-3(0.001)的公差-更改此公差以适合您的应用。 |