高级会员
注册日期: 06-11
帖子: 14579
精华: 1
现金: 224494 标准币
资产: 234494 标准币
|
【转帖】cannot create a region from closed curve segments containing
cannot create a region from closed curve segments containing
cannot create a region from closed curve segments containing an ellipse.
i cannot create a region from a closed curve segments that contains an ellipse. here is the sample code that i used to create the region.
void dbfiller::createdish(const oddbobjectid& btrid)
{
odrxobjectptrarray regions;
odrxobjectptrarray curvesegments;
oddbblocktablerecordptr bbtr = btrid.safeopenobject(oddb::kforwrite);
odgepoint3d vertices[3];
vertices[0] = odgepoint3d(0.0, 1.0, 0.0);
vertices[1] = odgepoint3d(0.0, 0.0, 0.0);
vertices[2] = odgepoint3d(5.0, 0.0, 0.0);
// adds first line.
oddblineptr pline1 = oddbline::createobject();
pline1->setdatabasedefaults(bbtr->database());
pline1->setstartpoint(vertices[0]);
pline1->setendpoint(vertices[1]);
curvesegments.push_back(pline1.get());
// adds second line.
oddblineptr pline2 = oddbline::createobject();
pline2->setdatabasedefaults(bbtr->database());
pline2->setstartpoint(vertices[1]);
pline2->setendpoint(vertices[2]);
curvesegments.push_back(pline2.get());
// adds an ellipse.
odgepoint3d center = odgepoint3d(0.0, 0.0, 0.0);
odgevector3d unitnormal = odgevector3d(0.0, 0.0, 1.0);
odgevector3d majoraxis = odgevector3d(5.0, 0.0, 0.0);
oddbellipseptr pellipse = oddbellipse::createobject();
pellipse->setdatabasedefaults(bbtr->database());
double sangle = odatoradian(0.0);
double eangle = odatoradian(90.0);
double radiusratio = .2;
pellipse->set(odgepoint3d(center.x, center.y, center.z), unitnormal, majoraxis, radiusratio, sangle, eangle);
curvesegments.push_back(pellipse.get());
// creates a region from a closed curve segments of an ellipse and two lines
// exception is thrown after this line.
odresult res = oddbregion::createfromcurves(curvesegments, regions);
oddb3dsolidptr p3dsolid = oddb3dsolid::createobject();
bbtr->appendoddbentity(p3dsolid);
double angle = odatoradian(360.0);
odgevector3d axisdirection = odgevector3d(0.0, 1.0, 0.0);
res = p3dsolid->revolve((oddbregionptr) regions[0], odgepoint3d(0.0, 0.0, 0.0), axisdirection, angle);
}
if i replace the ellipse with an arc, then the region is ok, and a dish is created. i am using dwgdirect 2.1.0.
thank you in advance.
last edited by hnguyen; 18th october 2006 at 06:44 pmfff">.
this is bug. dbellipse will be fixed in next release. try to use dbspline instead dbellipse.
great, thank you very much. i can wait for the fix.
last edited by hnguyen; 19th october 2006 at 01:22 pmfff">.
is this bug fixed on version 2.1.1?
hi alexander rumyantsev,
we just had the new dwg library (version 2.1.1). i just wonder if it fixed this bug. please let me know.
thank you.
the only difference between 2.1.0 and 2.1.1 is trusted dwg support which was removed in 2.1.1 according to tro.
sergey slezkin
hi,
i remember bug. it was fixed. fix will be available with next 'non political' release
|