![]() |
【转帖】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. |
所有的时间均为北京时间。 现在的时间是 08:36 PM. |