查看单个帖子
旧 2009-05-05, 10:41 AM   #1
yang686526
高级会员
 
注册日期: 06-11
帖子: 14579
精华: 1
现金: 224494 标准币
资产: 234494 标准币
yang686526 向着好的方向发展
默认 【转帖】extracting graphics information from proxy entities

extracting graphics information from proxy entities
extracting graphics information from proxy entities
hi,
i have read previous threads related to this topic.
i am attaching herewith the drawing i am using. the drawing contains only one proxy entity. i am trying to extract graphics information from proxy entities. for that purpose, i have used explde function and following is related code:
bool explodeproxy (oddbentity* pentity)
{
oddbproxyentity *pproxyent = null;
odrxobjectptrarray entityset;
pproxyent = oddbproxyentity::cast(pentity);
if (pproxyent != null)
{
pproxyent->explode(entityset);
odrxobjectptrarray::iterator pit = entityset.begin();
odrxobject* pobj;
for(; pit != entityset.end(); ++pit)
{
pobj = pit->get();
if (pobj)
{
if (pobj->iskindof(oddbtext::desc()))
{
// do some task
}
else if (pobj->iskindof(oddb2dpolyline::desc() ))
{
// do some task
}
..
..
..
.. //other cases
..
}
}
}
}
problem: for the proxy entity present in attached drawing, after calling explde function odrxobjectptrarray only contains polylines and text objects.
but when i have opened the same drawing in autocad 2008 and explode present proxy entity, autocad first explodes it to a block reference and further explosion, i am getting 3d faces. so my queation is why i am not able to get right data? is there any problem with the code? as i am not getting proper entities after exoding, i am not able to show them properly in my application.
any pointers related to this will be highly helpful and appreciable.
thanks!
nilesh
attached files
this is aec entity. autocad contains enablers for aec. they provide their own rendering and explode.
vladimir
that means i can not explode such entities. is this right?
or is any other way to detect that it is aec entity?
thanks!
nilesh
the question is incomplete.
what for are your expoding entities?
what may prevent you from exploding them?
vladimir
after exploding, i want to create entities in my application. so if proxy entity contains entities like circle, arcs etc, i am assuming that after making a call to explode function on proxy entity, i will get these entities (circle, arcs etc) and i will proceed further to create database resident objects of same types. this is not happening with the proxy entity present in attached drawing. i would like to know if i am doing anything wrong.
you are doing nothing wrong.
to see what i mean, do the following test: remove from acad directory all dlls and arxes starting with "aec" (that is "aec*.*"), and open your drawing. you will see the same box-like shape, that you got after exploding proxy in your application.
(if you want to support aec entities in your application - there is a separate library called adtdirect: )
vladimir
thanks a lot, vladimir.
i got it.
thanks!
nilesh
yang686526离线中   回复时引用此帖
GDT自动化论坛(仅游客可见)