![]() |
【转帖】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. |