另一个详细示例演示了一般概念:
- ([color=BLUE]defun[/color] GetBlockText
- ( blockcollection blockname [color=BLUE]/[/color] _GetIteminCollection _GetItemsinCollectionIf blockdef )
- ([color=BLUE]defun[/color] _GetIteminCollection ( collection item [color=BLUE]/[/color] result )
- ([color=BLUE]if[/color]
- ([color=BLUE]not[/color]
- ([color=BLUE]vl-catch-all-error-p[/color]
- ([color=BLUE]setq[/color] result
- ([color=BLUE]vl-catch-all-apply[/color] '[color=BLUE]vla-item[/color] ([color=BLUE]list[/color] collection item))
- )
- )
- )
- result
- )
- )
- ([color=BLUE]defun[/color] _GetItemsinCollectionIf ( collection condition [color=BLUE]/[/color] result )
- (
- ([color=BLUE]lambda[/color] ( condition )
- ([color=BLUE]vlax-for[/color] item collection
- ([color=BLUE]if[/color] (condition item) ([color=BLUE]setq[/color] result ([color=BLUE]cons[/color] item result)))
- )
- ([color=BLUE]reverse[/color] result)
- )
- ([color=BLUE]eval[/color] condition)
- )
- )
- ([color=BLUE]if[/color] ([color=BLUE]setq[/color] blockdef (_GetItemInCollection blockcollection blockname))
- ([color=BLUE]mapcar[/color] '[color=BLUE]vla-get-textstring[/color]
- (_GetItemsinCollectionIf blockdef
- '([color=BLUE]lambda[/color] ( x ) ([color=BLUE]wcmatch[/color] ([color=BLUE]vla-get-objectname[/color] x) [color=MAROON]"AcDb*Text"[/color]))
- )
- )
- )
- )
- ([color=blue]vl-load-com[/color])
- ([color=BLUE]defun[/color] c:test [color=BLUE]nil[/color]
- (GetBlockText
- ([color=BLUE]vla-get-blocks[/color]
- ([color=BLUE]vla-get-activedocument[/color] ([color=BLUE]vlax-get-acad-object[/color]))
- )
- ([color=BLUE]getstring[/color] [color=MAROON]"\nSpecify Block Name: "[/color])
- )
- )
|