3 次元の軸を中心にして、オブジェクトを回転させます。Point1 と Point2 によって、回転軸の線分を定義します。
サポートされているプラットフォーム: Windows のみ
VBA:
object.Rotate3D Point1, Point2, RotationAngle
タイプ: すべての図形オブジェクト、AttributeReference、Dimension
このメソッドが適用されるオブジェクト。
アクセス: 入力のみ
タイプ: バリアント型(3 要素の倍精度浮動小数点数型配列)
軸の 1 番目の点を指定する 3D WCS 座標。
アクセス: 入力のみ
タイプ: バリアント型(3 要素の倍精度浮動小数点数型配列)
軸の 2 番目の点を指定する 3D WCS 座標。
アクセス: 入力のみ
タイプ: 倍精度浮動小数点数型
選択した軸を中心にしてオブジェクトを回転するラジアン単位の角度。
戻り値はありません。
VBA:
Sub Example_Rotate3D() ' This example creates a box in model space. ' It then rotates the box about an axis. Dim boxObj As Acad3DSolid Dim length As Double, width As Double, height As Double Dim center(0 To 2) As Double ' Define the box center(0) = 5#: center(1) = 5#: center(2) = 0 length = 5#: width = 7: height = 10# ' Create the box (3DSolid) object in model space Set boxObj = ThisDrawing.ModelSpace.AddBox(center, length, width, height) ' Change the viewing direction of the viewport Dim NewDirection(0 To 2) As Double NewDirection(0) = -1: NewDirection(1) = -1: NewDirection(2) = 1 ThisDrawing.ActiveViewport.direction = NewDirection ThisDrawing.ActiveViewport = ThisDrawing.ActiveViewport ThisDrawing.Regen True ' Define the rotation axis with two points Dim rotatePt1(0 To 2) As Double Dim rotatePt2(0 To 2) As Double Dim rotateAngle As Double rotatePt1(0) = -3: rotatePt1(1) = 4: rotatePt1(2) = 0 rotatePt2(0) = -3: rotatePt2(1) = -4: rotatePt2(2) = 0 rotateAngle = 30 rotateAngle = rotateAngle * 3.141592 / 180# ' Draw a line between the two axis points so that it is visible. ' This is optional. It is not required for the rotation. Dim axisLine As AcadLine Set axisLine = ThisDrawing.ModelSpace.AddLine(rotatePt1, rotatePt2) axisLine.Update MsgBox "Rotate the box 30 degrees about the axis shown.", , "Rotate3D Example" ' Rotate the box boxObj.Rotate3D rotatePt1, rotatePt2, rotateAngle ThisDrawing.Regen True MsgBox "The box is rotated 30 degrees.", , "Rotate3D Example" End Sub
Visual LISP:
(vl-load-com) (defun c:Example_Rotate3D() ;; This example creates a box in model space. ;; It then rotates the box about an axis. (setq acadObj (vlax-get-acad-object)) (setq doc (vla-get-ActiveDocument acadObj)) ;; Define the box (setq center (vlax-3d-point 5 5 0) boxLength 5 boxWidth 7 boxHeight 10) ;; Create the box (3DSolid) object in model space (setq modelSpace (vla-get-ModelSpace doc)) (setq boxObj (vla-AddBox modelSpace center boxLength boxWidth boxHeight)) ;; Change the viewing direction of the viewport (setq NewDirection (vlax-3d-point -1 -1 1)) (setq activeViewport (vla-get-ActiveViewport doc)) (vla-put-Direction activeViewport NewDirection) (vla-put-ActiveViewport doc activeViewport) (vla-ZoomAll acadObj) ;; Define the rotation axis with two points (setq rotatePt1 (vlax-3d-point -3 4 0) rotatePt2 (vlax-3d-point -3 -4 0) rotateAngle (/ (* 30 3.141592) 180)) ;; Draw a line between the two axis points so that it is visible. ;; This is optional. It is not required for the rotation. (setq axisLine (vla-AddLine modelSpace rotatePt1 rotatePt2)) (vla-Update axisLine) (alert "Rotate the box 30 degrees about the axis shown.") ;; Rotate the box (vla-Rotate3D boxObj rotatePt1 rotatePt2 rotateAngle) (vla-Regen doc :vlax-true) (alert "The box is rotated 30 degrees.") )