Skip to content

Commit eb394c3

Browse files
authored
Merge pull request DomCR#659 from DomCR/issue-627_dxfReader-assign-entities
issue 627
2 parents 9eb0eae + f9b48ee commit eb394c3

File tree

7 files changed

+35
-7
lines changed

7 files changed

+35
-7
lines changed

src/ACadSharp/ACadSharp.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
<PropertyGroup>
1818
<GenerateDocumentationFile>true</GenerateDocumentationFile>
1919
<PackageReadmeFile>README.md</PackageReadmeFile>
20-
<Version>1.1.20</Version>
20+
<Version>1.1.21</Version>
2121
<PackageOutputPath>../nupkg</PackageOutputPath>
2222
</PropertyGroup>
2323

src/ACadSharp/Entities/Viewport.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -393,6 +393,7 @@ public override CadObject Clone()
393393
Viewport clone = (Viewport)base.Clone();
394394

395395
clone.VisualStyle = (VisualStyle)this.VisualStyle?.Clone();
396+
clone._scale = (Scale)this.Scale?.Clone();
396397

397398
return clone;
398399
}
@@ -440,7 +441,7 @@ public List<Entity> SelectEntities(bool includePartial = true)
440441

441442
return entities;
442443
}
443-
444+
444445
internal override void AssignDocument(CadDocument doc)
445446
{
446447
base.AssignDocument(doc);
@@ -456,7 +457,7 @@ internal override void UnassignDocument()
456457

457458
base.UnassignDocument();
458459

459-
this._scale = (Scale)this.Scale.Clone();
460+
this._scale = (Scale)this.Scale?.Clone();
460461
}
461462

462463
private void scalesOnRemove(object sender, CollectionChangedEventArgs e)

src/ACadSharp/IO/DXF/DxfDocumentBuilder.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ private void assignOwner(CadTemplate template)
8686
//Entries of the dictionary are assigned in the template
8787
break;
8888
case CadBlockRecordTemplate record when template.CadObject is Entity entity:
89-
record.OwnedObjectsHandlers.Add(entity.Handle);
89+
//The entries should be assigned in the blocks or entities section
9090
break;
9191
case CadPolyLineTemplate pline when template.CadObject is Vertex v:
9292
pline.VertexHandles.Add(v.Handle);

src/ACadSharp/IO/DXF/DxfReader.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -494,6 +494,8 @@ private IDxfStreamReader getReader()
494494

495495
if (!tmpReader.Find(DxfFileToken.HeaderSection))
496496
{
497+
this.triggerNotification($"Header section not found, using a generic reader.", NotificationType.Warning);
498+
497499
this._version = ACadVersion.Unknown;
498500
tmpReader.Start();
499501
return tmpReader;
@@ -537,6 +539,11 @@ private IDxfStreamReader getReader()
537539
tmpReader.ReadNext();
538540
}
539541

542+
if(this._version == ACadVersion.Unknown)
543+
{
544+
this.triggerNotification($"Dxf version not found, using a generic reader.", NotificationType.Warning);
545+
}
546+
540547
return this.createReader(isBinary, isAC1009Format);
541548
}
542549

src/ACadSharp/IO/DXF/DxfStreamReader/DxfBlockSectionReader.cs

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -115,14 +115,15 @@ private void readBlock()
115115
record.BlockEntity = blckEntity;
116116
recordTemplate = new CadBlockRecordTemplate(record);
117117

118+
this._builder.AddTemplate(recordTemplate);
118119
this._builder.BlockRecords.Add(record);
119120

120121
if (recordTemplate.CadObject.Name.Equals(BlockRecord.ModelSpaceName, StringComparison.OrdinalIgnoreCase))
121122
{
122123
this._builder.ModelSpaceTemplate = recordTemplate;
123124
}
124125
}
125-
else
126+
else if (!this._builder.TryGetObjectTemplate<CadBlockRecordTemplate>(record.Handle, out recordTemplate))
126127
{
127128
recordTemplate = new CadBlockRecordTemplate(record);
128129
}
@@ -151,7 +152,15 @@ private void readBlock()
151152

152153
//Add the object and the template to the builder
153154
this._builder.AddTemplate(entityTemplate);
154-
recordTemplate.OwnedObjectsHandlers.Add(entityTemplate.CadObject.Handle);
155+
156+
if (entityTemplate.OwnerHandle == null)
157+
{
158+
recordTemplate.OwnedObjectsHandlers.Add(entityTemplate.CadObject.Handle);
159+
}
160+
else if (this._builder.TryGetObjectTemplate(entityTemplate.OwnerHandle, out CadBlockRecordTemplate owner))
161+
{
162+
owner.OwnedObjectsHandlers.Add(entityTemplate.CadObject.Handle);
163+
}
155164
}
156165

157166
this.readBlockEnd(record.BlockEnd);

src/ACadSharp/IO/DXF/DxfStreamReader/DxfEntitiesSectionReader.cs

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
using ACadSharp.IO.Templates;
1+
using ACadSharp.Entities;
2+
using ACadSharp.IO.Templates;
23
using System;
34

45
namespace ACadSharp.IO.DXF
@@ -41,10 +42,19 @@ public override void Read()
4142
//Add the object and the template to the builder
4243
this._builder.AddTemplate(template);
4344

45+
if(template.CadObject.Handle == 51790)
46+
{
47+
48+
}
49+
4450
if (template.OwnerHandle == null)
4551
{
4652
this._builder.ModelSpaceEntities.Add(template.CadObject.Handle);
4753
}
54+
else if (this._builder.TryGetObjectTemplate(template.OwnerHandle, out CadBlockRecordTemplate owner))
55+
{
56+
owner.OwnedObjectsHandlers.Add(template.CadObject.Handle);
57+
}
4858
}
4959
}
5060
}

src/ACadSharp/IO/DXF/DxfStreamReader/DxfSectionReaderBase.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -494,6 +494,7 @@ private bool readTextEntity(CadEntityTemplate template, DxfMap map, string subcl
494494
case 1 or 3 when tmp.CadObject is MText mtext:
495495
mtext.Value += this._reader.ValueAsString;
496496
return true;
497+
case 50 when tmp.CadObject is MText://Read only for MText
497498
case 70:
498499
case 74:
499500
case 101:

0 commit comments

Comments
 (0)