Author Topic: Question about AcDbZombieObject  (Read 5609 times)

0 Members and 1 Guest are viewing this topic.

T.Willey

  • Needs a day job
  • Posts: 5251
Question about AcDbZombieObject
« on: December 14, 2007, 12:35:50 PM »
Using this code
Code: [Select]
(
(lambda (/ ActDoc DictCol ObjList)
(setq ActDoc (vla-get-ActiveDocument (vlax-get-Acad-Object)))
(setq DictCol (vla-get-Dictionaries ActDoc))
(vlax-for dict DictCol
(setq ObjList nil)
(if
(and
(vlax-property-available-p dict 'Name)
(wcmatch (strcase (vla-get-Name dict)) "KS_*")
)
(progn
(vlax-for obj dict
(if (setq tempList
(assoc
(setq tempType (vla-get-ObjectName obj))
ObjList
)
)
(setq ObjList
(subst
(cons tempType (1+ (cdr tempList)))
tempList
ObjList
)
)
(setq ObjList (cons (cons tempType 1) ObjList))
)
)
(prompt (strcat "\n-- Name: " (vla-get-Name dict)))
(foreach lst
(vl-sort
ObjList
'(lambda (a b)
(< (strcase (car a)) (strcase (car b)))
)
)
(print lst)
)
(prompt "\n")
)
)
)
(princ)
)
)
I get these results
Quote
-- Name: Ks_DetailStyleDictionary
("AcDbZombieObject" . 3)

-- Name: Ks_GroupDataDictionary
("AcDbZombieObject" . 693243)

-- Name: Ks_ShapeRefDictionary
("AcDbZombieObject" . 34)

-- Name: Ks_XRecordDictionary



What do you guys do about zombie objects?  This file is pretty bloated because of the dictionary that has 693243 objects within it, so what would be the problems if we deleted these objects/dictionaries?  I mean once the work by them is done, I would delete these dictionaries since no one, that I know of here, uses anything that would put those dictionaries into our drawings.

Thanks in advance.

I will continue to dig within the drawing to see if I can see if they are used by anything, xdata or other non-graphical data.
Tim

I don't want to ' end-up ', I want to ' become '. - Me

Please think about donating if this post helped you.

MP

  • Seagull
  • Posts: 17750
  • Have thousands of dwgs to process? Contact me.
Re: Question about AcDbZombieObject
« Reply #1 on: December 14, 2007, 12:45:50 PM »
If you load the associated object enabler (I'd start here, but you'll likely have to create an account before you can download anything) you will see all the properties. I will tell you that even with the object enabler loaded you'll have to query and inspect the objects via activex, as they didn't bother to expose much to dxf.

Engineering Technologist • CAD Automation Practitioner
Automation ▸ Design ▸ Drafting ▸ Document Control ▸ Client
cadanalyst@gmail.comhttp://cadanalyst.slack.comhttp://linkedin.com/in/cadanalyst

MP

  • Seagull
  • Posts: 17750
  • Have thousands of dwgs to process? Contact me.
Re: Question about AcDbZombieObject
« Reply #2 on: December 14, 2007, 12:58:13 PM »
Forget that previous url Tim, this one appears to sport the ProSteel enablers for AutoCAD 2004 thru 2008.
Engineering Technologist • CAD Automation Practitioner
Automation ▸ Design ▸ Drafting ▸ Document Control ▸ Client
cadanalyst@gmail.comhttp://cadanalyst.slack.comhttp://linkedin.com/in/cadanalyst

T.Willey

  • Needs a day job
  • Posts: 5251
Re: Question about AcDbZombieObject
« Reply #3 on: December 14, 2007, 01:14:05 PM »
Thanks Michael.  I don't think it is ProSteel, since it is piping, flow, diagrams.  I talked to the engineer who is working with them, and I told him that we need more information from them, so I think I will just wait and see what they say.

I might be back after that though.  :-)

My thought was since it is in a dictionary, then no graphical data would be lost.  Is this wrong?
Tim

I don't want to ' end-up ', I want to ' become '. - Me

Please think about donating if this post helped you.

MP

  • Seagull
  • Posts: 17750
  • Have thousands of dwgs to process? Contact me.
Re: Question about AcDbZombieObject
« Reply #4 on: December 14, 2007, 01:23:15 PM »
Weird. It sounds to me like sometime in the drawing's life time it likely xref'd a structural model, or schedule etc. derived from same (because those are ProSteel entries). Based on that you could probably just blow away the ks_* dictionary entries, though it's always a good idea to maintain a backup of the original. Would be interesting to hear what the author of those drawings has to say.
Engineering Technologist • CAD Automation Practitioner
Automation ▸ Design ▸ Drafting ▸ Document Control ▸ Client
cadanalyst@gmail.comhttp://cadanalyst.slack.comhttp://linkedin.com/in/cadanalyst

T.Willey

  • Needs a day job
  • Posts: 5251
Re: Question about AcDbZombieObject
« Reply #5 on: December 14, 2007, 01:38:32 PM »
That is weird.  I will post back what they tell me.

If it xref'ed in something, all the dictionaries come across?  Hmmm....

Maybe I will dl the PS enabler, and see if that works in the mean time.  I have a copy I'm testing ideas on, so this may shed some light on it while I wait to hear back from those people.
Tim

I don't want to ' end-up ', I want to ' become '. - Me

Please think about donating if this post helped you.

T.Willey

  • Needs a day job
  • Posts: 5251
Re: Question about AcDbZombieObject
« Reply #6 on: December 14, 2007, 01:58:08 PM »
Forget that previous url Tim, this one appears to sport the ProSteel enablers for AutoCAD 2004 thru 2008.
I wasn't able to download anything from there site.  Guess I will have to wait now.

Edit:  Well I was able to dl the '08 version.
« Last Edit: December 14, 2007, 02:01:09 PM by T.Willey »
Tim

I don't want to ' end-up ', I want to ' become '. - Me

Please think about donating if this post helped you.

MP

  • Seagull
  • Posts: 17750
  • Have thousands of dwgs to process? Contact me.
Re: Question about AcDbZombieObject
« Reply #7 on: December 14, 2007, 02:01:15 PM »
Really? What version do you want?
Engineering Technologist • CAD Automation Practitioner
Automation ▸ Design ▸ Drafting ▸ Document Control ▸ Client
cadanalyst@gmail.comhttp://cadanalyst.slack.comhttp://linkedin.com/in/cadanalyst

T.Willey

  • Needs a day job
  • Posts: 5251
Re: Question about AcDbZombieObject
« Reply #8 on: December 14, 2007, 02:24:01 PM »
Really? What version do you want?
I use '06, but I have '08, so I can test it.  Thanks for the offer Michael.  Looking at the stuff now.  Seems really weird, as the dictionary with the most items is called "Ks_GroupDataDictionary", but there are no groups within the drawing, but I just started looking into stuff.
Tim

I don't want to ' end-up ', I want to ' become '. - Me

Please think about donating if this post helped you.

T.Willey

  • Needs a day job
  • Posts: 5251
Re: Question about AcDbZombieObject
« Reply #9 on: December 14, 2007, 02:33:53 PM »
It looks like they are of no use to our company, but I could be missing something.  Here is a quick dump of one item in the dictionary.
Quote
Command: (setq dict (vla-item dictcol "Ks_GroupDataDictionary"))
#<VLA-OBJECT IAcadDictionary 13cd9c64>

Command: (dump (vla-item dict 0))
; IAcadObject: The standard interface for a basic AutoCAD object
; Property values:
;   Application (RO) = #<VLA-OBJECT IAcadApplication 00d73d3c>
;   Document (RO) = #<VLA-OBJECT IAcadDocument 06eac7a8>
;   Handle (RO) = "14BB"
;   HasExtensionDictionary (RO) = 0
;   ObjectID (RO) = 2127679704
;   ObjectName (RO) = "Ks_GroupDataReactor"
;   OwnerID (RO) = 2127679696
; Methods supported:
;   Delete ()
;   GetExtensionDictionary ()
;   GetXData (3)
;   SetXData (2)
T
And the code I redid checks for XData and for an Extension Dictionary, all have neither.  So I'm thinking that these are useless to us, but I wanted a more experienced opinion.

Thanks in advance.

Edit:
I will tell you that even with the object enabler loaded you'll have to query and inspect the objects via activex, as they didn't bother to expose much to dxf.
Good call here.
Quote
Command: (entget (vlax-vla-object->ename (vla-item dict 0)))
((-1 . <Entity name: 7ed1d0d8>))
« Last Edit: December 14, 2007, 02:37:39 PM by T.Willey »
Tim

I don't want to ' end-up ', I want to ' become '. - Me

Please think about donating if this post helped you.

hermanm

  • Guest
Re: Question about AcDbZombieObject
« Reply #10 on: December 14, 2007, 08:41:57 PM »
I use '06, but I have '08, so I can test it.  Thanks for the offer Michael.  Looking at the stuff now.  Seems really weird, as the dictionary with the most items is called "Ks_GroupDataDictionary", but there are no groups within the drawing, but I just started looking into stuff.

That is not really surprising, to me.
Kiwi uses AutoCAD groups, but then adds its own data, as you've seen.
So, it maintains its own data dictionary, which evidently doesn't get purged (at least, in this case).

"Zombie" is the original (now obsolete) name for "Proxy" entities, which suggests to me that the original drawing from which this was derived goes back aways, like ACAD 2000.

The fact that the dwg contains only piping & no structural is no real surprise either.
Kiwisoft (ProSteel) has been the structural component of Autoplant for about the same time frame.

So, I surmise the bloated drawing has been through many "reincarnations" as a "blank" drawing, with file size growing every time, due to the unpurged dictionary detritus.

Ever get a hugely bloated file from someone using ACAD LT, only to find there are thousands (or even tens of thousands) of empty GROUPS in the dwg?

This looks to me like an analogous situation with different (3rd party) dictionaries.

This junk is definitely Kiwisoft, as Michael pointed out.

Speaking from memory - I haven't used PS in awhile, & don't have it currently installed - I believe there _may_ be a software setting to do a proper cleanup upon exit, but it has to be set (IIRC). So, if someone didn't do that, it would lead to the accumulation of trash which you describe.

T.Willey

  • Needs a day job
  • Posts: 5251
Re: Question about AcDbZombieObject
« Reply #11 on: December 16, 2007, 04:24:23 AM »
Thank you hermanm, that was very enlightening.  I will see if I can find out some more information on Monday.
Tim

I don't want to ' end-up ', I want to ' become '. - Me

Please think about donating if this post helped you.