几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量

几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量 (http://www.dimcax.com/hust/index.php)
-   DirectDWG (http://www.dimcax.com/hust/forumdisplay.php?f=89)
-   -   【转帖】oddbtable width not updated (http://www.dimcax.com/hust/showthread.php?t=17617)

yang686526 2009-05-06 08:15 PM

【转帖】oddbtable width not updated
 
oddbtable width not updated
oddbtable width not updated
hi everyone
when i resize one or more columns of an existing table (filled with text-values), the total width of the table is not updated. is there any method i can call on the tableobject that forces an update of the tablewidth?
here is some code. i've made a workaround since i need the actual width of the table to position it correctly.
code:
double commonfunctions::resizetable( oddbdatabaseptr pdb, oddbobjectid tableid ){
oddbtableptr tableptr = tableid.safeopenobject( oddb::kforwrite );
unsigned int col, columns = tableptr->numcolumns();
double averagecolumnwidth = tableptr->width()/columns;
double tempwidth, sum = 0;
for( col = 0; col < columns; col++ ){
tempwidth = tableptr->columnwidth( col );
if( tempwidth >= averagecolumnwidth ){
tempwidth *= 0.7; //factor is still experimental
tableptr->setcolumnwidth( col, tempwidth );
}
sum += tempwidth;
}
tempwidth = tableptr->width(); //table width is still the same
tableptr.release();
return sum; //needs to return total width because table is not updated
}any help is appreciated.
martin
hello martin,
try to call tableptr->recomputetableblock(true) befor line
"tempwidth = tableptr->width(); //table width is still the same".
best regards,
sergey z.
ok, that's it.
hello sergey,
thanks for the hint, it works. i am pretty sure i tried this with dwgdirect 2.5 and it didn't work. anyways, it does now.
martin


所有的时间均为北京时间。 现在的时间是 03:32 AM.