/// <summary> /// Convert an IfcParameterizedProfileDef to an ICurve /// </summary> /// <param name="profile"></param> /// <returns></returns> public static ICurve ToICurve(this IfcParameterizedProfileDef profile) { if (profile is IfcRectangleProfileDef) { var rect = (IfcRectangleProfileDef)profile; return(Polygon.Rectangle((IfcLengthMeasure)rect.XDim, (IfcLengthMeasure)rect.YDim, rect.Position.Location.ToVector3())); } else if (profile is IfcCircleProfileDef) { var circle = (IfcCircleProfileDef)profile; return(Polygon.Circle((IfcLengthMeasure)circle.Radius)); } else { throw new Exception($"The IfcParameterizedProfileDef type, {profile.GetType().Name}, is not supported."); } }
private static ICurve ToCurve(this IfcParameterizedProfileDef profile) { if (profile is IfcRectangleProfileDef) { var rect = (IfcRectangleProfileDef)profile; var p = Polygon.Rectangle((IfcLengthMeasure)rect.XDim, (IfcLengthMeasure)rect.YDim); var t = new Transform(rect.Position.Location.ToVector3()); return(t.OfPolygon(p)); } else if (profile is IfcCircleProfileDef) { var circle = (IfcCircleProfileDef)profile; return(new Circle((IfcLengthMeasure)circle.Radius)); } else { throw new Exception($"The IfcParameterizedProfileDef type, {profile.GetType().Name}, is not supported."); } }