Vla-put-normal
- 構文
- (vla-put-normal vla-object vector )
- 機能
- オブジェクトの 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)
- vector … WCS の 3D 法線単位ベクトル
- 戻り値
- nil
- 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)))
)
関連事項