コード例 #1
0
        private void PopulateDirectoryData(IgesDirectoryData directoryData)
        {
            this._structurePointer = directoryData.Structure;
            if (directoryData.LineFontPattern < 0)
            {
                this.LineFont = IgesLineFontPattern.Custom;
            }
            else
            {
                this.LineFont = (IgesLineFontPattern)directoryData.LineFontPattern;
            }

            this._levelsPointer = directoryData.Level;
            this._viewPointer   = directoryData.View;
            this._transformationMatrixPointer = directoryData.TransformationMatrixPointer;
            this._labelDisplayPointer         = directoryData.LableDisplay;
            SetStatusNumber(directoryData.StatusNumber);
            this.LineWeight = directoryData.LineWeight;
            if (directoryData.Color < 0)
            {
                this.Color = IgesColorNumber.Custom;
            }
            else
            {
                this.Color = (IgesColorNumber)directoryData.Color;
            }

            this._lineCount      = directoryData.LineCount;
            this.FormNumber      = directoryData.FormNumber;
            this.EntityLabel     = directoryData.EntityLabel;
            this.EntitySubscript = directoryData.EntitySubscript;
        }
コード例 #2
0
 internal override void OnAfterRead(IgesDirectoryData directoryData)
 {
     base.OnAfterRead(directoryData);
     if (FormNumber >= 1 && FormNumber <= 3)
     {
         Debug.Assert((int)PointFormat == FormNumber);
         _dataType = IgesCopiousDataType.PointSet;
     }
     else if (FormNumber >= 11 && FormNumber <= 13)
     {
         Debug.Assert((int)PointFormat == FormNumber - 10);
         Debug.Assert(DataPoints.Count >= 2);
         _dataType = IgesCopiousDataType.LinearPath;
     }
     else if (FormNumber >= 20 && FormNumber <= 21)
     {
         Debug.Assert(EntityUseFlag == IgesEntityUseFlag.Annotation);
         Debug.Assert(PointFormat == IgesCopiousDataPointFormat.CommonZ);
         Debug.Assert(DataPoints.Count % 2 == 0);
         _dataType       = IgesCopiousDataType.CenterLine;
         _centerlineType = (IgesCenterlineType)FormNumber;
     }
     else if (FormNumber >= 31 && FormNumber <= 38)
     {
         Debug.Assert(EntityUseFlag == IgesEntityUseFlag.Annotation);
         Debug.Assert(PointFormat == IgesCopiousDataPointFormat.CommonZ);
         Debug.Assert(DataPoints.Count % 2 == 0);
         _dataType    = IgesCopiousDataType.Section;
         _sectionType = (IgesSectionType)FormNumber;
     }
     else if (FormNumber == 40)
     {
         Debug.Assert(EntityUseFlag == IgesEntityUseFlag.Annotation);
         Debug.Assert(PointFormat == IgesCopiousDataPointFormat.CommonZ);
         Debug.Assert(DataPoints.Count >= 3);
         Debug.Assert(DataPoints.Count % 2 == 1);
         _dataType = IgesCopiousDataType.WitnessLine;
     }
     else if (FormNumber == 63)
     {
         Debug.Assert(DataPoints.Count >= 2);
         _dataType = IgesCopiousDataType.ClosedCurve;
     }
     else
     {
         Debug.Assert(false, "unexpected form number " + FormNumber);
     }
 }
コード例 #3
0
        private IgesDirectoryData GetDirectoryData(int color, int lineFontPattern)
        {
            var dir = new IgesDirectoryData();

            dir.EntityType                  = EntityType;
            dir.Structure                   = this._structurePointer;
            dir.LineFontPattern             = lineFontPattern;
            dir.Level                       = this._levelsPointer;
            dir.View                        = this._viewPointer;
            dir.TransformationMatrixPointer = this._transformationMatrixPointer;
            dir.LableDisplay                = this._labelDisplayPointer;
            dir.StatusNumber                = this.GetStatusNumber();
            dir.LineWeight                  = this.LineWeight;
            dir.Color                       = color;
            dir.LineCount                   = this._lineCount;
            dir.FormNumber                  = this.FormNumber;
            dir.EntityLabel                 = this.EntityLabel;
            dir.EntitySubscript             = this.EntitySubscript;
            return(dir);
        }
コード例 #4
0
        internal static IgesEntity FromData(IgesDirectoryData directoryData, List <string> parameters, IgesReaderBinder binder)
        {
            IgesEntity entity = null;

            switch (directoryData.EntityType)
            {
            case IgesEntityType.AngularDimension:
                entity = new IgesAngularDimension();
                break;

            case IgesEntityType.AssociativityInstance:
                switch (directoryData.FormNumber)
                {
                case 5:
                    entity = new IgesLabelDisplayAssociativity();
                    break;
                }
                break;

            case IgesEntityType.Block:
                entity = new IgesBlock();
                break;

            case IgesEntityType.BooleanTree:
                entity = new IgesBooleanTree();
                break;

            case IgesEntityType.Boundary:
                entity = new IgesBoundary();
                break;

            case IgesEntityType.BoundedSurface:
                entity = new IgesBoundedSurface();
                break;

            case IgesEntityType.CircularArc:
                entity = new IgesCircularArc();
                break;

            case IgesEntityType.ColorDefinition:
                entity = new IgesColorDefinition();
                break;

            case IgesEntityType.CompositeCurve:
                entity = new IgesCompositeCurve();
                break;

            case IgesEntityType.ConicArc:
                entity = new IgesConicArc();
                break;

            case IgesEntityType.ConnectPoint:
                entity = new IgesConnectPoint();
                break;

            case IgesEntityType.CopiousData:
                entity = new IgesCopiousData();
                break;

            case IgesEntityType.CurveDimension:
                entity = new IgesCurveDimension();
                break;

            case IgesEntityType.CurveOnAParametricSurface:
                entity = new IgesCurveOnAParametricSurface();
                break;

            case IgesEntityType.DiameterDimension:
                entity = new IgesDiameterDimension();
                break;

            case IgesEntityType.Direction:
                entity = new IgesDirection();
                break;

            case IgesEntityType.ElementResults:
                entity = new IgesElementResults();
                break;

            case IgesEntityType.Ellipsoid:
                entity = new IgesEllipsoid();
                break;

            case IgesEntityType.FlagNote:
                entity = new IgesFlagNote();
                break;

            case IgesEntityType.Flash:
                entity = new IgesFlash();
                break;

            case IgesEntityType.FiniteElement:
                entity = new IgesFiniteElementDummy();
                break;

            case IgesEntityType.GeneralLabel:
                entity = new IgesGeneralLabel();
                break;

            case IgesEntityType.GeneralNote:
                entity = new IgesGeneralNote();
                break;

            case IgesEntityType.GeneralSymbol:
                entity = new IgesGeneralSymbol();
                break;

            case IgesEntityType.Leader:
                entity = new IgesLeader();
                break;

            case IgesEntityType.Line:
                entity = new IgesLine();
                break;

            case IgesEntityType.LinearDimension:
                entity = new IgesLinearDimension();
                break;

            case IgesEntityType.LineFontDefinition:
                switch (directoryData.FormNumber)
                {
                case 1:
                    entity = new IgesTemplateLineFontDefinition();
                    break;

                case 2:
                    entity = new IgesPatternLineFontDefinition();
                    break;
                }
                break;

            case IgesEntityType.ManifestSolidBRepObject:
                entity = new IgesManifestSolidBRepObject();
                break;

            case IgesEntityType.NewGeneralNote:
                entity = new IgesNewGeneralNote();
                break;

            case IgesEntityType.NodalDisplacementAndRotation:
                entity = new IgesNodalDisplacementAndRotation();
                break;

            case IgesEntityType.NodalResults:
                entity = new IgesNodalResults();
                break;

            case IgesEntityType.Node:
                entity = new IgesNode();
                break;

            case IgesEntityType.Null:
                entity = new IgesNull();
                break;

            case IgesEntityType.OffsetCurve:
                entity = new IgesOffsetCurve();
                break;

            case IgesEntityType.OffsetSurface:
                entity = new IgesOffsetSurface();
                break;

            case IgesEntityType.OrdinateDimension:
                entity = new IgesOrdinateDimension();
                break;

            case IgesEntityType.ParametricSplineCurve:
                entity = new IgesParametricSplineCurve();
                break;

            case IgesEntityType.ParametricSplineSurface:
                entity = new IgesParametricSplineSurface();
                break;

            case IgesEntityType.Plane:
                entity = new IgesPlane();
                break;

            case IgesEntityType.PlaneSurface:
                entity = new IgesPlaneSurface();
                break;

            case IgesEntityType.Point:
                entity = new IgesLocation();
                break;

            case IgesEntityType.PointDimension:
                entity = new IgesPointDimension();
                break;

            case IgesEntityType.Property:
                switch (directoryData.FormNumber)
                {
                case 1:
                    entity = new IgesDefinitionLevelsProperty();
                    break;
                }
                break;

            case IgesEntityType.RadiusDimension:
                entity = new IgesRadiusDimension();
                break;

            case IgesEntityType.RationalBSplineCurve:
                entity = new IgesRationalBSplineCurve();
                break;

            case IgesEntityType.RationalBSplineSurface:
                entity = new IgesRationalBSplineSurface();
                break;

            case IgesEntityType.RightAngularWedge:
                entity = new IgesRightAngularWedge();
                break;

            case IgesEntityType.RightCircularConeFrustrum:
                entity = new IgesRightCircularConeFrustrum();
                break;

            case IgesEntityType.RightCircularConicalSurface:
                entity = new IgesRightCircularConicalSurface();
                break;

            case IgesEntityType.RightCircularCylinder:
                entity = new IgesRightCircularCylinder();
                break;

            case IgesEntityType.RightCircularCylindricalSurface:
                entity = new IgesRightCircularCylindricalSurface();
                break;

            case IgesEntityType.RuledSurface:
                entity = new IgesRuledSurface();
                break;

            case IgesEntityType.SelectedComponent:
                entity = new IgesSelectedComponent();
                break;

            case IgesEntityType.SolidAssembly:
                entity = new IgesSolidAssembly();
                break;

            case IgesEntityType.SolidOfLinearExtrusion:
                entity = new IgesSolidOfLinearExtrusion();
                break;

            case IgesEntityType.SolidOfRevolution:
                entity = new IgesSolidOfRevolution();
                break;

            case IgesEntityType.Sphere:
                entity = new IgesSphere();
                break;

            case IgesEntityType.SphericalSurface:
                entity = new IgesSphericalSurface();
                break;

            case IgesEntityType.SubfigureDefinition:
                entity = new IgesSubfigureDefinition();
                break;

            case IgesEntityType.SurfaceOfRevolution:
                entity = new IgesSurfaceOfRevolution();
                break;

            case IgesEntityType.TabulatedCylinder:
                entity = new IgesTabulatedCylinder();
                break;

            case IgesEntityType.TextDisplayTemplate:
                entity = new IgesTextDisplayTemplate();
                break;

            case IgesEntityType.TextFontDefinition:
                entity = new IgesTextFontDefinition();
                break;

            case IgesEntityType.ToroidalSurface:
                entity = new IgesToroidalSurface();
                break;

            case IgesEntityType.Torus:
                entity = new IgesTorus();
                break;

            case IgesEntityType.TransformationMatrix:
                entity = new IgesTransformationMatrix();
                break;

            case IgesEntityType.TrimmedParametricSurface:
                entity = new IgesTrimmedParametricSurface();
                break;

            case IgesEntityType.View:
                switch (directoryData.FormNumber)
                {
                case 0:
                    entity = new IgesView();
                    break;

                case 1:
                    entity = new IgesPerspectiveView();
                    break;
                }
                break;
            }

            if (entity != null)
            {
                entity.PopulateDirectoryData(directoryData);
                int nextIndex = entity.ReadParameters(parameters, binder);
                entity.ReadCommonPointers(parameters, nextIndex, binder);
            }

            return(entity);
        }
コード例 #5
0
        internal void BindPointers(IgesDirectoryData dir, IgesReaderBinder binder)
        {
            if (EntityType == IgesEntityType.Null)
            {
                // null entities don't parse anything
                return;
            }

            // link to structure entities (field 3)
            if (_structurePointer < 0)
            {
                binder.BindEntity(-_structurePointer, e => StructureEntity = e);
            }

            // line font definition (field 4)
            if (dir.LineFontPattern < 0)
            {
                binder.BindEntity(-dir.LineFontPattern, e => CustomLineFont = e as IgesLineFontDefinitionBase);
            }

            // level (field 5)
            Levels.Clear();
            if (_levelsPointer < 0)
            {
                binder.BindEntity(-_levelsPointer, e =>
                {
                    var customLevels = e as IgesDefinitionLevelsProperty;
                    if (customLevels != null)
                    {
                        foreach (var customLevel in customLevels.DefinedLevels)
                        {
                            Levels.Add(customLevel);
                        }
                    }
                });
            }
            else
            {
                Levels.Add(_levelsPointer);
            }

            // populate view (field 6)
            if (_viewPointer > 0)
            {
                binder.BindEntity(_viewPointer, e => View = e as IgesViewBase);
            }

            // populate transformation matrix (field 7)
            if (_transformationMatrixPointer > 0)
            {
                binder.BindEntity(_transformationMatrixPointer, e => TransformationMatrix = e as IgesTransformationMatrix);
            }
            else
            {
                TransformationMatrix = IgesTransformationMatrix.Identity;
            }

            // label display (field 8)
            if (dir.LableDisplay > 0)
            {
                binder.BindEntity(dir.LableDisplay, e => LabelDisplay = e as IgesLabelDisplayAssociativity);
            }

            // link to custom colors (field 13)
            if (dir.Color < 0)
            {
                binder.BindEntity(-dir.Color, e => CustomColor = e as IgesColorDefinition);
            }
        }
コード例 #6
0
 internal virtual void OnAfterRead(IgesDirectoryData directoryData)
 {
 }