Converting Arc on receiving

Hi Community,
I have a question (most probably to @AlanRynne :grin:)
I am working on Arc conversion on receiving in TopSolid, to resolve a bug. The example I am using is a Brep sent from Rhino.
However, the only methods I have access to in TopSolid’s API don’t use points, but rather plane, radius and range (domain).
When I used the Arc.domain values to set TopSolid Range property, end points don’t match those of the Speckle Arc. (start point matches but end point doesn’t)
So my question is : what could have gone wrong with my approach ? Any hints ?
Thanks a lot in advance :raised_hands:t3:


OH dear… the f***ing Arc conversions :man_facepalming:t3:

This is something that we’ve encountered this release too in Dynamo.

Constructing an Arc using angles around a plane is highly prone to precision errors, which in turn ends up with the wrong position in the endPoint, leading to disconnected PolyCurves and BrepLoops…

This has been the vane of @clrkng and myself’s existence… and we’ve defaulted to just using 3pt arc construction as it guarantees the position of both endpoints perfectly.

I would say… if TopSolid does not have constructors for this, you may want to compute the angles within TopSolid using the endpoints to ensure that the precision of the angle aligns with what TopSolid is expecting.

This is quite a bummer, I am aware, but it’s a difficult thing to fix without introducing a whole load of geometry computation/interrogation capabilities into our objects…

Hope that helps!


I see, yes I understand. At least it reassures me it is not something I am doing wrong :sweat_smile:
I will give it a try to do the additional computation and see if it resolves it. Will keep you posted.
Thanks for clarifying :raised_hands:t3:


Alright now it’s resolved :rocket:
Actually your answer inspired me to do a more extensive research in the API and found a hidden Constructor/Setter that uses the 3 points logic.
Thanks again :raised_hands:t3:


Yay!!! glad to hear its working! :slight_smile: It did seem weird that they did not provide a 3Pt constructor for an arc… :thinking:


Indeed. It was not a straightforward one, but did the trick :grin: