Revision: 45795
http://brlcad.svn.sourceforge.net/brlcad/?rev=45795&view=rev
Author: brlcad
Date: 2011-08-05 23:08:24 +0000 (Fri, 05 Aug 2011)
Log Message:
-----------
working towards writing out both brep and implicit forms for each entity type.
consolidate writing out the objects to a common function, reducing 60+ lines
Modified Paths:
--------------
brlcad/trunk/src/proc-db/csgbrep.cpp
Modified: brlcad/trunk/src/proc-db/csgbrep.cpp
===================================================================
--- brlcad/trunk/src/proc-db/csgbrep.cpp 2011-08-05 22:59:26 UTC (rev
45794)
+++ brlcad/trunk/src/proc-db/csgbrep.cpp 2011-08-05 23:08:24 UTC (rev
45795)
@@ -43,26 +43,47 @@
}
#endif
+
+void
+write_out(struct rt_wdb* fp, struct rt_db_internal *ip, const char *name,
struct bn_tol *tol)
+{
+ ON_Brep* brep = NULL;
+
+ std::string bname = name;
+ bname += ".brep";
+
+ if (!fp || !ip || !name)
+ return;
+
+ if (fp->dbip->dbi_fp) {
+ rt_fwrite_internal(fp->dbip->dbi_fp, name, ip, 1.0);
+ }
+ brep = ON_Brep::New();
+ ip->idb_meth->ft_brep(&brep, ip, tol);
+ mk_brep(fp, bname.c_str(), brep);
+ delete brep;
+}
+
+
int
main(int argc, char** argv)
{
struct rt_wdb* outfp;
- struct rt_db_internal *tmp_internal = (struct rt_db_internal *)
bu_malloc(sizeof(struct rt_db_internal), "allocate structure");
- RT_DB_INTERNAL_INIT(tmp_internal);
- struct bn_tol tmptol;
- tmptol.magic = BN_TOL_MAGIC;
- tmptol.dist = 0.005;
- const struct bn_tol *tol = &tmptol;
- struct rt_tess_tol ttmptol;
- ttmptol.abs = 0;
- ttmptol.rel = 0.01;
- ttmptol.norm = 0;
- const struct rt_tess_tol *ttol = &ttmptol;
+ struct rt_db_internal tmp_internal; /* = (struct rt_db_internal *)
bu_calloc(1, sizeof(struct rt_db_internal), "allocate structure"); !!! */
point_t center;
vect_t a, b, c, h, N;
ON_TextLog error_log;
- if (argc > 0)
+ RT_DB_INTERNAL_INIT(&tmp_internal);
+
+ bn_tol tol;
+ tol.magic = BN_TOL_MAGIC;
+ tol.dist = 0.0005;
+ tol.dist_sq = tol.dist * tol.dist;
+ tol.perp = SMALL_FASTF;
+ tol.para = 1.0 - tol.perp;
+
+ if (argc > 1)
bu_log("Usage: %s\n", argv[0]);
ON::Begin();
@@ -71,8 +92,7 @@
const char* id_name = "CSG B-Rep Examples";
mk_id(outfp, id_name);
- bu_log("Writing an ARB4 (via NMG) brep...\n");
- ON_Brep* arb4brep = ON_Brep::New();
+ bu_log("ARB4\n");
struct rt_arb_internal *arb4;
BU_GETSTRUCT(arb4, rt_arb_internal);
arb4->magic = RT_ARB_INTERNAL_MAGIC;
@@ -88,15 +108,11 @@
for ( int i=0; i < 8; i++ ) {
VMOVE( arb4->pt[i], ptarb4[i] );
}
- tmp_internal->idb_ptr = (genptr_t)arb4;
- tmp_internal->idb_meth = &rt_functab[ID_ARB8];
- tmp_internal->idb_meth->ft_brep(&arb4brep, tmp_internal, tol);
- const char* arb4_name = "arb4_nurb.s";
- mk_brep(outfp, arb4_name, arb4brep);
- delete arb4brep;
+ tmp_internal.idb_ptr = (genptr_t)arb4;
+ tmp_internal.idb_meth = &rt_functab[ID_ARB8];
+ write_out(outfp, &tmp_internal, "arb4", &tol);
- bu_log("Writing an ARB5 (via NMG) brep...\n");
- ON_Brep* arb5brep = ON_Brep::New();
+ bu_log("ARB5\n");
struct rt_arb_internal *arb5;
BU_GETSTRUCT(arb5, rt_arb_internal);
arb5->magic = RT_ARB_INTERNAL_MAGIC;
@@ -112,15 +128,11 @@
for ( int i=0; i < 8; i++ ) {
VMOVE( arb5->pt[i], ptarb5[i] );
}
- tmp_internal->idb_ptr = (genptr_t)arb5;
- tmp_internal->idb_meth = &rt_functab[ID_ARB8];
- tmp_internal->idb_meth->ft_brep(&arb5brep, tmp_internal, tol);
- const char* arb5_name = "arb5_nurb.s";
- mk_brep(outfp, arb5_name, arb5brep);
- delete arb5brep;
+ tmp_internal.idb_ptr = (genptr_t)arb5;
+ tmp_internal.idb_meth = &rt_functab[ID_ARB8];
+ write_out(outfp, &tmp_internal, "arb5", &tol);
- bu_log("Writing an ARB6 (via NMG) brep...\n");
- ON_Brep* arb6brep = ON_Brep::New();
+ bu_log("ARB6\n");
struct rt_arb_internal *arb6;
BU_GETSTRUCT(arb6, rt_arb_internal);
arb6->magic = RT_ARB_INTERNAL_MAGIC;
@@ -136,15 +148,11 @@
for ( int i=0; i < 8; i++ ) {
VMOVE( arb6->pt[i], ptarb6[i] );
}
- tmp_internal->idb_ptr = (genptr_t)arb6;
- tmp_internal->idb_meth = &rt_functab[ID_ARB8];
- tmp_internal->idb_meth->ft_brep(&arb6brep, tmp_internal, tol);
- const char* arb6_name = "arb6_nurb.s";
- mk_brep(outfp, arb6_name, arb6brep);
- delete arb6brep;
+ tmp_internal.idb_ptr = (genptr_t)arb6;
+ tmp_internal.idb_meth = &rt_functab[ID_ARB8];
+ write_out(outfp, &tmp_internal, "arb6", &tol);
- bu_log("Writing an ARB7 (via NMG) brep...\n");
- ON_Brep* arb7brep = ON_Brep::New();
+ bu_log("ARB7\n");
struct rt_arb_internal *arb7;
BU_GETSTRUCT(arb7, rt_arb_internal);
arb7->magic = RT_ARB_INTERNAL_MAGIC;
@@ -160,15 +168,11 @@
for ( int i=0; i < 8; i++ ) {
VMOVE( arb7->pt[i], ptarb7[i] );
}
- tmp_internal->idb_ptr = (genptr_t)arb7;
- tmp_internal->idb_meth = &rt_functab[ID_ARB8];
- tmp_internal->idb_meth->ft_brep(&arb7brep, tmp_internal, tol);
- const char* arb7_name = "arb7_nurb.s";
- mk_brep(outfp, arb7_name, arb7brep);
- delete arb7brep;
+ tmp_internal.idb_ptr = (genptr_t)arb7;
+ tmp_internal.idb_meth = &rt_functab[ID_ARB8];
+ write_out(outfp, &tmp_internal, "arb7", &tol);
- bu_log("Writing an ARB8 (via NMG) b-rep...\n");
- ON_Brep* arb8brep = ON_Brep::New();
+ bu_log("ARB8\n");
struct rt_arb_internal *arb8;
BU_GETSTRUCT(arb8, rt_arb_internal);
arb8->magic = RT_ARB_INTERNAL_MAGIC;
@@ -184,15 +188,11 @@
for ( int i=0; i < 8; i++ ) {
VMOVE( arb8->pt[i], pt8[i] );
}
- tmp_internal->idb_ptr = (genptr_t)arb8;
- tmp_internal->idb_meth = &rt_functab[ID_ARB8];
- tmp_internal->idb_meth->ft_brep(&arb8brep, tmp_internal, tol);
- const char* arb8_name = "arb8_nurb.s";
- mk_brep(outfp, arb8_name, arb8brep);
- delete arb8brep;
+ tmp_internal.idb_ptr = (genptr_t)arb8;
+ tmp_internal.idb_meth = &rt_functab[ID_ARB8];
+ write_out(outfp, &tmp_internal, "arb8", &tol);
- bu_log("Writing an ARBN (via NMG) b-rep...\n");
- ON_Brep* arbnbrep = ON_Brep::New();
+ bu_log("ARBN\n");
struct rt_db_internal arbninternal;
RT_DB_INTERNAL_INIT(&arbninternal);
arbninternal.idb_type = ID_ARBN;
@@ -219,23 +219,19 @@
arbn->eqn[6][3] = 1000;
VSET(arbn->eqn[7], -0.57735, -0.57735, -0.57735);
arbn->eqn[7][3] = 1000;
- tmp_internal->idb_ptr = (genptr_t)arbn;
- tmp_internal->idb_meth = &rt_functab[ID_ARBN];
- tmp_internal->idb_meth->ft_brep(&arbnbrep, &arbninternal, tol);
- const char* arbn_name = "arbn_nurb.s";
- mk_brep(outfp, arbn_name, arbnbrep);
+ tmp_internal.idb_ptr = (genptr_t)arbn;
+ tmp_internal.idb_meth = &rt_functab[ID_ARBN];
+ write_out(outfp, &tmp_internal, "arbn", &tol);
+
bu_free(arbn->eqn, "free arbn eqn");
bu_free(arbninternal.idb_ptr, "free arbn");
- delete arbnbrep;
-
// This routine does explicitly what is done
// by the previous ARB8 brep call internally.
// Ideally a more general NMG will be created
// and fed to rt_nmg_brep rather than using an
- // ARB as the starting point.
- bu_log("Writing an NMG brep...\n");
- ON_Brep* nmgbrep = ON_Brep::New();
+ // ARB8 as a starting point.
+ bu_log("NMG\n");
struct rt_arb_internal *arbnmg8;
BU_GETSTRUCT(arbnmg8, rt_arb_internal);
arbnmg8->magic = RT_ARB_INTERNAL_MAGIC;
@@ -251,24 +247,25 @@
for ( int i=0; i < 8; i++ ) {
VMOVE( arbnmg8->pt[i], ptnmg8[i] );
}
- tmp_internal->idb_ptr = (genptr_t)arbnmg8;
+ tmp_internal.idb_ptr = (genptr_t)arbnmg8;
// Now, need nmg form of the arb
struct model *m = nmg_mm();
struct nmgregion *r;
- tmp_internal->idb_ptr = (genptr_t)arbnmg8;
- tmp_internal->idb_meth = &rt_functab[ID_ARB8];
- tmp_internal->idb_meth->ft_tessellate(&r, m, tmp_internal, ttol, tol);
- tmp_internal->idb_ptr = (genptr_t)m;
- tmp_internal->idb_meth = &rt_functab[ID_NMG];
- tmp_internal->idb_meth->ft_brep(&nmgbrep, tmp_internal, tol);
- const char* nmg_name = "nmg_nurb.s";
- mk_brep(outfp, nmg_name, nmgbrep);
+ struct rt_tess_tol ttol;
+ ttol.abs = 0;
+ ttol.rel = 0.01;
+ ttol.norm = 0;
+ tmp_internal.idb_ptr = (genptr_t)arbnmg8;
+ tmp_internal.idb_meth = &rt_functab[ID_ARB8];
+ tmp_internal.idb_meth->ft_tessellate(&r, m, &tmp_internal, &ttol, &tol);
+ tmp_internal.idb_ptr = (genptr_t)m;
+ tmp_internal.idb_meth = &rt_functab[ID_NMG];
+ write_out(outfp, &tmp_internal, "nmg", &tol);
+
FREE_MODEL(m);
- delete nmgbrep;
- bu_log("Writing a Spherical b-rep...\n");
- ON_Brep* sphbrep = ON_Brep::New();
+ bu_log("SPH\n");
struct rt_ell_internal *sph;
BU_GETSTRUCT(sph, rt_ell_internal);
sph->magic = RT_ELL_INTERNAL_MAGIC;
@@ -280,15 +277,11 @@
VMOVE(sph->a, a);
VMOVE(sph->b, b);
VMOVE(sph->c, c);
- tmp_internal->idb_ptr = (genptr_t)sph;
- tmp_internal->idb_meth = &rt_functab[ID_SPH];
- tmp_internal->idb_meth->ft_brep(&sphbrep, tmp_internal, tol);
- const char* sph_name = "sph_nurb.s";
- mk_brep(outfp, sph_name, sphbrep);
- delete sphbrep;
+ tmp_internal.idb_ptr = (genptr_t)sph;
+ tmp_internal.idb_meth = &rt_functab[ID_SPH];
+ write_out(outfp, &tmp_internal, "sph", &tol);
- bu_log("Writing an Ellipsoidal b-rep...\n");
- ON_Brep* ellbrep = ON_Brep::New();
+ bu_log("ELL\n");
struct rt_ell_internal *ell;
BU_GETSTRUCT(ell, rt_ell_internal);
ell->magic = RT_ELL_INTERNAL_MAGIC;
@@ -300,15 +293,11 @@
VMOVE(ell->a, a);
VMOVE(ell->b, b);
VMOVE(ell->c, c);
- tmp_internal->idb_ptr = (genptr_t)ell;
- tmp_internal->idb_meth = &rt_functab[ID_ELL];
- tmp_internal->idb_meth->ft_brep(&ellbrep, tmp_internal, tol);
- const char* ell_name = "ell_nurb.s";
- mk_brep(outfp, ell_name, ellbrep);
- delete ellbrep;
+ tmp_internal.idb_ptr = (genptr_t)ell;
+ tmp_internal.idb_meth = &rt_functab[ID_ELL];
+ write_out(outfp, &tmp_internal, "ell", &tol);
- bu_log("Writing a RHC b-rep...\n");
- ON_Brep* rhcbrep = ON_Brep::New();
+ bu_log("RHC\n");
struct rt_rhc_internal *rhc;
BU_GETSTRUCT(rhc, rt_rhc_internal);
rhc->rhc_magic = RT_RHC_INTERNAL_MAGIC;
@@ -317,15 +306,11 @@
VSET(rhc->rhc_B, 0, 0, 2000);
rhc->rhc_r = 1000;
rhc->rhc_c = 400;
- tmp_internal->idb_ptr = (genptr_t)rhc;
- tmp_internal->idb_meth = &rt_functab[ID_RHC];
- tmp_internal->idb_meth->ft_brep(&rhcbrep, tmp_internal, tol);
- const char* rhc_name = "rhc_nurb.s";
- mk_brep(outfp, rhc_name, rhcbrep);
- delete rhcbrep;
+ tmp_internal.idb_ptr = (genptr_t)rhc;
+ tmp_internal.idb_meth = &rt_functab[ID_RHC];
+ write_out(outfp, &tmp_internal, "rhc", &tol);
- bu_log("Writing a RPC b-rep...\n");
- ON_Brep* rpcbrep = ON_Brep::New();
+ bu_log("RPC\n");
struct rt_rpc_internal *rpc;
BU_GETSTRUCT(rpc, rt_rpc_internal);
rpc->rpc_magic = RT_RPC_INTERNAL_MAGIC;
@@ -335,15 +320,11 @@
VUNITIZE(rpc->rpc_B);
VSCALE(rpc->rpc_B, rpc->rpc_B, 2000);
rpc->rpc_r = 1000;
- tmp_internal->idb_ptr = (genptr_t)rpc;
- tmp_internal->idb_meth = &rt_functab[ID_RPC];
- tmp_internal->idb_meth->ft_brep(&rpcbrep, tmp_internal, tol);
- const char* rpc_name = "rpc_nurb.s";
- mk_brep(outfp, rpc_name, rpcbrep);
- delete rpcbrep;
+ tmp_internal.idb_ptr = (genptr_t)rpc;
+ tmp_internal.idb_meth = &rt_functab[ID_RPC];
+ write_out(outfp, &tmp_internal, "rpc", &tol);
- bu_log("Writing an EPA b-rep...\n");
- ON_Brep* epabrep = ON_Brep::New();
+ bu_log("EPA\n");
struct rt_epa_internal *epa;
BU_GETSTRUCT(epa, rt_epa_internal);
epa->epa_magic = RT_EPA_INTERNAL_MAGIC;
@@ -352,15 +333,11 @@
VSET(epa->epa_Au, 1, 0, 0);
epa->epa_r1 = 1000;
epa->epa_r2 = 500;
- tmp_internal->idb_ptr = (genptr_t)epa;
- tmp_internal->idb_meth = &rt_functab[ID_EPA];
- tmp_internal->idb_meth->ft_brep(&epabrep, tmp_internal, tol);
- const char* epa_name = "epa_nurb.s";
- mk_brep(outfp, epa_name, epabrep);
- delete epabrep;
+ tmp_internal.idb_ptr = (genptr_t)epa;
+ tmp_internal.idb_meth = &rt_functab[ID_EPA];
+ write_out(outfp, &tmp_internal, "epa", &tol);
- bu_log("Writing an EHY b-rep...\n");
- ON_Brep* ehybrep = ON_Brep::New();
+ bu_log("EHY\n");
struct rt_ehy_internal *ehy;
BU_GETSTRUCT(ehy, rt_ehy_internal);
ehy->ehy_magic = RT_EHY_INTERNAL_MAGIC;
@@ -370,15 +347,11 @@
ehy->ehy_r1 = 1000;
ehy->ehy_r2 = 500;
ehy->ehy_c = 400;
- tmp_internal->idb_ptr = (genptr_t)ehy;
- tmp_internal->idb_meth = &rt_functab[ID_EHY];
- tmp_internal->idb_meth->ft_brep(&ehybrep, tmp_internal, tol);
- const char* ehy_name = "ehy_nurb.s";
- mk_brep(outfp, ehy_name, ehybrep);
- delete ehybrep;
+ tmp_internal.idb_ptr = (genptr_t)ehy;
+ tmp_internal.idb_meth = &rt_functab[ID_EHY];
+ write_out(outfp, &tmp_internal, "ehy", &tol);
- bu_log("Writing a HYP b-rep...\n");
- ON_Brep* hypbrep = ON_Brep::New();
+ bu_log("HYP\n");
struct rt_hyp_internal *hyp;
BU_GETSTRUCT(hyp, rt_hyp_internal);
hyp->hyp_magic = RT_HYP_INTERNAL_MAGIC;
@@ -387,15 +360,11 @@
VSET(hyp->hyp_A, 100, 0, 0);
hyp->hyp_b = 50;
hyp->hyp_bnr = 0.5;
- tmp_internal->idb_ptr = (genptr_t)hyp;
- tmp_internal->idb_meth = &rt_functab[ID_HYP];
- tmp_internal->idb_meth->ft_brep(&hypbrep, tmp_internal, tol);
- const char* hyp_name = "hyp_nurb.s";
- mk_brep(outfp, hyp_name, hypbrep);
- delete hypbrep;
+ tmp_internal.idb_ptr = (genptr_t)hyp;
+ tmp_internal.idb_meth = &rt_functab[ID_HYP];
+ write_out(outfp, &tmp_internal, "hyp", &tol);
- bu_log("Writing a TGC b-rep...\n");
- ON_Brep* tgcbrep = ON_Brep::New();
+ bu_log("TGC\n");
struct rt_tgc_internal *tgc;
BU_GETSTRUCT(tgc, rt_tgc_internal);
tgc->magic = RT_TGC_INTERNAL_MAGIC;
@@ -405,15 +374,11 @@
VSET(tgc->b, 0, 250, 0);
VSET(tgc->c, 250, 0, 0);
VSET(tgc->d, 0, 500, 0);
- tmp_internal->idb_ptr = (genptr_t)tgc;
- tmp_internal->idb_meth = &rt_functab[ID_TGC];
- tmp_internal->idb_meth->ft_brep(&tgcbrep, tmp_internal, tol);
- const char* tgc_name = "tgc_nurb.s";
- mk_brep(outfp, tgc_name, tgcbrep);
- delete tgcbrep;
+ tmp_internal.idb_ptr = (genptr_t)tgc;
+ tmp_internal.idb_meth = &rt_functab[ID_TGC];
+ write_out(outfp, &tmp_internal, "tgc", &tol);
- bu_log("Writing a Torus b-rep...\n");
- ON_Brep* torbrep = ON_Brep::New();
+ bu_log("TOR\n");
struct rt_tor_internal *tor;
BU_GETSTRUCT(tor, rt_tor_internal);
tor->magic = RT_TOR_INTERNAL_MAGIC;
@@ -423,15 +388,11 @@
VMOVE(tor->h, a);
tor->r_a = 5.0;
tor->r_h = 2.0;
- tmp_internal->idb_ptr = (genptr_t)tor;
- tmp_internal->idb_meth = &rt_functab[ID_TOR];
- tmp_internal->idb_meth->ft_brep(&torbrep, tmp_internal, tol);
- const char* tor_name = "tor_nurb.s";
- mk_brep(outfp, tor_name, torbrep);
- delete torbrep;
+ tmp_internal.idb_ptr = (genptr_t)tor;
+ tmp_internal.idb_meth = &rt_functab[ID_TOR];
+ write_out(outfp, &tmp_internal, "tor", &tol);
- bu_log("Writing an Elliptical Torus b-rep...\n");
- ON_Brep* etobrep = ON_Brep::New();
+ bu_log("ETO\n");
struct rt_eto_internal *eto;
BU_GETSTRUCT(eto, rt_eto_internal);
eto->eto_magic = RT_ETO_INTERNAL_MAGIC;
@@ -443,15 +404,11 @@
VMOVE(eto->eto_C, a);
eto->eto_r = 800;
eto->eto_rd = 100;
- tmp_internal->idb_ptr = (genptr_t)eto;
- tmp_internal->idb_meth = &rt_functab[ID_ETO];
- tmp_internal->idb_meth->ft_brep(&etobrep, tmp_internal, tol);
- const char* eto_name = "eto_nurb.s";
- mk_brep(outfp, eto_name, etobrep);
- delete etobrep;
+ tmp_internal.idb_ptr = (genptr_t)eto;
+ tmp_internal.idb_meth = &rt_functab[ID_ETO];
+ write_out(outfp, &tmp_internal, "eto", &tol);
- bu_log("Writing a Pipe b-rep...\n");
- ON_Brep* pipebrep = ON_Brep::New();
+ bu_log("PIPE\n");
struct wdb_pipept pipe1[] = {
{
{(long)WDB_PIPESEG_MAGIC, 0, 0},
@@ -484,15 +441,11 @@
for (int i=0; i<pipe1_npts; i++) {
BU_LIST_INSERT(&pipe->pipe_segs_head, &pipe1[i].l);
}
- tmp_internal->idb_ptr = (genptr_t)pipe;
- tmp_internal->idb_meth = &rt_functab[ID_PIPE];
- tmp_internal->idb_meth->ft_brep(&pipebrep, tmp_internal, tol);
- const char* pipe_name = "pipe_nurb.s";
- mk_brep(outfp, pipe_name, pipebrep);
-// delete pipebrep;
+ tmp_internal.idb_ptr = (genptr_t)pipe;
+ tmp_internal.idb_meth = &rt_functab[ID_PIPE];
+ write_out(outfp, &tmp_internal, "pipe", &tol);
- bu_log("Writing a Sketch (non-solid) b-rep...\n");
- ON_Brep* sketchbrep = ON_Brep::New();
+ bu_log("SKETCH\n");
struct rt_sketch_internal *skt;
struct bezier_seg *bsg;
struct line_seg *lsg;
@@ -577,18 +530,16 @@
skt->skt_curve.segments[5] = (genptr_t)csg;
- tmp_internal->idb_ptr = (genptr_t)skt;
- tmp_internal->idb_meth = &rt_functab[ID_SKETCH];
- tmp_internal->idb_meth->ft_brep(&sketchbrep, tmp_internal, tol);
- const char* sketch_name = "sketch_nurb.s";
- mk_brep(outfp, sketch_name, sketchbrep);
- //delete sketchbrep;
+ tmp_internal.idb_ptr = (genptr_t)skt;
+ tmp_internal.idb_meth = &rt_functab[ID_SKETCH];
+ write_out(outfp, &tmp_internal, "sketch", &tol);
- const char* sketch_name_csg = "sketch.s";
- mk_sketch(outfp, sketch_name_csg, skt);
+ /* !!! clean up calloc memory */
- bu_log("Writing an Extrude b-rep...\n");
- ON_Brep* extrudebrep = ON_Brep::New();
+ /* !!! wot? */
+ mk_sketch(outfp, "sketch", skt);
+
+ bu_log("EXTRUDE\n");
// extrude will need its own sketch
struct rt_sketch_internal *eskt;
struct bezier_seg *ebsg;
@@ -669,7 +620,7 @@
ecsg->end = 5;
eskt->skt_curve.segments[5] = (genptr_t)ecsg;
- // now to the actual extrusion
+ // now to the actual extrusion
struct rt_extrude_internal *extrude;
BU_GETSTRUCT(extrude, rt_extrude_internal);
extrude->magic = RT_EXTRUDE_INTERNAL_MAGIC;
@@ -682,16 +633,12 @@
const char* esketch_name = "esketch_nurb.s";
extrude->sketch_name = bu_strdup(esketch_name);
extrude->skt = eskt;
- tmp_internal->idb_ptr = (genptr_t)extrude;
- tmp_internal->idb_meth = &rt_functab[ID_EXTRUDE];
- tmp_internal->idb_meth->ft_brep(&extrudebrep, tmp_internal, tol);
- const char* extrude_name = "extrude_nurb.s";
- mk_brep(outfp, extrude_name, extrudebrep);
-// delete extrudebrep;
+ tmp_internal.idb_ptr = (genptr_t)extrude;
+ tmp_internal.idb_meth = &rt_functab[ID_EXTRUDE];
+ write_out(outfp, &tmp_internal, "extrude", &tol);
- bu_log("Writing a Revolve b-rep...\n");
- ON_Brep* revolvebrep = ON_Brep::New();
+ bu_log("REVOLVE\n");
// revolve will need its own sketch
struct rt_sketch_internal *rskt;
struct bezier_seg *rbsg;
@@ -772,7 +719,7 @@
rcsg->end = 5;
rskt->skt_curve.segments[5] = (genptr_t)rcsg;
- // now to the actual revolve
+ // now to the actual revolve
struct rt_revolve_internal *revolve;
BU_GETSTRUCT(revolve, rt_revolve_internal);
revolve->magic = RT_REVOLVE_INTERNAL_MAGIC;
@@ -781,21 +728,16 @@
VMOVE(revolve->v3d, V);
VMOVE(revolve->axis3d, h);
revolve->sk = rskt;
- tmp_internal->idb_ptr = (genptr_t)revolve;
- tmp_internal->idb_meth = &rt_functab[ID_REVOLVE];
- tmp_internal->idb_meth->ft_brep(&revolvebrep, tmp_internal, tol);
- const char* revolve_name = "revolve_nurb.s";
- mk_brep(outfp, revolve_name, revolvebrep);
-// delete revolvebrep;
+ tmp_internal.idb_ptr = (genptr_t)revolve;
+ tmp_internal.idb_meth = &rt_functab[ID_REVOLVE];
+ write_out(outfp, &tmp_internal, "revolve", &tol);
-/*
- bu_log("Writing a DSP b-rep...\n");
- ON_Brep* dspbrep = ON_Brep::New();
+ bu_log("DSP\n");
struct rt_dsp_internal *dsp;
BU_GETSTRUCT(dsp, rt_dsp_internal);
dsp->magic = RT_DSP_INTERNAL_MAGIC;
bu_vls_init(&(dsp->dsp_name));
- bu_vls_printf(&(dsp->dsp_name), "./terra.dsp");
+ bu_vls_printf(&(dsp->dsp_name), "data.dsp");
dsp->dsp_xcnt = 256;
dsp->dsp_ycnt = 256;
dsp->dsp_smooth = 1;
@@ -803,14 +745,11 @@
dsp->dsp_datasrc = RT_DSP_SRC_FILE;
MAT_IDN(dsp->dsp_mtos);
MAT_IDN(dsp->dsp_stom);
- tmp_internal->idb_ptr = (genptr_t)dsp;
- tmp_internal->idb_meth = &rt_functab[ID_DSP];
- tmp_internal->idb_meth->ft_brep(&dspbrep, tmp_internal, tol);
- const char* dsp_name = "dsp_nurb.s";
- mk_brep(outfp, dsp_name, dspbrep);
- delete dspbrep;
-*/
- bu_free(tmp_internal, "free tmp_internal");
+ tmp_internal.idb_ptr = (genptr_t)dsp;
+ tmp_internal.idb_meth = &rt_functab[ID_DSP];
+ write_out(outfp, &tmp_internal, "dsp", &tol);
+
+ /* clean up */
wdb_close(outfp);
ON::End();
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
------------------------------------------------------------------------------
BlackBerry® DevCon Americas, Oct. 18-20, San Francisco, CA
The must-attend event for mobile developers. Connect with experts.
Get tools for creating Super Apps. See the latest technologies.
Sessions, hands-on labs, demos & much more. Register early & save!
http://p.sf.net/sfu/rim-blackberry-1
_______________________________________________
BRL-CAD Source Commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/brlcad-commits