コード例 #1
0
ファイル: IgesEntity.cs プロジェクト: Luc-BOLOGNA/Iges
 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);
     }
 }
コード例 #2
0
        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);
        }
コード例 #3
0
ファイル: IgesEntity.cs プロジェクト: Luc-BOLOGNA/Iges
        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);
            }
        }