Vla-get-normal
- 構文
- (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))) )
関連事項