Vla-put-snapbasepoint

提供:GizmoLabs - だいたい CAD LISP なサイト
2016年1月30日 (土) 23:34時点におけるGizmon (トーク | 投稿記録)による版 (ページの作成:「{{AutoLISP}} ; 構文 : (vla-put-snapbasepoint ''vla-object'' ''point'' ) ; 機能 : ビューポートのスナップ基点を指定する。 ; 引数 :* vla-objec...」)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
構文
(vla-put-snapbasepoint vla-object point )


機能
ビューポートのスナップ基点を指定する。


引数
  • vla-object … VLAオブジェクト(PViewport、Viewport)
  • point … ビューポートのスナップ基点を表す 2D WCS 座標。


戻り値
nil
  • MEMO : アクティブなペーパー空間のビューポートに対して、スナップ基点を変更することはできない。
  • このプロパティへの変更は、Update または Regen を実行するまで画面に反映されない。
  • 注 : このプロパティの値は、システム変数 SNAPBASE に格納される。


サンプル
(vl-load-com)
(defun c:Example_SnapBasePoint()
    ;; モデル空間とペーパー空間ビューポートのスナップ基点を変更するサンプル。
    (setq acadObj (vlax-get-acad-object))
    (setq doc (vla-get-ActiveDocument acadObj))

    ;; ビューポートを作成する
    (setq viewportObj (vla-Add (vla-get-Viewports doc) "NewViewport"))
    
    ;; スナップ基点を設定
    (setq currSnapPnt (vlax-variant-value (vla-get-SnapBasePoint viewportObj)))
    (alert (strcat "現在のモデル空間スナップ基点は " 
                   (rtos (vlax-safearray-get-element currSnapPnt 0) 2) ", "
                   (rtos (vlax-safearray-get-element currSnapPnt 1) 2)))

    ;; 変更
    (setq newSnapPnt (vlax-make-safearray vlax-vbDouble '(0 . 1)))
    (vlax-safearray-fill newSnapPnt '(5 5)) 
    (vla-put-SnapBasePoint viewportObj newSnapPnt)

    (alert (strcat "現在のモデル空間スナップ基点は " 
                   (rtos (vlax-safearray-get-element currSnapPnt 0) 2) ", "
                   (rtos (vlax-safearray-get-element currSnapPnt 1) 2)))

    ;; ビューポートを作成
    (setq center (vlax-3d-point 3 3 0)
          width 40
             height 40)

    (vla-put-ActiveSpace doc acPaperSpace)
    (setq paperSpace (vla-get-PaperSpace doc))
    (setq pviewportObj (vla-AddPViewport paperSpace center width height))
    
    ;; ビューポートを作成
    (setq currSnapPnt (vlax-variant-value (vla-get-SnapBasePoint pviewportObj)))
    (alert (strcat "新しいモデル空間スナップイン ベース ポイントは " 
                   (rtos (vlax-safearray-get-element currSnapPnt 0) 2) ", "
                   (rtos (vlax-safearray-get-element currSnapPnt 1) 2)))

    ;; 変更
    (setq newSnapPnt (vlax-make-safearray vlax-vbDouble '(0 . 1)))
    (vlax-safearray-fill newSnapPnt '(2 2)) 
    (vla-put-SnapBasePoint pviewportObj newSnapPnt)

    (alert (strcat "現在のモデル空間スナップ基点は " 
                   (rtos (vlax-safearray-get-element currSnapPnt 0) 2) ", "
                   (rtos (vlax-safearray-get-element currSnapPnt 1) 2)))
)

関連事項