Beispiel #1
0
        internal static GeometryBase CreateGeometryHelper(IntPtr pGeometry, object parent, int subobject_index)
        {
            if (IntPtr.Zero == pGeometry)
            {
                return(null);
            }

            int type = UnsafeNativeMethods.ON_Geometry_GetGeometryType(pGeometry);

            if (type < 0)
            {
                return(null);
            }
            GeometryBase rc = null;

            switch (type)
            {
            case idxON_Curve: //1
                rc = new Curve(pGeometry, parent, subobject_index);
                break;

            case idxON_NurbsCurve: //2
                rc = new NurbsCurve(pGeometry, parent, subobject_index);
                break;

            case idxON_PolyCurve: // 3
                rc = new PolyCurve(pGeometry, parent, subobject_index);
                break;

            case idxON_PolylineCurve: //4
                rc = new PolylineCurve(pGeometry, parent, subobject_index);
                break;

            case idxON_ArcCurve: //5
                rc = new ArcCurve(pGeometry, parent, subobject_index);
                break;

            case idxON_LineCurve: //6
                rc = new LineCurve(pGeometry, parent, subobject_index);
                break;

            case idxON_Mesh: //7
                rc = new Mesh(pGeometry, parent);
                break;

            case idxON_Point: //8
                rc = new Point(pGeometry, parent);
                break;

            case idxON_TextDot: //9
                rc = new TextDot(pGeometry, parent);
                break;

            case idxON_Surface: //10
                rc = new Surface(pGeometry, parent);
                break;

            case idxON_Brep: //11
                rc = new Brep(pGeometry, parent);
                break;

            case idxON_NurbsSurface: //12
                rc = new NurbsSurface(pGeometry, parent);
                break;

            case idxON_RevSurface: //13
                rc = new RevSurface(pGeometry, parent);
                break;

            case idxON_PlaneSurface: //14
                rc = new PlaneSurface(pGeometry, parent);
                break;

            case idxON_ClippingPlaneSurface: //15
                rc = new ClippingPlaneSurface(pGeometry, parent);
                break;

            case idxON_Annotation2: // 16
                rc = new AnnotationBase(pGeometry, parent);
                break;

            case idxON_Hatch: // 17
                rc = new Hatch(pGeometry, parent);
                break;

            case idxON_TextEntity2: //18
                rc = new TextEntity(pGeometry, parent);
                break;

            case idxON_SumSurface: //19
                rc = new SumSurface(pGeometry, parent);
                break;

            case idxON_BrepFace: //20
            {
                int    faceindex = -1;
                IntPtr pBrep     = UnsafeNativeMethods.ON_BrepSubItem_Brep(pGeometry, ref faceindex);
                if (pBrep != IntPtr.Zero && faceindex >= 0)
                {
                    Brep b = new Brep(pBrep, parent);
                    rc = b.Faces[faceindex];
                }
            }
            break;

            case idxON_BrepEdge: // 21
            {
                int    edgeindex = -1;
                IntPtr pBrep     = UnsafeNativeMethods.ON_BrepSubItem_Brep(pGeometry, ref edgeindex);
                if (pBrep != IntPtr.Zero && edgeindex >= 0)
                {
                    Brep b = new Brep(pBrep, parent);
                    rc = b.Edges[edgeindex];
                }
            }
            break;

            case idxON_InstanceDefinition: // 22
                rc = new InstanceDefinitionGeometry(pGeometry, parent);
                break;

            case idxON_InstanceReference: // 23
                rc = new InstanceReferenceGeometry(pGeometry, parent);
                break;

#if USING_V5_SDK
            case idxON_Extrusion: //24
                rc = new Extrusion(pGeometry, parent);
                break;
#endif
            case idxON_LinearDimension2: //25
                rc = new LinearDimension(pGeometry, parent);
                break;

            case idxON_PointCloud: // 26
                rc = new PointCloud(pGeometry, parent);
                break;

            case idxON_DetailView: // 27
                rc = new DetailView(pGeometry, parent);
                break;

            case idxON_AngularDimension2: // 28
                rc = new AngularDimension(pGeometry, parent);
                break;

            case idxON_RadialDimension2: // 29
                rc = new RadialDimension(pGeometry, parent);
                break;

            case idxON_Leader: // 30
                rc = new Leader(pGeometry, parent);
                break;

            case idxON_OrdinateDimension2: // 31
                rc = new OrdinateDimension(pGeometry, parent);
                break;

            case idxON_Light: //32
                rc = new Light(pGeometry, parent);
                break;

            case idxON_PointGrid: //33
                rc = new Point3dGrid(pGeometry, parent);
                break;

            case idxON_MorphControl: //34
                rc = new MorphControl(pGeometry, parent);
                break;

            case idxON_BrepLoop: //35
            {
                int    loopindex = -1;
                IntPtr pBrep     = UnsafeNativeMethods.ON_BrepSubItem_Brep(pGeometry, ref loopindex);
                if (pBrep != IntPtr.Zero && loopindex >= 0)
                {
                    Brep b = new Brep(pBrep, parent);
                    rc = b.Loops[loopindex];
                }
            }
            break;

            case idxON_BrepTrim: // 36
            {
                int    trimindex = -1;
                IntPtr pBrep     = UnsafeNativeMethods.ON_BrepSubItem_Brep(pGeometry, ref trimindex);
                if (pBrep != IntPtr.Zero && trimindex >= 0)
                {
                    Brep b = new Brep(pBrep, parent);
                    rc = b.Trims[trimindex];
                }
            }
            break;

            default:
                rc = new UnknownGeometry(pGeometry, parent, subobject_index);
                break;
            }

            return(rc);
        }
    internal static GeometryBase CreateGeometryHelper(IntPtr pGeometry, object parent, int subobject_index)
    {
      if (IntPtr.Zero == pGeometry)
        return null;

      int type = UnsafeNativeMethods.ON_Geometry_GetGeometryType(pGeometry);
      if (type < 0)
        return null;
      GeometryBase rc = null;

      switch (type)
      {
        case idxON_Curve: //1
          rc = new Curve(pGeometry, parent, subobject_index);
          break;
        case idxON_NurbsCurve: //2
          rc = new NurbsCurve(pGeometry, parent, subobject_index);
          break;
        case idxON_PolyCurve: // 3
          rc = new PolyCurve(pGeometry, parent, subobject_index);
          break;
        case idxON_PolylineCurve: //4
          rc = new PolylineCurve(pGeometry, parent, subobject_index);
          break;
        case idxON_ArcCurve: //5
          rc = new ArcCurve(pGeometry, parent, subobject_index);
          break;
        case idxON_LineCurve: //6
          rc = new LineCurve(pGeometry, parent, subobject_index);
          break;
        case idxON_Mesh: //7
          rc = new Mesh(pGeometry, parent);
          break;
        case idxON_Point: //8
          rc = new Point(pGeometry, parent);
          break;
        case idxON_TextDot: //9
          rc = new TextDot(pGeometry, parent);
          break;
        case idxON_Surface: //10
          rc = new Surface(pGeometry, parent);
          break;
        case idxON_Brep: //11
          rc = new Brep(pGeometry, parent);
          break;
        case idxON_NurbsSurface: //12
          rc = new NurbsSurface(pGeometry, parent);
          break;
        case idxON_RevSurface: //13
          rc = new RevSurface(pGeometry, parent);
          break;
        case idxON_PlaneSurface: //14
          rc = new PlaneSurface(pGeometry, parent);
          break;
        case idxON_ClippingPlaneSurface: //15
          rc = new ClippingPlaneSurface(pGeometry, parent);
          break;
        case idxON_Annotation2: // 16
          rc = new AnnotationBase(pGeometry, parent);
          break;
        case idxON_Hatch: // 17
          rc = new Hatch(pGeometry, parent);
          break;
        case idxON_TextEntity2: //18
          rc = new TextEntity(pGeometry, parent);
          break;
        case idxON_SumSurface: //19
          rc = new SumSurface(pGeometry, parent);
          break;
        case idxON_BrepFace: //20
          {
            int faceindex = -1;
            IntPtr pBrep = UnsafeNativeMethods.ON_BrepSubItem_Brep(pGeometry, ref faceindex);
            if (pBrep != IntPtr.Zero && faceindex >= 0)
            {
              Brep b = new Brep(pBrep, parent);
              rc = b.Faces[faceindex];
            }
          }
          break;
        case idxON_BrepEdge: // 21
          {
            int edgeindex = -1;
            IntPtr pBrep = UnsafeNativeMethods.ON_BrepSubItem_Brep(pGeometry, ref edgeindex);
            if (pBrep != IntPtr.Zero && edgeindex >= 0)
            {
              Brep b = new Brep(pBrep, parent);
              rc = b.Edges[edgeindex];
            }
          }
          break;
        case idxON_InstanceDefinition: // 22
          rc = new InstanceDefinitionGeometry(pGeometry, parent);
          break;
        case idxON_InstanceReference: // 23
          rc = new InstanceReferenceGeometry(pGeometry, parent);
          break;
#if USING_V5_SDK
        case idxON_Extrusion: //24
          rc = new Extrusion(pGeometry, parent);
          break;
#endif
        case idxON_LinearDimension2: //25
          rc = new LinearDimension(pGeometry, parent);
          break;
        case idxON_PointCloud: // 26
          rc = new PointCloud(pGeometry, parent);
          break;
        case idxON_DetailView: // 27
          rc = new DetailView(pGeometry, parent);
          break;
        case idxON_AngularDimension2: // 28
          rc = new AngularDimension(pGeometry, parent);
          break;
        case idxON_RadialDimension2: // 29
          rc = new RadialDimension(pGeometry, parent);
          break;
        case idxON_Leader: // 30
          rc = new Leader(pGeometry, parent);
          break;
        case idxON_OrdinateDimension2: // 31
          rc = new OrdinateDimension(pGeometry, parent);
          break;
        case idxON_Light: //32
          rc = new Light(pGeometry, parent);
          break;
        case idxON_PointGrid: //33
          rc = new Point3dGrid(pGeometry, parent);
          break;
        case idxON_MorphControl: //34
          rc = new MorphControl(pGeometry, parent);
          break;
        case idxON_BrepLoop: //35
          {
            int loopindex = -1;
            IntPtr pBrep = UnsafeNativeMethods.ON_BrepSubItem_Brep(pGeometry, ref loopindex);
            if (pBrep != IntPtr.Zero && loopindex >= 0)
            {
              Brep b = new Brep(pBrep, parent);
              rc = b.Loops[loopindex];
            }
          }
          break;
        case idxON_BrepTrim: // 36
          {
            int trimindex = -1;
            IntPtr pBrep = UnsafeNativeMethods.ON_BrepSubItem_Brep(pGeometry, ref trimindex);
            if (pBrep != IntPtr.Zero && trimindex >= 0)
            {
              Brep b = new Brep(pBrep, parent);
              rc = b.Trims[trimindex];
            }
          }
          break;
        default:
          rc = new UnknownGeometry(pGeometry, parent, subobject_index);
          break;
      }

      return rc;
    }
 /// <summary>
 /// Creates a model instance definition from an instance definition geometry
 /// </summary>
 public ModelInstanceDef(InstanceDefinitionGeometry idef)
 {
     InstanceDefinition = idef;
     ObjectId = idef.Id;
 }