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

yang686526 2009-05-07 06:25 PM

【转帖】vectorizing 3d Solids
 
vectorizing 3d solids
vectorizing 3d solids
hello all,
i am trying to vectorize a 3dsolid, but i never get shell information/face/mesh, however all 2d line/polyline vectorization is correct.
i notice that the m_rendermode is optimized 2d, but even if i change this, it still only produces outlines. my code is a follows :
header ------------
class vectorizer : public odgigeometrysimplifier, public odgsbasevectorizeview {
public:
vectorizer() {
//setfilltype(kodgifillalways);
odgigeometrysimplifier::m_rendermode = kgouraudshadedwithwireframe;
odgsbasevectorizeview::m_rendermode = kgouraudshadedwithwireframe;
};
virtual void polylineout(odint32 n, const odgepoint3d* pts);
virtual void polygonout(odint32 nbpoints, const odgepoint3d *pvertexlist, const odgevector3d *pnormal = 0);
virtual void meshproc(odint32 rows,
odint32 columns,
const odgepoint3d* vertexlist,
const odgiedgedata* pedgedata = 0,
const odgifacedata* pfacedata = 0,
const odgivertexdata* pvertexdata = 0) {
{..}
};
virtual void triangleout(const odint32* vertices,
const odgevector3d* pnormal) {
{..}
}
virtual void facetout(const odint32* facelist,
const odint32* edgeindices,
const odgevector3d* pnormal) {
{..}
};
void setgmtryent(csmplptr apgmtry) { m_apgmtry = apgmtry;};
void setldr(copendwgptr apldr) { m_apldr = apldr;};
private:
bool m_btris;
csmplptr m_apgmtry;
copendwgptr m_apldr;
};
end of header ----------------
using it as follows :
oddb3dsolidptr od3dsolidptr = odentptr;
odstaticrxobject<vectorizer> dv;
dv.setgmtryent(ap3dsolid);
dv.setldr(this);
odstaticrxobject<odgicontextfordbdatabase> gicontext;
gicontext.setdatabase(od3dsolidptr->database());
dv.setdrawcontext(&dv);
dv.setcontext(&gicontext);
dv.output().setdestgeometry(dv);
dv.beginviewvectorization();
dv.draw(od3dsolidptr);
dv.endviewvectorization();
-------------------------------------------
thanx in advance for your help
cheers
jason


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