高级会员
注册日期: 06-11
帖子: 14579
精华: 1
现金: 224494 标准币
资产: 234494 标准币
|
【转帖】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
|