示例#1
0
 internal override void OnBeforeObjectWrite()
 {
     BlockEntityHandle    = new DwgHandleReference(DwgHandleReferenceCode.SoftPointer, Block.Handle.HandleOrOffset);
     EndBlockEntityHandle = new DwgHandleReference(DwgHandleReferenceCode.SoftPointer, EndBlock.Handle.HandleOrOffset);
     if (Entities.Count == 0)
     {
         _firstEntityHandle = new DwgHandleReference(DwgHandleReferenceCode.HardPointer, 0);
         _lastEntityHandle  = new DwgHandleReference(DwgHandleReferenceCode.HardPointer, 0);
     }
     else
     {
         _firstEntityHandle = new DwgHandleReference(DwgHandleReferenceCode.HardPointer, Entities[0].Handle.HandleOrOffset);
         _lastEntityHandle  = new DwgHandleReference(DwgHandleReferenceCode.HardPointer, Entities[Entities.Count - 1].Handle.HandleOrOffset);
         for (int i = 0; i < Entities.Count; i++)
         {
             var currentEntity  = Entities[i];
             var previousEntity = i == 0
                 ? null
                 : Entities[i - 1];
             var nextEntity = i == Entities.Count - 1
                 ? null
                 : Entities[i + 1];
             currentEntity.PreviousEntityHandle = currentEntity.GetHandleToObject(previousEntity, DwgHandleReferenceCode.HardPointer);
             currentEntity.NextEntityHandle     = currentEntity.GetHandleToObject(nextEntity, DwgHandleReferenceCode.HardPointer);
             AssignEntityMode(currentEntity);
         }
     }
 }
示例#2
0
        internal override void ReadCommonDataEnd(BitReader reader)
        {
            if (_entityMode == 0)
            {
                _subentityRef = reader.Read_H();
            }

            for (int i = 0; i < _reactorCount; i++)
            {
                _reactorHandles.Add(reader.Read_H());
            }

            _xDictionaryObjectHandle = reader.Read_H();
            LayerHandle = reader.Read_H();
            if (!_isLineTypeByLayer)
            {
                LineTypeHandle = reader.Read_H();
            }

            if (!_noLinks)
            {
                PreviousEntityHandle = reader.Read_H();
            }

            if (!_noLinks)
            {
                NextEntityHandle = reader.Read_H();
            }
        }
示例#3
0
        internal virtual void ReadCommonDataStart(BitReader reader)
        {
            Handle = reader.Read_H();
            var xDataSize = reader.Read_BS();

            _xData        = reader.Read_Bytes(xDataSize);
            _objectSize   = reader.Read_RL();
            _reactorCount = reader.Read_BL();
        }
示例#4
0
        internal void ClearHandles()
        {
            if (Handle.IsEmpty)
            {
                return;
            }

            Handle = default(DwgHandleReference);
            foreach (var child in ChildItems)
            {
                child.ClearHandles();
            }
        }
示例#5
0
        internal DwgHandleReference GetNavigationHandle(DwgHandleReference destinationHandle)
        {
            if (destinationHandle.PointsToNull)
            {
                return(destinationHandle);
            }

            var handleDistance = destinationHandle.HandleOrOffset - Handle.HandleOrOffset;

            switch (handleDistance)
            {
            case 1:
                return(new DwgHandleReference(DwgHandleReferenceCode.HandlePlus1, 0));

            case -1:
                return(new DwgHandleReference(DwgHandleReferenceCode.HandleMinus1, 0));

            default:
                return(destinationHandle);
            }
        }
示例#6
0
 internal override void OnBeforeObjectWrite()
 {
     _lineTypeHandle = new DwgHandleReference(DwgHandleReferenceCode.SoftOwner, LineType.Handle.HandleOrOffset);
 }
示例#7
0
        public void RoundTrip_H()
        {
            var value = new DwgHandleReference(DwgHandleReferenceCode.SoftOwner, 0x05E7);

            RoundTrip(writer => writer.Write_H(value), reader => reader.Read_H(), value);
        }