Hi @miechh. Which coding platform you should use is mostly a matter of opinion/preference, but I would advise you to stick with iLogic (which uses vb.net), instead of VBA, because it is a newer system, code can be much more condensed, easier error handling, and avoids the current security problems related to VBA.
Writing code for drawing sketches not only just 'sucks' in general, but is extremely custom, and not easily reusable by others. You are probably not getting many responses because not many folks want to volunteer for writing that type or code for others. We don't even like writing our own code for creating sketch geometry from scratch, if we can avoid it any other possible way, especially if it is complex (not just simple rectangles/circles).
I started a little something for you, as an example, but it is not perfect yet by a long shot, and does not include any dimensional constraints yet.
Sub Main
If ThisDoc.Document.DocumentType <> DocumentTypeEnum.kPartDocumentObject Then
MsgBox("A Part Document must be active for this rule to work. Exiting.", vbCritical, "")
Exit Sub
End If
Dim oPDoc As PartDocument = ThisDoc.Document
Dim oPDef As PartComponentDefinition = oPDoc.ComponentDefinition
Dim oXZPlane As WorkPlane = oPDef.WorkPlanes.Item(2)
Dim oSketch As PlanarSketch = oPDef.Sketches.Add(oXZPlane)
'eliminating possible projected origin point (there is a setting to include this)
If oSketch.SketchPoints.Count > 0 Then oSketch.SketchPoints.Item(1).Delete
Dim oSLs As SketchLines = oSketch.SketchLines
Dim oSAs As SketchArcs = oSketch.SketchArcs
Dim oGCs As GeometricConstraints = oSketch.GeometricConstraints
Dim oTG As TransientGeometry = ThisApplication.TransientGeometry
Dim oTO As TransientObjects = ThisApplication.TransientObjects
Dim oInnerGeom As ObjectCollection = oTO.CreateObjectCollection
Dim oP1 As Point2d = oTG.CreatePoint2d(0, 100)
Dim oP2 As Point2d = oTG.CreatePoint2d(33, 100)
Dim oSL1 As SketchLine = oSLs.AddByTwoPoints(oP1, oP2)
oGCs.AddHorizontal(oSL1)
oInnerGeom.Add(oSL1)
'arcs naturally draw in counter-clockwise, from start to end, so keep that fact in mind
Dim oCp1 As Point2d = oTG.CreatePoint2d(33, 66)
Dim oP3 As Point2d = oTG.CreatePoint2d(50, 75)
Dim oSA1 As SketchArc = oSAs.AddByCenterStartEndPoint(oCp1, oSL1.EndSketchPoint, oP3, False)
Try : oGCs.AddCoincident(oSL1.EndSketchPoint, oSA1.StartSketchPoint) : Catch : End Try
oGCs.AddTangent(oSL1, oSA1)
oInnerGeom.Add(oSA1)
Dim oCp2 As Point2d = oTG.CreatePoint2d(-50, 0)
Dim oP4 As Point2d = oTG.CreatePoint2d(100, 0)
Dim oSA2 As SketchArc = oSAs.AddByCenterStartEndPoint(oCp2, oSA1.StartSketchPoint, oP4, False)
Try : oGCs.AddCoincident(oSA1.StartSketchPoint, oSA2.StartSketchPoint) : Catch : End Try
oGCs.AddTangent(oSA1, oSA2)
oInnerGeom.Add(oSA2)
Dim oOffsetGeom As SketchEntitiesEnumerator
Try
oOffsetGeom = oSketch.OffsetSketchEntitiesUsingDistance(oInnerGeom, 5, True, True, True)
Catch
MsgBox("Offset method failed.", vbExclamation,"")
End Try
End Sub
Wesley Crihfield

(Not an Autodesk Employee)