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

yang686526 2009-05-07 05:16 PM

【转帖】rim Information On Nurbs
 
trim information on nurbs
trim information on nurbs
hi銆?br /> i have the question about 3dsolid.
i want to resolve 3dsolid object to brep and to get nurbssurface. but, i am without getting trim information on nurbssurface now.
how can i get it?
it is an excerpt of code as follows.
code:
void test1(oddbobjectid id)
{
oddbentityptr pent = id.safeopenobject();
if(pent->iskindof(oddb3dsolid::desc()))
{
oddb3dsolidptr psolid = pent;
odbrbrep brep;
psolid->brep(brep);
odbrbrepfacetraverser bft;
bft.setbrep(brep);
while(!bft.done())
{
odbrface face = bft.getface();
odgenurbsurface nurbs;
face.getsurfaceasnurb(nurbs);
dumpnurbsdata(nurbs);
bft.next();
}
}
}
void dumpnurbsdata(const odgenurbsurface& anurbs)
{
odgeknotvector knotvecu, knotvecv;
anurbs.getuknots(knotvecu);
anurbs.getvknots(knotvecv);
}
please advise to me.
thank you.
-------
nyde
because the one to serve as a reference from a past contribution was discovered, it is tested.
===============
alexander rumyantsev
softdev
wrote:
brepfacetraverser - get enum of faces.
facelooptraverser - get enum of trimming loop for face
loopedgetraverser - get edges of loop
loopedgetraverser has getorientedcurve method (return pointer to newly created odgecurve3d object)
edge has getvertex1, getvertex2 (return start\end vertexes of edge)
also face, edge, loopedgetraverser has orientation flag = forward\reverse.
you can read arx help about br. ddt br and arx br are very similar.
===============
thanks.
------
nyde

i did not obtain the result though i tried.
code:
void test1(const odbrbrep &abrep)
{
odbrbrepfacetraverser bft;
bft.setbrep(abrep);
while (!bft.done())
{
odbrface face = bft.getface();
odbrfacelooptraverser flt;
flt.setface(face);
odgenurbsurface nurbs;
odbrface f = bft.getface();
f.getsurfaceasnurb(nurbs);
dumpnurbssurface(nurbs);
while(!flt.done())
{
odbrloop loop = flt.getloop();
odbrloopedgetraverser let;
let.setloop(loop);
while(!let.done())
{
odgenurbcurve2d curve;
odbrerrorstatus ret2 = let.getparamcurveasnurb(curve);
if(ret2 == odbrok)
dumpnurbscurve(curve);
let.next();
}

flt.next();
}
bft.next();
}
i could not get trimcurve of nurbssuface from odbrloopedgetraverser::getparamcurveasnurb() method.
how can i acquire nurbstrimcurve?
thankyou
-----------
nyde
attached files (100.4 kb, 3 views)

paramcurve is a 2d curve in uv plane. it is optional curve. it is normal situation, when getparamcurve return null. if you need 3d trimming loops\edges, use getorientedcurve(). if you need 2d trimming loops in 2d, you should construct it from 3d.
thank you for answer.
how can it be converted into 2dcurve by assuming that 3dcurve was able to be acquired?
though i think it is difficult to request 2d coordinates on the surface of
nurbs from 3d space coordinates.
is curve of 3d space projected to nurbssurface and is there a technique for making
it to coordinates of 2d space?
and, can trimcurve(nurbscurve) be made from the acquired one?
thankyou
---------
nyde
last edited by nyde; 9th november 2005 at 04:46 amfff">.
odgesurface has
odgepoint2d odgenurbsurface:aramof(const odgepoint3d& pnt, const odgetol& tol) const
it is difficult task - construct 2d trimming loops from 3d curves.
quote:
originally posted by alexander rumyantsev
odgesurface has
odgepoint2d odgenurbsurface:aramof(const odgepoint3d& pnt, const odgetol& tol) const
it is difficult task - construct 2d trimming loops from 3d curves.
because it is necessary to acquire trimloop of 2d, i try
examining a little.
odgecurvesurfint may carry out function, is not yet mounting....
i think that i question again occasionally.
thankyou
---------
nyde
last edited by nyde; 9th november 2005 at 05:38 pmfff">.
humm...
i cannot acquire trimcurve which is defined in 2d space on
nurbssurface.i tried various functions, but could not find those which are
agreeable to purpose.
in opengl, trimcurve of 2d is necessary for trimming nurbssurface, and i want to acquire it.
is there a person to whom the same problem was solved?
thankyou
-----
nyde


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