Skip to content

Commit

Permalink
Fixed mapping transform for converted IfcMappedItem
Browse files Browse the repository at this point in the history
  • Loading branch information
srudenkoamc committed Nov 29, 2023
1 parent b251b1b commit 639575f
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 13 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -42,26 +42,22 @@ public RepresentationData ParseRepresentationItem(IfcRepresentationItem ifcRepre
return null;
}

if (_representationsMap.ContainsKey(mappedItem.MappingSource.MappedRepresentation.Id))
if (!_representationsMap.TryGetValue(mappedItem.MappingSource.MappedRepresentation.Id, out var definition))
{
var ops = _representationsMap[mappedItem.MappingSource.MappedRepresentation.Id];
return ops;
}
else
{
var parsedData = _representationDataExtractor.ParseRepresentationItems(mappedItem.MappingSource.MappedRepresentation.Items);
definition = _representationDataExtractor.ParseRepresentationItems(mappedItem.MappingSource.MappedRepresentation.Items);

if (parsedData is null)
if (definition is null)
{
return null;
}

var mappingTransform = mappedItem.MappingSource.MappingOrigin.ToTransform().Concatenated(mappedItem.MappingTarget.ToTransform());
parsedData.Transform = mappingTransform;

_representationsMap.Add(mappedItem.MappingSource.MappedRepresentation.Id, parsedData);
return parsedData;
_representationsMap.Add(mappedItem.MappingSource.MappedRepresentation.Id, definition);
}

var mappingTransform = mappedItem.MappingSource.MappingOrigin.ToTransform().Concatenated(mappedItem.MappingTarget.ToTransform());
var representationData = new RepresentationData(definition, mappingTransform);

return representationData;
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,14 @@ public RepresentationData(List<RepresentationData> representations)
}
}

public RepresentationData(RepresentationData repData, Transform transform)
{
// Combine solid operations of all representations.
RepresentationInstances = new List<RepresentationInstance>(repData.RepresentationInstances);
Extrude = repData.Extrude;
Transform = Transform is null ? transform : transform.Concatenated(Transform);
}

public IEnumerable<SolidOperation> GetSolidOperations()
{
var solids = RepresentationInstances
Expand Down

0 comments on commit 639575f

Please sign in to comment.