Creates a revolved solid, given the region around an axis.
Supported platforms: Windows only
VBA:
RetVal = object.AddRevolvedSolid(Profile, AxisPoint, AxisDir, Angle)
Type: Block, ModelSpace, PaperSpace
The objects this method applies to.
Access: Input-only
Type: Region
A profile can only a Region object.
Access: Input-only
Type: Variant (three-element array of doubles)
The 3D WCS coordinates specifying the start point of the axis of revolution.
Access: Input-only
Type: Variant (three-element array of doubles)
A 3D vector specifying the direction of the axis of revolution.
Access: Input-only
Type: Double
The angle of revolution in radians. Enter 6.28 for a full circle revolution.
The region to revolve must be closed. You cannot revolve objects contained within a block. You can revolve only one object at a time.
The right-hand rule determines the positive direction of rotation.
VBA:
Sub Example_AddRevolvedSolid()
' This example creates a solid from a region
' rotated around an axis.
' The region is created from an arc and a line.
Dim curves(0 To 1) As AcadEntity
' Define the arc
Dim centerPoint(0 To 2) As Double
Dim radius As Double
Dim startAngle As Double
Dim endAngle As Double
centerPoint(0) = 5#: centerPoint(1) = 3#: centerPoint(2) = 0#
radius = 2#
startAngle = 0
endAngle = 3.141592
Set curves(0) = ThisDrawing.ModelSpace.AddArc(centerPoint, radius, startAngle, endAngle)
' Define the line
Set curves(1) = ThisDrawing.ModelSpace.AddLine(curves(0).startPoint, curves(0).endPoint)
' Create the region
Dim regionObj As Variant
regionObj = ThisDrawing.ModelSpace.AddRegion(curves)
ZoomAll
MsgBox "Revolve the region to create the solid.", , "AddRevolvedSolid Example"
' Define the rotation axis
Dim axisPt(0 To 2) As Double
Dim axisDir(0 To 2) As Double
Dim angle As Double
axisPt(0) = 7: axisPt(1) = 2.5: axisPt(2) = 0
axisDir(0) = 11: axisDir(1) = 1: axisDir(2) = 3
angle = 6.28
' Create the solid
Dim solidObj As Acad3DSolid
Set solidObj = ThisDrawing.ModelSpace.AddRevolvedSolid(regionObj(0), axisPt, axisDir, angle)
ZoomAll
' 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
ZoomAll
MsgBox "Solid created.", , "AddRevolvedSolid Example"
End Sub
Visual LISP:
(vl-load-com)
(defun c:Example_AddRevolvedSolid()
;; This example creates a solid from a region
;; rotated around an axis.
;; The region is created from an arc and a line.
(setq acadObj (vlax-get-acad-object))
(setq doc (vla-get-ActiveDocument acadObj))
(setq modelSpace (vla-get-ModelSpace doc))
;; Define the arc
(setq centerPoint (vlax-3d-point 5 3 0)
radius 2
startAngle 0
endAngle 3.141592)
(setq arc (vla-AddArc modelSpace centerPoint radius startAngle endAngle))
;; Define the line
(setq line (vla-AddLine modelSpace (vla-get-StartPoint arc) (vla-get-EndPoint arc)))
(setq curves (vlax-make-safearray vlax-vbObject '(0 . 1)))
(vlax-safearray-put-element curves 0 arc)
(vlax-safearray-put-element curves 1 line)
;; Create the region
(setq regionObj (vla-AddRegion modelSpace curves))
(vla-ZoomAll acadObj)
(alert "Revolve the region to create the solid.")
;; Define the rotation axis
(setq rotAxisPt (vlax-3d-point 7 2.5 0)
rotAxisDir (vlax-3d-point 11 1 3)
rotAngle 6.28)
;; Create the solid
(setq solidObj (vla-AddRevolvedSolid modelSpace (vlax-safearray-get-element (vlax-variant-value regionObj) 0) rotAxisPt rotAxisDir rotAngle))
;; 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)
(alert "Solid created.")
)