Message 1 of 14
Get translation and rotation for a FamilyInstance (Export)

Not applicable
01-29-2020
12:53 PM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
Hello, I'm currently doing some code to export a model from to glTF.
For performance reasons, I need to export each kind of geometry only one time, so my code does that, but something is wrong with it:
ElementType elementType = CurrentDocument.GetElement(CurrentElement.GetTypeId()) as ElementType; string meshName = elementType.Name + "[" + elementType.Id + "]"; _mesh.Name = meshName; //Check if we already have the geometry Node node = _scene.FindNode(n => n.Mesh.Name == meshName); //No, it's new, so save it inside a node if (node == null) node = _scene.CreateNode(elementId.IntegerValue.ToString()).WithMesh(_model.CreateMeshes(_mesh)[0]); //We already have a mesh/geometry else { Transform currentTransform = (CurrentElement as FamilyInstance).GetTransform(); ElementId id = new ElementId(Convert.ToInt32(node.Name)); Element firstElementOfType = CurrentDocument.GetElement(id); FamilyInstance firstElementOfTypeFamilyInstance = firstElementOfType as FamilyInstance; Transform firstElementOfTypeTransform = firstElementOfTypeFamilyInstance.GetTransform(); var currentElementOriginPoint = new XYZ(currentTransform.Origin.Y, currentTransform.Origin.Z, currentTransform.Origin.X); var firstElementOfTypeOriginPoint = new XYZ(firstElementOfTypeTransform.Origin.Y, firstElementOfTypeTransform.Origin.Z, firstElementOfTypeTransform.Origin.X); var p = new XYZ(currentTransform.Origin.Y - firstElementOfTypeTransform.Origin.Y, currentTransform.Origin.Z - firstElementOfTypeTransform.Origin.Z, currentTransform.Origin.X - firstElementOfTypeTransform.Origin.X); _scene.CreateNode(elementId.IntegerValue.ToString()).WithMesh(node.Mesh).LocalTransform = new SharpGLTF.Transforms.AffineTransform() {
//TODO: Rotation //Rotation = new Vector3((float)(p.Y),(float)(p.X),(float)(p.Z)), Translation = new Vector3((float)(p.Z), (float)(p.X), (float)(p.Y)), Scale = new Vector3(1, 1, 1), }; }
I'm working on this very hard, It should be simple, can someone provide some tips?
Why is my translation vector wrong?
How can I get the Rotation.