Add DWG reading for BLOCKLINEARPARAMETER#1097
Open
mdelanno wants to merge 2 commits into
Open
Conversation
Adds reading support for the BLOCKLINEARPARAMETER object, which was missing from the DWG reader (only the data model class existed). - BlockLinearParameter: add BaseLocation, Minimum, Maximum, Increment and the Values list (the discrete allowed distances). - LinearParameterBaseLocation: new enum (start point / middle point). - CadBlockLinearParameterTemplate: new template mirroring the rotation one. - readBlockLinearParameter: self-contained reader using a fixed sequence for the connection table, validated against real dynamic blocks (it does not reuse readBlock2PtParameter, whose generic connection-list loop is not byte-compatible with these blocks). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Owner
|
Hi @mdelanno, The tests are not passing, this needs another iteration. |
Updated parameter reading logic to enhance reusability by introducing `readBlock2PtParameter`. Simplified `readBlockLinearParameter` by delegating common operations and adjusted related variable handling. These changes improve code readability and maintainability.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds DWG read support for the
BLOCKLINEARPARAMETERobject. The data-model classBlockLinearParameteralready existed, but it was never read byDwgObjectReader(nocaseand no reader method), so its values were lostwhen loading a drawing.
Changes
BlockLinearParameter: addsBaseLocation,Minimum,Maximum,Incrementand theValueslist (the discrete allowed distances).LinearParameterBaseLocationenum (start point / middle point).CadBlockLinearParameterTemplate(mirrorsCadBlockRotationParameterTemplate).readBlockLinearParameterinDwgObjectReader.Objects.cs+ the matchingcase DxfFileToken.ObjectBlockLinearParameterin the reader switch.Implementation note
readBlockLinearParameterreads the connection table with a fixed sequence instead of reusingreadBlock2PtParameter, because the generic connection-list loop inreadBlock2PtParameterwas not byte-compatible with the blocks I tested. I kept the two readers separate to avoid changing the existing rotation path, but I'm happy to alignreadBlockLinearParameterwithreadBlockRotationParameterif you prefer the shared helper.Testing
Validated against a real dynamic-block library: the distance min/max, base location and discrete value list extracted from each linear parameter match a known-good reference exactly. No sample DWG is added here because the blocks are proprietary, but I can provide a minimal repro if that would help.