/// <summary>
      /// Creates a handle representing an IfcIShapeProfileDef and assigns it to the file.
      /// </summary>
      /// <param name="file">The file.</param>
      /// <param name="profileType">The profile type.</param>
      /// <param name="profileName">The profile name.</param>
      /// <param name="positionHnd">The profile position.</param>
      /// <param name="xLen">The profile length.</param>
      /// <param name="yLen">The profile width.</param>
      /// <returns>The handle.</returns>
      public static IFCAnyHandle CreateIShapeProfileDef(IFCFile file, IFCProfileType profileType, string profileName, IFCAnyHandle positionHnd,
          double overallWidth, double overallDepth, double webThickness, double flangeThickness, double? filletRadius)
      {
         if (overallWidth < MathUtil.Eps())
            throw new ArgumentException("Non-positive width parameter.", "overallWidth");
         if (overallDepth < MathUtil.Eps())
            throw new ArgumentException("Non-positive depth parameter.", "overallDepth");
         if (webThickness < MathUtil.Eps())
            throw new ArgumentException("Non-positive web thickness parameter.", "webThickness");
         if (flangeThickness < MathUtil.Eps())
            throw new ArgumentException("Non-positive flange thickness parameter.", "flangeThickness");
         if ((filletRadius != null) && filletRadius.GetValueOrDefault() < MathUtil.Eps())
            throw new ArgumentException("Non-positive fillet radius parameter.", "filletRadius");

         ValidateParameterizedProfileDef(positionHnd);

         IFCAnyHandle iShapeProfileDef = CreateInstance(file, IFCEntityType.IfcIShapeProfileDef);
         SetParameterizedProfileDef(iShapeProfileDef, profileType, profileName, positionHnd);
         IFCAnyHandleUtil.SetAttribute(iShapeProfileDef, "OverallWidth", overallWidth);
         IFCAnyHandleUtil.SetAttribute(iShapeProfileDef, "OverallDepth", overallDepth);
         IFCAnyHandleUtil.SetAttribute(iShapeProfileDef, "WebThickness", webThickness);
         IFCAnyHandleUtil.SetAttribute(iShapeProfileDef, "FlangeThickness", flangeThickness);
         IFCAnyHandleUtil.SetAttribute(iShapeProfileDef, "FilletRadius", filletRadius);
         return iShapeProfileDef;
      }
      /// <summary>
      /// Creates a handle representing an IfcCircleHollowProfileDef and assigns it to the file.
      /// </summary>
      /// <param name="file">The file.</param>
      /// <param name="profileType">The profile type.</param>
      /// <param name="profileName">The profile name.</param>
      /// <param name="positionHnd">The profile position.</param>
      /// <param name="radius">The profile radius.</param>
      /// <param name="wallThickness">The wall thickness.</param>
      /// <returns>The handle.</returns>
      public static IFCAnyHandle CreateCircleHollowProfileDef(IFCFile file, IFCProfileType profileType, string profileName, IFCAnyHandle positionHnd,
          double radius, double wallThickness)
      {
         if (wallThickness < MathUtil.Eps())
            throw new ArgumentException("Non-positive wall thickness parameter.", "wallThickness");

         ValidateCircleProfileDef(positionHnd, radius);

         IFCAnyHandle circleHollowProfileDef = CreateInstance(file, IFCEntityType.IfcCircleHollowProfileDef);
         SetCircleProfileDef(circleHollowProfileDef, profileType, profileName, positionHnd, radius);
         IFCAnyHandleUtil.SetAttribute(circleHollowProfileDef, "WallThickness", wallThickness);
         return circleHollowProfileDef;
      }
      /// <summary>
      /// Creates a handle representing an IfcRectangleProfileDef and assigns it to the file.
      /// </summary>
      /// <param name="file">The file.</param>
      /// <param name="profileType">The profile type.</param>
      /// <param name="profileName">The profile name.</param>
      /// <param name="positionHnd">The profile position.</param>
      /// <param name="xLen">The profile length.</param>
      /// <param name="yLen">The profile width.</param>
      /// <returns>The handle.</returns>
      public static IFCAnyHandle CreateRectangleProfileDef(IFCFile file, IFCProfileType profileType, string profileName, IFCAnyHandle positionHnd,
          double length, double width)
      {
         if (length < MathUtil.Eps())
            throw new ArgumentException("Non-positive length parameter.", "length");
         if (width < MathUtil.Eps())
            throw new ArgumentException("Non-positive width parameter.", "width");

         ValidateParameterizedProfileDef(positionHnd);

         IFCAnyHandle rectangleProfileDef = CreateInstance(file, IFCEntityType.IfcRectangleProfileDef);
         SetParameterizedProfileDef(rectangleProfileDef, profileType, profileName, positionHnd);
         IFCAnyHandleUtil.SetAttribute(rectangleProfileDef, "XDim", length);
         IFCAnyHandleUtil.SetAttribute(rectangleProfileDef, "YDim", width);
         return rectangleProfileDef;
      }
      /// <summary>
      /// Creates a handle representing an IfcArbitraryProfileDefWithVoids and assigns it to the file.
      /// </summary>
      /// <param name="file">The file.</param>
      /// <param name="profileType">The profile type.</param>
      /// <param name="profileName">The profile name.</param>
      /// <param name="positionHnd">The profile position.</param>
      /// <param name="radius">The profile radius.</param>
      /// <returns>The handle.</returns>
      public static IFCAnyHandle CreateArbitraryProfileDefWithVoids(IFCFile file, IFCProfileType profileType, string profileName, IFCAnyHandle outerCurve,
          HashSet<IFCAnyHandle> innerCurves)
      {
         IFCAnyHandleUtil.ValidateSubTypeOf(innerCurves, false, IFCEntityType.IfcCurve);

         ValidateArbitraryOpenOrClosedProfileDef(outerCurve);

         IFCAnyHandle arbitraryProfileDefWithVoids = CreateInstance(file, IFCEntityType.IfcArbitraryProfileDefWithVoids);
         SetArbitraryClosedProfileDef(arbitraryProfileDefWithVoids, profileType, profileName, outerCurve);
         IFCAnyHandleUtil.SetAttribute(arbitraryProfileDefWithVoids, "InnerCurves", innerCurves);
         return arbitraryProfileDefWithVoids;
      }
      /// <summary>
      /// Creates a handle representing an IfcCircleProfileDef and assigns it to the file.
      /// </summary>
      /// <param name="file">The file.</param>
      /// <param name="profileType">The profile type.</param>
      /// <param name="profileName">The profile name.</param>
      /// <param name="positionHnd">The profile position.</param>
      /// <param name="radius">The profile radius.</param>
      /// <returns>The handle.</returns>
      public static IFCAnyHandle CreateCircleProfileDef(IFCFile file, IFCProfileType profileType, string profileName, IFCAnyHandle positionHnd,
          double radius)
      {
         ValidateCircleProfileDef(positionHnd, radius);

         IFCAnyHandle circleProfileDef = CreateInstance(file, IFCEntityType.IfcCircleProfileDef);
         SetCircleProfileDef(circleProfileDef, profileType, profileName, positionHnd, radius);
         return circleProfileDef;
      }
      /// <summary>
      /// Creates a handle representing an IfcArbitraryClosedProfileDef and assigns it to the file.
      /// </summary>
      /// <param name="file">The file.</param>
      /// <param name="profileType">The profile type.</param>
      /// <param name="profileName">The profile name.</param>
      /// <param name="outerCurve">The profile curve.</param>
      /// <returns>The handle.</returns>
      public static IFCAnyHandle CreateArbitraryClosedProfileDef(IFCFile file, IFCProfileType profileType, string profileName, IFCAnyHandle outerCurve)
      {
         ValidateArbitraryOpenOrClosedProfileDef(outerCurve);

         IFCAnyHandle arbitraryClosedProfileDef = CreateInstance(file, IFCEntityType.IfcArbitraryClosedProfileDef);
         SetArbitraryClosedProfileDef(arbitraryClosedProfileDef, profileType, profileName, outerCurve);
         return arbitraryClosedProfileDef;
      }
      /// <summary>
      /// Creates a handle representing an IfcArbitraryOpenProfileDef and assigns it to the file.
      /// </summary>
      /// <param name="file">The file.</param>
      /// <param name="profileType">The profile type.</param>
      /// <param name="profileName">The profile name.</param>
      /// <param name="curve">The profile curve.</param>
      /// <returns>The handle.</returns>
      public static IFCAnyHandle CreateArbitraryOpenProfileDef(IFCFile file, IFCProfileType profileType, string profileName, IFCAnyHandle curve)
      {
         ValidateArbitraryOpenOrClosedProfileDef(curve);

         IFCAnyHandle arbitraryOpenProfileDef = CreateInstance(file, IFCEntityType.IfcArbitraryOpenProfileDef);
         SetProfileDef(arbitraryOpenProfileDef, profileType, profileName);
         IFCAnyHandleUtil.SetAttribute(arbitraryOpenProfileDef, "Curve", curve);

         return arbitraryOpenProfileDef;
      }
 /// <summary>
 /// Sets attributes for IfcArbitraryClosedProfileDef.
 /// </summary>
 /// <param name="arbitraryClosedProfileDef">The IfcArbitraryClosedProfileDef.</param>
 /// <param name="profileType">The profile type.</param>
 /// <param name="profileName">The profile name.</param>
 /// <param name="outerCurve">The outer curve.</param>
 private static void SetArbitraryClosedProfileDef(IFCAnyHandle arbitraryClosedProfileDef, IFCProfileType profileType, string profileName,
     IFCAnyHandle outerCurve)
 {
    SetProfileDef(arbitraryClosedProfileDef, profileType, profileName);
    IFCAnyHandleUtil.SetAttribute(arbitraryClosedProfileDef, "OuterCurve", outerCurve);
 }
 /// <summary>
 /// Sets attributes for IfcCircleProfileDef.
 /// </summary>
 /// <param name="profileDef">The IfcCircleProfileDef.</param>
 /// <param name="profileType">The profile type.</param>
 /// <param name="profileName">The profile name.</param>
 /// <param name="position">The profile position.</param>
 private static void SetCircleProfileDef(IFCAnyHandle profileDef, IFCProfileType profileType, string profileName, IFCAnyHandle position, double radius)
 {
    SetParameterizedProfileDef(profileDef, profileType, profileName, position);
    IFCAnyHandleUtil.SetAttribute(profileDef, "Radius", radius);
 }
 /// <summary>
 /// Sets attributes for IfcParameterizedProfileDef.
 /// </summary>
 /// <param name="profileDef">The IfcProfileDef.</param>
 /// <param name="profileType">The profile type.</param>
 /// <param name="profileName">The profile name.</param>
 /// <param name="position">The profile position.</param>
 private static void SetParameterizedProfileDef(IFCAnyHandle profileDef, IFCProfileType profileType, string profileName, IFCAnyHandle position)
 {
    SetProfileDef(profileDef, profileType, profileName);
    IFCAnyHandleUtil.SetAttribute(profileDef, "Position", position);
 }
 /// <summary>
 /// Sets attributes for IfcProfileDef.
 /// </summary>
 /// <param name="profileDef">The IfcProfileDef.</param>
 /// <param name="profileType">The profile type.</param>
 /// <param name="profileName">The profile name.</param>
 private static void SetProfileDef(IFCAnyHandle profileDef, IFCProfileType profileType, string profileName)
 {
    IFCAnyHandleUtil.SetAttribute(profileDef, "ProfileType", profileType);
    IFCAnyHandleUtil.SetAttribute(profileDef, "ProfileName", profileName);
 }
示例#12
0
        /// <summary>
        /// Creates a handle representing an IfcCircleProfileDef and assigns it to the file.
        /// </summary>
        /// <param name="file">The file.</param>
        /// <param name="profileType">The profile type.</param>
        /// <param name="profileName">The profile name.</param>
        /// <param name="positionHnd">The profile position.</param>
        /// <param name="radius">The profile radius.</param>
        /// <returns>The handle.</returns>
        public static IFCAnyHandle CreateCircleProfileDef(IFCFile file, IFCProfileType profileType, string profileName, IFCAnyHandle positionHnd,
            double radius)
        {
            if (radius < MathUtil.Eps())
                throw new ArgumentException("Non-positive radius parameter.", "radius");

            ValidateParameterizedProfileDef(positionHnd);

            IFCAnyHandle circleProfileDef = CreateInstance(file, IFCEntityType.IfcCircleProfileDef);
            SetParameterizedProfileDef(circleProfileDef, profileType, profileName, positionHnd);
            IFCAnyHandleUtil.SetAttribute(circleProfileDef, "Radius", radius);
            return circleProfileDef;
        }