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); } } }
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(); } }
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(); }
internal void ClearHandles() { if (Handle.IsEmpty) { return; } Handle = default(DwgHandleReference); foreach (var child in ChildItems) { child.ClearHandles(); } }
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); } }
internal override void OnBeforeObjectWrite() { _lineTypeHandle = new DwgHandleReference(DwgHandleReferenceCode.SoftOwner, LineType.Handle.HandleOrOffset); }
public void RoundTrip_H() { var value = new DwgHandleReference(DwgHandleReferenceCode.SoftOwner, 0x05E7); RoundTrip(writer => writer.Write_H(value), reader => reader.Read_H(), value); }