高级会员
注册日期: 06-11
帖子: 14579
精华: 1
现金: 224494 标准币
资产: 234494 标准币
|
【转帖】getting references code problem
getting references code problem
getting references code problem
hi all,
i am new to opendwg and i need to get the references for dwg files. i found some code posted here that got me started, but i am in a bind with that code. i understand what it is trying to do. basically examine all the blocks in the file and pick out ones that are from external references. however, there is one line in particular that is preventing compilation:
if (pent->iskindof(oddbblockreference:esc()))
my compiler (vc6) is telling me that desc isn't a member of the block reference class. i know it is, but it is a static member not a virtual member. can someone tell me how to get around this?
also, i need to get raster attachments to the file, if any. can someone point me in the right direction for this? i would think it would be another block type.
attached is the full code, fyi. thanks for a great product!
attached files
compilation problem is cause by incorrect name: desc() should be used instead of desc().
rasters.
raster image insertion is represented by oddbrasterimage entity. this entity references oddbrasterimagedef object storing raster file name.
where are 2 methods to get all referenced raster files: "simple" and "fast".
"simple" method. you loop through model and paper spaces searching for oddbrasterimage entities and get file names from their oddbrasterimagedef objects. you also need to parse recurcively all blocks inserted into model and paper spaces.
"fast" method. database's root dictionary (named objects dictionary) contains an entry named acad_image_dict. it points to raster image dictionary which can be iterated to get all raster files referenced by database. but if a raster image reference is erased in autocad raster image definition may stay in the dictionary. so you may get the list containing not only actually inserted raster files but files which were inserted in the drawing previously and later erased.
to filter non-referenced oddbrasterimagedefs you need to analyze their reactors.
btw, getting all refernced files (xrefs, raters, fonts etc.) will be available via filedependencies functionality (not implemented yet for pre-r18 versions)
sergey slezkin
quote:
originally posted by sergey slezkin
compilation problem is cause by incorrect name: desc() should be used instead of desc().
rasters.
raster image insertion is represented by oddbrasterimage entity. this entity references oddbrasterimagedef object storing raster file name.
where are 2 methods to get all referenced raster files: "simple" and "fast".
"simple" method. you loop through model and paper spaces searching for oddbrasterimage entities and get file names from their oddbrasterimagedef objects. you also need to parse recurcively all blocks inserted into model and paper spaces.
"fast" method. database's root dictionary (named objects dictionary) contains an entry named acad_image_dict. it points to raster image dictionary which can be iterated to get all raster files referenced by database. but if a raster image reference is erased in autocad raster image definition may stay in the dictionary. so you may get the list containing not only actually inserted raster files but files which were inserted in the drawing previously and later erased.
to filter non-referenced oddbrasterimagedefs you need to analyze their reactors.
btw, getting all refernced files (xrefs, raters, fonts etc.) will be available via filedependencies functionality (not implemented yet for pre-r18 versions)
wow.
talk about overlooking the obvious. i feel dumb .
thanks for the reply! it will be of great help!
|