specklesystems / speckle-sharp

.NET SDK, Schema and Connectors: Revit, Rhino, Grasshopper, Dynamo, ETABS, AutoCAD, Civil3D & more.
https://speckle.systems
Apache License 2.0
351 stars 163 forks source link

Rhino (Geometry) -> Revit Direct Conversion Routines #161

Closed didimitrie closed 3 years ago

didimitrie commented 3 years ago

Scaffold some basic, simple, non-exhaustive direct conversion routines for geometry (coming from Rhino) into Revit. Some examples, just to kick off a conversation:

AlanRynne commented 3 years ago

I think this makes total sense, although I'd be inclined to include this in some sort of "smart mode" toggle option in the receiver side. This would allow the user to deactivate it if any of our conversion decisions don't suit them

A couple of remarks:

clairekuang commented 3 years ago
  • For surfaces -> I see some possible problems:

    • This may seem inconsistent and/or tricky: At least in grasshopper, all surfaces are in fact Breps with one face, so we'd have to decide when a Trimmed/untrimmed Surface should be a wall/floor and when it should just be a DirectShape.

I believe in Rhino, Brep (collection of BrepFace, which are trimmed srfs) and Surface both inherit from GeometryBase, but there is some trickiness with Extrusion (inherits from surface) that often need to be treated as breps with a conversion.

Grasshopper breaks with this naming convention and Surface = single-face brep to prevent loss of trim info when brep faces get converted to srfs.

With walls/floor/slabs, does it make sense to associate the toggle with extracting the boundary curve for vertical/planar surfaces on the rhino side as an indicator for which surfaces get converted into families vs DirectShape? On this note, we'd have to handle hole trim edge curves -> voids as well