Hi all.
By a nature of bsplines we can fast and exact obtain cartesian coordinates of a point from its parametric coordinates but it is hard to get parametric from cartesian:
Non-analytical, only approximated (it leads to performance and precision issues)
Non-unique (e.g. for periodical surfaces)
We already discussed it with ISG and added something to IFC4 Add2, but I think we need more:
It is not enough to know PCurve for a bound edge, I want to know parametric coordinates for vertices.
Is there any way to represent it in IFC4? Can we add for IFC5? (IfcPEdge?)
I want to know parametric details for standalone surface.
Can we make it mandatory for DTV to provide IfcIntersectionCurve with PCurves for all bounds of bspline surface?
PCurves are 2D in UV coordinates of corresponding surface. Similary PVertex must be on PCurve, so we have four 1D points for each vertex (two in case of standalone surface)
I think having parametric information is important, and we should make sure that there is a way to provide it. I don’t know that we can make it mandatory, though - do we know that all systems have the 2D information? If we do, then, yes, mandatory is good.
I think it’s good to keep a clear separation between topology and geometry. PEdge seems to conflate these terms somewhat. I think bits and pieces are there in the existing schema. Perhaps IfcTrimmedCurve with parametric trim bounds or IfcPointOnCurve -Surface which do exist but have very poor implementation support (probably because many of the most used existing entities do not have clear parametric coords, and because many (viewer) implementations are mostly mesh/polyhedral-based).
I think NURBs is still an issue.
While I’ve got a lot of requests from our users to avoid facet appoximation (there are a lot of drawing and analytic issues with curved surfaces when you turn to facet), only a few importers are supporting unfortunarely.