卡德曼,
您可能会发现getpoint比vla getpoint更容易使用,因为使用getpoint时,如果用户未能选择点,函数将返回nil,而vla getpoint函数在选择null时将出错。
我将向您展示这两种方法,让您决定哪种方法更容易:
- [color=RED]([/color][color=BLUE]defun[/color] c:zw1 [color=RED]([/color] [color=BLUE]/[/color] _CatchApply _acad _util v1 v2 [color=RED])[/color] [color=RED]([/color][color=BLUE]vl-load-com[/color][color=RED])[/color]
- [color=RED]([/color][color=BLUE]defun[/color] _CatchApply [color=RED]([/color] _function _args [color=RED])[/color]
- [color=RED]([/color][color=BLUE]if[/color]
- [color=RED]([/color][color=BLUE]not[/color]
- [color=RED]([/color][color=BLUE]vl-catch-all-error-p[/color]
- [color=RED]([/color][color=BLUE]setq[/color] result
- [color=RED]([/color][color=BLUE]vl-catch-all-apply[/color] _function _args[color=RED])[/color]
- [color=RED])[/color]
- [color=RED])[/color]
- [color=RED])[/color]
- result
- [color=RED])[/color]
- [color=RED])[/color]
- [color=RED]([/color][color=BLUE]setq[/color] _acad [color=RED]([/color][color=BLUE]vlax-get-acad-object[/color][color=RED])[/color]
- _util [color=RED]([/color][color=BLUE]vla-get-Utility[/color] [color=RED]([/color][color=BLUE]vla-get-ActiveDocument[/color] _acad[color=RED]))[/color]
- [color=RED])[/color]
- [color=RED]([/color][color=BLUE]if[/color]
- [color=RED]([/color][color=BLUE]and[/color]
- [color=RED]([/color][color=BLUE]setq[/color] v1 [color=RED]([/color]_CatchApply [color=DARKRED]'[/color][color=BLUE]vla-getPoint[/color] [color=RED]([/color][color=BLUE]list[/color] _util [color=BLUE]nil[/color] [color=#a52a2a]"\nSpecify First Point: "[/color][color=RED])))[/color]
- [color=RED]([/color][color=BLUE]setq[/color] v2 [color=RED]([/color]_CatchApply [color=DARKRED]'[/color][color=BLUE]vla-getPoint[/color] [color=RED]([/color][color=BLUE]list[/color] _util v1 [color=#a52a2a]"\nSpecify Next Point: "[/color][color=RED])))[/color]
- [color=RED])[/color]
- [color=RED]([/color][color=BLUE]vla-ZoomWindow[/color] _acad v1 v2[color=RED])[/color]
- [color=RED])[/color]
- [color=RED]([/color][color=BLUE]princ[/color][color=RED])[/color]
- [color=RED])[/color]
最后一件事:请注意,vlax-3D-point函数是创建长度为3的一维安全阵列变体的“方便工具”,相当于:
- [color=RED]([/color][color=BLUE]defun[/color] _vlax-3D-point [color=RED]([/color] l [color=RED])[/color]
- [color=RED]([/color][color=BLUE]vlax-make-variant[/color]
- [color=RED]([/color][color=BLUE]vlax-safearray-fill[/color]
- [color=RED]([/color][color=BLUE]vlax-make-safearray[/color] [color=BLUE]vlax-vbDouble[/color] [color=DARKRED]'[/color][color=RED]([/color][color=#009900]0[/color] [color=DARKRED].[/color] [color=#009900]2[/color][color=RED]))[/color]
- l
- [color=RED])[/color]
- [color=RED])[/color]
- [color=RED])[/color]
|