查看单个帖子
旧 2009-05-04, 07:19 PM   #1
yang686526
高级会员
 
注册日期: 06-11
帖子: 14579
精华: 1
现金: 224494 标准币
资产: 234494 标准币
yang686526 向着好的方向发展
默认 【转帖】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
yang686526离线中   回复时引用此帖
GDT自动化论坛(仅游客可见)