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; }
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); } }
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); }
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); }
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); } }
internal virtual void OnAfterRead(IgesDirectoryData directoryData) { }