You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This could be a cube (1,2,3,4,5,6) with an excluded cylinder (c/y 7 etc) which start from the base surface (5). Obviously in this example surface 6 could be removed from the union but there are examples were that is not true. If we consider a point (Vec3D) that is on surface 5 is that point within the object?
Unfortunately, the old code determined that the point was on surface 5 and used the most favourable value for that determination in all cases. That does not work properly here.
Consider: If the point is on surface 5, then previously CombLayer considered the point is true for the case of the outer part (1 -2 3 -4 5 -6) but then CombLayer considered that it was false for the case of the union (7:-5:-11). Obviously that is not correct.
Update
CombLayer has not been updated to fix this problem. Unfortunately, I haven't seen a quick or easy way to do that within the tree structure of the surface rules that form a HeadRule. [suggestions most welcome]. I have implemented a set of surfaces that have opposite sides held by HeadRule. Then this set is checked when a point is tested in isValid (to determine if the point is on any of those sides) In the case that it is, then all pairs of boolean options are testes and the point is considered valid is any of these pairs are valid.
Consequence
The consequence is that a number of the very annoying issues with line-track (or pipes etc) have gone away. They often occured as segments of pipe were injected into a model because a segment often started on a cell boundary (due to using a FixedComp linkpoint). That was ok for the first pipe, but a second pipe using the starting cell of the first pipe, would then fail to be correctly inserted because of this issue.
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
-
Introduction:
Consider an object with a rule like this
1 -2 3 -4 5 -6 (7:-5:-11)
This could be a cube (1,2,3,4,5,6) with an excluded cylinder (c/y 7 etc) which start from the base surface (5). Obviously in this example surface 6 could be removed from the union but there are examples were that is not true. If we consider a point (Vec3D) that is on surface 5 is that point within the object?
Unfortunately, the old code determined that the point was on surface 5 and used the most favourable value for that determination in all cases. That does not work properly here.
Consider: If the point is on surface 5, then previously CombLayer considered the point is true for the case of the outer part (1 -2 3 -4 5 -6) but then CombLayer considered that it was false for the case of the union (7:-5:-11). Obviously that is not correct.
Update
CombLayer has not been updated to fix this problem. Unfortunately, I haven't seen a quick or easy way to do that within the tree structure of the surface rules that form a HeadRule. [suggestions most welcome]. I have implemented a set of surfaces that have opposite sides held by HeadRule. Then this set is checked when a point is tested in isValid (to determine if the point is on any of those sides) In the case that it is, then all pairs of boolean options are testes and the point is considered valid is any of these pairs are valid.
Consequence
The consequence is that a number of the very annoying issues with line-track (or pipes etc) have gone away. They often occured as segments of pipe were injected into a model because a segment often started on a cell boundary (due to using a FixedComp linkpoint). That was ok for the first pipe, but a second pipe using the starting cell of the first pipe, would then fail to be correctly inserted because of this issue.
Comments/Questions etc most welcome.
Update is in aa337e4 / 17th August 2022
Beta Was this translation helpful? Give feedback.
All reactions