// Plane public Plane PlaneToSpeckle(AC.Plane plane) { Vector xAxis = VectorToSpeckle(plane.GetCoordinateSystem().Xaxis); Vector yAxis = VectorToSpeckle(plane.GetCoordinateSystem().Yaxis); var _plane = new Plane(PointToSpeckle(plane.PointOnPlane), VectorToSpeckle(plane.Normal), xAxis, yAxis, ModelUnits); return(_plane); }
private Node AnalyticalNodeToSpeckle(ReferencePoint revitNode) { var cs = revitNode.GetCoordinateSystem(); var localAxis = new Plane(PointToSpeckle(cs.Origin), VectorToSpeckle(cs.BasisZ), VectorToSpeckle(cs.BasisX), VectorToSpeckle(cs.BasisY)); var basePoint = PointToSpeckle(cs.Origin); // alternative to revitNode.Position //var speckleNode = new Node(basePoint, revitNode.Name, null, localAxis); var speckleNode = new Node(); GetAllRevitParamsAndIds(speckleNode, revitNode); return(speckleNode); }
public AC.Plane PlaneToNative(Plane plane) { return(new AC.Plane(PointToNative(plane.origin), VectorToNative(plane.normal))); }
private Base BoundaryConditionsToSpeckle(BoundaryConditions revitBoundary) { var points = new List <XYZ> { }; var nodes = new List <Node> { }; var cs = revitBoundary.GetDegreesOfFreedomCoordinateSystem(); var localAxis = new Plane(PointToSpeckle(cs.Origin), VectorToSpeckle(cs.BasisZ), VectorToSpeckle(cs.BasisX), VectorToSpeckle(cs.BasisY)); var restraintType = revitBoundary.GetBoundaryConditionsType(); var state = 0; switch (restraintType) { case BoundaryConditionsType.Point: var point = revitBoundary.Point; points.Add(point); state = GetParamValue <int>(revitBoundary, BuiltInParameter.BOUNDARY_PARAM_PRESET); // 1 fixed, 2 pinned, 3 roller, 4 user/variable break; case BoundaryConditionsType.Line: var curve = revitBoundary.GetCurve(); points.Add(curve.GetEndPoint(0)); points.Add(curve.GetEndPoint(1)); state = GetParamValue <int>(revitBoundary, BuiltInParameter.BOUNDARY_PARAM_PRESET_LINEAR); break; case BoundaryConditionsType.Area: var loops = revitBoundary.GetLoops(); foreach (var loop in loops) { foreach (var areaCurve in loop) { points.Add(areaCurve.GetEndPoint(1)); } } points = points.Distinct().ToList(); state = GetParamValue <int>(revitBoundary, BuiltInParameter.BOUNDARY_PARAM_PRESET_AREA); break; default: break; } var restraint = GetRestraintCode(revitBoundary, restraintType, state); foreach (var point in points) { var speckleNode = new Node(); //var speckleNode = new Node(PointToSpeckle(point), null, restraint, localAxis); GetAllRevitParamsAndIds(speckleNode, revitBoundary); nodes.Add(speckleNode); } var speckleBoundaryCondition = new Base(); if (nodes.Count > 1) { speckleBoundaryCondition["nodes"] = nodes; } else { speckleBoundaryCondition = nodes[0]; } return(speckleBoundaryCondition); }