几何尺寸与公差论坛------致力于产品几何量公差标准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)
-   -   【转帖】delete hatchs edge (http://www.dimcax.com/hust/showthread.php?t=15666)

yang686526 2009-05-04 07:19 PM

【转帖】delete hatchs edge
 
delete hatch's edge
delete hatch's edge
hi, i have some questions need your help!
1.
how can i delete a hatch's edge?
when i tried to delete a hatch's edge, it casued an exception.
2.
the function setpatternscale cause an exception, when it was called.
3.
pattern's type must be "solid", it can not be any other types.
how can i load the other types, such as "angle","ansi31" and so on.
the following code is i am using.
code:
void convert( oddbdatabaseptr pdb, const gspdata::hatch& elm, int blocknumber )
{
if ( elm.poly().vertices().size() < 2 )
{
return;
}
oddbpolylineptr ppolyline = oddbpolyline::createobject();

for ( int i=0; i<elm.poly().vertices().size(); i++ )
{
ppolyline->addvertexat( i, converttoodgepoint2d(elm.poly().vertices()[i].point()), elm.poly().vertices()[i].bulge() );
}

oddbobjectid polylineid = addtodatabase( *ppolyline, pdb, elm.drawparam(), blocknumber );
oddbobjectidarray objectids;
objectids.append( ppolyline->objectid() );
oddbhatchptr phatch = oddbhatch::createobject();
phatch->sethatchstyle( oddbhatch::knormal );
phatch->setpatternangle( elm.angle() );
// phatch->setpatternscale( elm.scale() );
phatch->setassociative( true );
phatch->appendloop( oddbhatch::kexternal, objectids );
phatch->setpattern( oddbhatch::kpredefined, "solid");//elm.patternname() );
phatch->evaluatehatch();

oddbobjectid objid = addtodatabase( *phatch, pdb, elm.drawparam(), blocknumber );
for ( int j = 0; j < objectids.size(); j++ )
{
oddbentityptr pentity = objectids[j].safeopenobject( oddb::kforwrite );
if ( pentity.get() )
pentity->addpersistentreactor( objid );
}

//delete hatch's edge.
ppolyline->erase();
}
thanks for any answer.
jackie yufff">
help, please!
顶!
jackie yufff">
1. if you need not the 2dpolyline after creating hatch you can use appendloop() with vertices and bulges arrays as arguments.
after addtodatabase() polyline has id assigned for it but has no owner - this is invalid situation. entities need to be appended to some blocktablerecord.
2. setpatternscale() has no sense for solid hatch. it can be applied only to non-solid predefined or custom defined patterns.
3. see odwriteex sample (dbfiller.cpp). it illustrates various methods for creating non-solid hatches.
also look at:
sergey slezkin


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