Sketch dimension between circle to circle using vba

Sketch dimension between circle to circle using vba

k14348
Advocate Advocate
752 Views
2 Replies
Message 1 of 3

Sketch dimension between circle to circle using vba

k14348
Advocate
Advocate

Hi,

     I would like to add one dimension between circle to circle offset distance.

Could you help me on this.

 

Option Explicit

Sub CreateSketch()
    
    Dim oApp As Inventor.Application
    Set oApp = ThisApplication
    
    Dim oFmgr As String
    oFmgr = oApp.FileManager.GetTemplateFile(kPartDocumentObject, kMetricSystemOfMeasure)
    
    Dim oPartDoc As PartDocument
    Set oPartDoc = oApp.Documents.Add(kPartDocumentObject, oFmgr, True)
    
    Dim oTG As TransientGeometry
    Set oTG = oApp.TransientGeometry
    
    Dim oSketch As PlanarSketch
    Set oSketch = oPartDoc.ComponentDefinition.Sketches.Add(oPartDoc.ComponentDefinition.WorkPlanes.Item(3))
    
    Dim oOrgPoint As SketchPoint
    Set oOrgPoint = oSketch.AddByProjectingEntity(oPartDoc.ComponentDefinition.WorkPoints(1))
    
    'Call oSketch.SketchLines.AddAsTwoPointCenteredRectangle(oTG.CreatePoint2d(0, 0), oTG.CreatePoint2d(50, 50))
    'Call oSketch.SketchCircles.AddByCenterRadius(oTG.CreatePoint2d(0, 0), 50)
    
    Dim oSkCir As SketchCircles
    Set oSkCir = oSketch.SketchCircles
    
    Dim oCir As SketchCircle
    Set oCir = oSkCir.AddByCenterRadius(oTG.CreatePoint2d(0, 0), 50)
    
    
    Call oSketch.GeometricConstraints.AddCoincident(oOrgPoint, oCir.CenterSketchPoint)
    Call oSketch.DimensionConstraints.AddDiameter(oCir, oTG.CreatePoint2d(60, 60), False)
    
    Dim oOffsetCol As ObjectCollection
    Set oOffsetCol = oApp.TransientObjects.CreateObjectCollection
    
    oOffsetCol.Add oCir
    
    Call oSketch.OffsetSketchEntitiesUsingDistance(oOffsetCol, 10, False, False, True)
    Call oSketch.DimensionConstraints.AddOffset(oCir, oOffsetCol, oTG.CreatePoint2d(70, 70), False)
       
    oApp.ActiveView.Fit
    
    Dim oProfile As Profile
    Set oProfile = oSketch.Profiles.AddForSolid
    
    
    Dim oExt As ExtrudeDefinition
    Set oExt = oPartDoc.ComponentDefinition.Features.ExtrudeFeatures.CreateExtrudeDefinition(oProfile, kNewBodyOperation)
    
    Call oExt.SetDistanceExtent(10, kSymmetricExtentDirection)
    
    Dim oExtFeat As ExtrudeFeature
    Set oExtFeat = oPartDoc.ComponentDefinition.Features.ExtrudeFeatures.Add(oExt)
    
End Sub

 

Thanks, 

Regards,

Karth

0 Likes
753 Views
2 Replies
Replies (2)
Message 2 of 3

JelteDeJong
Mentor
Mentor

try using a tangent distance constraint between the 2 circles. like this:

Option Explicit

Sub CreateSketch()
    
    Dim oApp As Inventor.Application
    Set oApp = ThisApplication
    
    Dim oFmgr As String
    oFmgr = oApp.FileManager.GetTemplateFile(kPartDocumentObject, kMetricSystemOfMeasure)
    
    Dim oPartDoc As PartDocument
    Set oPartDoc = oApp.Documents.Add(kPartDocumentObject, oFmgr, True)
    
    Dim oTG As TransientGeometry
    Set oTG = oApp.TransientGeometry
    
    Dim oSketch As PlanarSketch
    Set oSketch = oPartDoc.ComponentDefinition.Sketches.Add(oPartDoc.ComponentDefinition.WorkPlanes.Item(3))
    
    Dim oOrgPoint As SketchPoint
    Set oOrgPoint = oSketch.AddByProjectingEntity(oPartDoc.ComponentDefinition.WorkPoints(1))
    
    'Call oSketch.SketchLines.AddAsTwoPointCenteredRectangle(oTG.CreatePoint2d(0, 0), oTG.CreatePoint2d(50, 50))
    'Call oSketch.SketchCircles.AddByCenterRadius(oTG.CreatePoint2d(0, 0), 50)
    
    Dim oSkCir As SketchCircles
    Set oSkCir = oSketch.SketchCircles
    
    Dim oCir As SketchCircle
    Set oCir = oSkCir.AddByCenterRadius(oTG.CreatePoint2d(0, 0), 50)
    
    
    Call oSketch.GeometricConstraints.AddCoincident(oOrgPoint, oCir.CenterSketchPoint)
    Call oSketch.DimensionConstraints.AddDiameter(oCir, oTG.CreatePoint2d(60, 60), False)
    
    Dim oOffsetCol As ObjectCollection
    Set oOffsetCol = oApp.TransientObjects.CreateObjectCollection
    
    oOffsetCol.Add oCir
    
    Dim oCir2 As SketchEntitiesEnumerator
    Set oCir2 = oSketch.OffsetSketchEntitiesUsingDistance(oOffsetCol, 10, False, False, True)
    Call oSketch.DimensionConstraints.AddTangentDistance(oCir, oCir2.Item(1), oTG.CreatePoint2d(10, 50), oTG.CreatePoint2d(40, 40), oTG.CreatePoint2d(70, 70), False)

    oApp.ActiveView.Fit
    
    Dim oProfile As Profile
    Set oProfile = oSketch.Profiles.AddForSolid
    
    
    Dim oExt As ExtrudeDefinition
    Set oExt = oPartDoc.ComponentDefinition.Features.ExtrudeFeatures.CreateExtrudeDefinition(oProfile, kNewBodyOperation)
    
    Call oExt.SetDistanceExtent(10, kSymmetricExtentDirection)
    
    Dim oExtFeat As ExtrudeFeature
    Set oExtFeat = oPartDoc.ComponentDefinition.Features.ExtrudeFeatures.Add(oExt)
    
End Sub

 

Jelte de Jong
Did you find this post helpful? Feel free to Like this post.
Did your question get successfully answered? Then click on the ACCEPT SOLUTION button.

EESignature


Blog: hjalte.nl - github.com

0 Likes
Message 3 of 3

k14348
Advocate
Advocate

Hi,

    When we do manually we dont pick tangent edges. can't we select both circle and take dimension?

 

_Karth

0 Likes