I was using ICurve.IsCircle as part of a VBA macro to select all circular edges in a sketch. I wanted to add all the circular edges to a collection so I could then parse through for all the full circles. I found (through Reddit questions and testing) that the return value is not truly boolean. It seems to return a 1/0 value instead of True/False. Strangely, it has no problem assigning the return value to a Boolean variable. However, an IF test of the value fails if attempting to use (Not True) in the IF test, even if testing against the Boolean variable assigned. To illustrate:
Dim isCurveCircular As Boolean
Dim i As Long
For i = LBound(vEdges) To UBound(vEdges)
Dim swEdge As Edge
Set swEdge = vEdges(i)
Dim swCurve As Curve
Set swCurve = swEdge.GetCurve()
If swCurve Is Nothing Then GoTo NextEdge
isCurveCircular = swCurve.IsCircle()
'If Not isCurveCircular Then GoTo NextEdge
'DOES NOT WORK for Circular Edges (ALWAYS executes GoTo)
‘If isCurveCircular <> 1 Then GoTo NextEdge
'Works correctly - does not execute GoTo if curve IS circular
If isCurveCircular = 0 Then GoTo NextEdge
'Works correctly - executes GoTo if curve is NOT circular