sorry jzecha, didn't try my suggestion myself, I just assumed the line orientation would flip. my mistake.
do this instead: (I am creating a line based on the endpoints of the normal line. if the direction is opposite, just switch places of the two point references in line command:
Set hybridShapeLinePtPt1 = hybridShapeFactory1.AddNewLinePtPt(hybridShapePointOnCurve2, hybridShapePointOnCurve1)
Sub CATMain()
Dim partDocument1 As PartDocument
Set partDocument1 = CATIA.ActiveDocument
Dim Sel As Selection
Set Sel = partDocument1.Selection
Dim part1 As Part
Set part1 = partDocument1.Part
Dim hybridBodies1 As hybridBodies
Set hybridBodies1 = part1.hybridBodies
Dim hybridBody1 As HybridBody
Set hybridBody1 = hybridBodies1.item("Hole_References")
part1.InWorkObject = hybridBody1
Dim hybridShapeFactory1 As HybridShapeFactory
Set hybridShapeFactory1 = part1.HybridShapeFactory
Dim parameters1 As Parameters
Set parameters1 = part1.Parameters
Dim hybridShapeSurfaceExplicit1 As HybridShapeSurfaceExplicit
Set hybridShapeSurfaceExplicit1 = parameters1.item("InputSurface")
Dim hybridBody2 As HybridBody
Set hybridBody2 = hybridBodies1.item("HoleCenterPoints")
Dim myHybridShape As HybridShape
Dim coord(2)
For Each myHybridShape In hybridBody2.HybridShapes
myHybridShape.GetCoordinates coord
Dim hybridShapeLineNormal1 As HybridShapeLineNormal
Set hybridShapeLineNormal1 = hybridShapeFactory1.AddNewLineNormal(hybridShapeSurfaceExplicit1, myHybridShape, 0, 20, False)
Dim hybridShapePointOnCurve1 As HybridShapePointOnCurve
Set hybridShapePointOnCurve1 = hybridShapeFactory1.AddNewPointOnCurveFromPercent(hybridShapeLineNormal1, 0#, False)
Dim hybridShapePointOnCurve2 As HybridShapePointOnCurve
Set hybridShapePointOnCurve2 = hybridShapeFactory1.AddNewPointOnCurveFromPercent(hybridShapeLineNormal1, 1#, False)
Dim hybridShapeLinePtPt1 As HybridShapeLinePtPt
Set hybridShapeLinePtPt1 = hybridShapeFactory1.AddNewLinePtPt(hybridShapePointOnCurve2, hybridShapePointOnCurve1)
Dim hybridShapePlaneNormal1 As HybridShapePlaneNormal
Set hybridShapePlaneNormal1 = hybridShapeFactory1.AddNewPlaneNormal(hybridShapeLinePtPt1, myHybridShape)
hybridBody1.AppendHybridShape hybridShapePlaneNormal1
part1.InWorkObject = hybridShapePlaneNormal1
part1.UpdateObject hybridShapePlaneNormal1
Dim bodies1 As Bodies
Set bodies1 = part1.Bodies
Dim body1 As Body
Set body1 = bodies1.item("Holes")
part1.InWorkObject = body1
Dim shapeFactory1 As ShapeFactory
Set shapeFactory1 = part1.ShapeFactory
Dim hole1 As Hole
Set hole1 = shapeFactory1.AddNewHoleFromPoint(coord(0), coord(1), coord(2), hybridShapePlaneNormal1, 10)
hole1.Type = catSimpleHole
hole1.AnchorMode = catExtremPointHoleAnchor
hole1.BottomType = catVHoleBottom
Dim limit1 As Limit
Set limit1 = hole1.BottomLimit
limit1.LimitMode = catOffsetLimit
Dim length1 As Length
Set length1 = hole1.Diameter
length1.Value = 10
Dim angle1 As Angle
Set angle1 = hole1.BottomAngle
angle1.Value = 120
hole1.SetDirection hybridShapeLineNormal1
hole1.ThreadingMode = catSmoothHoleThreading
hole1.ThreadSide = catRightThreadSide
part1.UpdateObject hole1
Sel.Clear
Sel.Add hybridShapePlaneNormal1
Sel.Add hybridShapeLineNormal1
Set visPropertySet1 = Sel.VisProperties
visPropertySet1.SetShow 1
Next
End Sub
regards,
LWolf