Vla-put-activeucs

提供:GizmoLabs - だいたい CAD LISP なサイト
構文
(vla-put-activeucs vla-object)


機能
図面のアクティブな UCS を設定する。


引数
  • vla-object … document の VLA オブジェクト
  • ucs … UCSの VLAオブジェクト
戻り値
nil


  • memo:注記: 現在のアクティブな UCS への変更は、UCS がアクティブな UCS としてリセットされた後にのみ反映される。現在の UCS が保存されていない場合にアクティブな UCS を取得しようとすると、エラーが発生するため、アクティブな UCS 値を取得する前に、UCSNAME システム変数の値が空でないことを確認することが推奨される。
  • 新しい UCS オブジェクトを追加し、それをアクティブにしてからアクティブな UCS 値を取得することもできる。


サンプル
(command "_ucs" "na" "s" "test")
(command "_ucs" "na" "r" "test")
(setq *ActDoc* (vla-get-ActiveDocument (vlax-get-Acad-Object)))
(setq *ActUcs* (vla-get-activeucs *actdoc*))


(vl-load-com)
(defun c:Example_ActiveUCS()
    ;; UCSを保存して、現在の設定を返し、変更後に元に戻すサンプル
    (setq acadObj (vlax-get-acad-object))
    (setq doc (vla-get-ActiveDocument acadObj))
    (setq UCSs (vla-get-UserCoordinateSystems doc))
  
    ;; 現在の UCSを保存。なければ作成して追加
    (if (= (vlax-variant-value (vla-GetVariable doc "UCSNAME")) "")
        (progn
	           (setq utility (vla-get-Utility doc))
            (setq currUCS (vla-Add UCSs
                                  (vla-GetVariable doc "UCSORG")
                                  (vla-TranslateCoordinates utility (vla-GetVariable doc "UCSXDIR") acUCS acWorld :vlax-false)
                                  (vla-TranslateCoordinates utility (vla-GetVariable doc "UCSYDIR") acUCS acWorld :vlax-false)
                                  "OriginalUCS"
	                       )
            )
        )
        (setq currUCS (vla-get-ActiveUCS doc))  ;; 現在のUCSをを保存
    )
    
    (alert (strcat "現在の UCS は " (vla-get-Name currUCS)))
    
    ;; UCSを作成して変更
    (setq origin (vlax-3d-point 0 0 0)
          xAxis (vlax-3d-point 1 1 0)
          yAxis (vlax-3d-point -1 1 0))

    (setq newUCS (vla-Add UCSs origin xAxis yAxis "TestUCS"))
    (vla-put-ActiveUCS doc newUCS)
    (alert (strcat "新しい UCS は " (vla-get-Name newUCS)))
    
    ;; 元に戻す
    (vla-put-ActiveUCS doc currUCS)
    (alert (strcat "UCS を元に戻す " (vla-get-Name currUCS)))
)

関連事項