Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Aec architecture objects (wall, doors, windows) #221

Open
cpetry opened this issue Dec 6, 2023 · 13 comments · May be fixed by #227
Open

Aec architecture objects (wall, doors, windows) #221

cpetry opened this issue Dec 6, 2023 · 13 comments · May be fixed by #227
Labels
feature New feature added SPIKE Investigation related

Comments

@cpetry
Copy link

cpetry commented Dec 6, 2023

Is your feature request related to a problem? Please describe.
When reading a DWG file, aec objects seem not to be included.

Describe the solution you'd like
I would like to have either AEC objects directly as entities or some way to access and read attributes (width, height, length, justification etc.).

Additional context
Aec objects are AutoCAD Architecture specific, I guess

@DomCR
Copy link
Owner

DomCR commented Dec 6, 2023

Hi @cpetry,

could you provide a file with this kind of specific objects in it that I can use as an example for the implementation?
I don't find them in the dxf specification or the Open design document so I'll need to check how they are saved in the document if that's the case.

@cpetry
Copy link
Author

cpetry commented Dec 6, 2023

Okay here a very simple example:
AecObjects.zip

These are the properties of a door:
image

@DomCR
Copy link
Owner

DomCR commented Dec 8, 2023

I've been looking into this and there are a few problems that makes the implementation quite difficult.
This type of objects are not compatible with dxf which means that I do not have a way to "see" them outside Autocad, also the there is no documentation about the different properties or variables that they have or how are they stored, not even in the OpenDesign document that has the DWG specification in it.

The objects are found in the reader and identified with a DxfClass but to be able to store the geometric data it will require to check the bytes manually which it will require a huge amount of manual work to decode byte by byte.

By now this feature will not be implemented, I'll leave the issue open just in case that I can find some documentation on it.

@DomCR DomCR added wontfix This will not be worked on feature New feature added labels Dec 8, 2023
@cpetry
Copy link
Author

cpetry commented Dec 14, 2023

I would actually like to try reading it out byte by byte.
Can you please give me a headstart on how/where to begin? A branch with some basic setup?
I tried already but couldn't wrap my head around your architecture completely.

@DomCR DomCR added SPIKE Investigation related and removed wontfix This will not be worked on labels Dec 14, 2023
@DomCR DomCR linked a pull request Dec 14, 2023 that will close this issue
@DomCR
Copy link
Owner

DomCR commented Dec 14, 2023

Here you go #227

I've created a simple setup so you can see how the ObjectReader works.

First the reader needs to identify the ObjectType that is reading, in this case is done by a DxfClass that contains the object name, in the example I added the AEC_WALL, after that, you have to finish the implementation of the method readAecWall() which needs to check manually the bytes in the stream. For that you can use the Explore method, which it will return a dictionary with all the possible values that you can read and then you can manually check them with the values that you have in Autocad.

The problem with all this is that you won't be able to tell if the reader has the whole information of the entity, some value are stored in flags or have conditions in which are only read if a property have a specific value, but you may be able to get the information that you want.

Let me know if I can help in anything.

Good luck!

@cpetry
Copy link
Author

cpetry commented Dec 14, 2023

Great!
I see how for I can get and if I need to add bytes later on.
Thanks for the headstart!

@rurban
Copy link
Contributor

rurban commented Jan 31, 2024

I've extracted the unknown bits for all the 287 new AEC classes, and 891 AEC objects, and 4 AEC entities, and will run it through my automatic prolog program to find some fields or patterns. As described here https://savannah.gnu.org/news/?id=9167

@cpetry
Copy link
Author

cpetry commented Jan 31, 2024

Oh God you are a lifesaver!
I tried at first and got stuck after a few bytes.
Good to know you had more luck

@cpetry cpetry changed the title Aec archutecture objects (wall, doors, windows) Aec architecture objects (wall, doors, windows) Jan 31, 2024
@rurban
Copy link
Contributor

rurban commented Feb 1, 2024

@cpetry: Can you also please upload the DXF conversion from this AecObjects.dwg? Conversion without the AEC arx only converts to proxy entities, without any hint to the entity or object fields.

@DomCR
Copy link
Owner

DomCR commented Feb 1, 2024

are the AecObjects compatible with DXF?

Note: When you export a drawing to a DXF file, all AEC objects are exploded to AutoCAD primitive objects. Reopening the file in the software does not restore these primitive objects to AEC objects.

https://help.autodesk.com/view/ARCHDESK/2024/ENU/?guid=GUID-E640D193-F6D9-497E-BEC2-D846D720B50B

@rurban
Copy link
Contributor

rurban commented Feb 1, 2024

Oh my. Exploded blocks are ok. I see where they were coming from. They are just so afraid that we can decode them, but they are just parametric dynamic blocks

@cpetry
Copy link
Author

cpetry commented Feb 5, 2024

Sorry for the long wait.
Here it is:
AecObjects_dxf.zip

@rurban
Copy link
Contributor

rurban commented Feb 5, 2024

Oh my, they introduced new objects, called BINRECORD AcAecBinRecord for this, in place of proxies. Doesn't help much, sorry

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature New feature added SPIKE Investigation related
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants