Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 19 additions & 6 deletions src/ACadSharp/IO/DWG/DwgStreamWriters/DwgObjectWriter.Objects.cs
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,6 @@ private bool skipEntry(NonGraphicalObject entry, out bool notify)
case TableStyle:
case ProxyObject:
case BlockRepresentationData:
case BlockReferenceObjectContextData:
case MTextAttributeObjectContextData:
return true;
}
Expand All @@ -70,9 +69,22 @@ private void writeAcdbPlaceHolder(AcdbPlaceHolder acdbPlaceHolder)

private void writeAnnotScaleObjectContextData(AnnotScaleObjectContextData annotScaleObjectContextData)
{
this.writeObjectContextData(annotScaleObjectContextData);

this._writer.HandleReference(DwgReferenceType.HardPointer, annotScaleObjectContextData.Scale);
}

private void writeBlockReferenceObjectContextData(BlockReferenceObjectContextData contextData)
{
this.writeAnnotScaleObjectContextData(contextData);

this._writer.WriteBitDouble(contextData.Rotation);
this._writer.Write3BitDouble(contextData.InsertionPoint);
this._writer.WriteBitDouble(contextData.XScale);
this._writer.WriteBitDouble(contextData.YScale);
this._writer.WriteBitDouble(contextData.ZScale);
}

private void writeBookColor(BookColor color)
{
this._writer.WriteBitShort(0);
Expand Down Expand Up @@ -724,7 +736,9 @@ private void writeMLineStyle(MLineStyle mlineStyle)

private void writeMultiLeaderAnnotContext(MultiLeaderObjectContextData multiLeaderAnnotContext)
{
writeMultiLeaderAnnotContextSubObject(false, multiLeaderAnnotContext);
this.writeAnnotScaleObjectContextData(multiLeaderAnnotContext);

this.writeMultiLeaderAnnotContextSubObject(false, multiLeaderAnnotContext);
}

private void writeMultiLeaderStyle(MultiLeaderStyle mLeaderStyle)
Expand Down Expand Up @@ -863,6 +877,9 @@ private void writeObject(NonGraphicalObject obj)
case BookColor bookColor:
this.writeBookColor(bookColor);
break;
case BlockReferenceObjectContextData blockContextData:
this.writeBlockReferenceObjectContextData(blockContextData);
break;
case CadDictionaryWithDefault dictionarydef:
this.writeCadDictionaryWithDefault(dictionarydef);
break;
Expand Down Expand Up @@ -897,8 +914,6 @@ private void writeObject(NonGraphicalObject obj)
this.writeMultiLeaderStyle(multiLeaderStyle);
break;
case MultiLeaderObjectContextData multiLeaderObjectContextData:
this.writeObjectContextData(multiLeaderObjectContextData);
this.writeAnnotScaleObjectContextData(multiLeaderObjectContextData);
this.writeMultiLeaderAnnotContext(multiLeaderObjectContextData);
break;
case PdfUnderlayDefinition pdfDefinition:
Expand Down Expand Up @@ -939,8 +954,6 @@ private void writeObjectContextData(ObjectContextData objectContextData)
{
//BS 70 Version.
this._writer.WriteBitShort(objectContextData.Version);
//B - Has file to extension dictionary.
this._writer.WriteBit(objectContextData.HasFileToExtensionDictionary);
//B 290 Default flag.
this._writer.WriteBit(objectContextData.Default);
}
Expand Down
56 changes: 49 additions & 7 deletions src/ACadSharp/IO/DXF/DxfStreamWriter/DxfObjectsSectionWriter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -379,13 +379,19 @@ protected void writeObject<T>(T co)
{
case AcdbPlaceHolder acdbPlaceHolder:
this.writeAcdbPlaceHolder(acdbPlaceHolder);
return;
break;
case BlockReferenceObjectContextData blockContextData:
this.writeBlockReferenceObjectContextData(blockContextData);
break;
case MTextAttributeObjectContextData mtextContextData:
this.writeMTextAttributeObjectContextData(mtextContextData);
break;
case BookColor bookColor:
this.writeBookColor(bookColor);
return;
break;
case CadDictionary cadDictionary:
this.writeDictionary(cadDictionary);
return;
break;
case DictionaryVariable dictvar:
this.writeDictionaryVariable(dictvar);
break;
Expand All @@ -400,10 +406,10 @@ protected void writeObject<T>(T co)
break;
case ImageDefinition imageDefinition:
this.writeImageDefinition(imageDefinition);
return;
break;
case ImageDefinitionReactor reactor:
this.writeImageDefinitionReactor(reactor);
return;
break;
case Layout layout:
this.writeLayout(layout);
break;
Expand Down Expand Up @@ -587,8 +593,6 @@ private bool isObjectSupported(CadObject co)
case TableStyle:
case ProxyObject:
case BlockRepresentationData:
case MTextAttributeObjectContextData:
case BlockReferenceObjectContextData:
this.notify($"Object not implemented : {co.GetType().FullName}", NotificationType.NotImplemented);
return false;
default:
Expand All @@ -600,6 +604,44 @@ private void writeAcdbPlaceHolder(AcdbPlaceHolder acdbPlaceHolder)
{
}

private void writeAnnotScaleObjectContextData(AnnotScaleObjectContextData contextData)
{
this._writer.Write(100, DxfSubclassMarker.AnnotScaleObjectContextData);

this._writer.WriteHandle(340, contextData.Scale);
}

private void writeBlockReferenceObjectContextData(BlockReferenceObjectContextData contextData)
{
DxfClassMap map = DxfClassMap.Create<BlockReferenceObjectContextData>();

this.writeAnnotScaleObjectContextData(contextData);

this._writer.Write(50, contextData.Rotation, map);

this._writer.Write(10, contextData.InsertionPoint, map);

this._writer.Write(41, contextData.XScale, map);
this._writer.Write(42, contextData.YScale, map);
this._writer.Write(43, contextData.ZScale, map);
}

private void writeMTextAttributeObjectContextData(MTextAttributeObjectContextData contextData)
{
DxfClassMap map = DxfClassMap.Create<MTextAttributeObjectContextData>();

this.writeAnnotScaleObjectContextData(contextData);

this._writer.Write(70, contextData.AttachmentPoint, map);

this._writer.Write(50, contextData.Rotation, map);

this._writer.Write(10, contextData.AlignmentPoint, map);
this._writer.Write(11, contextData.InsertPoint, map);

this._writer.Write(290, contextData.Value290, map);
}

private void writeDimensionAssociation(DimensionAssociation dimAssociation)
{
DxfClassMap map = DxfClassMap.Create<DimensionAssociation>();
Expand Down
Loading