Hide Table of Contents

Create and Transform Mathematical Elliptical Arc Example (VBA)

This example shows how to create and transform a mathematical elliptical Arc.

'-----------------------------------------------------------------
' Preconditions:
' 1. Create a VBA macro in a software product in which VBA is
'    embedded.
' 2. Copy and paste this code into the Visual Basic IDE.
' 3. Add a reference to the DraftSight type library,
'    install_dir\bin\dsAutomation.dll.
' 4. Open the Immediate window.
' 5. Start DraftSight.
' 6. Press F5.
'
' Postconditions:
' 1. Connects to DraftSight.
' 2. Gets the active document.
' 3. Creates a mathematical elliptical Arc.
' 4. Gets various mathematical elliptical Arc values.
' 5. Gets the intersection points of the mathematical elliptical
'    Arc with a mathematical linear object and plane.
' 6. Sets various values to use to transform the 
'    mathematical elliptical Arc.
' 7. Applies a mathematical transformation to the 
'    mathematical elliptical Arc.
' 8. Examine the Immediate window.
'---------------------------------------------------------------
Option Explicit
Sub main()
    Dim dsApp As DraftSight.Application    
    'Connects to DraftSight
    Set dsApp = GetObject(, "DraftSight.Application")    
    'Aborts any command currently running in DraftSight
    'to avoid nested commands
    dsApp.AbortRunningCommand    
    'Gets active document
    Dim dsDoc As DraftSight.Document
    Set dsDoc = dsApp.GetActiveDocument
    If dsDoc Is Nothing Then
        MsgBox "There are no open documents in DraftSight."
        Exit Sub
    End If    
    'Creates a mathematical elliptical Arc
    Dim dsMathUtility As DraftSight.MathUtility
    Set dsMathUtility = dsApp.GetMathUtility
    Dim Center As DraftSight.MathPoint
    Set Center = dsMathUtility.CreatePoint(3#, 7#, 0#)
    Dim MinorAxis1 As DraftSight.MathVector
    Set MinorAxis1 = dsMathUtility.CreateVector(1#, 1#, 0#)
    Dim MajorAxis2 As DraftSight.MathVector
    Set MajorAxis2 = dsMathUtility.CreateVector(3#, 1#, 0#)
    Dim majorRadius As Double
    majorRadius = 3#
    Dim minorRadius As Double
    minorRadius = 2#
    Dim startAngle As Double
    startAngle = 2.1
    Dim endAngle As Double
    endAngle = 1#    
    Dim dsMathEllipArc As DraftSight.MathEllipArc
    Set dsMathEllipArc = dsMathUtility.CreateEllipArc(Center, MajorAxis2, MinorAxis1, majorRadius, minorRadius, startAngle, endAngle)
    If dsMathEllipArc Is Nothing Then
        Debug.Print ("Mathematical elliptical Arc not created.")
    Else
        Debug.Print ("Mathematical elliptical Arc created.")
    End If    
    'Gets length of mathematical elliptical Arc
    Dim mathEllipArcLength As Double
    mathEllipArcLength = dsMathEllipArc.GetLength
    'Gets normal of mathematical elliptical Arc
    Dim dsNormal As DraftSight.MathVector
    Set dsNormal = dsMathEllipArc.GetNormal    
    'Gets major and minor axes of mathematical elliptical Arc
    Dim dsMajorAxis As DraftSight.MathVector
    Set dsMajorAxis = dsMathEllipArc.GetMajorAxis
    Dim dsMinorAxis As DraftSight.MathVector
    Set dsMinorAxis = dsMathEllipArc.GetMinorAxis    
    'Gets plane of mathematical elliptical Arc
    Dim dsPlane As DraftSight.MathPlane
    Set dsPlane = dsMathEllipArc.GetPlane
    'Gets intersection point of mathematical
    'elliptical Arc with a mathematical linear
    'object
    Dim dsLinearObject As DraftSight.MathLine
    Set dsLinearObject = dsMathUtility.CreateLine(1#, 1#, 0#, 0#, 10#, 12#, dsMathLineType_e.dsMathLineType_Infinite)
    Dim intersectionPoint1 As DraftSight.MathPoint
    Dim intersectionPoint2 As DraftSight.MathPoint
    Dim result As Long
    result = dsMathEllipArc.IntersectWithLinearObject(dsLinearObject, intersectionPoint1, intersectionPoint2)
    If result = 0 Then
        Debug.Print "Mathematical elliptical Arc and linear object do not intersect."
    Else
        Debug.Print "Mathematical elliptical Arc and linear object do intersect."
    End If
    
    'Gets intersection point of mathematical elliptical Arc with
    'a mathematical plane
    Dim dsPlaneObject As DraftSight.MathPlane
    Set dsPlaneObject = dsMathUtility.CreateXYPlane
    result = dsMathEllipArc.IntersectWithPlane(dsPlaneObject, intersectionPoint1, intersectionPoint2)
    If result = 0 Then
        Debug.Print "Mathematical elliptical Arc and plane do not intersect."
    Else
        Debug.Print "Mathematical elliptical Arc and plane do intersect."
    End If    
    'Changes major and minor radii
    dsMathEllipArc.majorRadius = 4#
    dsMathEllipArc.minorRadius = 3#    
    'Sets axes of mathematical elliptical Arc
    Dim MinorAxis3 As DraftSight.MathVector
    Set MinorAxis3 = dsMathUtility.CreateVector(2#, 2#, 0#)
    Dim MajorAxis4 As DraftSight.MathVector
    Set MajorAxis4 = dsMathUtility.CreateVector(3.5, 2.3, 0#)
    dsMathEllipArc.SetAxes MajorAxis4, MinorAxis3    
    'Sets start angle
    dsMathEllipArc.startAngle = 3#    
    'Applies a mathematical transformation to the
    'mathematical elliptical Arc
    Dim dsProjectionPlane As DraftSight.MathPlane
    Set dsProjectionPlane = dsMathUtility.CreateYZPlane
    Dim dsProjectionDirection As DraftSight.MathVector
    Set dsProjectionDirection = dsMathUtility.CreateVector(1, 0, 0)
    Dim dsProjectionTransformation As DraftSight.MathTransform
    Set dsProjectionTransformation = dsMathUtility.CreateTransformProjection(dsProjectionPlane, dsProjectionDirection)
    dsMathEllipArc.TransformBy dsProjectionTransformation
    Debug.Print ("Mathematical transformation applied to mathematical elliptical Arc.")    
End Sub


Provide feedback on this topic

SOLIDWORKS welcomes your feedback concerning the presentation, accuracy, and thoroughness of the documentation. Use the form below to send your comments and suggestions about this topic directly to our documentation team. The documentation team cannot answer technical support questions. Click here for information about technical support.

* Required

 
*Email:  
Subject:   Feedback on Help Topics
Page:   Create and Transform Mathematical Elliptical ArcExample (VBA)
*Comment:  
*   I acknowledge I have read and I hereby accept the privacy policy under which my Personal Data will be used by Dassault Systèmes

Print Topic

Select the scope of content to print:

x

We have detected you are using a browser version older than Internet Explorer 7. For optimized display, we suggest upgrading your browser to Internet Explorer 7 or newer.

 Never show this message again
x

Web Help Content Version: API Help (English only) 2022 SP05

To disable Web help from within SOLIDWORKS and use local help instead, click Help > Use SOLIDWORKS Web Help.

To report problems encountered with the Web help interface and search, contact your local support representative. To provide feedback on individual help topics, use the “Feedback on this topic” link on the individual topic page.