查看单个帖子
旧 2009-05-05, 11:31 AM   #1
yang686526
高级会员
 
注册日期: 06-11
帖子: 14579
精华: 1
现金: 224494 标准币
资产: 234494 标准币
yang686526 向着好的方向发展
默认 【转帖】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!
yang686526离线中   回复时引用此帖
GDT自动化论坛(仅游客可见)