protected IgesEntity(IgesFile file) { File = file; Levels = new HashSet <int>(); AssociatedEntities = new List <IgesEntity>(); Properties = new List <IgesEntity>(); if (!(this is IgesTransformationMatrix)) { TransformationMatrix = IgesTransformationMatrix.Identity(file); } }
internal override int ReadParameters(List <string> parameters, IgesReaderBinder binder) { var index = 0; var itemCount = Integer(parameters, ref index); for (int i = 0; i < itemCount; i++) { var pointer = Integer(parameters, ref index); var item = new IgesSolidAndTransformationMatrix(); Solids.Add(item); binder.BindEntity(pointer, solid => item.Solid = solid); } for (int i = 0; i < itemCount; i++) { var pointer = Integer(parameters, ref index); var item = Solids[i]; binder.BindEntity(pointer, matrix => item.TransformationMatrix = matrix as IgesTransformationMatrix ?? IgesTransformationMatrix.Identity(matrix.File)); } return(index); }
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(dir.File); } // 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); } }