Hi @nishantkumat5921
This one was more difficult than I thought it would be. That's because functions such as trim etc. in sketches aren't exposed through the API. I'd recommend that you use a sketchblock or an iFeature for your purpose, but if you want to sketch it through API I have an example for you here.
I just wrote the code for the sketch so this example is in part environment. Just open a new part and run this iLogic code to see it work. The code asks you to input some dimensions and then pick a workplane.
Dim Diameter As Double = CDblAny(InputBox("Diameter: ", "Diameter", "30"))
Dim crossGap As Double = CDblAny(InputBox("CrossGap: ", "Cross gap", "4"))
Dim crossHeight As Double = CDblAny(InputBox("CrossHeight: ", "Cross height", "35"))
If crossHeight <= Diameter Then
MsgBox("Crossheight must be greater than diameter")
Exit Sub
End If
If crossGap >= Diameter Then
MsgBox("Crossgap must be smaller than diameter")
Exit Sub
End If
Dim oDoc As PartDocument = ThisDoc.Document
Dim UoM As UnitsOfMeasure = oDoc.UnitsOfMeasure
Dim dia As Double = UoM.ConvertUnits(Diameter, UoM.LengthUnits, UnitsTypeEnum.kDatabaseLengthUnits)
Dim cg As Double = UoM.ConvertUnits(crossGap, UoM.LengthUnits, UnitsTypeEnum.kDatabaseLengthUnits)
Dim ch As Double = UoM.ConvertUnits(crossHeight, UoM.LengthUnits, UnitsTypeEnum.kDatabaseLengthUnits)
Dim oDef As PartComponentDefinition = oDoc.ComponentDefinition
Dim oPlane As WorkPlane = ThisApplication.CommandManager.Pick(SelectionFilterEnum.kWorkPlaneFilter, "Pick a workplane")
Dim oSketch As PlanarSketch = oDef.Sketches.Add(oPlane)
Dim oSketchCenterPoint As SketchPoint = oSketch.AddByProjectingEntity(oDef.WorkPoints("Center Point"))
Dim cp As Point2d = oSketchCenterPoint.Geometry
Dim oTG As TransientGeometry = ThisApplication.TransientGeometry
Dim oCircle As Circle2d = oTG.CreateCircle2d(cp, dia / 2)
Dim rightLine As Line2d = oTG.CreateLine2d(oTG.CreatePoint2d(cp.X + cg/2, 0), oTG.CreateUnitVector2d(0, 1))
Dim leftLine As Line2d = oTG.CreateLine2d(oTG.CreatePoint2d(cp.X - cg/2, 0), oTG.CreateUnitVector2d(0, 1))
Dim upperLine As Line2d = oTG.CreateLine2d(oTG.CreatePoint2d(0, cp.Y + cg/2), oTG.CreateUnitVector2d(1, 0))
Dim lowerLine As Line2d = oTG.CreateLine2d(oTG.CreatePoint2d(0, cp.Y - cg/2), oTG.CreateUnitVector2d(1, 0))
Dim rightIntersect As ObjectsEnumerator = rightLine.IntersectWithCurve(oCircle)
Dim leftIntersect As ObjectsEnumerator = leftLine.IntersectWithCurve(oCircle)
Dim upperIntersect As ObjectsEnumerator = upperLine.IntersectWithCurve(oCircle)
Dim lowerIntersect As ObjectsEnumerator = lowerLine.IntersectWithCurve(oCircle)
Dim p1 As Point2d
Dim p2 As Point2d
Dim p3 As Point2d
Dim p4 As Point2d
Dim p5 As Point2d
Dim p6 As Point2d
Dim p7 As Point2d
Dim p8 As Point2d
If rightIntersect(1).Y > rightIntersect(2).Y
p1 = rightIntersect(1)
p4 = rightIntersect(2)
Else
p4 = rightIntersect(1)
p1 = rightIntersect(2)
End If
Dim sp1 As SketchPoint = oSketch.SketchPoints.Add(p1, False)
Dim sp4 As SketchPoint = oSketch.SketchPoints.Add(p4, False)
If leftIntersect(1).Y > leftIntersect(2).Y
p8 = leftIntersect(1)
p5 = leftIntersect(2)
Else
p5 = leftIntersect(1)
p8 = leftIntersect(2)
End If
Dim sp5 As SketchPoint = oSketch.SketchPoints.Add(p5, False)
Dim sp8 As SketchPoint = oSketch.SketchPoints.Add(p8, False)
If upperIntersect(1).X > upperIntersect(2).X
p2 = upperIntersect(1)
p7 = upperIntersect(2)
Else
p7 = upperIntersect(1)
p2 = upperIntersect(2)
End If
Dim sp7 As SketchPoint = oSketch.SketchPoints.Add(p7, False)
Dim sp2 As SketchPoint = oSketch.SketchPoints.Add(p2, False)
If lowerIntersect(1).X > lowerIntersect(2).X
p3 = lowerIntersect(1)
p6 = lowerIntersect(2)
Else
p6 = lowerIntersect(1)
p3 = lowerIntersect(2)
End If
Dim sp6 As SketchPoint = oSketch.SketchPoints.Add(p6, False)
Dim sp3 As SketchPoint = oSketch.SketchPoints.Add(p3, False)
Dim a1 As SketchArc = oSketch.SketchArcs.AddByCenterStartEndPoint(oSketchCenterPoint, sp1, sp2, False)
Dim a2 As SketchArc = oSketch.SketchArcs.AddByCenterStartEndPoint(oSketchCenterPoint, sp3, sp4, False)
Dim a3 As SketchArc = oSketch.SketchArcs.AddByCenterStartEndPoint(oSketchCenterPoint, sp5, sp6, False)
Dim a4 As SketchArc = oSketch.SketchArcs.AddByCenterStartEndPoint(oSketchCenterPoint, sp7, sp8, False)
oSketch.GeometricConstraints.AddCoincident(oSketchCenterPoint, a1.CenterSketchPoint)
oSketch.DimensionConstraints.AddDiameter(a1, cp)
oSketch.GeometricConstraints.AddCoincident(a1.CenterSketchPoint, a2.CenterSketchPoint)
oSketch.GeometricConstraints.AddCoincident(a1.CenterSketchPoint, a3.CenterSketchPoint)
oSketch.GeometricConstraints.AddCoincident(a1.CenterSketchPoint, a4.CenterSketchPoint)
oSketch.GeometricConstraints.AddEqualRadius(a1, a2)
oSketch.GeometricConstraints.AddEqualRadius(a1, a3)
oSketch.GeometricConstraints.AddEqualRadius(a1, a4)
Dim p1p4 As SketchLine = oSketch.SketchLines.AddByTwoPoints(sp1, sp4)
p1p4.Construction = True
Dim p2p7 As SketchLine = oSketch.SketchLines.AddByTwoPoints(sp2, sp7)
p2p7.Construction = True
Dim p3p6 As SketchLine = oSketch.SketchLines.AddByTwoPoints(sp3, sp6)
p3p6.Construction = True
Dim p5p8 As SketchLine = oSketch.SketchLines.AddByTwoPoints(sp5, sp8)
p5p8.Construction = True
oSketch.GeometricConstraints.AddParallel(p1p4, p5p8)
oSketch.GeometricConstraints.AddParallel(p2p7, p3p6)
oSketch.GeometricConstraints.AddEqualLength(p1p4, p5p8)
oSketch.GeometricConstraints.AddEqualLength(p1p4, p2p7)
oSketch.GeometricConstraints.AddEqualLength(p1p4, p3p6)
oSketch.GeometricConstraints.AddPerpendicular(p1p4, p2p7)
Dim cgDim As OffsetDimConstraint = oSketch.DimensionConstraints.AddOffset(p1p4, p5p8, cp, False)
cgDim.Parameter.Value = cg
Dim r1 As SketchPoint = oSketch.SketchPoints.Add(oTG.CreatePoint2d(p8.X, p8.Y + 5), False)
Dim r2 As SketchPoint = oSketch.SketchPoints.Add(oTG.CreatePoint2d(p1.X, p1.Y + 5), False)
Dim l1 As SketchLine = oSketch.SketchLines.AddByTwoPoints(sp8, r1)
Dim l2 As SketchLine = oSketch.SketchLines.AddByTwoPoints(sp1, r2)
oSketch.GeometricConstraints.AddEqualLength(l1, l2)
Dim e1 As SketchLine = oSketch.SketchLines.AddByTwoPoints(r1, r2)
oSketch.GeometricConstraints.AddCollinear(p5p8, l1)
oSketch.GeometricConstraints.AddCollinear(p1p4, l2)
Dim r3 As SketchPoint = oSketch.SketchPoints.Add(oTG.CreatePoint2d(p5.X, p5.Y - 5), False)
Dim r4 As SketchPoint = oSketch.SketchPoints.Add(oTG.CreatePoint2d(p4.X, p4.Y - 5), False)
Dim l3 As SketchLine = oSketch.SketchLines.AddByTwoPoints(sp5, r3)
Dim l4 As SketchLine = oSketch.SketchLines.AddByTwoPoints(sp4, r4)
oSketch.GeometricConstraints.AddEqualLength(l3, l4)
Dim e2 As SketchLine = oSketch.SketchLines.AddByTwoPoints(r3, r4)
oSketch.GeometricConstraints.AddCollinear(p5p8, l3)
oSketch.GeometricConstraints.AddCollinear(p1p4, l4)
Dim r5 As SketchPoint = oSketch.SketchPoints.Add(oTG.CreatePoint2d(p2.X + 5, p2.Y), False)
Dim r6 As SketchPoint = oSketch.SketchPoints.Add(oTG.CreatePoint2d(p3.X + 5, p3.Y), False)
Dim l5 As SketchLine = oSketch.SketchLines.AddByTwoPoints(sp2, r5)
Dim l6 As SketchLine = oSketch.SketchLines.AddByTwoPoints(sp3, r6)
oSketch.GeometricConstraints.AddEqualLength(l5, l6)
Dim e3 As SketchLine = oSketch.SketchLines.AddByTwoPoints(r5, r6)
oSketch.GeometricConstraints.AddCollinear(p2p7, l5)
oSketch.GeometricConstraints.AddCollinear(p3p6, l6)
Dim r7 As SketchPoint = oSketch.SketchPoints.Add(oTG.CreatePoint2d(p7.X - 5, p7.Y), False)
Dim r8 As SketchPoint = oSketch.SketchPoints.Add(oTG.CreatePoint2d(p6.X - 5, p6.Y), False)
Dim l7 As SketchLine = oSketch.SketchLines.AddByTwoPoints(sp7, r7)
Dim l8 As SketchLine = oSketch.SketchLines.AddByTwoPoints(sp6, r8)
oSketch.GeometricConstraints.AddEqualLength(l7, l8)
Dim e4 As SketchLine = oSketch.SketchLines.AddByTwoPoints(r7, r8)
oSketch.GeometricConstraints.AddCollinear(p2p7, l7)
oSketch.GeometricConstraints.AddCollinear(p3p6, l8)
oSketch.GeometricConstraints.AddEqualLength(l1, l3)
oSketch.GeometricConstraints.AddEqualLength(l1, l5)
oSketch.GeometricConstraints.AddEqualLength(l1, l7)
Dim chDim As OffsetDimConstraint = oSketch.DimensionConstraints.AddOffset(e1, e2, cp, False)
chDim.Parameter.Value = ch
oSketch.GeometricConstraints.AddHorizontal(p2p7) 'Uncomment this if shape should be rotatable
oDoc.Update