高级会员
注册日期: 06-11
帖子: 14579
精华: 1
现金: 224494 标准币
资产: 234494 标准币
|
【转帖】origin for the attribute
origin for the attribute
origin for the attribute
hi,
i am rewriting application from opendwg to dwgdirectc++. the existing code contains,
adseekentity(dwghandle,entitylist,kctitleinserthan dle,adenhd,aden);
returnval1=adgetentity(entitylist,adenhd,aden);
if ( returnval1 && adenhd->enttype == ad_ent_attrib )
{
cstemp = aden->attrib.tag;
now check if first attribute was size.
//
if ( cstemp == "size" )
{
//
// found size attrib after insert so save size, units and origin point
// (note: this variable may be in form "b:in or b").
//
cstemp = aden->attrib.attval;
cstemp.trimright();
cssize = cstemp.left(1);
//
// check if this is old size attribute (contains ":")
//
if ( cstemp.find(":") != -1 )
{
//
// this is an old size attribute in format "b:in". the origin for
// this attibute is based on the lower left point. (pt0)
//
foundoldsize = true;
orgx = aden->attrib.pt0[0];
orgy = aden->attrib.pt0[1];
}
else
{
//
// this is the new size attribute in format "b". the origin for
// this attribute is based on center location. (secondtextlocation.pt0)
//
foundoldsize = false;
orgx = aden->attrib.tdata.secondtextloc[0];
orgy = aden->attrib.tdata.secondtextloc[1];
}
//
// determine units based on character height of this attribute.
//
if ( aden->attrib.tdata.height > 1 )
csunits = "mm";
else
csunits = "in";
}
i need to rewrite the above code using dwgdirectc++. so using the below code, i can able to read the attribute tag. but i don't know how to read the origin for the attribute based on lower left and center location. please help me to solve the issue....
oddbobjectiteratorptr piter = pblkref->attributeiterator();
for (int i=0; !piter->done(); i++, piter->step())
{
oddbattributeptr pattr = piter->entity();
buffer = pattr->tag();
}
hello
oddbattribute is inherited from oddbtext class. you may use methods posision(), alignmentpoint() of oddbtext.
best regards,
sergey z.
|