If my ARX is loaded I can draw some of my AcDbPolyline-derived custom objects save and reload with no (apparent) issues. However, if I load the saved file without the ARX (to check the proxies work) the file is somehow bad. AUDIT tells me things like this:
Command: AUDIT Fix any errors detected? [Yes/No] <N>: n Auditing Header Auditing Tables Auditing Entities Pass 1 Pass 1 200 objects audited Auditing Entities Pass 2 Pass 2 200 objects auditedAcDbZombieEntity(2E8) Extension dictionary AcDbLinetypeTableRecord: "TYPE1" Wrong type Removed AcDbZombieEntity(2E8) Invalid layer eNullObjectId $AUDIT-BAD-LAYER AcDbZombieEntity(2E8) was not repaired. AcDbZombieEntity(2EB) Extension dictionary AcDbLinetypeTableRecord: "TYPE1" Wrong type Removed AcDbZombieEntity(2EB) Invalid layer eNullObjectId $AUDIT-BAD-LAYER AcDbZombieEntity(2EB) was not repaired. Auditing Blocks 2 Blocks audited Auditing AcDsRecords Total errors found 4 fixed 0 Erased 0 objects
Any ideas what would cause this bad layer ID? Its specific to one of my objects types - other similar types don't have this issue. The layer the objects are supposed to be on exists.
Solved! Go to Solution.
Solved by Kyudos. Go to Solution.
Hi,
Are you storing “acdblinetypetablerecord” in extension dictionary? The message is prompting that it is removing the object as acdblinetypetablerecord from extension dictionary. I feel acdblinetypetablerecord to be added to symbol table (AcDbLinetypeTable).
I'm not consciously doing that - I am loading some line types from a .lin file. Does that put them in an extension dictionary?
It is even more strange:
The extension dictionary of the proxy entity with handle "2D8" is an AcDbLinetypeTableRecord.
But it should be an AcDbDictionary!
Here is a screenshot from ArxDbg.arx after command SNOOPDB and selecting entity 2D8:
I fixed this by changing the order of things in my dwg in/out functions to make sure I was doing the base class(es) first.