Vla-get-normal

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


機能
オブジェクトの 3D 法線単位ベクトルを取得する。


引数
  • vla-object … VLAオブジェクト(Arc、Attribute、AttributeReference、BlockReference、Circle、Dim3PointAngular、DimAligned、DimAngular、DimArcLength、DimDiametric、Dimension、DimOrdinate、DimRadial、DimRadialLarge、DimRotated、Ellipse、ExternalReference、Hatch、Leader、Line、LWPolyline、MInsertBlock、MText、Point、Polyline、Region、Section、Shape、Solid、Text、Tolerance、Trace)


戻り値
WCS の 3D 法線単位ベクトル


  • MEMO: この法線ベクトルは、指定されたオブジェクトの Z 軸を定義する。法線は WCS で戻されるが、オブジェクトを OCS で決定する場合にも使用できる。OCS との間で相互変換する場合は、TranslateCoordinates メソッドでこのプロパティを OCSNormal として使用すること。
  • このプロパティが指定するのはベクトルであって、点ではないことに注意。ベクトルは空間内の位置ではなく、法線の方向を定義する。ある点にこの法線ベクトルを加算して、別の点を取得できる。
  • Tolerance : 法線ベクトルは Tolerance オブジェクトの方向に垂直でなければならない。Tolerance オブジェクトに垂直ではない法線はエラーになる。


サンプル
(vl-load-com)
(defun c:Example_Normal()
    ;; 円弧を作成して、円の法線を変更するサンプル
    (setq acadObj (vlax-get-acad-object))
    (setq doc (vla-get-ActiveDocument acadObj))

    ;; 円の定義
    (setq center (vlax-3d-point 4 4 0)
          radius 1)
    
    ;; 円を追加
    (setq modelSpace (vla-get-ModelSpace doc))
    (setq circleObj (vla-AddCircle modelSpace center radius))
    (vla-ZoomAll acadObj)
    
    ;; 円の法線を取得
    (setq currNormal (vlax-variant-value (vla-get-Normal circleObj)))
    (alert (strcat "現在の円の法線は " (rtos (vlax-safearray-get-element currNormal 0) 2) ", "
                                       (rtos (vlax-safearray-get-element currNormal 1) 2) ", "
                                       (rtos (vlax-safearray-get-element currNormal 2) 2)))
    
    ;; 変更
    (setq newNormal (vlax-3d-point 1 1 -1))
    (vla-put-Normal circleObj newNormal)
    (vla-Update circleObj)
    (setq newNormal (vlax-variant-value newNormal))
    (alert (strcat "新しい円の法線は " (rtos (vlax-safearray-get-element newNormal 0) 2) ", "
                                       (rtos (vlax-safearray-get-element newNormal 1) 2) ", "
                                       (rtos (vlax-safearray-get-element newNormal 2) 2)))
)


関連事項