Thread: [brlcad-commits] SF.net SVN: brlcad:[31857] brlcad/trunk
Open Source Solid Modeling CAD
Brought to you by:
brlcad
From: <bo...@us...> - 2008-07-17 11:43:03
|
Revision: 31857 http://brlcad.svn.sourceforge.net/brlcad/?rev=31857&view=rev Author: bob1961 Date: 2008-07-17 11:41:36 +0000 (Thu, 17 Jul 2008) Log Message: ----------- Added the following commands to libged: isize, keypoint, lookat, m2v_point, model2view, orient, perspective, pmat, pmodel2view, pov, rmat, rot_point, rotate_about, scale, setview, v2m_point, view2model, viewdir, c, cat, color and prcolor. Modified Paths: -------------- brlcad/trunk/include/ged.h brlcad/trunk/misc/win32-msvc8/libged/libged.vcproj brlcad/trunk/src/libged/Makefile.am brlcad/trunk/src/libged/autoview.c brlcad/trunk/src/libged/center.c brlcad/trunk/src/libged/ged.c brlcad/trunk/src/libged/size.c brlcad/trunk/src/libged/vutil.c brlcad/trunk/src/libtclcad/ged_obj.c Added Paths: ----------- brlcad/trunk/src/libged/cat.c brlcad/trunk/src/libged/color.c brlcad/trunk/src/libged/comb_std.c brlcad/trunk/src/libged/isize.c brlcad/trunk/src/libged/keypoint.c brlcad/trunk/src/libged/lookat.c brlcad/trunk/src/libged/m2v_point.c brlcad/trunk/src/libged/model2view.c brlcad/trunk/src/libged/orient.c brlcad/trunk/src/libged/pmat.c brlcad/trunk/src/libged/pmodel2view.c brlcad/trunk/src/libged/pov.c brlcad/trunk/src/libged/prcolor.c brlcad/trunk/src/libged/rot_point.c brlcad/trunk/src/libged/rotate_about.c brlcad/trunk/src/libged/scale.c brlcad/trunk/src/libged/setview.c brlcad/trunk/src/libged/v2m_point.c brlcad/trunk/src/libged/view2model.c brlcad/trunk/src/libged/viewdir.c Modified: brlcad/trunk/include/ged.h =================================================================== --- brlcad/trunk/include/ged.h 2008-07-17 10:03:06 UTC (rev 31856) +++ brlcad/trunk/include/ged.h 2008-07-17 11:41:36 UTC (rev 31857) @@ -236,7 +236,7 @@ struct bu_list l; fastf_t gv_scale; fastf_t gv_size; /**< @brief 2.0 * scale */ - fastf_t gv_invSize; /**< @brief 1.0 / size */ + fastf_t gv_isize; /**< @brief 1.0 / size */ fastf_t gv_perspective; /**< @brief perspective angle */ vect_t gv_aet; vect_t gv_eye_pos; /**< @brief eye position */ @@ -1020,14 +1020,30 @@ GED_EXPORT BU_EXTERN(int ged_bot_face_sort, (struct ged *gedp, int argc, const char *argv[])); /** - * Get or set the view center + * List attributes (brief). * * Usage: + * cat <objects> + */ +GED_EXPORT BU_EXTERN(int ged_cat, (struct ged *gedp, int argc, const char *argv[])); + +/** + * Get or set the view center. + * + * Usage: * center ["x y z"] */ GED_EXPORT BU_EXTERN(int ged_center, (struct ged *gedp, int argc, const char *argv[])); /** + * Make color entry. + * + * Usage: + * color low high r g b + */ +GED_EXPORT BU_EXTERN(int ged_color, (struct ged *gedp, int argc, const char *argv[])); + +/** * Set combination color. * * Usage: @@ -1036,6 +1052,14 @@ GED_EXPORT BU_EXTERN(int ged_comb_color, (struct ged *gedp, int argc, const char *argv[])); /** + * Create or extend a combination using standard notation. + * + * Usage: + * c [-cr] comb_name <boolean_expr> + */ +GED_EXPORT BU_EXTERN(int ged_comb_std, (struct ged *gedp, int argc, const char *argv[])); + +/** * Convert a direction vector to az/el. * * Usage: @@ -1166,6 +1190,14 @@ GED_EXPORT BU_EXTERN(int ged_illum, (struct ged *gedp, int argc, const char *argv[])); /** + * Returns the inverse view size. + * + * Usage: + * isize + */ +GED_EXPORT BU_EXTERN(int ged_isize, (struct ged *gedp, int argc, const char *argv[])); + +/** * Set region ident codes. * * Usage: @@ -1174,6 +1206,14 @@ GED_EXPORT BU_EXTERN(int ged_item, (struct ged *gedp, int argc, const char *argv[])); /** + * Set/get the keypoint + * + * Usage: + * keypoint [x y z] + */ +GED_EXPORT BU_EXTERN(int ged_keypoint, (struct ged *gedp, int argc, const char *argv[])); + +/** * List object information, verbose. * * Usage: @@ -1190,6 +1230,14 @@ GED_EXPORT BU_EXTERN(int ged_log, (struct ged *gedp, int argc, const char *argv[])); /** + * Set the look-at point + * + * Usage: + * lookat x y z + */ +GED_EXPORT BU_EXTERN(int ged_lookat, (struct ged *gedp, int argc, const char *argv[])); + +/** * List the objects in this database * * Usage: @@ -1198,6 +1246,14 @@ GED_EXPORT BU_EXTERN(int ged_ls, (struct ged *gedp, int argc, const char *argv[])); /** + * Convert the specified model point to a view point. + * + * Usage: + * m2v_point x y z + */ +GED_EXPORT BU_EXTERN(int ged_m2v_point, (struct ged *gedp, int argc, const char *argv[])); + +/** * Make a new primitive. * * Usage: @@ -1231,6 +1287,14 @@ GED_EXPORT BU_EXTERN(int ged_mirror, (struct ged *gedp, int argc, const char *argv[])); /** + * Get the model to view matrix + * + * Usage: + * model2view + */ +GED_EXPORT BU_EXTERN(int ged_model2view, (struct ged *gedp, int argc, const char *argv[])); + +/** * Rotate the view. Note - x, y and z are rotations in model coordinates. * * Usage: @@ -1256,6 +1320,14 @@ GED_EXPORT BU_EXTERN(int ged_ocenter, (struct ged *gedp, int argc, const char *argv[])); /** + * Set the view orientation using a quaternion. + * + * Usage: + * orient quat + */ +GED_EXPORT BU_EXTERN(int ged_orient, (struct ged *gedp, int argc, const char *argv[])); + +/** * Rotate obj about the keypoint by * * Usage: @@ -1296,6 +1368,46 @@ GED_EXPORT BU_EXTERN(int ged_pathsum, (struct ged *gedp, int argc, const char *argv[])); /** + * Set/get the perspective angle. + * + * Usage: + * perspective [angle] + */ +GED_EXPORT BU_EXTERN(int ged_perspective, (struct ged *gedp, int argc, const char *argv[])); + +/** + * Set/get the perspective matrix. + * + * Usage: + * pmat [mat] + */ +GED_EXPORT BU_EXTERN(int ged_pmat, (struct ged *gedp, int argc, const char *argv[])); + +/** + * Get the pmodel2view matrix. + * + * Usage: + * pmodel2view + */ +GED_EXPORT BU_EXTERN(int ged_pmodel2view, (struct ged *gedp, int argc, const char *argv[])); + +/** + * Set point of view + * + * Usage: + * pov center quat scale eye_pos perspective + */ +GED_EXPORT BU_EXTERN(int ged_pov, (struct ged *gedp, int argc, const char *argv[])); + +/** + * Print color table + * + * Usage: + * prcolor + */ +GED_EXPORT BU_EXTERN(int ged_prcolor, (struct ged *gedp, int argc, const char *argv[])); + +/** * Create a database object * * Usage: @@ -1325,6 +1437,14 @@ GED_EXPORT BU_EXTERN(int ged_report, (struct ged *gedp, int argc, const char *argv[])); /** + * Set/get the rotation matrix. + * + * Usage: + * rmat [mat] + */ +GED_EXPORT BU_EXTERN(int ged_rmat, (struct ged *gedp, int argc, const char *argv[])); + +/** * Read material properties from a file. * * Usage: @@ -1341,6 +1461,22 @@ GED_EXPORT BU_EXTERN(int ged_rot, (struct ged *gedp, int argc, const char *argv[])); /** + * Set/get the rotate_about point. + * + * Usage: + * rotate_about [e|k|m|v] + */ +GED_EXPORT BU_EXTERN(int ged_rotate_about, (struct ged *gedp, int argc, const char *argv[])); + +/** + * Rotate the point. + * + * Usage: + * rot_point x y z + */ +GED_EXPORT BU_EXTERN(int ged_rot_point, (struct ged *gedp, int argc, const char *argv[])); + +/** * Run the raytracing application. * * Usage: @@ -1349,6 +1485,14 @@ GED_EXPORT BU_EXTERN(int ged_rt, (struct ged *gedp, int argc, const char *argv[])); /** + * Scale the view. + * + * Usage: + * sca sf + */ +GED_EXPORT BU_EXTERN(int ged_scale, (struct ged *gedp, int argc, const char *argv[])); + +/** * Get/set the output handler script * * Usage: @@ -1373,6 +1517,14 @@ GED_EXPORT BU_EXTERN(int ged_set_transparency, (struct ged *gedp, int argc, const char *argv[])); /** + * Set the view orientation given the angles x, y and z in degrees. + * + * Usage: + * setview x y z + */ +GED_EXPORT BU_EXTERN(int ged_setview, (struct ged *gedp, int argc, const char *argv[])); + +/** * Simpler, command-line version of 'mater' command. * * Usage: @@ -1392,7 +1544,7 @@ * Slew the view * * Usage: - * slew x y z + * slew x y [z] */ GED_EXPORT BU_EXTERN(int ged_slew, (struct ged *gedp, int argc, const char *argv[])); @@ -1413,6 +1565,22 @@ GED_EXPORT BU_EXTERN(int ged_tree, (struct ged *gedp, int argc, const char *argv[])); /** + * Convert the specified view point to a model point. + * + * Usage: + * v2m_point x y z + */ +GED_EXPORT BU_EXTERN(int ged_v2m_point, (struct ged *gedp, int argc, const char *argv[])); + +/** + * Get the view2model matrix. + * + * Usage: + * view2model + */ +GED_EXPORT BU_EXTERN(int ged_view2model, (struct ged *gedp, int argc, const char *argv[])); + +/** * Rotate the view. Note - x, y and z are rotations in view coordinates. * * Usage: @@ -1421,6 +1589,14 @@ GED_EXPORT BU_EXTERN(int ged_vrot, (struct ged *gedp, int argc, const char *argv[])); /** + * Return the view direction. + * + * Usage: + * viewdir [-i] + */ +GED_EXPORT BU_EXTERN(int ged_viewdir, (struct ged *gedp, int argc, const char *argv[])); + +/** * List the objects currently prepped for drawing * * Usage: Modified: brlcad/trunk/misc/win32-msvc8/libged/libged.vcproj =================================================================== --- brlcad/trunk/misc/win32-msvc8/libged/libged.vcproj 2008-07-17 10:03:06 UTC (rev 31856) +++ brlcad/trunk/misc/win32-msvc8/libged/libged.vcproj 2008-07-17 11:41:36 UTC (rev 31857) @@ -174,14 +174,26 @@ > </File> <File + RelativePath="..\..\..\src\libged\cat.c" + > + </File> + <File RelativePath="..\..\..\src\libged\center.c" > </File> <File + RelativePath="..\..\..\src\libged\color.c" + > + </File> + <File RelativePath="..\..\..\src\libged\comb_color.c" > </File> <File + RelativePath="..\..\..\src\libged\comb_std.c" + > + </File> + <File RelativePath="..\..\..\src\libged\dg_obj.c" > </File> @@ -262,10 +274,18 @@ > </File> <File + RelativePath="..\..\..\src\libged\isize.c" + > + </File> + <File RelativePath="..\..\..\src\libged\item.c" > </File> <File + RelativePath="..\..\..\src\libged\keypoint.c" + > + </File> + <File RelativePath="..\..\..\src\libged\list.c" > </File> @@ -274,10 +294,18 @@ > </File> <File + RelativePath="..\..\..\src\libged\lookat.c" + > + </File> + <File RelativePath="..\..\..\src\libged\ls.c" > </File> <File + RelativePath="..\..\..\src\libged\m2v_point.c" + > + </File> + <File RelativePath="..\..\..\src\libged\make.c" > </File> @@ -294,6 +322,10 @@ > </File> <File + RelativePath="..\..\..\src\libged\model2view.c" + > + </File> + <File RelativePath="..\..\..\src\libged\mrot.c" > </File> @@ -306,6 +338,10 @@ > </File> <File + RelativePath="..\..\..\src\libged\orient.c" + > + </File> + <File RelativePath="..\..\..\src\libged\orotate.c" > </File> @@ -326,6 +362,26 @@ > </File> <File + RelativePath="..\..\..\src\libged\perspective.c" + > + </File> + <File + RelativePath="..\..\..\src\libged\pmat.c" + > + </File> + <File + RelativePath="..\..\..\src\libged\pmodel2view.c" + > + </File> + <File + RelativePath="..\..\..\src\libged\pov.c" + > + </File> + <File + RelativePath="..\..\..\src\libged\prcolor.c" + > + </File> + <File RelativePath="..\..\..\src\libged\put.c" > </File> @@ -338,6 +394,10 @@ > </File> <File + RelativePath="..\..\..\src\libged\rmat.c" + > + </File> + <File RelativePath="..\..\..\src\libged\rmater.c" > </File> @@ -346,10 +406,22 @@ > </File> <File + RelativePath="..\..\..\src\libged\rot_point.c" + > + </File> + <File + RelativePath="..\..\..\src\libged\rotate_about.c" + > + </File> + <File RelativePath="..\..\..\src\libged\rt.c" > </File> <File + RelativePath="..\..\..\src\libged\scale.c" + > + </File> + <File RelativePath="..\..\..\src\libged\set_outputHandler.c" > </File> @@ -362,6 +434,10 @@ > </File> <File + RelativePath="..\..\..\src\libged\setview.c" + > + </File> + <File RelativePath="..\..\..\src\libged\shader.c" > </File> @@ -390,6 +466,10 @@ > </File> <File + RelativePath="..\..\..\src\libged\v2m_point.c" + > + </File> + <File RelativePath="..\..\..\src\libged\vdraw.c" > </File> @@ -398,6 +478,14 @@ > </File> <File + RelativePath="..\..\..\src\libged\view2model.c" + > + </File> + <File + RelativePath="..\..\..\src\libged\viewdir.c" + > + </File> + <File RelativePath="..\..\..\src\libged\vrot.c" > </File> Modified: brlcad/trunk/src/libged/Makefile.am =================================================================== --- brlcad/trunk/src/libged/Makefile.am 2008-07-17 10:03:06 UTC (rev 31856) +++ brlcad/trunk/src/libged/Makefile.am 2008-07-17 11:41:36 UTC (rev 31857) @@ -15,8 +15,11 @@ blast.c \ bot_decimate.c \ bot_face_sort.c \ + cat.c \ center.c \ + color.c \ comb_color.c \ + comb_std.c \ dg_obj.c \ dir2ae.c \ draw.c \ @@ -37,31 +40,47 @@ how.c \ importFg4Section.c \ illum.c \ + isize.c \ item.c \ + keypoint.c \ list.c \ log.c \ + lookat.c \ ls.c \ + m2v_point.c \ make.c \ make_name.c \ mater.c \ mirror.c \ + model2view.c \ mrot.c \ nirt.c \ ocenter.c \ + orient.c \ orotate.c \ oscale.c \ otranslate.c \ overlay.c \ pathsum.c \ + perspective.c \ + pmat.c \ + pmodel2view.c \ + pov.c \ + prcolor.c \ put.c \ qray.c \ report.c \ + rmat.c \ rmater.c \ rot.c \ + rot_point.c \ + rotate_about.c \ rt.c \ + scale.c \ set_outputHandler.c \ set_transparency.c \ set_uplotOutputMode.c \ + setview.c \ shader.c \ size.c \ slew.c \ @@ -69,8 +88,11 @@ trace.c \ track.c \ tree.c \ + v2m_point.c \ vdraw.c \ view_obj.c \ + view2model.c \ + viewdir.c \ vrot.c \ vutil.c \ wdb_comb_std.c \ Modified: brlcad/trunk/src/libged/autoview.c =================================================================== --- brlcad/trunk/src/libged/autoview.c 2008-07-17 10:03:06 UTC (rev 31856) +++ brlcad/trunk/src/libged/autoview.c 2008-07-17 11:41:36 UTC (rev 31857) @@ -96,7 +96,7 @@ V_MAX(gedp->ged_gvp->gv_scale, radial[Z]); gedp->ged_gvp->gv_size = 2.0 * gedp->ged_gvp->gv_scale; - gedp->ged_gvp->gv_invSize = 1.0 / gedp->ged_gvp->gv_size; + gedp->ged_gvp->gv_isize = 1.0 / gedp->ged_gvp->gv_size; ged_view_update(gedp->ged_gvp); return BRLCAD_OK; Added: brlcad/trunk/src/libged/cat.c =================================================================== --- brlcad/trunk/src/libged/cat.c (rev 0) +++ brlcad/trunk/src/libged/cat.c 2008-07-17 11:41:36 UTC (rev 31857) @@ -0,0 +1,79 @@ +/* C A T . C + * BRL-CAD + * + * Copyright (c) 2008 United States Government as represented by + * the U.S. Army Research Laboratory. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * version 2.1 as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this file; see the file named COPYING for more + * information. + */ +/** @file cat.c + * + * The cat command. + * + */ + +#include "common.h" + +#include <string.h> + +#include "bio.h" +#include "cmd.h" +#include "ged_private.h" + +int +ged_cat(struct ged *gedp, int argc, const char *argv[]) +{ + register struct directory *dp; + register int arg; + static const char *usage = "<objects>"; + + GED_CHECK_DATABASE_OPEN(gedp, BRLCAD_ERROR); + + /* initialize result */ + bu_vls_trunc(&gedp->ged_result_str, 0); + gedp->ged_result = GED_RESULT_NULL; + gedp->ged_result_flags = 0; + + /* must be wanting help */ + if (argc == 1) { + gedp->ged_result_flags |= GED_RESULT_FLAGS_HELP_BIT; + bu_vls_printf(&gedp->ged_result_str, "Usage: %s %s", argv[0], usage); + return BRLCAD_OK; + } + + if (argc < 2 || MAXARGS < argc) { + bu_vls_printf(&gedp->ged_result_str, "Usage: %s %s", argv[0], usage); + return BRLCAD_ERROR; + } + + for (arg = 1; arg < argc; arg++) { + if ((dp = db_lookup(gedp->ged_wdbp->dbip, argv[arg], LOOKUP_NOISY)) == DIR_NULL) + continue; + + ged_do_list(gedp, dp, 0); /* non-verbose */ + } + + return BRLCAD_OK; +} + + +/* + * Local Variables: + * tab-width: 8 + * mode: C + * indent-tabs-mode: t + * c-file-style: "stroustrup" + * End: + * ex: shiftwidth=4 tabstop=8 + */ Property changes on: brlcad/trunk/src/libged/cat.c ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:eol-style + native Modified: brlcad/trunk/src/libged/center.c =================================================================== --- brlcad/trunk/src/libged/center.c 2008-07-17 10:03:06 UTC (rev 31856) +++ brlcad/trunk/src/libged/center.c 2008-07-17 11:41:36 UTC (rev 31857) @@ -36,9 +36,8 @@ ged_center(struct ged *gedp, int argc, const char *argv[]) { point_t center; + static const char *usage = "[x y z]"; - static const char *usage = "[\"x y z\"]"; - GED_CHECK_DATABASE_OPEN(gedp, BRLCAD_ERROR); GED_CHECK_VIEW(gedp, BRLCAD_ERROR); @@ -56,39 +55,39 @@ return BRLCAD_OK; } + if (argc != 2 && argc != 4) { + bu_vls_printf(&gedp->ged_result_str, "Usage: %s %s", argv[0], usage); + return BRLCAD_ERROR; + } + /* set view center */ - if (argc == 2 || argc == 4) { - if (argc == 2) { - if (bn_decode_vect(center, argv[1]) != 3) { - bu_vls_printf(&gedp->ged_result_str, "Usage: %s %s", argv[0], usage); - return BRLCAD_ERROR; - } - } else { - if (sscanf(argv[1], "%lf", ¢er[X]) != 1) { - bu_vls_printf(&gedp->ged_result_str, "ged_center: bad X value - %s\n", argv[1]); - return BRLCAD_ERROR; - } + if (argc == 2) { + if (bn_decode_vect(center, argv[1]) != 3) { + bu_vls_printf(&gedp->ged_result_str, "Usage: %s %s", argv[0], usage); + return BRLCAD_ERROR; + } + } else { + if (sscanf(argv[1], "%lf", ¢er[X]) != 1) { + bu_vls_printf(&gedp->ged_result_str, "ged_center: bad X value - %s\n", argv[1]); + return BRLCAD_ERROR; + } - if (sscanf(argv[2], "%lf", ¢er[Y]) != 1) { - bu_vls_printf(&gedp->ged_result_str, "ged_center: bad Y value - %s\n", argv[2]); - return BRLCAD_ERROR; - } - - if (sscanf(argv[3], "%lf", ¢er[Z]) != 1) { - bu_vls_printf(&gedp->ged_result_str, "ged_center: bad Z value - %s\n", argv[3]); - return BRLCAD_ERROR; - } + if (sscanf(argv[2], "%lf", ¢er[Y]) != 1) { + bu_vls_printf(&gedp->ged_result_str, "ged_center: bad Y value - %s\n", argv[2]); + return BRLCAD_ERROR; } - VSCALE(center, center, gedp->ged_wdbp->dbip->dbi_local2base); - MAT_DELTAS_VEC_NEG(gedp->ged_gvp->gv_center, center); - ged_view_update(gedp->ged_gvp); - - return BRLCAD_OK; + if (sscanf(argv[3], "%lf", ¢er[Z]) != 1) { + bu_vls_printf(&gedp->ged_result_str, "ged_center: bad Z value - %s\n", argv[3]); + return BRLCAD_ERROR; + } } - bu_vls_printf(&gedp->ged_result_str, "Usage: %s %s", argv[0], usage); - return BRLCAD_ERROR; + VSCALE(center, center, gedp->ged_wdbp->dbip->dbi_local2base); + MAT_DELTAS_VEC_NEG(gedp->ged_gvp->gv_center, center); + ged_view_update(gedp->ged_gvp); + + return BRLCAD_OK; } Added: brlcad/trunk/src/libged/color.c =================================================================== --- brlcad/trunk/src/libged/color.c (rev 0) +++ brlcad/trunk/src/libged/color.c 2008-07-17 11:41:36 UTC (rev 31857) @@ -0,0 +1,211 @@ +/* C O L O R . C + * BRL-CAD + * + * Copyright (c) 2008 United States Government as represented by + * the U.S. Army Research Laboratory. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * version 2.1 as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this file; see the file named COPYING for more + * information. + */ +/** @file color.c + * + * The color command. + * + */ + +#include "common.h" + +#include <stdlib.h> +#include <ctype.h> +#include <string.h> + +#include "ged.h" +#include "db.h" +#include "mater.h" + +static void +ged_color_putrec(register struct mater *mp, + struct ged *gedp); +static void +ged_color_zaprec(register struct mater *mp, + struct ged *gedp); + + +int +ged_color(struct ged *gedp, int argc, const char *argv[]) +{ + register struct mater *newp; + register struct mater *mp; + register struct mater *next_mater; + static const char *usage = "low high r g b"; + + GED_CHECK_DATABASE_OPEN(gedp, BRLCAD_ERROR); + GED_CHECK_READ_ONLY(gedp, BRLCAD_ERROR); + + /* initialize result */ + bu_vls_trunc(&gedp->ged_result_str, 0); + gedp->ged_result = GED_RESULT_NULL; + gedp->ged_result_flags = 0; + + /* must be wanting help */ + if (argc == 1) { + gedp->ged_result_flags |= GED_RESULT_FLAGS_HELP_BIT; + bu_vls_printf(&gedp->ged_result_str, "Usage: %s %s", argv[0], usage); + return BRLCAD_OK; + } + + if (argc != 6) { + bu_vls_printf(&gedp->ged_result_str, "Usage: %s %s", argv[0], usage); + return BRLCAD_ERROR; + } + + if (gedp->ged_wdbp->dbip->dbi_version < 5) { + /* Delete all color records from the database */ + mp = rt_material_head(); + while (mp != MATER_NULL) { + next_mater = mp->mt_forw; + ged_color_zaprec(mp, gedp); + mp = next_mater; + } + + /* construct the new color record */ + BU_GETSTRUCT(newp, mater); + newp->mt_low = atoi(argv[1]); + newp->mt_high = atoi(argv[2]); + newp->mt_r = atoi(argv[3]); + newp->mt_g = atoi(argv[4]); + newp->mt_b = atoi(argv[5]); + newp->mt_daddr = MATER_NO_ADDR; /* not in database yet */ + + /* Insert new color record in the in-memory list */ + rt_insert_color(newp); + + /* Write new color records for all colors in the list */ + mp = rt_material_head(); + while (mp != MATER_NULL) { + next_mater = mp->mt_forw; + ged_color_putrec(mp, gedp); + mp = next_mater; + } + } else { + struct bu_vls colors; + + /* construct the new color record */ + BU_GETSTRUCT(newp, mater); + newp->mt_low = atoi(argv[1]); + newp->mt_high = atoi(argv[2]); + newp->mt_r = atoi(argv[3]); + newp->mt_g = atoi(argv[4]); + newp->mt_b = atoi(argv[5]); + newp->mt_daddr = MATER_NO_ADDR; /* not in database yet */ + + /* Insert new color record in the in-memory list */ + rt_insert_color(newp); + + /* + * Gather color records from the in-memory list to build + * the _GLOBAL objects regionid_colortable attribute. + */ + bu_vls_init(&colors); + rt_vls_color_map(&colors); + + db5_update_attribute("_GLOBAL", "regionid_colortable", bu_vls_addr(&colors), gedp->ged_wdbp->dbip); + bu_vls_free(&colors); + } + + return BRLCAD_OK; +} + + +/** + * G E D _ C O L O R _ P U T R E C + *@brief + * Used to create a database record and get it written out to a granule. + * In some cases, storage will need to be allocated. + */ +static void +ged_color_putrec(register struct mater *mp, + struct ged *gedp) +{ + struct directory dir; + union record rec; + + /* we get here only if database is NOT read-only */ + + rec.md.md_id = ID_MATERIAL; + rec.md.md_low = mp->mt_low; + rec.md.md_hi = mp->mt_high; + rec.md.md_r = mp->mt_r; + rec.md.md_g = mp->mt_g; + rec.md.md_b = mp->mt_b; + + /* Fake up a directory entry for db_* routines */ + RT_DIR_SET_NAMEP( &dir, "color_putrec" ); + dir.d_magic = RT_DIR_MAGIC; + dir.d_flags = 0; + + if (mp->mt_daddr == MATER_NO_ADDR) { + /* Need to allocate new database space */ + if (db_alloc(gedp->ged_wdbp->dbip, &dir, 1) < 0) { + bu_vls_printf(&gedp->ged_result_str, "Database alloc error, aborting"); + return; + } + mp->mt_daddr = dir.d_addr; + } else { + dir.d_addr = mp->mt_daddr; + dir.d_len = 1; + } + + if (db_put(gedp->ged_wdbp->dbip, &dir, &rec, 0, 1) < 0) { + bu_vls_printf(&gedp->ged_result_str, "Database write error, aborting"); + return; + } +} + +/** + * W D B _ C O L O R _ Z A P R E C + *@brief + * Used to release database resources occupied by a material record. + */ +static void +ged_color_zaprec(register struct mater *mp, + struct ged *gedp) +{ + struct directory dir; + + /* we get here only if database is NOT read-only */ + if (mp->mt_daddr == MATER_NO_ADDR) + return; + + dir.d_magic = RT_DIR_MAGIC; + RT_DIR_SET_NAMEP( &dir, "color_zaprec" ); + dir.d_len = 1; + dir.d_addr = mp->mt_daddr; + dir.d_flags = 0; + + if (db_delete(gedp->ged_wdbp->dbip, &dir) < 0) { + bu_vls_printf(&gedp->ged_result_str, "Database delete error, aborting"); + return; + } + mp->mt_daddr = MATER_NO_ADDR; +} + +/* + * Local Variables: + * tab-width: 8 + * mode: C + * indent-tabs-mode: t + * c-file-style: "stroustrup" + * End: + * ex: shiftwidth=4 tabstop=8 + */ Property changes on: brlcad/trunk/src/libged/color.c ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:eol-style + native Added: brlcad/trunk/src/libged/comb_std.c =================================================================== --- brlcad/trunk/src/libged/comb_std.c (rev 0) +++ brlcad/trunk/src/libged/comb_std.c 2008-07-17 11:41:36 UTC (rev 31857) @@ -0,0 +1,730 @@ +/* C O M B _ S T D . C + * BRL-CAD + * + * Copyright (c) 2008 United States Government as represented by + * the U.S. Army Research Laboratory. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * version 2.1 as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this file; see the file named COPYING for more + * information. + */ +/** @file comb_std.c + * + * The c command. + * + */ + + +#include "common.h" + +#include <stdio.h> +#include <string.h> +#include "bio.h" + +#include "tcl.h" +#include "bu.h" +#include "vmath.h" +#include "rtgeom.h" +#include "ged.h" + + +struct tokens { + struct bu_list l; + short type; + union tree *tp; +}; + +/* token types */ +#define GED_TOK_NULL 0 +#define GED_TOK_LPAREN 1 +#define GED_TOK_RPAREN 2 +#define GED_TOK_UNION 3 +#define GED_TOK_INTER 4 +#define GED_TOK_SUBTR 5 +#define GED_TOK_TREE 6 + +HIDDEN void +ged_free_tokens(struct bu_list *hp) +{ + struct tokens *tok; + + BU_CK_LIST_HEAD(hp); + + while (BU_LIST_WHILE(tok, tokens, hp)) { + BU_LIST_DEQUEUE(&tok->l); + if (tok->type == GED_TOK_TREE) { + if (tok->tp) + db_free_tree(tok->tp, &rt_uniresource); + } + } +} + +HIDDEN void +ged_append_union(struct bu_list *hp) +{ + struct tokens *tok; + + BU_CK_LIST_HEAD( hp ); + + tok = (struct tokens *)bu_malloc(sizeof(struct tokens), "tok"); + tok->type = GED_TOK_UNION; + tok->tp = (union tree *)NULL; + BU_LIST_INSERT(hp, &tok->l); +} + +HIDDEN void +ged_append_inter(struct bu_list *hp) +{ + struct tokens *tok; + + BU_CK_LIST_HEAD(hp); + + tok = (struct tokens *)bu_malloc(sizeof(struct tokens), "tok"); + tok->type = GED_TOK_INTER; + tok->tp = (union tree *)NULL; + BU_LIST_INSERT( hp, &tok->l ); +} + +HIDDEN void +ged_append_subtr(struct bu_list *hp) +{ + struct tokens *tok; + + BU_CK_LIST_HEAD(hp); + + tok = (struct tokens *)bu_malloc(sizeof(struct tokens), "tok"); + tok->type = GED_TOK_SUBTR; + tok->tp = (union tree *)NULL; + BU_LIST_INSERT( hp, &tok->l ); +} + +HIDDEN void +ged_append_lparen(struct bu_list *hp) +{ + struct tokens *tok; + + BU_CK_LIST_HEAD(hp); + + tok = (struct tokens *)bu_malloc(sizeof(struct tokens), "tok"); + tok->type = GED_TOK_LPAREN; + tok->tp = (union tree *)NULL; + BU_LIST_INSERT( hp, &tok->l ); +} + +HIDDEN void +ged_append_rparen(struct bu_list *hp) +{ + struct tokens *tok; + + BU_CK_LIST_HEAD(hp); + + tok = (struct tokens *)bu_malloc(sizeof(struct tokens), "tok"); + tok->type = GED_TOK_RPAREN; + tok->tp = (union tree *)NULL; + BU_LIST_INSERT(hp, &tok->l); +} + +HIDDEN int +ged_add_operator(struct ged *gedp, struct bu_list *hp, char ch, short int *last_tok) +{ + char illegal[2]; + + BU_CK_LIST_HEAD(hp); + + switch ( ch ) + { + case 'u': + ged_append_union(hp); + *last_tok = GED_TOK_UNION; + break; + case '+': + ged_append_inter(hp); + *last_tok = GED_TOK_INTER; + break; + case '-': + ged_append_subtr(hp); + *last_tok = GED_TOK_SUBTR; + break; + default: + illegal[0] = ch; + illegal[1] = '\0'; + bu_vls_printf(&gedp->ged_result_str, "Illegal operator: %s, aborting\n", illegal); + ged_free_tokens(hp); + return BRLCAD_ERROR; + } + return BRLCAD_OK; +} + +HIDDEN int +ged_add_operand(struct ged *gedp, struct bu_list *hp, char *name) +{ + char *ptr_lparen; + char *ptr_rparen; + int name_len; + union tree *node; + struct tokens *tok; + + BU_CK_LIST_HEAD(hp); + + ptr_lparen = strchr(name, '('); + ptr_rparen = strchr(name, ')'); + + RT_GET_TREE( node, &rt_uniresource ); + node->magic = RT_TREE_MAGIC; + node->tr_op = OP_DB_LEAF; + node->tr_l.tl_mat = (matp_t)NULL; + if (ptr_lparen || ptr_rparen) { + int tmp1, tmp2; + + if (ptr_rparen) + tmp1 = ptr_rparen - name; + else + tmp1 = (-1); + if (ptr_lparen) + tmp2 = ptr_lparen - name; + else + tmp2 = (-1); + + if (tmp2 == (-1) && tmp1 > 0) + name_len = tmp1; + else if (tmp1 == (-1) && tmp2 > 0) + name_len = tmp2; + else if (tmp1 > 0 && tmp2 > 0) { + if (tmp1 < tmp2) + name_len = tmp1; + else + name_len = tmp2; + } + else { + bu_vls_printf(&gedp->ged_result_str, "Cannot determine length of operand name: %s, aborting\n", name); + return (0); + } + } else + name_len = strlen( name ); + + node->tr_l.tl_name = (char *)bu_malloc(name_len+1, "node name"); + bu_strlcpy(node->tr_l.tl_name, name, name_len+1); + + tok = (struct tokens *)bu_malloc(sizeof(struct tokens), "tok"); + tok->type = GED_TOK_TREE; + tok->tp = node; + BU_LIST_INSERT(hp, &tok->l); + return (name_len); +} + +HIDDEN void +ged_do_inter(struct bu_list *hp) +{ + struct tokens *tok; + + for (BU_LIST_FOR(tok, tokens, hp )) { + struct tokens *prev, *next; + union tree *tp; + + if (tok->type != GED_TOK_INTER) + continue; + + prev = BU_LIST_PREV( tokens, &tok->l ); + next = BU_LIST_NEXT( tokens, &tok->l ); + + if (prev->type !=GED_TOK_TREE || next->type != GED_TOK_TREE) + continue; + + /* this is an eligible intersection operation */ + tp = (union tree *)bu_malloc( sizeof( union tree ), "tp" ); + tp->magic = RT_TREE_MAGIC; + tp->tr_b.tb_op = OP_INTERSECT; + tp->tr_b.tb_regionp = (struct region *)NULL; + tp->tr_b.tb_left = prev->tp; + tp->tr_b.tb_right = next->tp; + BU_LIST_DEQUEUE( &tok->l ); + bu_free( (char *)tok, "tok" ); + BU_LIST_DEQUEUE( &prev->l ); + bu_free( (char *)prev, "prev" ); + next->tp = tp; + tok = next; + } +} + +HIDDEN void +ged_do_union_subtr(struct bu_list *hp) +{ + struct tokens *tok; + + for (BU_LIST_FOR(tok, tokens, hp)) { + struct tokens *prev, *next; + union tree *tp; + + if (tok->type != GED_TOK_UNION && tok->type != GED_TOK_SUBTR) + continue; + + prev = BU_LIST_PREV( tokens, &tok->l ); + next = BU_LIST_NEXT( tokens, &tok->l ); + + if (prev->type !=GED_TOK_TREE || next->type != GED_TOK_TREE) + continue; + + /* this is an eligible operation */ + tp = (union tree *)bu_malloc( sizeof( union tree ), "tp" ); + tp->magic = RT_TREE_MAGIC; + if (tok->type == GED_TOK_UNION) + tp->tr_b.tb_op = OP_UNION; + else + tp->tr_b.tb_op = OP_SUBTRACT; + tp->tr_b.tb_regionp = (struct region *)NULL; + tp->tr_b.tb_left = prev->tp; + tp->tr_b.tb_right = next->tp; + BU_LIST_DEQUEUE(&tok->l); + bu_free((char *)tok, "tok"); + BU_LIST_DEQUEUE(&prev->l); + bu_free((char *)prev, "prev"); + next->tp = tp; + tok = next; + } +} + +HIDDEN int +ged_do_paren(struct bu_list *hp) +{ + struct tokens *tok; + + for (BU_LIST_FOR(tok, tokens, hp)) { + struct tokens *prev, *next; + + if (tok->type != GED_TOK_TREE) + continue; + + prev = BU_LIST_PREV( tokens, &tok->l ); + next = BU_LIST_NEXT( tokens, &tok->l ); + + if (prev->type !=GED_TOK_LPAREN || next->type != GED_TOK_RPAREN) + continue; + + /* this is an eligible operand surrounded by parens */ + BU_LIST_DEQUEUE(&next->l); + bu_free((char *)next, "next"); + BU_LIST_DEQUEUE(&prev->l); + bu_free((char *)prev, "prev"); + } + + if (hp->forw == hp->back && hp->forw != hp) + return 1; /* done */ + else if (BU_LIST_IS_EMPTY(hp)) + return -1; /* empty tree!!!! */ + else + return 0; /* more to do */ + +} + +HIDDEN union tree * +ged_eval_bool(struct bu_list *hp) +{ + int done=0; + union tree *final_tree; + struct tokens *tok; + + while (done != 1) { + ged_do_inter(hp); + ged_do_union_subtr(hp); + done = ged_do_paren(hp); + } + + if (done == 1) { + tok = BU_LIST_NEXT(tokens, hp); + final_tree = tok->tp; + BU_LIST_DEQUEUE(&tok->l); + bu_free((char *)tok, "tok"); + return(final_tree); + } + + return (union tree *)NULL; +} + +HIDDEN int +ged_check_syntax(struct ged *gedp, struct bu_list *hp, char *comb_name, struct directory *dp) +{ + struct tokens *tok; + int paren_count=0; + int paren_error=0; + int missing_exp=0; + int missing_op=0; + int op_count=0; + int arg_count=0; + int circular_ref=0; + int errors=0; + short last_tok=GED_TOK_NULL; + + for (BU_LIST_FOR(tok, tokens, hp)) { + switch (tok->type) { + case GED_TOK_LPAREN: + paren_count++; + if ( last_tok == GED_TOK_RPAREN ) + missing_op++; + break; + case GED_TOK_RPAREN: + paren_count--; + if ( last_tok == GED_TOK_LPAREN ) + missing_exp++; + break; + case GED_TOK_UNION: + case GED_TOK_SUBTR: + case GED_TOK_INTER: + op_count++; + break; + case GED_TOK_TREE: + arg_count++; + if ( !dp && !strcmp( comb_name, tok->tp->tr_l.tl_name ) ) + circular_ref++; + else if ( db_lookup( gedp->ged_wdbp->dbip, tok->tp->tr_l.tl_name, LOOKUP_QUIET ) == DIR_NULL ) + bu_vls_printf(&gedp->ged_result_str, "WARNING: '%s' does not actually exist\n", tok->tp->tr_l.tl_name); + break; + } + if (paren_count < 0) + paren_error++; + last_tok = tok->type; + } + + if (paren_count || paren_error) { + bu_vls_printf(&gedp->ged_result_str, "ERROR: unbalanced parenthesis\n"); + errors++; + } + + if (missing_exp) { + bu_vls_printf(&gedp->ged_result_str, "ERROR: empty parenthesis (missing expression)\n"); + errors++; + } + + if (missing_op) { + bu_vls_printf(&gedp->ged_result_str, "ERROR: must have operator between ')('\n"); + errors++; + } + + if (op_count != arg_count-1) { + bu_vls_printf(&gedp->ged_result_str, "ERROR: mismatch of operators and operands\n"); + errors++; + } + + if (circular_ref) { + bu_vls_printf(&gedp->ged_result_str, "ERROR: combination cannot reference itself during initial creation\n"); + errors++; + } + + if (errors) { + bu_vls_printf(&gedp->ged_result_str, "\t---------aborting!\n"); + return( 1 ); + } + + return( 0 ); +} + +int +ged_comb_std(struct ged *gedp, int argc, const char *argv[]) +{ + char *comb_name; + int ch; + int region_flag = -1; + register struct directory *dp; + struct rt_db_internal intern; + struct rt_comb_internal *comb = NULL; + struct tokens tok_hd; + struct tokens *tok; + short last_tok; + int i; + union tree *final_tree; + static const char *usage = "[-cr] comb_name <boolean_expr>"; + + GED_CHECK_DATABASE_OPEN(gedp, BRLCAD_ERROR); + GED_CHECK_READ_ONLY(gedp, BRLCAD_ERROR); + + /* initialize result */ + bu_vls_trunc(&gedp->ged_result_str, 0); + gedp->ged_result = GED_RESULT_NULL; + gedp->ged_result_flags = 0; + + if (argc < 3 || RT_MAXARGS < argc) { + bu_vls_printf(&gedp->ged_result_str, "Usage: %s %s", argv[0], usage); + return BRLCAD_ERROR; + } + + /* Parse options */ + bu_optind = 1; /* re-init bu_getopt() */ + while ((ch = bu_getopt(argc, (char * const *)argv, "cgr?")) != EOF) { + switch (ch) { + case 'c': + case 'g': + region_flag = 0; + break; + case 'r': + region_flag = 1; + break; + /* XXX How about -p and -v for FASTGEN? */ + case '?': + default: + bu_vls_printf(&gedp->ged_result_str, "Usage: %s %s", argv[0], usage); + return BRLCAD_OK; + } + } + argc -= (bu_optind + 1); + argv += bu_optind; + + comb_name = (char *)*argv++; + if (argc == -1) { + bu_vls_printf(&gedp->ged_result_str, "Usage: %s %s", argv[0], usage); + return BRLCAD_OK; + } + + if ((region_flag != -1) && (argc == 0)) { + /* + * Set/Reset the REGION flag of an existing combination + */ + if ((dp = db_lookup(gedp->ged_wdbp->dbip, comb_name, LOOKUP_NOISY)) == DIR_NULL) + return BRLCAD_ERROR; + + if (!(dp->d_flags & DIR_COMB)) { + bu_vls_printf(&gedp->ged_result_str, "%s is not a combination\n", comb_name); + return BRLCAD_ERROR; + } + + if (rt_db_get_internal(&intern, dp, gedp->ged_wdbp->dbip, (fastf_t *)NULL, &rt_uniresource) < 0) { + bu_vls_printf(&gedp->ged_result_str, "Database read error, aborting\n"); + return BRLCAD_ERROR; + } + comb = (struct rt_comb_internal *)intern.idb_ptr; + RT_CK_COMB(comb); + + if (region_flag) { + if ( !comb->region_flag ) { + /* assign values from the defaults */ + comb->region_id = gedp->ged_wdbp->wdb_item_default++; + comb->aircode = gedp->ged_wdbp->wdb_air_default; + comb->GIFTmater = gedp->ged_wdbp->wdb_mat_default; + comb->los = gedp->ged_wdbp->wdb_los_default; + } + comb->region_flag = 1; + } + else + comb->region_flag = 0; + + if (rt_db_put_internal(dp, gedp->ged_wdbp->dbip, &intern, &rt_uniresource) < 0) { + rt_db_free_internal(&intern, &rt_uniresource); + bu_vls_printf(&gedp->ged_result_str, "Database write error, aborting\n"); + return BRLCAD_ERROR; + } + + return BRLCAD_OK; + } + /* + * At this point, we know we have a Boolean expression. + * If the combination already existed and region_flag is -1, + * then leave its region_flag alone. + * If the combination didn't exist yet, + * then pretend region_flag was 0. + * Otherwise, make sure to set its c_flags according to region_flag. + */ + + dp = db_lookup( gedp->ged_wdbp->dbip, comb_name, LOOKUP_QUIET ); + if (dp != DIR_NULL) { + bu_vls_printf(&gedp->ged_result_str, "ERROR: %s already exists\n", comb_name); + return BRLCAD_ERROR; + } + + /* parse Boolean expression */ + BU_LIST_INIT(&tok_hd.l); + tok_hd.type = GED_TOK_NULL; + + last_tok = GED_TOK_LPAREN; + for (i=0; i<argc; i++) { + char *ptr; + + ptr = (char *)argv[i]; + while (*ptr) { + while (*ptr == '(' || *ptr == ')') { + switch (*ptr) { + case '(': + ged_append_lparen( &tok_hd.l ); + last_tok = GED_TOK_LPAREN; + break; + case ')': + ged_append_rparen( &tok_hd.l ); + last_tok = GED_TOK_RPAREN; + break; + } + ptr++; + } + + if (*ptr == '\0') + continue; + + if (last_tok == GED_TOK_RPAREN) { + /* next token MUST be an operator */ + if (ged_add_operator(gedp, &tok_hd.l, *ptr, &last_tok) == BRLCAD_ERROR) { + ged_free_tokens(&tok_hd.l); + if (dp != DIR_NULL) + rt_db_free_internal(&intern, &rt_uniresource); + return BRLCAD_ERROR; + } + ptr++; + } else if (last_tok == GED_TOK_LPAREN) { + /* next token MUST be an operand */ + int name_len; + + name_len = ged_add_operand(gedp, &tok_hd.l, ptr ); + if (name_len < 1) { + ged_free_tokens(&tok_hd.l); + if (dp != DIR_NULL) + rt_db_free_internal(&intern, &rt_uniresource); + return BRLCAD_ERROR; + } + last_tok = GED_TOK_TREE; + ptr += name_len; + } else if (last_tok == GED_TOK_TREE) { + /* must be an operator */ + if (ged_add_operator(gedp, &tok_hd.l, *ptr, &last_tok) == BRLCAD_ERROR) { + ged_free_tokens(&tok_hd.l); + if (dp != DIR_NULL) + rt_db_free_internal(&intern, &rt_uniresource); + return BRLCAD_ERROR; + } + ptr++; + } else if (last_tok == GED_TOK_UNION || + last_tok == GED_TOK_INTER || + last_tok == GED_TOK_SUBTR) { + /* must be an operand */ + int name_len; + + name_len = ged_add_operand(gedp, &tok_hd.l, ptr ); + if (name_len < 1) { + ged_free_tokens(&tok_hd.l); + if (dp != DIR_NULL) + rt_db_free_internal(&intern, &rt_uniresource); + return BRLCAD_ERROR; + } + last_tok = GED_TOK_TREE; + ptr += name_len; + } + } + } + + if (ged_check_syntax(gedp, &tok_hd.l, comb_name, dp)) { + ged_free_tokens(&tok_hd.l); + return BRLCAD_ERROR; + } + + /* replace any occurences of comb_name with existing tree */ + if (dp != DIR_NULL) { + for (BU_LIST_FOR(tok, tokens, &tok_hd.l)) { + struct rt_db_internal intern1; + struct rt_comb_internal *comb1; + + switch (tok->type) { + case GED_TOK_LPAREN: + case GED_TOK_RPAREN: + case GED_TOK_UNION: + case GED_TOK_INTER: + case GED_TOK_SUBTR: + break; + case GED_TOK_TREE: + if (!strcmp(tok->tp->tr_l.tl_name, comb_name)) { + db_free_tree( tok->tp, &rt_uniresource ); + if (rt_db_get_internal(&intern1, dp, gedp->ged_wdbp->dbip, (fastf_t *)NULL, &rt_uniresource) < 0) { + bu_vls_printf(&gedp->ged_result_str, "Cannot get records for %s\n", comb_name); + bu_vls_printf(&gedp->ged_result_str, "Database read error, aborting\n"); + return BRLCAD_ERROR; + } + comb1 = (struct rt_comb_internal *)intern1.idb_ptr; + RT_CK_COMB(comb1); + + tok->tp = comb1->tree; + comb1->tree = (union tree *)NULL; + rt_db_free_internal(&intern1, &rt_uniresource); + } + break; + default: + bu_vls_printf(&gedp->ged_result_str, "ERROR: Unrecognized token type\n"); + ged_free_tokens(&tok_hd.l); + return BRLCAD_ERROR; + } + } + } + + final_tree = ged_eval_bool(&tok_hd.l); + + if (dp == DIR_NULL) { + int flags; + + flags = DIR_COMB; + BU_GETSTRUCT(comb, rt_comb_internal); + comb->magic = RT_COMB_MAGIC; + comb->tree = final_tree; + bu_vls_init(&comb->shader); + bu_vls_init(&comb->material); + comb->region_id = -1; + if (region_flag == (-1)) + comb->region_flag = 0; + else + comb->region_flag = region_flag; + + if (comb->region_flag) { + comb->region_flag = 1; + comb->region_id = gedp->ged_wdbp->wdb_item_default++;; + comb->aircode = gedp->ged_wdbp->wdb_air_default; + comb->los = gedp->ged_wdbp->wdb_los_default; + comb->GIFTmater = gedp->ged_wdbp->wdb_mat_default; + bu_vls_printf(&gedp->ged_result_str, + "Creating region id=%d, air=%d, los=%d, GIFTmaterial=%d\n", + comb->region_id, comb->aircode, comb->los, comb->GIFTmater); + + flags |= DIR_REGION; + } + + RT_INIT_DB_INTERNAL(&intern); + intern.idb_major_type = DB5_MAJORTYPE_BRLCAD; + intern.idb_type = ID_COMBINATION; + intern.idb_meth = &rt_functab[ID_COMBINATION]; + intern.idb_ptr = (genptr_t)comb; + + if ((dp=db_diradd(gedp->ged_wdbp->dbip, comb_name, -1L, 0, flags, (genptr_t)&intern.idb_type)) == DIR_NULL) { + bu_vls_printf(&gedp->ged_result_str, "Failed to add %s to directory, aborting\n", comb_name); + return BRLCAD_ERROR; + } + + if (rt_db_put_internal(dp, gedp->ged_wdbp->dbip, &intern, &rt_uniresource) < 0) { + bu_vls_printf(&gedp->ged_result_str, "Failed to write %s", dp->d_namep); + return BRLCAD_ERROR; + } + } else { + db_delete(gedp->ged_wdbp->dbip, dp); + + dp->d_len = 0; + dp->d_un.file_offset = -1; + db_free_tree(comb->tree, &rt_uniresource); + comb->tree = final_tree; + + if (rt_db_put_internal(dp, gedp->ged_wdbp->dbip, &intern, &rt_uniresource) < 0) { + bu_vls_printf(&gedp->ged_result_str, "Failed to write %s", dp->d_namep); + return BRLCAD_ERROR; + } + } + + return BRLCAD_OK; +} + + +/* + * Local Variables: + * mode: C + * tab-width: 8 + * indent-tabs-mode: t + * c-file-style: "stroustrup" + * End: + * ex: shiftwidth=4 tabstop=8 + */ Property changes on: brlcad/trunk/src/libged/comb_std.c ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:eol-style + native Modified: brlcad/trunk/src/libged/ged.c =================================================================== --- brlcad/trunk/src/libged/ged.c 2008-07-17 10:03:06 UTC (rev 31856) +++ brlcad/trunk/src/libged/ged.c 2008-07-17 11:41:36 UTC (rev 31857) @@ -149,7 +149,7 @@ { gvp->gv_scale = 1.0; gvp->gv_size = 2.0 * gvp->gv_scale; - gvp->gv_invSize = 1.0 / gvp->gv_size; + gvp->gv_isize = 1.0 / gvp->gv_size; VSET(gvp->gv_eye_pos, 0.0, 0.0, 1.0); MAT_IDN(gvp->gv_rotation); MAT_IDN(gvp->gv_center); Added: brlcad/trunk/src/libged/isize.c =================================================================== --- brlcad/trunk/src/libged/isize.c (rev 0) +++ brlcad/trunk/src/libged/isize.c 2008-07-17 11:41:36 UTC (rev 31857) @@ -0,0 +1,66 @@ +/* I S I Z E . C + * BRL-CAD + * + * Copyright (c) 2008 United States Government as represented by + * the U.S. Army Research Laboratory. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * version 2.1 as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this file; see the file named COPYING for more + * information. + */ +/** @file isize.c + * + * The isize command. + * + */ + +#include "common.h" + +#include <stdlib.h> +#include <ctype.h> +#include <string.h> + +#include "ged_private.h" + + +int +ged_isize(struct ged *gedp, int argc, const char *argv[]) +{ + GED_CHECK_DATABASE_OPEN(gedp, BRLCAD_ERROR); + GED_CHECK_VIEW(gedp, BRLCAD_ERROR); + + /* initialize result */ + bu_vls_trunc(&gedp->ged_result_str, 0); + gedp->ged_result = GED_RESULT_NULL; + gedp->ged_result_flags = 0; + + /* get the isize (i.e. inverse view size) */ + if (argc == 1) { + bu_vls_printf(&gedp->ged_result_str, "%g", + gedp->ged_gvp->gv_isize * gedp->ged_wdbp->dbip->dbi_base2local); + return BRLCAD_OK; + } + + bu_vls_printf(&gedp->ged_result_str, "Usage: %s", argv[0]); + return BRLCAD_ERROR; +} + + +/* + * Local Variables: + * tab-width: 8 + * mode: C + * indent-tabs-mode: t + * c-file-style: "stroustrup" + * End: + * ex: shiftwidth=4 tabstop=8 + */ Property changes on: brlcad/trunk/src/libged/isize.c ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:eol-style + native Added: brlcad/trunk/src/libged/keypoint.c =================================================================== --- brlcad/trunk/src/libged/keypoint.c (rev 0) +++ brlcad/trunk/src/libged/keypoint.c 2008-07-17 11:41:36 UTC (rev 31857) @@ -0,0 +1,99 @@ +/* K E Y P O I N T . C + * BRL-CAD + * + * Copyright (c) 2008 United States Government as represented by + * the U.S. Army Research Laboratory. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * version 2.1 as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this file; see the file named COPYING for more + * information. + */ +/** @file keypoint.c + * + * The keypoint command. + * + */ + +#include "common.h" + +#include <stdlib.h> +#include <ctype.h> +#include <string.h> + +#include "ged_private.h" + + +int +ged_keypoint(struct ged *gedp, int argc, const char *argv[]) +{ + point_t keypoint; + static const char *usage = "[x y z]"; + + GED_CHECK_DATABASE_OPEN(gedp, BRLCAD_ERROR); + GED_CHECK_VIEW(gedp, BRLCAD_ERROR); + + /* initialize result */ + bu_vls_trunc(&gedp->ged_result_str, 0); + gedp->ged_result = GED_RESULT_NULL; + gedp->ged_result_flags = 0; + + /* get keypoint */ + if (argc == 1) { + VSCALE(keypoint, gedp->ged_gvp->gv_keypoint, gedp->ged_wdbp->dbip->dbi_base2local); + bn_encode_vect(&gedp->ged_result_str, keypoint); + + return BRLCAD_OK; + } + + if (argc != 2 && argc != 4) { + bu_vls_printf(&gedp->ged_result_str, "Usage: %s %s", argv[0], usage); + return BRLCAD_ERROR; + } + + /* set view keypoint */ + if (argc == 2) { + if (bn_decode_vect(keypoint, argv[1]) != 3) { + bu_vls_printf(&gedp->ged_result_str, "Usage: %s %s", argv[0], usage); + return BRLCAD_ERROR; + } + } else { + if (sscanf(argv[1], "%lf", &keypoint[X]) != 1) { + bu_vls_printf(&gedp->ged_result_str, "ged_keypoint: bad X value - %s\n", argv[1]); + return BRLCAD_ERROR; + } + + if (sscanf(argv[2], "%lf", &keypoint[Y]) != 1) { + bu_vls_printf(&gedp->ged_result_str, "ged_keypoint: bad Y value - %s\n", argv[2]); + return BRLCAD_ERROR; + } + + if (sscanf(argv[3], "%lf", &keypoint[Z]) != 1) { + bu_vls_printf(&gedp->ged_result_str, "ged_keypoint: bad Z value - %s\n", argv[3]); + return BRLCAD_ERROR; + } + } + + VSCALE(gedp->ged_gvp->gv_keypoint, keypoint, gedp->ged_wdbp->dbip->dbi_local2base); + + return BRLCAD_OK; +} + + +/* + * Local Variables: + * tab-width: 8 + * mode: C + * indent-tabs-mode: t + * c-file-style: "stroustrup" + * End: + * ex: shiftwidth=4 tabstop=8 + */ Property changes on: brlcad/trunk/src/libged/keypoint.c ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:eol-style + native Added: brlcad/trunk/src/libged/lookat.c =================================================================== --- brlcad/trunk/src/libged/lookat.c (rev 0) +++ brlcad/trunk/src/libged/lookat.c 2008-07-17 11:41:36 UTC (rev 31857) @@ -0,0 +1,111 @@ +/* L O O K A T . C + * BRL-CAD + * + * Copyright (c) 2008 United States Government as represented by + * the U.S. Army Research Laboratory. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * version 2.1 as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this file; see the file named COPYING for more + * information. + */ +/** @file lookat.c + * + * The lookat command. + * + */ + +#include "common.h" + +#include <stdlib.h> +#include <ctype.h> +#include <string.h> + +#include "ged_private.h" + + +int +ged_lookat(struct ged *gedp, int argc, const char *argv[]) +{ + point_t look; + point_t eye; + point_t tmp; + point_t new_center; + vect_t dir; + fastf_t new_az, new_el; + struct bu_vls vls; + static const char *usage = "x y z"; + + GED_CHECK_DATABASE_OPEN(gedp, BRLCAD_ERROR); + GED_CHECK_VIEW(gedp, BRLCAD_ERROR); + + /* initialize result */ + bu_vls_trunc(&gedp->ged_result_str, 0); + gedp->ged_result = GED_RESULT_NULL; + gedp->ged_result_flags = 0; + + if (argc != 2 && argc != 4) { + bu_vls_printf(&gedp->ged_result_str, "Usage: %s %s", argv[0], usage); + return BRLCAD_ERROR; + } + + if (argc == 2) { + if (bn_decode_vect(look, argv[1]) != 3) { + bu_vls_printf(&gedp->ged_result_str, "Usage: %s %s", argv[0], usage); + return BRLCAD_ERROR; + } + } else { + if (sscanf(argv[1], "%lf", &look[X]) != 1) { + bu_vls_printf(&gedp->ged_result_str, "ged_lookat: bad X value - %s\n", argv[1]); + return BRLCAD_ERROR; + } + + if (sscanf(argv[2], "%lf", &look[Y]) != 1) { + bu_vls_printf(&gedp->ged_result_str, "ged_lookat: bad Y value - %s\n", argv[2]); + return BRLCAD_ERROR; + } + + if (sscanf(argv[3], "%lf", &look[Z]) != 1) { + bu_vls_printf(&gedp->ged_result_str, "ged_lookat: bad Z value - %s\n", argv[3]); + return BRLCAD_ERROR; + } + } + + VSCALE(look, look, gedp->ged_wdbp->dbip->dbi_local2base); + + VSET(tmp, 0.0, 0.0, 1.0); + MAT4X3PNT(eye, gedp->ged_gvp->gv_view2model, tmp); + + VSUB2(dir, eye, look); + VUNITIZE(dir); + bn_ae_vec(&new_az, &new_el, dir); + + VSET(gedp->ged_gvp->gv_aet, new_az, new_el, gedp->ged_gvp->gv_aet[Z]); + ged_mat_aet(gedp->ged_gvp); + + VJOIN1(new_center, eye, -gedp->ged_gvp->gv_scale, dir); + MAT_DELTAS_VEC_NEG(gedp->ged_gvp->gv_center, new_center); + + ged_view_update(gedp->ged_gvp); + + return BRLCAD_OK; +} + + +/* + * Local Variables: + * tab-width: 8 + * mode: C + * indent-tabs-mode: t + * c-file-style: "stroustrup" + * End: + * ex: shiftwidth=4 tabstop=8 + */ Property changes on: brlcad/trunk/src/libged/lookat.c ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:eol-style + native Added: brlcad/trunk/src/libged/m2v_point.c =================================================================== --- brlcad/trunk/src/libged/m2v_point.c (rev 0) +++ brlcad/trunk/src/libged/m2v_point.c 2008-07-17 11:41:36 UTC (rev 31857) @@ -0,0 +1,93 @@ +/* M 2 V _ P O I N T . C + * BRL-CAD + * + * Copyright (c) 2008 United States Government as represented by + * the U.S. Army Research Laboratory. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * version 2.1 as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this file; see the file named COPYING for more + * information. + */ +/** @file m2v_point.c + * + * The m2v_point command. + * + */ + +#include "common.h" + +#include <stdlib.h> +#include <ctype.h> +#include <string.h> + +#include "ged_private.h" + + +int +ged_m2v_point(struct ged *gedp, int argc, const char *argv[]) +{ + point_t model; + point_t view; + static const char *usage = "x y z"; + + GED_CHECK_DATABASE_OPEN(gedp, BRLCAD_ERROR); + GED_CHECK_VIEW(gedp, BRLCAD_ERROR); + + /* initialize result */ + bu_vls_trunc(&gedp->ged_result_str, 0); + gedp->ged_result = GED_RESULT_NULL; + gedp->ged_result_flags = 0; + + if (argc != 2 && argc != 4) { + bu_vls_printf(&gedp->ged_result_str, "Usage: %s %s", argv[0], usage); + return BRLCAD_ERROR; + } + + if (argc == 2) { + if (bn_decode_vect(model, argv[1]) != 3) { + bu_vls_printf(&gedp->ged_result_str, "Usage: %s %s", argv[0], usage); + return BRLCAD_ERROR; + } + } else { + if (sscanf(argv[1], "%lf", &model[X]) != 1) { + bu_vls_printf(&gedp->ged_result_str, "ged_m2v_point: bad X value - %s\n", argv[1]); + return BRLCAD_ERROR; + } + + if (sscanf(argv[2], "%lf", &model[Y]) != 1) { + bu_vls_printf(&gedp->ged_result_str, "ged_m2v_point: bad Y value - %s\n", argv[2]); + return BRLCAD_ERROR; + } + + if (sscanf(argv[3], "%lf", &model[Z]) != 1) { + bu_vls_printf(&gedp->ged_result_str, "ged_m2v_point: bad Z value - %s\n", argv[3]); + return BRLCAD_ERROR; + } + } + + /* Convert the incoming model point to a view point */ + MAT4X3PNT(view, gedp->ged_gvp->gv_model2view, model); + bn_encode_vect(&gedp->ged_result_str, view); + + return BRLCAD_OK; +} + + +/* + * Local Variables: + * tab-width: 8 + * mode: C + * indent-tabs-mode: t + * c-file-style: "stroustrup" + * End: + * ex: shiftwidth=4 tabstop=8 + */ Property changes on: brlcad/trunk/src/libged/m2v_point.c ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:eol-style + native Added: brlcad/trunk/src/libged/model2view.c =================================================================== --- brlcad/trunk/src/libged/model2view.c (rev 0) +++ brlcad/trunk/src/libged/model2view.c 2008-07-17 11:41:36 UTC (rev 31857) @@ -0,0 +1,65 @@ +/* M O D E L 2 V I E W . C + * BRL-CAD + * + * Copyright (c) 2008 United States Government as represented by + * the U.S. Army Research Laboratory. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * version 2.1 as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this file; see the file named COPYING for more + * information. + */ +/** @file model2view.c + * + * The model2view command. + * + */ + +#include "common.h" + +#include <stdlib.h> +#include <ctype.h> +#include <string.h> + +#include "ged_private.h" + + +int +ged_model2view(struct ged *gedp, int argc, const char *argv[]) +{ + GED_CHECK_DATABASE_OPEN(gedp, BRLCAD_ERROR); + GED_CHECK_VIEW(gedp, BRLCAD_ERROR); + + /* initialize result */ + bu_vls_trunc(&gedp->ged_result_str, 0); + gedp->ged_result = GED_RESULT_NULL; + gedp->ged_result_flags = 0; + + /* get the model2view matrix */ + if (argc == 1) { + bn_encode_mat(&gedp->ged_result_str, gedp->ged_gvp->gv_model2view); + return BRLCAD_OK; + } + + bu_vls_printf(&gedp->ged_result_str, "Usage: %s", argv[0]); + return BRLCAD_ERROR; +} + + +/* + * Local Variables: + * tab-width: 8 + * mode: C + * indent-tabs-mode: t + * c-file-style: "stroustrup" + * End: + * ex: shiftwidth=4 tabstop=8 + */ Property changes on: brlcad/trunk/src/libged/model2view.c ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:eol-style + native Added: brlcad/trunk/src/libged/orient.c =================================================================== --- brlcad/trunk/src/libged/orient.c (rev 0) +++ brlcad/trunk/src/libged/orient.c 2008-07-17 11:41:36 UTC (rev 31857) @@ -0,0 +1,85 @@ +/* O R I E N T . C + * BRL-CAD + * + * Copyright (c) 2008 United States Government as represented by + * the U.S. Army Research Laboratory. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * version 2.1 as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the... [truncated message content] |
From: <hom...@us...> - 2008-07-17 15:28:27
|
Revision: 31859 http://brlcad.svn.sourceforge.net/brlcad/?rev=31859&view=rev Author: homovulgaris Date: 2008-07-17 15:27:17 +0000 (Thu, 17 Jul 2008) Log Message: ----------- Modification to pc_param and pc_constrnt structs in particular removal of character arrays and usage of bu_vls for supporting expression of the form "radius=3.24" for parameters and "radius*centre.x=4.0" for constraints Modified Paths: -------------- brlcad/trunk/include/raytrace.h brlcad/trunk/src/libpc/pc_test.c Modified: brlcad/trunk/include/raytrace.h =================================================================== --- brlcad/trunk/include/raytrace.h 2008-07-17 11:57:38 UTC (rev 31858) +++ brlcad/trunk/include/raytrace.h 2008-07-17 15:27:17 UTC (rev 31859) @@ -1808,7 +1808,8 @@ */ struct pc_param { struct bu_list l; - char pname[10]; + struct bu_vls name; + struct bu_vls expression; enum ptype { pc_value, pc_point, @@ -1822,12 +1823,8 @@ }; struct pc_constrnt { struct bu_list l; - char cname[10]; - enum ctype { - pc_inequality, - pc_equation - } ctype; - int n; + struct bu_vls name; + struct bu_vls expression; }; struct pc_pc_set { struct pc_param * ps; Modified: brlcad/trunk/src/libpc/pc_test.c =================================================================== --- brlcad/trunk/src/libpc/pc_test.c 2008-07-17 11:57:38 UTC (rev 31858) +++ brlcad/trunk/src/libpc/pc_test.c 2008-07-17 15:27:17 UTC (rev 31859) @@ -109,13 +109,13 @@ return 3; wdb_import(fp, &ip,solnam, (matp_t)NULL); ip.idb_meth->ft_params(&pcs,&ip); - fprintf(stdout, "%s = ( %f , %f , %f ) %s = (%f,%f,%f) %s = (%f,%f,%f) %s = (%f,%f,%f)\n",\ - pcs.ps[0].pname, pcs.ps[0].pval.pointp[0],pcs.ps[0].pval.pointp[1], \ - pcs.ps[0].pval.pointp[2], pcs.ps[1].pname, pcs.ps[1].pval.vectorp[0], \ - pcs.ps[1].pval.vectorp[1], pcs.ps[1].pval.vectorp[2], pcs.ps[2].pname, \ + /*fprintf(stdout, "%s = ( %f , %f , %f ) %s = (%f,%f,%f) %s = (%f,%f,%f) %s = (%f,%f,%f)\n",\ + bu_vls_addr(pcs.ps[0].name), pcs.ps[0].pval.pointp[0],pcs.ps[0].pval.pointp[1], \ + pcs.ps[0].pval.pointp[2], bu_vls_addr(pcs.ps[1].name), pcs.ps[1].pval.vectorp[0], \ + pcs.ps[1].pval.vectorp[1], pcs.ps[1].pval.vectorp[2], bu_vls_addr(pcs.ps[2].name), \ pcs.ps[2].pval.vectorp[0], pcs.ps[2].pval.vectorp[1], pcs.ps[2].pval.vectorp[2], \ - pcs.ps[3].pname, pcs.ps[3].pval.vectorp[0], pcs.ps[3].pval.vectorp[1], \ - pcs.ps[3].pval.vectorp[2]); + bu_vls_addr(pcs.ps[3].name), pcs.ps[3].pval.vectorp[0], pcs.ps[3].pval.vectorp[1], \ + pcs.ps[3].pval.vectorp[2]);*/ /* Todo: Free pcs parametric set */ wdb_close(fp); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <hom...@us...> - 2008-07-17 15:39:26
|
Revision: 31860 http://brlcad.svn.sourceforge.net/brlcad/?rev=31860&view=rev Author: homovulgaris Date: 2008-07-17 15:38:04 +0000 (Thu, 17 Jul 2008) Log Message: ----------- modification of macros to initiate the bu_vls struct added to pc_param and pc_constrnt; definition of pc_free_pcset, pc_pushparameter and pc_pushconstraint functions for adding parameters and constraints to pc_pc_set using a simple string expression Modified Paths: -------------- brlcad/trunk/include/pc.h brlcad/trunk/src/libpc/pc_main.c Modified: brlcad/trunk/include/pc.h =================================================================== --- brlcad/trunk/include/pc.h 2008-07-17 15:27:17 UTC (rev 31859) +++ brlcad/trunk/include/pc.h 2008-07-17 15:38:04 UTC (rev 31860) @@ -65,23 +65,30 @@ BU_GETSTRUCT(_pcs.cs,pc_constrnt); \ BU_LIST_INIT(&(_pcs.cs->l)); #define PC_GETPARAMETER(_par) \ - BU_GETSTRUCT(_par,pc_param); + BU_GETSTRUCT(_par,pc_param); \ + bu_vls_init(&(_par->name)); \ + bu_vls_init(&(_par->expression)); #define PC_GETCONSTRAINT(_con) \ - BU_GETSTRUCT(_con,pc_constrnt); -#define PC_PCSET_PUSHP(_pcs,_par) \ - BU_LIST_PUSH(&(_pcs.ps->l),&(_par->l)); -#define PC_PCSET_PUSHC(_pcs,_con) \ - BU_LIST_PUSH(&(_pcs.cs->l),&(_con->l)); -#define PC_FREE_PCSET(_pcs) \ - bu_free(_pcs.ps); \ - bu_free(_pcs.cs); + BU_GETSTRUCT(_con,pc_constrnt); \ + bu_vls_init(&(_con->name)); \ + bu_vls_init(&(_con->expression)); +#define PC_PCSET_PUSHP(_pcsp,_par) \ + BU_LIST_PUSH(&(_pcsp->ps->l),&(_par->l)); +#define PC_PCSET_PUSHC(_pcsp,_con) \ + BU_LIST_PUSH(&(_pcsp->cs->l),&(_con->l)); + #ifdef __cplusplus extern "C" { #endif -PC_EXPORT PC_EXTERN(int pc_mk_constraint,(struct rt_wdb *wdbp, const char *constraintname, int append_ok)); +/* functions defined in pc_main.c */ +PC_EXPORT PC_EXTERN(int pc_mk_constraint, (struct rt_wdb *wdbp, const char *constraintname, int append_ok)); +PC_EXPORT PC_EXTERN(void pc_free_pcset, (struct pc_pc_set * pcs)); +PC_EXPORT PC_EXTERN(void pc_pushparameter, (struct pc_pc_set * pcs, const char * str)); +PC_EXPORT PC_EXTERN(void pc_pushconstraint, (struct pc_pc_set * pcs, const char * str)); + #ifdef __cplusplus } #endif Modified: brlcad/trunk/src/libpc/pc_main.c =================================================================== --- brlcad/trunk/src/libpc/pc_main.c 2008-07-17 15:27:17 UTC (rev 31859) +++ brlcad/trunk/src/libpc/pc_main.c 2008-07-17 15:38:04 UTC (rev 31860) @@ -42,8 +42,67 @@ #include "pc.h" /** - * P C _ M K _ C O N S T R A I N T + * PC_PUSHPARAMETER + * pushes a given parameter expression into the parameter + * list in the pc set * + */ +void +pc_pushparameter(struct pc_pc_set * pcsp, const char * str) +{ + struct pc_param * par; + PC_GETPARAMETER(par); + bu_vls_strcat(&(par->name), str); + PC_PCSET_PUSHP(pcsp, par); +} + +/** + * PC_PUSHCONSTRAINT + * pushes a given constraint expression into the constraint list + * in the pc set + * + */ +void +pc_pushconstraint(struct pc_pc_set * pcsp, const char * str) +{ + struct pc_constrnt * con; + PC_GETCONSTRAINT(con); + bu_vls_strcat(&(con->name), str); + PC_PCSET_PUSHC(pcsp, con); +} + +/** + * PC_FREE_PCSET + * frees the parameter&constraint set (pc_pc_set) pointed to by the + * pointer taken as an argument. It also frees the corresponding allocation + * for bu_vls structs used for the storage of name and expression of + * pc_param and pc_constrnt structures + * + */ +void +pc_free_pcset(struct pc_pc_set * pcs) +{ + struct pc_param * par; + struct pc_constrnt * con; + while (BU_LIST_WHILE(par,pc_param,&(pcs->ps->l))) { + bu_vls_free(&(par->name)); + bu_vls_free(&(par->expression)); + BU_LIST_DEQUEUE(&(par->l)); + bu_free(par, "free parameter"); + } + bu_free(pcs->ps, "free parameter"); + while (BU_LIST_WHILE(con,pc_constrnt,&(pcs->cs->l))) { + bu_vls_free(&(con->name)); + bu_vls_free(&(con->expression)); + BU_LIST_DEQUEUE(&(con->l)); + bu_free(con, "free constraint"); + } + bu_free(pcs->cs, "free constraint"); +} + +/** + * PC_MK_CONSTRAINT + * * Given the appropriate parameters, makes the non-geometric * constraint object and writes it to the database using * wdb_put_internal. Only supported on database version 5 or above This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <br...@us...> - 2008-07-17 20:55:29
|
Revision: 31866 http://brlcad.svn.sourceforge.net/brlcad/?rev=31866&view=rev Author: brlcad Date: 2008-07-17 20:55:37 +0000 (Thu, 17 Jul 2008) Log Message: ----------- since we're always defining it, push USE_PROTOTYPES up into common.h so our headers are closer to working without needing a config.h Modified Paths: -------------- brlcad/trunk/configure.ac brlcad/trunk/include/common.h brlcad/trunk/include/config_win.h Modified: brlcad/trunk/configure.ac =================================================================== --- brlcad/trunk/configure.ac 2008-07-17 16:36:57 UTC (rev 31865) +++ brlcad/trunk/configure.ac 2008-07-17 20:55:37 UTC (rev 31866) @@ -1993,7 +1993,6 @@ dnl AC_C_PROTOTYPES AM_C_PROTOTYPES -AC_DEFINE(USE_PROTOTYPES,1,heh) AC_C_CONST AC_C_INLINE Modified: brlcad/trunk/include/common.h =================================================================== --- brlcad/trunk/include/common.h 2008-07-17 16:36:57 UTC (rev 31865) +++ brlcad/trunk/include/common.h 2008-07-17 20:55:37 UTC (rev 31866) @@ -49,6 +49,11 @@ # endif #endif /* _WIN32 */ +/* support ANSI function declarations */ +#ifndef USE_PROTOTYPES +# define USE_PROTOTYPES 1 +#endif + /* provide declaration markers for header externals */ #ifdef __cplusplus # define __BEGIN_DECLS extern "C" { Modified: brlcad/trunk/include/config_win.h =================================================================== --- brlcad/trunk/include/config_win.h 2008-07-17 16:36:57 UTC (rev 31865) +++ brlcad/trunk/include/config_win.h 2008-07-17 20:55:37 UTC (rev 31866) @@ -32,8 +32,8 @@ #ifndef IGNORE_CONFIG_H #if defined(_WIN32) +/* !!! this should not be here, should fix the build system settings */ #define __STDC__ 1 -#define USE_PROTOTYPES 1 /* 4244 conversion from type 1 to type 2 * 4305 truncation This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <br...@us...> - 2008-07-17 21:13:10
|
Revision: 31869 http://brlcad.svn.sourceforge.net/brlcad/?rev=31869&view=rev Author: brlcad Date: 2008-07-17 21:13:10 +0000 (Thu, 17 Jul 2008) Log Message: ----------- if we're going to always define USE_FBSERV then why does it even exist? push it out of configure up into dm.h, make it non-conditional for libtclcad but keep libdm's just in case. Modified Paths: -------------- brlcad/trunk/configure.ac brlcad/trunk/include/dm.h brlcad/trunk/include/tclcad.h brlcad/trunk/misc/win32-msvc8/libdm/libdm.vcproj brlcad/trunk/misc/win32-msvc8/libtclcad/libtclcad.vcproj brlcad/trunk/misc/win32-msvc8/mged/mged.vcproj brlcad/trunk/misc/win32-msvc9/libdm/libdm.vcproj brlcad/trunk/misc/win32-msvc9/mged/mged.vcproj Modified: brlcad/trunk/configure.ac =================================================================== --- brlcad/trunk/configure.ac 2008-07-17 21:00:53 UTC (rev 31868) +++ brlcad/trunk/configure.ac 2008-07-17 21:13:10 UTC (rev 31869) @@ -3599,9 +3599,7 @@ AC_DEFINE(PARALLEL, 1, [Define to enable SMP architecture parallel computation support ]) fi -AC_DEFINE_UNQUOTED([USE_FBSERV], [1], [Required for libdm/mged to allow direct fbserv render connections]) - # # set up the BRL-CAD libraries # Modified: brlcad/trunk/include/dm.h =================================================================== --- brlcad/trunk/include/dm.h 2008-07-17 21:00:53 UTC (rev 31868) +++ brlcad/trunk/include/dm.h 2008-07-17 21:13:10 UTC (rev 31869) @@ -30,6 +30,9 @@ #include "bu.h" #include "vmath.h" + +#define USE_FBSERV 1 + #ifdef USE_FBSERV # include "fbserv_obj.h" #endif Modified: brlcad/trunk/include/tclcad.h =================================================================== --- brlcad/trunk/include/tclcad.h 2008-07-17 21:00:53 UTC (rev 31868) +++ brlcad/trunk/include/tclcad.h 2008-07-17 21:13:10 UTC (rev 31869) @@ -36,9 +36,7 @@ #include "tcl.h" #include "ged.h" -#ifdef USE_FBSERV -# include "fbserv_obj.h" -#endif +#include "fbserv_obj.h" __BEGIN_DECLS @@ -79,9 +77,7 @@ struct bu_vls gdv_name; struct ged_view *gdv_view; struct dm *gdv_dmp; -#ifdef USE_FBSERV struct fbserv_obj gdv_fbs; -#endif struct ged_obj *gdv_gop; /* Pointer back to its ged object */ }; Modified: brlcad/trunk/misc/win32-msvc8/libdm/libdm.vcproj =================================================================== --- brlcad/trunk/misc/win32-msvc8/libdm/libdm.vcproj 2008-07-17 21:00:53 UTC (rev 31868) +++ brlcad/trunk/misc/win32-msvc8/libdm/libdm.vcproj 2008-07-17 21:13:10 UTC (rev 31869) @@ -52,7 +52,7 @@ Optimization="2" InlineFunctionExpansion="1" AdditionalIncludeDirectories="../../../include;../../../src/other/libz;../../../src/other/libpng;../../../src/other/tcl/generic;../../../src/other/tcl/win;../../../src/other/tk/generic;../../../src/other/tk/win;../../../src/other/tk/xlib" - PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;DM_EXPORT_DLL;DM_WGL;IF_WGL;IF_REMOTE;TCL_THREADS=1;__win32;BRLCAD_DLL;HAVE_CONFIG_H;BRLCADBUILD;USE_FBSERV;_CRT_SECURE_NO_WARNINGS" + PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;DM_EXPORT_DLL;DM_WGL;IF_WGL;IF_REMOTE;TCL_THREADS=1;__win32;BRLCAD_DLL;HAVE_CONFIG_H;BRLCADBUILD;_CRT_SECURE_NO_WARNINGS" StringPooling="true" BasicRuntimeChecks="0" RuntimeLibrary="2" @@ -154,7 +154,7 @@ Optimization="2" InlineFunctionExpansion="1" AdditionalIncludeDirectories="../../../include;../../../src/other/libz;../../../src/other/libpng;../../../src/other/tcl/generic;../../../src/other/tcl/win;../../../src/other/tk/generic;../../../src/other/tk/win;../../../src/other/tk/xlib" - PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;DM_EXPORT_DLL;DM_WGL;IF_WGL;IF_REMOTE;TCL_THREADS=1;__win32;BRLCAD_DLL;HAVE_CONFIG_H;BRLCADBUILD;USE_FBSERV;_CRT_SECURE_NO_WARNINGS" + PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;DM_EXPORT_DLL;DM_WGL;IF_WGL;IF_REMOTE;TCL_THREADS=1;__win32;BRLCAD_DLL;HAVE_CONFIG_H;BRLCADBUILD;_CRT_SECURE_NO_WARNINGS" StringPooling="true" BasicRuntimeChecks="0" RuntimeLibrary="2" Modified: brlcad/trunk/misc/win32-msvc8/libtclcad/libtclcad.vcproj =================================================================== --- brlcad/trunk/misc/win32-msvc8/libtclcad/libtclcad.vcproj 2008-07-17 21:00:53 UTC (rev 31868) +++ brlcad/trunk/misc/win32-msvc8/libtclcad/libtclcad.vcproj 2008-07-17 21:13:10 UTC (rev 31869) @@ -53,7 +53,7 @@ Optimization="2" InlineFunctionExpansion="1" AdditionalIncludeDirectories="../../../include;../../../src/other/tcl/generic;../../../src/other/tcl/win;../../../src/other/tk/generic;../../../src/other/tk/win;../../../src/other/tk/bitmaps;../../../src/other/tk/xlib;../../../src/other/incrTcl/itcl/generic;../../../src/other/incrTcl/itk/generic;../../../src/other/blt/src" - PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;TCLCAD_EXPORT_DLL;DM_WGL;TCL_THREADS=1;__win32;BRLCAD_DLL;HAVE_CONFIG_H;BRLCADBUILD;USE_FBSERV;IF_WGL;IF_REMOTE;_CRT_SECURE_NO_WARNINGS;inline=__inline" + PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;TCLCAD_EXPORT_DLL;DM_WGL;TCL_THREADS=1;__win32;BRLCAD_DLL;HAVE_CONFIG_H;BRLCADBUILD;IF_WGL;IF_REMOTE;_CRT_SECURE_NO_WARNINGS;inline=__inline" StringPooling="true" BasicRuntimeChecks="0" RuntimeLibrary="2" Modified: brlcad/trunk/misc/win32-msvc8/mged/mged.vcproj =================================================================== --- brlcad/trunk/misc/win32-msvc8/mged/mged.vcproj 2008-07-17 21:00:53 UTC (rev 31868) +++ brlcad/trunk/misc/win32-msvc8/mged/mged.vcproj 2008-07-17 21:13:10 UTC (rev 31869) @@ -48,7 +48,7 @@ Optimization="2" InlineFunctionExpansion="1" AdditionalIncludeDirectories="../../../include;../../../src/mged;../../../src/other/tcl/generic;../../../src/other/tcl/win;../../../src/other/tk/generic;../../../src/other/tk/xlib;../../../src/other/incrTcl/itcl/generic;../../../src/other/incrTcl/itk/generic" - PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;TCL_THREADS=1;__win32;BRLCAD_DLL;HAVE_CONFIG_H;BRLCADBUILD;DM_WGL;IF_WGL;USE_FBSERV;_CRT_SECURE_NO_WARNINGS" + PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;TCL_THREADS=1;__win32;BRLCAD_DLL;HAVE_CONFIG_H;BRLCADBUILD;DM_WGL;IF_WGL;_CRT_SECURE_NO_WARNINGS" StringPooling="true" BasicRuntimeChecks="0" RuntimeLibrary="2" @@ -147,7 +147,7 @@ Optimization="2" InlineFunctionExpansion="1" AdditionalIncludeDirectories="../../../include;../../../src/mged;../../../src/other/tcl/generic;../../../src/other/tcl/win;../../../src/other/tk/generic;../../../src/other/tk/xlib;../../../src/other/incrTcl/itcl/generic;../../../src/other/incrTcl/itk/generic" - PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;TCL_THREADS=1;__win32;BRLCAD_DLL;HAVE_CONFIG_H;BRLCADBUILD;DM_WGL;IF_WGL;USE_FBSERV;_CRT_SECURE_NO_WARNINGS;TCL_CFG_DO64BIT;STDC_HEADERS;_stati64=_stat64" + PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;TCL_THREADS=1;__win32;BRLCAD_DLL;HAVE_CONFIG_H;BRLCADBUILD;DM_WGL;IF_WGL;_CRT_SECURE_NO_WARNINGS;TCL_CFG_DO64BIT;STDC_HEADERS;_stati64=_stat64" StringPooling="true" BasicRuntimeChecks="0" RuntimeLibrary="2" Modified: brlcad/trunk/misc/win32-msvc9/libdm/libdm.vcproj =================================================================== --- brlcad/trunk/misc/win32-msvc9/libdm/libdm.vcproj 2008-07-17 21:00:53 UTC (rev 31868) +++ brlcad/trunk/misc/win32-msvc9/libdm/libdm.vcproj 2008-07-17 21:13:10 UTC (rev 31869) @@ -53,7 +53,7 @@ Optimization="2" InlineFunctionExpansion="1" AdditionalIncludeDirectories="../../../include;../../../src/other/libz;../../../src/other/libpng;../../../src/other/tcl/generic;../../../src/other/tcl/win;../../../src/other/tk/generic;../../../src/other/tk/win;../../../src/other/tk/xlib" - PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;DM_EXPORT_DLL;DM_WGL;IF_WGL;IF_REMOTE;TCL_THREADS=1;__win32;BRLCAD_DLL;HAVE_CONFIG_H;BRLCADBUILD;USE_FBSERV;_CRT_SECURE_NO_WARNINGS" + PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;DM_EXPORT_DLL;DM_WGL;IF_WGL;IF_REMOTE;TCL_THREADS=1;__win32;BRLCAD_DLL;HAVE_CONFIG_H;BRLCADBUILD;_CRT_SECURE_NO_WARNINGS" StringPooling="true" BasicRuntimeChecks="0" RuntimeLibrary="2" @@ -154,7 +154,7 @@ Optimization="2" InlineFunctionExpansion="1" AdditionalIncludeDirectories="../../../include;../../../src/other/libz;../../../src/other/libpng;../../../src/other/tcl/generic;../../../src/other/tcl/win;../../../src/other/tk/generic;../../../src/other/tk/win;../../../src/other/tk/xlib" - PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;DM_EXPORT_DLL;DM_WGL;IF_WGL;IF_REMOTE;TCL_THREADS=1;__win32;BRLCAD_DLL;HAVE_CONFIG_H;BRLCADBUILD;USE_FBSERV;_CRT_SECURE_NO_WARNINGS" + PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;DM_EXPORT_DLL;DM_WGL;IF_WGL;IF_REMOTE;TCL_THREADS=1;__win32;BRLCAD_DLL;HAVE_CONFIG_H;BRLCADBUILD;_CRT_SECURE_NO_WARNINGS" StringPooling="true" BasicRuntimeChecks="0" RuntimeLibrary="2" Modified: brlcad/trunk/misc/win32-msvc9/mged/mged.vcproj =================================================================== --- brlcad/trunk/misc/win32-msvc9/mged/mged.vcproj 2008-07-17 21:00:53 UTC (rev 31868) +++ brlcad/trunk/misc/win32-msvc9/mged/mged.vcproj 2008-07-17 21:13:10 UTC (rev 31869) @@ -49,7 +49,7 @@ Optimization="2" InlineFunctionExpansion="1" AdditionalIncludeDirectories="../../../include;../../../src/mged;../../../src/other/tcl/generic;../../../src/other/tcl/win;../../../src/other/tk/generic;../../../src/other/tk/xlib;../../../src/other/incrTcl/itcl/generic;../../../src/other/incrTcl/itk/generic" - PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;TCL_THREADS=1;__win32;BRLCAD_DLL;HAVE_CONFIG_H;BRLCADBUILD;DM_WGL;IF_WGL;USE_FBSERV;_CRT_SECURE_NO_WARNINGS" + PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;TCL_THREADS=1;__win32;BRLCAD_DLL;HAVE_CONFIG_H;BRLCADBUILD;DM_WGL;IF_WGL;_CRT_SECURE_NO_WARNINGS" StringPooling="true" BasicRuntimeChecks="0" RuntimeLibrary="2" @@ -147,7 +147,7 @@ Optimization="2" InlineFunctionExpansion="1" AdditionalIncludeDirectories="../../../include;../../../src/mged;../../../src/other/tcl/generic;../../../src/other/tcl/win;../../../src/other/tk/generic;../../../src/other/tk/xlib;../../../src/other/incrTcl/itcl/generic;../../../src/other/incrTcl/itk/generic" - PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;TCL_THREADS=1;__win32;BRLCAD_DLL;HAVE_CONFIG_H;BRLCADBUILD;DM_WGL;IF_WGL;USE_FBSERV;_CRT_SECURE_NO_WARNINGS;TCL_CFG_DO64BIT;STDC_HEADERS;_stati64=_stat64" + PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;TCL_THREADS=1;__win32;BRLCAD_DLL;HAVE_CONFIG_H;BRLCADBUILD;DM_WGL;IF_WGL;_CRT_SECURE_NO_WARNINGS;TCL_CFG_DO64BIT;STDC_HEADERS;_stati64=_stat64" StringPooling="true" BasicRuntimeChecks="0" RuntimeLibrary="2" This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bo...@us...> - 2008-07-18 16:39:53
|
Revision: 31879 http://brlcad.svn.sourceforge.net/brlcad/?rev=31879&view=rev Author: bob1961 Date: 2008-07-18 16:39:53 +0000 (Fri, 18 Jul 2008) Log Message: ----------- Stub in the following commands: copyeval cp dbip dump dup expand facetize find g get_type hide i keep kill killall killtree lt make_bb match move_arb_edge move_arb_face mv mvall nmg_collapse nmg_simplify open pathlist push r rm rmap rotate_arb_face rt_gettrees shells showmats bot_smooth summary title tol unhide units version whatid whichair whichid xpush Modified Paths: -------------- brlcad/trunk/include/ged.h brlcad/trunk/misc/win32-msvc8/libged/libged.vcproj brlcad/trunk/src/libged/Makefile.am brlcad/trunk/src/libged/eye_pos.c brlcad/trunk/src/libged/ged_private.h brlcad/trunk/src/libged/lookat.c brlcad/trunk/src/libged/ls.c brlcad/trunk/src/libged/prcolor.c brlcad/trunk/src/libged/rotate_about.c brlcad/trunk/src/libtclcad/ged_obj.c brlcad/trunk/src/tclscripts/archer/pkgIndex.tcl brlcad/trunk/src/tclscripts/archer/tclIndex brlcad/trunk/src/tclscripts/geometree/tclIndex brlcad/trunk/src/tclscripts/lib/tclIndex brlcad/trunk/src/tclscripts/mged/tclIndex brlcad/trunk/src/tclscripts/rtwizard/lib/tclIndex brlcad/trunk/src/tclscripts/sdialogs/scripts/tclIndex brlcad/trunk/src/tclscripts/swidgets/scripts/tclIndex brlcad/trunk/src/tclscripts/tclIndex Added Paths: ----------- brlcad/trunk/src/libged/bot_smooth.c brlcad/trunk/src/libged/comb.c brlcad/trunk/src/libged/concat.c brlcad/trunk/src/libged/copy.c brlcad/trunk/src/libged/copyeval.c brlcad/trunk/src/libged/dbip.c brlcad/trunk/src/libged/dump.c brlcad/trunk/src/libged/dup.c brlcad/trunk/src/libged/expand.c brlcad/trunk/src/libged/facetize.c brlcad/trunk/src/libged/find.c brlcad/trunk/src/libged/get_type.c brlcad/trunk/src/libged/group.c brlcad/trunk/src/libged/hide.c brlcad/trunk/src/libged/instance.c brlcad/trunk/src/libged/keep.c brlcad/trunk/src/libged/kill.c brlcad/trunk/src/libged/killall.c brlcad/trunk/src/libged/killtree.c brlcad/trunk/src/libged/lt.c brlcad/trunk/src/libged/make_bb.c brlcad/trunk/src/libged/match.c brlcad/trunk/src/libged/move.c brlcad/trunk/src/libged/move_all.c brlcad/trunk/src/libged/move_arb_edge.c brlcad/trunk/src/libged/move_arb_face.c brlcad/trunk/src/libged/nmg_collapse.c brlcad/trunk/src/libged/nmg_simplify.c brlcad/trunk/src/libged/open.c brlcad/trunk/src/libged/pathlist.c brlcad/trunk/src/libged/push.c brlcad/trunk/src/libged/region.c brlcad/trunk/src/libged/remove.c brlcad/trunk/src/libged/rmap.c brlcad/trunk/src/libged/rotate_arb_face.c brlcad/trunk/src/libged/rt_gettrees.c brlcad/trunk/src/libged/shells.c brlcad/trunk/src/libged/showmats.c brlcad/trunk/src/libged/summary.c brlcad/trunk/src/libged/title.c brlcad/trunk/src/libged/tol.c brlcad/trunk/src/libged/tops.c brlcad/trunk/src/libged/unhide.c brlcad/trunk/src/libged/units.c brlcad/trunk/src/libged/version.c brlcad/trunk/src/libged/whatid.c brlcad/trunk/src/libged/whichair.c brlcad/trunk/src/libged/whichid.c brlcad/trunk/src/libged/xpush.c Modified: brlcad/trunk/include/ged.h =================================================================== --- brlcad/trunk/include/ged.h 2008-07-18 16:20:20 UTC (rev 31878) +++ brlcad/trunk/include/ged.h 2008-07-18 16:39:53 UTC (rev 31879) @@ -1020,6 +1020,14 @@ GED_EXPORT BU_EXTERN(int ged_bot_face_sort, (struct ged *gedp, int argc, const char *argv[])); /** + * Calculate vertex normals for the BOT primitive + * + * Usage: + * bot_smoooth [-t ntol] new_bot old_bot + */ +GED_EXPORT BU_EXTERN(int ged_bot_smooth, (struct ged *gedp, int argc, const char *argv[])); + +/** * List attributes (brief). * * Usage: @@ -1052,6 +1060,14 @@ GED_EXPORT BU_EXTERN(int ged_comb_color, (struct ged *gedp, int argc, const char *argv[])); /** + * Create or extend combination w/booleans. + * + * Usage: + * comb comb_name <operation primitive> + */ +GED_EXPORT BU_EXTERN(int ged_comb, (struct ged *gedp, int argc, const char *argv[])); + +/** * Create or extend a combination using standard notation. * * Usage: @@ -1060,6 +1076,38 @@ GED_EXPORT BU_EXTERN(int ged_comb_std, (struct ged *gedp, int argc, const char *argv[])); /** + * Import a database into the current database using an auto-incrementing or custom affix + * + * Usage: + * concat [-s|-p] file.g [suffix|prefix] + */ +GED_EXPORT BU_EXTERN(int ged_concat, (struct ged *gedp, int argc, const char *argv[])); + +/** + * Copy a database object + * + * Usage: + * copy from to + */ +GED_EXPORT BU_EXTERN(int ged_copy, (struct ged *gedp, int argc, const char *argv[])); + +/** + * Copy an 'evaluated' path solid + * + * Usage: + * copyeval new_prim path_to_old_prim + */ +GED_EXPORT BU_EXTERN(int ged_copyeval, (struct ged *gedp, int argc, const char *argv[])); + +/** + * Get dbip + * + * Usage: + * dbip + */ +GED_EXPORT BU_EXTERN(int ged_dbip, (struct ged *gedp, int argc, const char *argv[])); + +/** * Convert a direction vector to az/el. * * Usage: @@ -1076,14 +1124,22 @@ GED_EXPORT BU_EXTERN(int ged_draw, (struct ged *gedp, int argc, const char *argv[])); /** - * Evaluate objects via NMG tessellation + * Dump a full copy of the database into file.g * * Usage: - * ev [-dfnstuvwT] [-P #] <objects> + * dump file.g */ -GED_EXPORT BU_EXTERN(int ged_ev, (struct ged *gedp, int argc, const char *argv[])); +GED_EXPORT BU_EXTERN(int ged_dump, (struct ged *gedp, int argc, const char *argv[])); /** + * Check for duplicate names in file + * + * Usage: + * dup file.g prefix + */ +GED_EXPORT BU_EXTERN(int ged_dup, (struct ged *gedp, int argc, const char *argv[])); + +/** * Prepare object(s) for display * * Usage: @@ -1126,6 +1182,14 @@ GED_EXPORT BU_EXTERN(int ged_erase_all, (struct ged *gedp, int argc, const char *argv[])); /** + * Evaluate objects via NMG tessellation + * + * Usage: + * ev [-dfnstuvwT] [-P #] <objects> + */ +GED_EXPORT BU_EXTERN(int ged_ev, (struct ged *gedp, int argc, const char *argv[])); + +/** * Set/get the eye point * * Usage: @@ -1142,6 +1206,30 @@ GED_EXPORT BU_EXTERN(int ged_eye_pos, (struct ged *gedp, int argc, const char *argv[])); /** + * Globs expression against database objects + * + * Usage: + * expand expression + */ +GED_EXPORT BU_EXTERN(int ged_expand, (struct ged *gedp, int argc, const char *argv[])); + +/** + * Facetize the specified objects + * + * Usage: + * facetize new_obj old_obj [old_obj2 old_obj3 ...] + */ +GED_EXPORT BU_EXTERN(int ged_facetize, (struct ged *gedp, int argc, const char *argv[])); + +/** + * Find combinations that reference object + * + * Usage: + * find <objects> + */ +GED_EXPORT BU_EXTERN(int ged_find, (struct ged *gedp, int argc, const char *argv[])); + +/** * returns form for objects of type "type" * * Usage: @@ -1174,6 +1262,30 @@ GED_EXPORT BU_EXTERN(int ged_get_eyemodel, (struct ged *gedp, int argc, const char *argv[])); /** + * Get the object's type + * + * Usage: + * get_type object + */ +GED_EXPORT BU_EXTERN(int ged_get_type, (struct ged *gedp, int argc, const char *argv[])); + +/** + * Create or append objects to a group + * + * Usage: + * group object(s) + */ +GED_EXPORT BU_EXTERN(int ged_group, (struct ged *gedp, int argc, const char *argv[])); + +/** + * Set the "hidden" flag for the specified objects so they do not appear in an "ls" command output + * + * Usage: + * hide <objects> + */ +GED_EXPORT BU_EXTERN(int ged_hide, (struct ged *gedp, int argc, const char *argv[])); + +/** * Returns how an object is being displayed * * Usage: @@ -1190,6 +1302,14 @@ GED_EXPORT BU_EXTERN(int ged_illum, (struct ged *gedp, int argc, const char *argv[])); /** + * Add instance of obj to comb + * + * Usage: + * instance obj comb [op] + */ +GED_EXPORT BU_EXTERN(int ged_instance, (struct ged *gedp, int argc, const char *argv[])); + +/** * Returns the inverse view size. * * Usage: @@ -1206,6 +1326,14 @@ GED_EXPORT BU_EXTERN(int ged_item, (struct ged *gedp, int argc, const char *argv[])); /** + * Save/keep the specified objects in the specified file + * + * Usage: + * keep file.g object(s) + */ +GED_EXPORT BU_EXTERN(int ged_keep, (struct ged *gedp, int argc, const char *argv[])); + +/** * Set/get the keypoint * * Usage: @@ -1214,6 +1342,30 @@ GED_EXPORT BU_EXTERN(int ged_keypoint, (struct ged *gedp, int argc, const char *argv[])); /** + * Kill/delete the specified objects from the database + * + * Usage: + * kill object(s) + */ +GED_EXPORT BU_EXTERN(int ged_kill, (struct ged *gedp, int argc, const char *argv[])); + +/** + * Kill/delete the specified objects from the database, removing all references + * + * Usage: + * killall object(s) + */ +GED_EXPORT BU_EXTERN(int ged_killall, (struct ged *gedp, int argc, const char *argv[])); + +/** + * Kill all paths belonging to objects + * + * Usage: + * killtree object(s) + */ +GED_EXPORT BU_EXTERN(int ged_killtree, (struct ged *gedp, int argc, const char *argv[])); + +/** * List object information, verbose. * * Usage: @@ -1246,6 +1398,14 @@ GED_EXPORT BU_EXTERN(int ged_ls, (struct ged *gedp, int argc, const char *argv[])); /** + * List object's tree as a tcl list of {operator object} pairs + * + * Usage: + * lt object + */ +GED_EXPORT BU_EXTERN(int ged_lt, (struct ged *gedp, int argc, const char *argv[])); + +/** * Convert the specified model point to a view point. * * Usage: @@ -1262,6 +1422,14 @@ GED_EXPORT BU_EXTERN(int ged_make, (struct ged *gedp, int argc, const char *argv[])); /** + * Make a bounding box (rpp) around the specified objects + * + * Usage: + * make_bb bbname object(s) + */ +GED_EXPORT BU_EXTERN(int ged_make_bb, (struct ged *gedp, int argc, const char *argv[])); + +/** * Make a unique object name. * * Usage: @@ -1270,6 +1438,14 @@ GED_EXPORT BU_EXTERN(int ged_make_name, (struct ged *gedp, int argc, const char *argv[])); /** + * Globs expression against database objects, does not return tokens that match nothing + * + * Usage: + * match expression + */ +GED_EXPORT BU_EXTERN(int ged_match, (struct ged *gedp, int argc, const char *argv[])); + +/** * Modify material information. * * Usage: @@ -1295,6 +1471,38 @@ GED_EXPORT BU_EXTERN(int ged_model2view, (struct ged *gedp, int argc, const char *argv[])); /** + * Move an arb's edge through point + * + * Usage: + * move_arb_edge arb edge pt + */ +GED_EXPORT BU_EXTERN(int ged_move_arb_edge, (struct ged *gedp, int argc, const char *argv[])); + +/** + * Move/rename a database object + * + * Usage: + * mv from to + */ +GED_EXPORT BU_EXTERN(int ged_move, (struct ged *gedp, int argc, const char *argv[])); + +/** + * Move/rename all occurrences object + * + * Usage: + * mvall from to + */ +GED_EXPORT BU_EXTERN(int ged_move_all, (struct ged *gedp, int argc, const char *argv[])); + +/** + * Move an arb's face through point + * + * Usage: + * move_arb_face arb face pt + */ +GED_EXPORT BU_EXTERN(int ged_move_arb_face, (struct ged *gedp, int argc, const char *argv[])); + +/** * Rotate the view. Note - x, y and z are rotations in model coordinates. * * Usage: @@ -1312,6 +1520,22 @@ GED_EXPORT BU_EXTERN(int ged_vnirt, (struct ged *gedp, int argc, const char *argv[])); /** + * Decimate NMG primitive via edge collapse + * + * Usage: + * nmg_collapse nmg_prim new_prim max_err_dist [min_angle] + */ +GED_EXPORT BU_EXTERN(int ged_nmg_collapse, (struct ged *gedp, int argc, const char *argv[])); + +/** + * Simplify the NMG primitive, if possible + * + * Usage: + * nmg_simplify [arb|tgc|ell|poly] new_prim nmg_prim + */ +GED_EXPORT BU_EXTERN(int ged_nmg_simplify, (struct ged *gedp, int argc, const char *argv[])); + +/** * Set/get object center. * * Usage: @@ -1320,6 +1544,14 @@ GED_EXPORT BU_EXTERN(int ged_ocenter, (struct ged *gedp, int argc, const char *argv[])); /** + * Open a database + * + * Usage: + * open [filename] + */ +GED_EXPORT BU_EXTERN(int ged_reopen, (struct ged *gedp, int argc, const char *argv[])); + +/** * Set the view orientation using a quaternion. * * Usage: @@ -1360,6 +1592,14 @@ GED_EXPORT BU_EXTERN(int ged_overlay, (struct ged *gedp, int argc, const char *argv[])); /** + * List all paths from name(s) to leaves + * + * Usage: + * pathlist name(s) + */ +GED_EXPORT BU_EXTERN(int ged_pathlist, (struct ged *gedp, int argc, const char *argv[])); + +/** * Lists all paths matching the input path * * Usage: @@ -1408,6 +1648,14 @@ GED_EXPORT BU_EXTERN(int ged_prcolor, (struct ged *gedp, int argc, const char *argv[])); /** + * Push objects' path transformations to primitives + * + * Usage: + * push object(s) + */ +GED_EXPORT BU_EXTERN(int ged_push, (struct ged *gedp, int argc, const char *argv[])); + +/** * Create a database object * * Usage: @@ -1429,6 +1677,30 @@ (struct ged_drawable *gdp)); /** + * Create or append objects to a region + * + * Usage: + * region object(s) + */ +GED_EXPORT BU_EXTERN(int ged_region, (struct ged *gedp, int argc, const char *argv[])); + +/** + * Returns a list of id to region name mappings for the entire database. + * + * Usage: + * rmap + */ +GED_EXPORT BU_EXTERN(int ged_rmap, (struct ged *gedp, int argc, const char *argv[])); + +/** + * Remove members from a combination + * + * Usage: + * remove object(s) + */ +GED_EXPORT BU_EXTERN(int ged_remove, (struct ged *gedp, int argc, const char *argv[])); + +/** * Returns the solid table & vector list as a string * * Usage: @@ -1469,6 +1741,14 @@ GED_EXPORT BU_EXTERN(int ged_rotate_about, (struct ged *gedp, int argc, const char *argv[])); /** + * Rotate an arb's face through point + * + * Usage: + * rotate_arb_face arb face pt + */ +GED_EXPORT BU_EXTERN(int ged_rotate_arb_face, (struct ged *gedp, int argc, const char *argv[])); + +/** * Rotate the point. * * Usage: @@ -1485,6 +1765,14 @@ GED_EXPORT BU_EXTERN(int ged_rt, (struct ged *gedp, int argc, const char *argv[])); /** + * Create an RT instance object + * + * Usage: + * rt_gettrees procname [-i] [-u] treetops + */ +GED_EXPORT BU_EXTERN(int ged_rt_gettrees, (struct ged *gedp, int argc, const char *argv[])); + +/** * Scale the view. * * Usage: @@ -1533,6 +1821,22 @@ GED_EXPORT BU_EXTERN(int ged_shader, (struct ged *gedp, int argc, const char *argv[])); /** + * Breaks the NMG model into seperate shells + * + * Usage: + * shells nmg_model + */ +GED_EXPORT BU_EXTERN(int ged_shells, (struct ged *gedp, int argc, const char *argv[])); + +/** + * Show the matrix transformations along path + * + * Usage: + * showmats path + */ +GED_EXPORT BU_EXTERN(int ged_showmats, (struct ged *gedp, int argc, const char *argv[])); + +/** * Get or set the view size. * * Usage: @@ -1549,6 +1853,39 @@ GED_EXPORT BU_EXTERN(int ged_slew, (struct ged *gedp, int argc, const char *argv[])); /** + * Count/list primitives/regions/groups + * + * Usage: + * summary [p r g] + */ +GED_EXPORT BU_EXTERN(int ged_summary, (struct ged *gedp, int argc, const char *argv[])); + +/** + * Set/get the database title + * + * Usage: + * title description + */ +GED_EXPORT BU_EXTERN(int ged_title, (struct ged *gedp, int argc, const char *argv[])); + +/** + * Set/get tessellation and calculation tolerances + * + * Usage: + * tol ([abs|rel|norm|dist|perp] [tolerance]) ... + */ +GED_EXPORT BU_EXTERN(int ged_tol, (struct ged *gedp, int argc, const char *argv[])); + +/** + * Find all top level objects + * + * Usage: + * tops [-a] [-h] [-n] [-p], if NEW_TOPS_BEHAVIOR + * tops [-g] [-n] [-u] + */ +GED_EXPORT BU_EXTERN(int ged_tops, (struct ged *gedp, int argc, const char *argv[])); + +/** * Translate the view. * * Usage: @@ -1565,6 +1902,30 @@ GED_EXPORT BU_EXTERN(int ged_tree, (struct ged *gedp, int argc, const char *argv[])); /** + * Unset the "hidden" flag for the specified objects so they will appear in a "t" or "ls" command output + * + * Usage: + * unhide object(s) + */ +GED_EXPORT BU_EXTERN(int ged_unhide, (struct ged *gedp, int argc, const char *argv[])); + +/** + * Set/get the database units + * + * Usage: + * units [mm|cm|m|in|ft|...] + */ +GED_EXPORT BU_EXTERN(int ged_units, (struct ged *gedp, int argc, const char *argv[])); + +/** + * Returns the database verson + * + * Usage: + * version + */ +GED_EXPORT BU_EXTERN(int ged_version, (struct ged *gedp, int argc, const char *argv[])); + +/** * Convert the specified view point to a model point. * * Usage: @@ -1597,6 +1958,30 @@ GED_EXPORT BU_EXTERN(int ged_viewdir, (struct ged *gedp, int argc, const char *argv[])); /** + * Return the specified region's id + * + * Usage: + * whatid region + */ +GED_EXPORT BU_EXTERN(int ged_whatid, (struct ged *gedp, int argc, const char *argv[])); + +/** + * Find the regions with the specified air codes + * + * Usage: + * whichair codes(s) + */ +GED_EXPORT BU_EXTERN(int ged_whichair, (struct ged *gedp, int argc, const char *argv[])); + +/** + * Find the regions with the specified region ids + * + * Usage: + * whichid [-s] id(s) + */ +GED_EXPORT BU_EXTERN(int ged_whichid, (struct ged *gedp, int argc, const char *argv[])); + +/** * List the objects currently prepped for drawing * * Usage: @@ -1613,6 +1998,14 @@ GED_EXPORT BU_EXTERN(int ged_wmater, (struct ged *gedp, int argc, const char *argv[])); /** + * Push object path transformations to solids, creating primitives if necessary + * + * Usage: + * xpush object + */ +GED_EXPORT BU_EXTERN(int ged_xpush, (struct ged *gedp, int argc, const char *argv[])); + +/** * Erase all currently displayed geometry * * Usage: Modified: brlcad/trunk/misc/win32-msvc8/libged/libged.vcproj =================================================================== --- brlcad/trunk/misc/win32-msvc8/libged/libged.vcproj 2008-07-18 16:20:20 UTC (rev 31878) +++ brlcad/trunk/misc/win32-msvc8/libged/libged.vcproj 2008-07-18 16:39:53 UTC (rev 31879) @@ -174,6 +174,10 @@ > </File> <File + RelativePath="..\..\..\src\libged\bot_smooth.c" + > + </File> + <File RelativePath="..\..\..\src\libged\cat.c" > </File> @@ -186,6 +190,10 @@ > </File> <File + RelativePath="..\..\..\src\libged\comb.c" + > + </File> + <File RelativePath="..\..\..\src\libged\comb_color.c" > </File> @@ -194,6 +202,22 @@ > </File> <File + RelativePath="..\..\..\src\libged\concat.c" + > + </File> + <File + RelativePath="..\..\..\src\libged\copy.c" + > + </File> + <File + RelativePath="..\..\..\src\libged\copyeval.c" + > + </File> + <File + RelativePath="..\..\..\src\libged\dbip.c" + > + </File> + <File RelativePath="..\..\..\src\libged\dg_obj.c" > </File> @@ -206,6 +230,14 @@ > </File> <File + RelativePath="..\..\..\src\libged\dump.c" + > + </File> + <File + RelativePath="..\..\..\src\libged\dup.c" + > + </File> + <File RelativePath="..\..\..\src\libged\edcomb.c" > </File> @@ -226,6 +258,10 @@ > </File> <File + RelativePath="..\..\..\src\libged\expand.c" + > + </File> + <File RelativePath="..\..\..\src\libged\eye.c" > </File> @@ -234,6 +270,14 @@ > </File> <File + RelativePath="..\..\..\src\libged\facetize.c" + > + </File> + <File + RelativePath="..\..\..\src\libged\find.c" + > + </File> + <File RelativePath="..\..\..\src\libged\form.c" > </File> @@ -258,10 +302,22 @@ > </File> <File + RelativePath="..\..\..\src\libged\get_type.c" + > + </File> + <File RelativePath="..\..\..\src\libged\globals.c" > </File> <File + RelativePath="..\..\..\src\libged\group.c" + > + </File> + <File + RelativePath="..\..\..\src\libged\hide.c" + > + </File> + <File RelativePath="..\..\..\src\libged\how.c" > </File> @@ -274,6 +330,10 @@ > </File> <File + RelativePath="..\..\..\src\libged\instance.c" + > + </File> + <File RelativePath="..\..\..\src\libged\isize.c" > </File> @@ -282,6 +342,22 @@ > </File> <File + RelativePath="..\..\..\src\libged\keep.c" + > + </File> + <File + RelativePath="..\..\..\src\libged\kill.c" + > + </File> + <File + RelativePath="..\..\..\src\libged\killall.c" + > + </File> + <File + RelativePath="..\..\..\src\libged\killtree.c" + > + </File> + <File RelativePath="..\..\..\src\libged\keypoint.c" > </File> @@ -302,6 +378,10 @@ > </File> <File + RelativePath="..\..\..\src\libged\lt.c" + > + </File> + <File RelativePath="..\..\..\src\libged\m2v_point.c" > </File> @@ -310,10 +390,18 @@ > </File> <File + RelativePath="..\..\..\src\libged\make_bb.c" + > + </File> + <File RelativePath="..\..\..\src\libged\make_name.c" > </File> <File + RelativePath="..\..\..\src\libged\match.c" + > + </File> + <File RelativePath="..\..\..\src\libged\mater.c" > </File> @@ -326,6 +414,22 @@ > </File> <File + RelativePath="..\..\..\src\libged\move.c" + > + </File> + <File + RelativePath="..\..\..\src\libged\move_all.c" + > + </File> + <File + RelativePath="..\..\..\src\libged\move_arb_edge.c" + > + </File> + <File + RelativePath="..\..\..\src\libged\move_arb_face.c" + > + </File> + <File RelativePath="..\..\..\src\libged\mrot.c" > </File> @@ -334,10 +438,22 @@ > </File> <File + RelativePath="..\..\..\src\libged\nmg_collapse.c" + > + </File> + <File + RelativePath="..\..\..\src\libged\nmg_simplify.c" + > + </File> + <File RelativePath="..\..\..\src\libged\ocenter.c" > </File> <File + RelativePath="..\..\..\src\libged\open.c" + > + </File> + <File RelativePath="..\..\..\src\libged\orient.c" > </File> @@ -358,6 +474,10 @@ > </File> <File + RelativePath="..\..\..\src\libged\pathlist.c" + > + </File> + <File RelativePath="..\..\..\src\libged\pathsum.c" > </File> @@ -382,6 +502,10 @@ > </File> <File + RelativePath="..\..\..\src\libged\push.c" + > + </File> + <File RelativePath="..\..\..\src\libged\put.c" > </File> @@ -390,10 +514,22 @@ > </File> <File + RelativePath="..\..\..\src\libged\region.c" + > + </File> + <File + RelativePath="..\..\..\src\libged\remove.c" + > + </File> + <File RelativePath="..\..\..\src\libged\report.c" > </File> <File + RelativePath="..\..\..\src\libged\rmap.c" + > + </File> + <File RelativePath="..\..\..\src\libged\rmat.c" > </File> @@ -414,10 +550,18 @@ > </File> <File + RelativePath="..\..\..\src\libged\rotate_arb_face.c" + > + </File> + <File RelativePath="..\..\..\src\libged\rt.c" > </File> <File + RelativePath="..\..\..\src\libged\rt_gettrees.c" + > + </File> + <File RelativePath="..\..\..\src\libged\scale.c" > </File> @@ -442,6 +586,14 @@ > </File> <File + RelativePath="..\..\..\src\libged\shells.c" + > + </File> + <File + RelativePath="..\..\..\src\libged\showmats.c" + > + </File> + <File RelativePath="..\..\..\src\libged\size.c" > </File> @@ -450,6 +602,22 @@ > </File> <File + RelativePath="..\..\..\src\libged\summary.c" + > + </File> + <File + RelativePath="..\..\..\src\libged\title.c" + > + </File> + <File + RelativePath="..\..\..\src\libged\tol.c" + > + </File> + <File + RelativePath="..\..\..\src\libged\tops.c" + > + </File> + <File RelativePath="..\..\..\src\libged\tra.c" > </File> @@ -466,6 +634,18 @@ > </File> <File + RelativePath="..\..\..\src\libged\unhide.c" + > + </File> + <File + RelativePath="..\..\..\src\libged\units.c" + > + </File> + <File + RelativePath="..\..\..\src\libged\version.c" + > + </File> + <File RelativePath="..\..\..\src\libged\v2m_point.c" > </File> @@ -502,6 +682,18 @@ > </File> <File + RelativePath="..\..\..\src\libged\whatid.c" + > + </File> + <File + RelativePath="..\..\..\src\libged\whichair.c" + > + </File> + <File + RelativePath="..\..\..\src\libged\whichid.c" + > + </File> + <File RelativePath="..\..\..\src\libged\who.c" > </File> @@ -510,6 +702,10 @@ > </File> <File + RelativePath="..\..\..\src\libged\xpush.c" + > + </File> + <File RelativePath="..\..\..\src\libged\zap.c" > </File> Modified: brlcad/trunk/src/libged/Makefile.am =================================================================== --- brlcad/trunk/src/libged/Makefile.am 2008-07-18 16:20:20 UTC (rev 31878) +++ brlcad/trunk/src/libged/Makefile.am 2008-07-18 16:39:53 UTC (rev 31879) @@ -15,14 +15,22 @@ blast.c \ bot_decimate.c \ bot_face_sort.c \ + bot_smooth.c \ cat.c \ center.c \ color.c \ + comb.c \ comb_color.c \ comb_std.c \ + concat.c \ + copy.c \ + copyeval.c \ + dbip.c \ dg_obj.c \ dir2ae.c \ draw.c \ + dump.c \ + dup.c \ editit.c \ edcomb.c \ edmater.c \ @@ -30,66 +38,103 @@ erase_all.c \ eye.c \ eye_pos.c \ + expand.c \ + facetize.c \ + find.c \ form.c \ ged.c \ get.c \ get_autoview.c \ get_eyemodel.c \ get_obj_bounds.c \ + get_type.c \ globals.c \ + group.c \ + hide.c \ how.c \ importFg4Section.c \ illum.c \ + instance.c \ isize.c \ item.c \ + keep.c \ keypoint.c \ + kill.c \ + killall.c \ + killtree.c \ list.c \ log.c \ lookat.c \ ls.c \ + lt.c \ m2v_point.c \ make.c \ + make_bb.c \ make_name.c \ mater.c \ + match.c \ mirror.c \ model2view.c \ + move.c \ + move_all.c \ + move_arb_edge.c \ + move_arb_face.c \ mrot.c \ nirt.c \ + nmg_collapse.c \ + nmg_simplify.c \ ocenter.c \ + open.c \ orient.c \ orotate.c \ oscale.c \ otranslate.c \ overlay.c \ + pathlist.c \ pathsum.c \ perspective.c \ pmat.c \ pmodel2view.c \ pov.c \ prcolor.c \ + push.c \ put.c \ qray.c \ + region.c \ + remove.c \ report.c \ + rmap.c \ rmat.c \ rmater.c \ rot.c \ rot_point.c \ rotate_about.c \ + rotate_arb_face.c \ rt.c \ + rt_gettrees.c \ scale.c \ set_outputHandler.c \ set_transparency.c \ set_uplotOutputMode.c \ setview.c \ shader.c \ + shells.c \ + showmats.c \ size.c \ slew.c \ + summary.c \ + title.c \ + tol.c \ + tops.c \ tra.c \ trace.c \ track.c \ tree.c \ + unhide.c \ + units.c \ v2m_point.c \ vdraw.c \ + version.c \ view_obj.c \ view2model.c \ viewdir.c \ @@ -97,14 +142,18 @@ vutil.c \ wdb_comb_std.c \ wdb_obj.c \ + whatid.c \ + whichair.c \ + whichid.c \ who.c \ wmater.c \ + xpush.c \ zap.c \ zoom.c # cannot set per-target CPPFLAGS until automake 1.7+ AM_CPPFLAGS = \ - ${TCL_CPPFLAGS} + ${TCL_CPPFLAGS} -DNEW_TOPS_BEHAVIOR noinst_HEADERS = \ ged_private.h \ Added: brlcad/trunk/src/libged/bot_smooth.c =================================================================== --- brlcad/trunk/src/libged/bot_smooth.c (rev 0) +++ brlcad/trunk/src/libged/bot_smooth.c 2008-07-18 16:39:53 UTC (rev 31879) @@ -0,0 +1,70 @@ +/* B O T _ S M O O T H . C + * BRL-CAD + * + * Copyright (c) 2008 United States Government as represented by + * the U.S. Army Research Laboratory. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * version 2.1 as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this file; see the file named COPYING for more + * information. + */ +/** @file bot_smooth.c + * + * The bot_smooth command. + * + */ + +#include "common.h" + +#include <string.h> + +#include "bio.h" +#include "cmd.h" +#include "ged_private.h" + +int +ged_bot_smooth(struct ged *gedp, int argc, const char *argv[]) +{ + static const char *usage = "[-t ntol] new_bot old_bot"; + + GED_CHECK_DATABASE_OPEN(gedp, BRLCAD_ERROR); + + /* initialize result */ + bu_vls_trunc(&gedp->ged_result_str, 0); + gedp->ged_result = GED_RESULT_NULL; + gedp->ged_result_flags = 0; + + /* must be wanting help */ + if (argc == 1) { + gedp->ged_result_flags |= GED_RESULT_FLAGS_HELP_BIT; + bu_vls_printf(&gedp->ged_result_str, "Usage: %s %s", argv[0], usage); + return BRLCAD_OK; + } + + if (argc < 2 || MAXARGS < argc) { + bu_vls_printf(&gedp->ged_result_str, "Usage: %s %s", argv[0], usage); + return BRLCAD_ERROR; + } + + return BRLCAD_OK; +} + + +/* + * Local Variables: + * tab-width: 8 + * mode: C + * indent-tabs-mode: t + * c-file-style: "stroustrup" + * End: + * ex: shiftwidth=4 tabstop=8 + */ Property changes on: brlcad/trunk/src/libged/bot_smooth.c ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:eol-style + native Added: brlcad/trunk/src/libged/comb.c =================================================================== --- brlcad/trunk/src/libged/comb.c (rev 0) +++ brlcad/trunk/src/libged/comb.c 2008-07-18 16:39:53 UTC (rev 31879) @@ -0,0 +1,274 @@ +/* C O M B . C + * BRL-CAD + * + * Copyright (c) 2008 United States Government as represented by + * the U.S. Army Research Laboratory. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * version 2.1 as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this file; see the file named COPYING for more + * information. + */ +/** @file comb.c + * + * The comb command. + * + */ + +#include "common.h" + +#include "bio.h" +#include "cmd.h" +#include "wdb.h" +#include "ged_private.h" + +int +ged_comb(struct ged *gedp, int argc, const char *argv[]) +{ + register struct directory *dp; + char *comb_name; + register int i; + char oper; + static const char *usage = "comb_name <operation solid>"; + + GED_CHECK_DATABASE_OPEN(gedp, BRLCAD_ERROR); + GED_CHECK_READ_ONLY(gedp, BRLCAD_ERROR); + + /* initialize result */ + bu_vls_trunc(&gedp->ged_result_str, 0); + gedp->ged_result = GED_RESULT_NULL; + gedp->ged_result_flags = 0; + + if (argc < 4 || MAXARGS < argc) { + bu_vls_printf(&gedp->ged_result_str, "Usage: %s %s", argv[0], usage); + return BRLCAD_ERROR; + } + + /* Check for odd number of arguments */ + if (argc & 01) { + bu_vls_printf(&gedp->ged_result_str, "error in number of args!"); + return BRLCAD_ERROR; + } + + /* Save combination name, for use inside loop */ + comb_name = (char *)argv[1]; + if ((dp=db_lookup(gedp->ged_wdbp->dbip, comb_name, LOOKUP_QUIET)) != DIR_NULL) { + if (!(dp->d_flags & DIR_COMB)) { + bu_vls_printf(&gedp->ged_result_str, "ERROR: %s is not a combination", comb_name); + return BRLCAD_ERROR; + } + } + + /* Get operation and solid name for each solid */ + for (i = 2; i < argc; i += 2) { + if (argv[i][1] != '\0') { + bu_vls_printf(&gedp->ged_result_str, "bad operation: %s skip member: %s\n", argv[i], argv[i+1]); + continue; + } + oper = argv[i][0]; + if ((dp = db_lookup(gedp->ged_wdbp->dbip, argv[i+1], LOOKUP_NOISY)) == DIR_NULL) { + bu_vls_printf(&gedp->ged_result_str, "skipping %s\n", argv[i+1]); + continue; + } + + if (oper != WMOP_UNION && oper != WMOP_SUBTRACT && oper != WMOP_INTERSECT) { + bu_vls_printf(&gedp->ged_result_str, "bad operation: %c skip member: %s\n", + oper, dp->d_namep); + continue; + } + + if (ged_combadd(gedp, dp, comb_name, 0, oper, 0, 0) == DIR_NULL) { + bu_vls_printf(&gedp->ged_result_str, "error in combadd"); + return BRLCAD_ERROR; + } + } + + if (db_lookup(gedp->ged_wdbp->dbip, comb_name, LOOKUP_QUIET) == DIR_NULL) { + bu_vls_printf(&gedp->ged_result_str, "Error: %s not created", comb_name); + return BRLCAD_ERROR; + } + + return BRLCAD_OK; +} + +/* + * G E D _ C O M B A D D + * + * Add an instance of object 'objp' to combination 'name'. + * If the combination does not exist, it is created. + * region_flag is 1 (region), or 0 (group). + * + * Preserves the GIFT semantics. + */ +struct directory * +ged_combadd(struct ged *gedp, + register struct directory *objp, + char *combname, + int region_flag, /* true if adding region */ + int relation, /* = UNION, SUBTRACT, INTERSECT */ + int ident, /* "Region ID" */ + int air /* Air code */) +{ + register struct directory *dp; + struct rt_db_internal intern; + struct rt_comb_internal *comb; + union tree *tp; + struct rt_tree_array *tree_list; + int node_count; + int actual_count; + + /* + * Check to see if we have to create a new combination + */ + if ((dp = db_lookup(gedp->ged_wdbp->dbip, combname, LOOKUP_QUIET)) == DIR_NULL) { + int flags; + + if (region_flag) + flags = DIR_REGION | DIR_COMB; + else + flags = DIR_COMB; + + RT_INIT_DB_INTERNAL(&intern); + intern.idb_major_type = DB5_MAJORTYPE_BRLCAD; + intern.idb_type = ID_COMBINATION; + intern.idb_meth = &rt_functab[ID_COMBINATION]; + + /* Update the in-core directory */ + if ((dp = db_diradd(gedp->ged_wdbp->dbip, combname, -1, 0, flags, (genptr_t)&intern.idb_type)) == DIR_NULL) { + bu_vls_printf(&gedp->ged_result_str, + "An error has occured while adding '%s' to the database.\n", + combname); + return DIR_NULL; + } + + BU_GETSTRUCT(comb, rt_comb_internal); + intern.idb_ptr = (genptr_t)comb; + comb->magic = RT_COMB_MAGIC; + bu_vls_init(&comb->shader); + bu_vls_init(&comb->material); + comb->region_id = 0; /* This makes a comb/group by default */ + comb->tree = TREE_NULL; + + if (region_flag) { + comb->region_flag = 1; + comb->region_id = ident; + comb->aircode = air; + comb->los = gedp->ged_wdbp->wdb_los_default; + comb->GIFTmater = gedp->ged_wdbp->wdb_mat_default; + bu_vls_printf(&gedp->ged_result_str, + "Creating region id=%d, air=%d, GIFTmaterial=%d, los=%d\n", + ident, air, + gedp->ged_wdbp->wdb_mat_default, + gedp->ged_wdbp->wdb_los_default); + } else { + comb->region_flag = 0; + } + RT_GET_TREE( tp, &rt_uniresource ); + tp->magic = RT_TREE_MAGIC; + tp->tr_l.tl_op = OP_DB_LEAF; + tp->tr_l.tl_name = bu_strdup( objp->d_namep ); + tp->tr_l.tl_mat = (matp_t)NULL; + comb->tree = tp; + + if (rt_db_put_internal(dp, gedp->ged_wdbp->dbip, &intern, &rt_uniresource) < 0) { + bu_vls_printf(&gedp->ged_result_str, "Failed to write %s", dp->d_namep); + return DIR_NULL; + } + return dp; + } else if (!(dp->d_flags & DIR_COMB)) { + bu_vls_printf(&gedp->ged_result_str, "%s exists, but is not a combination\n"); + return DIR_NULL; + } + + /* combination exists, add a new member */ + if (rt_db_get_internal(&intern, dp, gedp->ged_wdbp->dbip, (fastf_t *)NULL, &rt_uniresource) < 0) { + bu_vls_printf(&gedp->ged_result_str, "read error, aborting\n"); + return DIR_NULL; + } + + comb = (struct rt_comb_internal *)intern.idb_ptr; + RT_CK_COMB(comb); + + if (region_flag && !comb->region_flag) { + bu_vls_printf(&gedp->ged_result_str, "%s: not a region\n"); + return DIR_NULL; + } + + if (comb->tree && db_ck_v4gift_tree(comb->tree) < 0) { + db_non_union_push(comb->tree, &rt_uniresource); + if (db_ck_v4gift_tree(comb->tree) < 0) { + bu_vls_printf(&gedp->ged_result_str, "Cannot flatten tree for editing\n"); + rt_db_free_internal(&intern, &rt_uniresource); + return DIR_NULL; + } + } + + /* make space for an extra leaf */ + node_count = db_tree_nleaves( comb->tree ) + 1; + tree_list = (struct rt_tree_array *)bu_calloc( node_count, + sizeof( struct rt_tree_array ), "tree list" ); + + /* flatten tree */ + if (comb->tree) { + actual_count = 1 + (struct rt_tree_array *)db_flatten_tree( + tree_list, comb->tree, OP_UNION, 1, &rt_uniresource ) + - tree_list; + BU_ASSERT_LONG( actual_count, ==, node_count ); + comb->tree = TREE_NULL; + } + + /* insert new member at end */ + switch (relation) { + case '+': + tree_list[node_count - 1].tl_op = OP_INTERSECT; + break; + case '-': + tree_list[node_count - 1].tl_op = OP_SUBTRACT; + break; + default: + bu_vls_printf(&gedp->ged_result_str, "unrecognized relation (assume UNION)\n"); + case 'u': + tree_list[node_count - 1].tl_op = OP_UNION; + break; + } + + /* make new leaf node, and insert at end of list */ + RT_GET_TREE( tp, &rt_uniresource ); + tree_list[node_count-1].tl_tree = tp; + tp->tr_l.magic = RT_TREE_MAGIC; + tp->tr_l.tl_op = OP_DB_LEAF; + tp->tr_l.tl_name = bu_strdup( objp->d_namep ); + tp->tr_l.tl_mat = (matp_t)NULL; + + /* rebuild the tree */ + comb->tree = (union tree *)db_mkgift_tree( tree_list, node_count, &rt_uniresource ); + + /* and finally, write it out */ + if (rt_db_put_internal(dp, gedp->ged_wdbp->dbip, &intern, &rt_uniresource) < 0) { + bu_vls_printf(&gedp->ged_result_str, "Failed to write %s", dp->d_namep); + return DIR_NULL; + } + + bu_free((char *)tree_list, "combadd: tree_list"); + + return (dp); +} + + +/* + * Local Variables: + * mode: C + * tab-width: 8 + * indent-tabs-mode: t + * c-file-style: "stroustrup" + * End: + * ex: shiftwidth=4 tabstop=8 + */ Property changes on: brlcad/trunk/src/libged/comb.c ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:eol-style + native Added: brlcad/trunk/src/libged/concat.c =================================================================== --- brlcad/trunk/src/libged/concat.c (rev 0) +++ brlcad/trunk/src/libged/concat.c 2008-07-18 16:39:53 UTC (rev 31879) @@ -0,0 +1,461 @@ +/* C O N C A T . C + * BRL-CAD + * + * Copyright (c) 2008 United States Government as represented by + * the U.S. Army Research Laboratory. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * version 2.1 as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this file; see the file named COPYING for more + * information. + */ +/** @file concat.c + * + * The concat command. + * + */ + +#include "common.h" + +#include <string.h> + +#include "bio.h" +#include "cmd.h" +#include "rtgeom.h" +#include "ged_private.h" + +/** + * structure used by the dbconcat command for keeping tract of where + * objects are being copied to and from, and what type of affix to + * use. + */ +struct ged_concat_data { + int copy_mode; + struct db_i *old_dbip; + struct db_i *new_dbip; + struct bu_vls affix; +}; + +#define NO_AFFIX 1<<0 +#define AUTO_PREFIX 1<<1 +#define AUTO_SUFFIX 1<<2 +#define CUSTOM_PREFIX 1<<3 +#define CUSTOM_SUFFIX 1<<4 + +static int +ged_copy_object(struct ged *gedp, + struct directory *input_dp, + struct db_i *input_dbip, + struct db_i *curr_dbip, + Tcl_HashTable *name_tbl, + Tcl_HashTable *used_names_tbl, + struct ged_concat_data *cc_data); + +int +ged_concat(struct ged *gedp, int argc, const char *argv[]) +{ + struct db_i *newdbp; + int bad = 0; + struct directory *dp; + Tcl_HashTable name_tbl; + Tcl_HashTable used_names_tbl; + Tcl_HashEntry *ptr; + Tcl_HashSearch search; + struct ged_concat_data cc_data; + const char *oldfile; + static const char *usage = "[-s|-p] file.g [suffix|prefix]"; + + GED_CHECK_DATABASE_OPEN(gedp, BRLCAD_ERROR); + GED_CHECK_READ_ONLY(gedp, BRLCAD_ERROR); + + /* initialize result */ + bu_vls_trunc(&gedp->ged_result_str, 0); + gedp->ged_result = GED_RESULT_NULL; + gedp->ged_result_flags = 0; + + /* must be wanting help */ + if (argc == 1) { + gedp->ged_result_flags |= GED_RESULT_FLAGS_HELP_BIT; + bu_vls_printf(&gedp->ged_result_str, "Usage: %s %s", argv[0], usage); + return BRLCAD_OK; + } + + if ( (argc < 3) || + (argc > 4) || + (argc > 1 && argv[1][0] == '-' && argc != 4) ) { + bu_vls_printf(&gedp->ged_result_str, "Usage: %s %s", argv[0], usage); + return BRLCAD_ERROR; + } + + bu_vls_init( &cc_data.affix ); + cc_data.copy_mode = 0; + + if ( argv[1][0] == '-' ) { + /* specified suffix or prefix explicitly */ + + oldfile = argv[2]; + + if ( argv[1][1] == 'p' ) { + + cc_data.copy_mode |= AUTO_PREFIX; + + if (strcmp(argv[3], "/") == 0) { + cc_data.copy_mode = NO_AFFIX | CUSTOM_PREFIX; + } else { + (void)bu_vls_strcpy(&cc_data.affix, argv[3]); + cc_data.copy_mode |= CUSTOM_PREFIX; + } + + } else if ( argv[1][1] == 's' ) { + + cc_data.copy_mode |= AUTO_SUFFIX; + + if (strcmp(argv[3], "/") == 0) { + cc_data.copy_mode = NO_AFFIX | CUSTOM_SUFFIX; + } else { + (void)bu_vls_strcpy(&cc_data.affix, argv[3]); + cc_data.copy_mode |= CUSTOM_SUFFIX; + } + + } else { + bu_vls_free( &cc_data.affix ); + bu_vls_printf(&gedp->ged_result_str, "Usage: %s %s", argv[0], usage); + return BRLCAD_ERROR; + } + + } else { + /* no prefix/suffix preference, use prefix */ + + oldfile = argv[1]; + + cc_data.copy_mode |= AUTO_PREFIX; + + if (strcmp(argv[2], "/") == 0) { + cc_data.copy_mode = NO_AFFIX | CUSTOM_PREFIX; + } else { + (void)bu_vls_strcpy(&cc_data.affix, argv[2]); + cc_data.copy_mode |= CUSTOM_PREFIX; + } + + } + + if ( gedp->ged_wdbp->dbip->dbi_version < 5 ) { + if ( bu_vls_strlen(&cc_data.affix) > GED_V4_MAXNAME-1) { + bu_log("ERROR: affix [%s] is too long for v%d\n", bu_vls_addr(&cc_data.affix), gedp->ged_wdbp->dbip->dbi_version); + bu_vls_free( &cc_data.affix ); + return BRLCAD_ERROR; + } + } + + /* open the input file */ + if ((newdbp = db_open(oldfile, "r")) == DBI_NULL) { + bu_vls_free( &cc_data.affix ); + perror(oldfile); + bu_vls_printf(&gedp->ged_result_str, "%s: Can't open %s", argv[0], oldfile); + return BRLCAD_ERROR; + } + + if ( newdbp->dbi_version > 4 && gedp->ged_wdbp->dbip->dbi_version < 5 ) { + bu_vls_free( &cc_data.affix ); + bu_vls_printf(&gedp->ged_result_str, "%s: databases are incompatible, use dbupgrade on %s first", + argv[0], gedp->ged_wdbp->dbip->dbi_filename); + return BRLCAD_ERROR; + } + + db_dirbuild( newdbp ); + + cc_data.new_dbip = newdbp; + cc_data.old_dbip = gedp->ged_wdbp->dbip; + + /* visit each directory pointer in the input database */ + Tcl_InitHashTable( &name_tbl, TCL_STRING_KEYS ); + Tcl_InitHashTable( &used_names_tbl, TCL_STRING_KEYS ); + + FOR_ALL_DIRECTORY_START( dp, newdbp ) { + if ( dp->d_major_type == DB5_MAJORTYPE_ATTRIBUTE_ONLY ) { + /* skip GLOBAL object */ + continue; + } + ged_copy_object(gedp, dp, newdbp, gedp->ged_wdbp->dbip, &name_tbl, &used_names_tbl, &cc_data); + } FOR_ALL_DIRECTORY_END; + + bu_vls_free( &cc_data.affix ); + rt_mempurge(&(newdbp->dbi_freep)); + + /* Free all the directory entries, and close the input database */ + db_close(newdbp); + + db_sync(gedp->ged_wdbp->dbip); /* force changes to disk */ + + /* Free the Hash tables */ + ptr = Tcl_FirstHashEntry( &name_tbl, &search ); + while ( ptr ) { + bu_free( (char *)Tcl_GetHashValue( ptr ), "new name" ); + ptr = Tcl_NextHashEntry( &search ); + } + Tcl_DeleteHashTable( &name_tbl ); + Tcl_DeleteHashTable( &used_names_tbl ); + + return bad ? BRLCAD_ERROR : BRLCAD_OK; +} + +/** + * find a new unique name given a list of previously used names, and + * the type of naming mode that described what type of affix to use. + */ +static char * +ged_get_new_name(const char *name, + struct db_i *dbip, + Tcl_HashTable *name_tbl, + Tcl_HashTable *used_names_tbl, + struct ged_concat_data *cc_data) +{ + struct bu_vls new_name; + Tcl_HashEntry *ptr = NULL; + char *aname = NULL; + char *ret_name = NULL; + int new=0; + long num=0; + + RT_CK_DBI(dbip); + BU_ASSERT(name_tbl); + BU_ASSERT(used_names_tbl); + BU_ASSERT(cc_data); + + if (!name) { + bu_log("WARNING: encountered NULL name, renaming to \"UNKNOWN\"\n"); + name = "UNKNOWN"; + } + + ptr = Tcl_CreateHashEntry( name_tbl, name, &new ); + + if ( !new ) { + return( (char *)Tcl_GetHashValue( ptr ) ); + } + + bu_vls_init( &new_name ); + + do { + /* iterate until we find an object name that is not in + * use, trying to accommodate the user's requested affix + * naming mode. + */ + + bu_vls_trunc( &new_name, 0 ); + + if (cc_data->copy_mode & NO_AFFIX) { + if (num > 0 && cc_data->copy_mode & CUSTOM_PREFIX) { + /* auto-increment prefix */ + bu_vls_printf( &new_name, "%ld_", num ); + } + bu_vls_strcat( &new_name, name ); + if (num > 0 && cc_data->copy_mode & CUSTOM_SUFFIX) { + /* auto-increment suffix */ + bu_vls_printf( &new_name, "_%ld", num ); + } + } else if (cc_data->copy_mode & CUSTOM_SUFFIX) { + /* use custom suffix */ + bu_vls_strcpy( &new_name, name ); + if (num > 0) { + bu_vls_printf( &new_name, "_%ld_", num ); + } + bu_vls_vlscat( &new_name, &cc_data->affix ); + } else if (cc_data->copy_mode & CUSTOM_PREFIX) { + /* use custom prefix */ + bu_vls_vlscat( &new_name, &cc_data->affix ); + if (num > 0) { + bu_vls_printf( &new_name, "_%ld_", num ); + } + bu_vls_strcat( &new_name, name ); + } else if (cc_data->copy_mode & AUTO_SUFFIX) { + /* use auto-incrementing suffix */ + bu_vls_strcat( &new_name, name ); + bu_vls_printf( &new_name, "_%ld", num ); + } else if (cc_data->copy_mode & AUTO_PREFIX) { + /* use auto-incrementing prefix */ + bu_vls_printf( &new_name, "%ld_", num ); + bu_vls_strcat( &new_name, name ); + } else { + /* no custom suffix/prefix specified, use prefix */ + if (num > 0) { + bu_vls_printf( &new_name, "_%ld", num ); + } + bu_vls_strcpy( &new_name, name ); + } + + /* make sure it fits for v4 */ + if ( cc_data->old_dbip->dbi_version < 5 ) { + if (bu_vls_strlen(&new_name) > GED_V4_MAXNAME) { + bu_log("ERROR: generated new name [%s] is too long (%ld > %ld)\n", bu_vls_addr(&new_name), bu_vls_strlen(&new_name), GED_V4_MAXNAME); + } + return NULL; + } + aname = bu_vls_addr( &new_name ); + + num++; + + } while (db_lookup( dbip, aname, LOOKUP_QUIET ) != DIR_NULL || + Tcl_FindHashEntry( used_names_tbl, aname ) != NULL); + + /* if they didn't get what they asked for, warn them */ + if (num > 1) { + if (cc_data->copy_mode & NO_AFFIX) { + bu_log("WARNING: unable to import [%s] without an affix, imported as [%s]\n", name, bu_vls_addr(&new_name)); + } else if (cc_data->copy_mode & CUSTOM_SUFFIX) { + bu_log("WARNING: unable to import [%s] as [%s%s], imported as [%s]\n", name, name, bu_vls_addr(&cc_data->affix), bu_vls_addr(&new_name)); + } else if (cc_data->copy_mode & CUSTOM_PREFIX) { + bu_log("WARNING: unable to import [%s] as [%s%s], imported as [%s]\n", name, bu_vls_addr(&cc_data->affix), name, bu_vls_addr(&new_name)); + } + } + + /* we should now have a unique name. store it in the hash */ + ret_name = bu_vls_strgrab( &new_name ); + Tcl_SetHashValue( ptr, (ClientData)ret_name ); + (void)Tcl_CreateHashEntry( used_names_tbl, ret_name, &new ); + bu_vls_free( &new_name ); + + return( ret_name ); +} + +/** + * + * + */ +static void +ged_adjust_names(union tree *trp, + struct db_i *dbip, + Tcl_HashTable *name_tbl, + Tcl_HashTable *used_names_tbl, + struct ged_concat_data *cc_data) +{ + char *new_name; + + if ( trp == NULL ) { + return; + } + + switch ( trp->tr_op ) { + case OP_DB_LEAF: + new_name = ged_get_new_name(trp->tr_l.tl_name, dbip, + name_tbl, used_names_tbl, cc_data); + if ( new_name ) { + bu_free( trp->tr_l.tl_name, "leaf name" ); + trp->tr_l.tl_name = bu_strdup( new_name ); + } + break; + case OP_UNION: + case OP_INTERSECT: + case OP_SUBTRACT: + case OP_XOR: + ged_adjust_names(trp->tr_b.tb_left, dbip, + name_tbl, used_names_tbl, cc_data); + ged_adjust_names(trp->tr_b.tb_right, dbip, + name_tbl, used_names_tbl, cc_data); + break; + case OP_NOT: + case OP_GUARD: + case OP_XNOP: + ged_adjust_names(trp->tr_b.tb_left, dbip, + name_tbl, used_names_tbl, cc_data); + break; + } +} + +static int +ged_copy_object(struct ged *gedp, + struct directory *input_dp, + struct db_i *input_dbip, + struct db_i *curr_dbip, + Tcl_HashTable *name_tbl, + Tcl_HashTable *used_names_tbl, + struct ged_concat_data *cc_data) +{ + struct rt_db_internal ip; + struct rt_extrude_internal *extr; + struct rt_dsp_internal *dsp; + struct rt_comb_internal *comb; + struct directory *new_dp; + char *new_name; + + if ( rt_db_get_internal( &ip, input_dp, input_dbip, NULL, &rt_uniresource) < 0 ) { + bu_vls_printf(&gedp->ged_result_str, + "Failed to get internal form of object (%s) - aborting!!!\n", + input_dp->d_namep); + return BRLCAD_ERROR; + } + + if ( ip.idb_major_type == DB5_MAJORTYPE_BRLCAD ) { + /* adjust names of referenced object in any object that reference other objects */ + switch ( ip.idb_minor_type ) { + case DB5_MINORTYPE_BRLCAD_COMBINATION: + comb = (struct rt_comb_internal *)ip.idb_ptr; + RT_CK_COMB(comb); + ged_adjust_names(comb->tree, curr_dbip, name_tbl, used_names_tbl, cc_data); + break; + case DB5_MINORTYPE_BRLCAD_EXTRUDE: + extr = (struct rt_extrude_internal *)ip.idb_ptr; + RT_EXTRUDE_CK_MAGIC( extr ); + + new_name = ged_get_new_name( extr->sketch_name, curr_dbip, name_tbl, used_names_tbl, cc_data ); + if ( new_name ) { + bu_free( extr->sketch_name, "sketch name" ); + extr->sketch_name = bu_strdup( new_name ); + } + break; + case DB5_MINORTYPE_BRLCAD_DSP: + dsp = (struct rt_dsp_internal *)ip.idb_ptr; + RT_DSP_CK_MAGIC( dsp ); + + if ( dsp->dsp_datasrc == RT_DSP_SRC_OBJ ) { + /* This dsp references a database object, may need to change its name */ + new_name = ged_get_new_name( bu_vls_addr( &dsp->dsp_name ), curr_dbip, + name_tbl, used_names_tbl, cc_data ); + if ( new_name ) { + bu_vls_free( &dsp->dsp_name ); + bu_vls_strcpy( &dsp->dsp_name, new_name ); + } + } + break; + } + } + + new_name = ged_get_new_name(input_dp->d_namep, curr_dbip, name_tbl, used_names_tbl, cc_data ); + if ( !new_name ) { + new_name = input_dp->d_namep; + } + if ( (new_dp = db_diradd( curr_dbip, new_name, -1L, 0, input_dp->d_flags, + (genptr_t)&input_dp->d_minor_type ) ) == DIR_NULL ) { + bu_vls_printf(&gedp->ged_result_str, + "Failed to add new object name (%s) to directory - aborting!!\n", + new_name); + return BRLCAD_ERROR; + } + + if ( rt_db_put_internal( new_dp, curr_dbip, &ip, &rt_uniresource ) < 0 ) { + bu_vls_printf(&gedp->ged_result_str, + "Failed to write new object (%s) to database - aborting!!\n", + new_name); + return BRLCAD_ERROR; + } + + return BRLCAD_OK; +} + + +/* + * Local Variables: + * tab-width: 8 + * mode: C + * indent-tabs-mode: t + * c-file-style: "stroustrup" + * End: + * ex: shiftwidth=4 tabstop=8 + */ Property changes on: brlcad/trunk/src/libged/concat.c ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:eol-style + native Added: brlcad/trunk/src/libged/copy.c =================================================================== --- brlcad/trunk/src/libged/copy.c (rev 0) +++ brlcad/trunk/src/libged/copy.c 2008-07-18 16:39:53 UTC (rev 31879) @@ -0,0 +1,70 @@ +/* C O P Y . C + * BRL-CAD + * + * Copyright (c) 2008 United States Government as represented by + * the U.S. Army Research Laboratory. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * version 2.1 as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this file; see the file named COPYING for more + * information. + */ +/** @file copy.c + * + * The copy command. + * + */ + +#include "common.h" + +#include <string.h> + +#include "bio.h" +#include "cmd.h" +#include "ged_private.h" + +int +ged_copy(struct ged *gedp, int argc, const char *argv[]) +{ + static const char *usage = "from to"; + + GED_CHECK_DATABASE_OPEN(gedp, BRLCAD_ERROR); + + /* initialize result */ + bu_vls_trunc(&gedp->ged_result_str, 0); + gedp->ged_result = GED_RESULT_NULL; + gedp->ged_result_flags = 0; + + /* must be wanting help */ + if (argc == 1) { + gedp->ged_result_flags |= GED_RESULT_FLAGS_HELP_BIT; + bu_vls_printf(&gedp->ged_result_str, "Usage: %s %s", argv[0], usage); + return BRLCAD_OK; + } + + if (argc < 2 || MAXARGS < argc) { + bu_vls_printf(&gedp->ged_result_str, "Usage: %s %s", argv[0], usage); + return BRLCAD_ERROR; + } + + return BRLCAD_OK; +} + + +/* + * Local Variables: + * tab-width: 8 + * mode: C + * indent-tabs-mode: t + * c-file-style: "stroustrup" + * End: + * ex: shiftwidth=4 tabstop=8 + */ Property changes on: brlcad/trunk/src/libged/copy.c ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:eol-style + native Added: brlcad/trunk/src/libged/copyeval.c =================================================================== --- brlcad/trunk/src/libged/copyeval.c (rev 0) +++ brlcad/trunk/src/libged/copyeval.c 2008-07-18 16:39:53 UTC (rev 31879) @@ -0,0 +1,70 @@ +/* C O P Y E V A L . C + * BRL-CAD + * + * Copyright (c) 2008 United States Government as represented by + * the U.S. Army Research Laboratory. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * version 2.1 as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this file; see the file named COPYING for more + * information. + */ +/** @file copyeval.c + * + * The copyeval command. + * + */ + +#include "common.h" + +#include <string.h> + +#include "bio.h" +#include "cmd.h" +#include "ged_private.h" + +int +ged_copyeval(struct ged *gedp, int argc, const char *argv[]) +{ + static const char *usage = "new_prim path_to_old_prim"; + + GED_CHECK_DATABASE_OPEN(gedp, BRLCAD_ERROR); + + /* initialize result */ + bu_vls_trunc(&gedp->ged_result_str, 0); + gedp->ged_result = GED_RESULT_NULL; + gedp->ged_result_flags = 0; + + /* must be wanting help */ + if (argc == 1) { + gedp->ged_result_flags |= GED_RESULT_FLAGS_HELP_BIT; + bu_vls_printf(&gedp->ged_result_str, "Usage: %s %s", argv[0], usage); + return BRLCAD_OK; + } + + if (argc < 2 || MAXARGS < argc) { + bu_vls_printf(&gedp->ged_result_str, "Usage: %s %s", argv[0], usage); + return BRLCAD_ERROR; + } + + return BRLCAD_OK; +} + + +/* + * Local Variables: + * tab-width: 8 + * mode: C + * indent-tabs-mode: t + * c-file-style: "stroustrup" + * End: + * ex: shiftwidth=4 tabstop=8 + */ Property changes on: brlcad/trunk/src/libged/copyeval.c ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:eol-style + native Added: brlcad/trunk/src/libged/dbip.c =================================================================== --- brlcad/trunk/src/libged/dbip.c (rev 0) +++ brlcad/trunk/src/libged/dbip.c 2008-07-18 16:39:53 UTC (rev 31879) @@ -0,0 +1,68 @@ +/* D B I P . C + * BRL-CAD + * + * Copyright (c) 2008 United States Government as represented by + * the U.S. Army Research Laboratory. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * version 2.1 as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this file; see the file named COPYING for more + * information. + */ +/** @file dbip.c + * + * The dbip command. + * + */ + +#include "common.h" + +#include <string.h> + +#include "bio.h" +#include "cmd.h" +#include "ged_private.h" + +int +ged_dbip(struct ged *gedp, int argc, const char *argv[]) +{ + GED_CHECK_DATABASE_OPEN(gedp, BRLCAD_ERROR); + + /* initialize result */ + bu_vls_trunc(&gedp->ged_result_str, 0); + gedp->ged_result = GED_RESULT_NULL; + gedp->ged_result_flags = 0; + + /* must be wanting help */ + if (argc == 1) { + gedp->ged_result_flags |= GED_RESULT_FLAGS_HELP_BIT; + bu_vls_printf(&gedp->ged_result_str, "Usage: %s", argv[0]); + return BRLCAD_OK; + } + + if (argc < 2 || MAXARGS < argc) { + bu_vls_printf(&gedp->ged_result_str, "Usage: %s", argv[0]); + return BRLCAD_ERROR; + } + + return BRLCAD_OK; +} + + +/* + * Local Variables: + * tab-width: 8 + * mode: C + * indent-tabs-mode: t + * c-file-style: "stroustrup" + * End: + * ex: shiftwidth=4 tabstop=8 + */ Property changes on: brlcad/trunk/src/libged/dbip.c ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:eol-style + native Added: brlcad/trunk/src/libged/dump.c =================================================================== --- brlcad/trunk/src/libged/dump.c (rev 0) +++ brlcad/trunk/src/libged/dump.c 2008-07-18 16:39:53 UTC (rev 31879) @@ -0,0 +1,70 @@ +/* D U M P . C + * BRL-CAD + * + * Copyright (c) 2008 United States Government as represented by + * the U.S. Army Research Laboratory. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * version 2.1 as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this file; see the file named COPYING for more + * information. + */ +/** @file dump.c + * + * The dump command. + * + */ + +#include "common.h" + +#include <string.h> + +#include "bio.h" +#include "cmd.h" +#include "ged_private.h" + +int +ged_dum... [truncated message content] |
From: <br...@us...> - 2008-07-26 21:42:10
|
Revision: 31966 http://brlcad.svn.sourceforge.net/brlcad/?rev=31966&view=rev Author: brlcad Date: 2008-07-26 21:42:18 +0000 (Sat, 26 Jul 2008) Log Message: ----------- Bob fixed the solid_illum bug that was popping up in mged's gui and making primitive selection fail. Modified Paths: -------------- brlcad/trunk/BUGS brlcad/trunk/NEWS brlcad/trunk/TODO Modified: brlcad/trunk/BUGS =================================================================== --- brlcad/trunk/BUGS 2008-07-26 21:35:31 UTC (rev 31965) +++ brlcad/trunk/BUGS 2008-07-26 21:42:18 UTC (rev 31966) @@ -15,10 +15,6 @@ Recent Bugs ----------- -* primitive selection in mged is busted, dies with a an error in - solid_illum (src/tclscripts/mged/illum.tcl) with _mged_ill returning - a db_lookup failure on "-n". - * fast4-g skips lines while processing if there are DOS line endings * pipe primitive has a BU_GETSTRUCT malloc getting called during Modified: brlcad/trunk/NEWS =================================================================== --- brlcad/trunk/NEWS 2008-07-26 21:35:31 UTC (rev 31965) +++ brlcad/trunk/NEWS 2008-07-26 21:42:18 UTC (rev 31966) @@ -14,6 +14,7 @@ --- 2008-06-XX Release 7.12.5 --- ---------------------------------------------------------------------- +* fixed primitive selection solid_illum bug in mged - Bob Parker * fix bug in tire tool's geometry causing 'nicks' in tread - C. Yapp * increased raytrace performace of pipe primitive - John Anderson * fixed bugs handling invalid extrude objects - Sean Morrison Modified: brlcad/trunk/TODO =================================================================== --- brlcad/trunk/TODO 2008-07-26 21:35:31 UTC (rev 31965) +++ brlcad/trunk/TODO 2008-07-26 21:42:18 UTC (rev 31966) @@ -17,8 +17,6 @@ THESE SHOULD HAPPEN BEFORE THE NEXT RELEASE ------------------------------------------- -* fix primitive selection gui in mged (see BUGS) - * stabilize and test mged (massive command restructuring in progress with libged) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <br...@us...> - 2008-07-26 21:48:23
|
Revision: 31967 http://brlcad.svn.sourceforge.net/brlcad/?rev=31967&view=rev Author: brlcad Date: 2008-07-26 21:48:31 +0000 (Sat, 26 Jul 2008) Log Message: ----------- bump revision to an unstable minor 7.13.0 to reflect the massive libged changes -- this will be released as 7.14.0 when the migration is complete. in the meantime, the STABLE branch will have the efforts that lead to a 7.12.6 release before then. Modified Paths: -------------- brlcad/trunk/NEWS brlcad/trunk/README brlcad/trunk/include/conf/MINOR brlcad/trunk/include/conf/PATCH Modified: brlcad/trunk/NEWS =================================================================== --- brlcad/trunk/NEWS 2008-07-26 21:42:18 UTC (rev 31966) +++ brlcad/trunk/NEWS 2008-07-26 21:48:31 UTC (rev 31967) @@ -11,7 +11,7 @@ ---------------------------------------------------------------------- ---- 2008-06-XX Release 7.12.5 --- +--- 2008-06-XX Release 7.13.0 --- ---------------------------------------------------------------------- * fixed primitive selection solid_illum bug in mged - Bob Parker Modified: brlcad/trunk/README =================================================================== --- brlcad/trunk/README 2008-07-26 21:42:18 UTC (rev 31966) +++ brlcad/trunk/README 2008-07-26 21:48:31 UTC (rev 31967) @@ -1,5 +1,5 @@ BRL-CAD - Release 7.12.6 + Release 7.14.0 http://brlcad.org/ BRL-CAD is a powerful cross-platform open source combinatorial Modified: brlcad/trunk/include/conf/MINOR =================================================================== --- brlcad/trunk/include/conf/MINOR 2008-07-26 21:42:18 UTC (rev 31966) +++ brlcad/trunk/include/conf/MINOR 2008-07-26 21:48:31 UTC (rev 31967) @@ -1 +1 @@ -12 +13 Modified: brlcad/trunk/include/conf/PATCH =================================================================== --- brlcad/trunk/include/conf/PATCH 2008-07-26 21:42:18 UTC (rev 31966) +++ brlcad/trunk/include/conf/PATCH 2008-07-26 21:48:31 UTC (rev 31967) @@ -1 +1 @@ -5 +0 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <br...@us...> - 2008-07-28 08:00:12
|
Revision: 31983 http://brlcad.svn.sourceforge.net/brlcad/?rev=31983&view=rev Author: brlcad Date: 2008-07-28 08:00:16 +0000 (Mon, 28 Jul 2008) Log Message: ----------- add proper svn:eol-style and svn:mime-type settings to all of the CMakeLists.txt files that got added before setting proper properties became enforced. native and text/plain respectively. Modified Paths: -------------- brlcad/trunk/include/conf/CMakeLists.txt brlcad/trunk/misc/win32-msvc/CMakeLists.txt brlcad/trunk/misc/win32-msvc/Dll/CMakeLists.txt brlcad/trunk/src/libbn/CMakeLists.txt brlcad/trunk/src/libbu/CMakeLists.txt brlcad/trunk/src/librt/CMakeLists.txt brlcad/trunk/src/libsysv/CMakeLists.txt brlcad/trunk/src/libwdb/CMakeLists.txt brlcad/trunk/src/other/libregex/CMakeLists.txt brlcad/trunk/src/other/libz/CMakeLists.txt brlcad/trunk/src/other/openNURBS/CMakeLists.txt brlcad/trunk/src/other/tcl/CMakeLists.txt brlcad/trunk/src/other/tcl/generic/CMakeLists.txt brlcad/trunk/src/other/tcl/libtommath/CMakeLists.txt brlcad/trunk/src/other/tcl/win/CMakeLists.txt Property Changed: ---------------- brlcad/trunk/include/conf/CMakeLists.txt brlcad/trunk/misc/win32-msvc/CMakeLists.txt brlcad/trunk/misc/win32-msvc/Dll/CMakeLists.txt brlcad/trunk/src/libbn/CMakeLists.txt brlcad/trunk/src/libbu/CMakeLists.txt brlcad/trunk/src/librt/CMakeLists.txt brlcad/trunk/src/libsysv/CMakeLists.txt brlcad/trunk/src/libwdb/CMakeLists.txt brlcad/trunk/src/other/libregex/CMakeLists.txt brlcad/trunk/src/other/libz/CMakeLists.txt brlcad/trunk/src/other/openNURBS/CMakeLists.txt brlcad/trunk/src/other/tcl/CMakeLists.txt brlcad/trunk/src/other/tcl/generic/CMakeLists.txt brlcad/trunk/src/other/tcl/libtommath/CMakeLists.txt brlcad/trunk/src/other/tcl/win/CMakeLists.txt Modified: brlcad/trunk/include/conf/CMakeLists.txt =================================================================== --- brlcad/trunk/include/conf/CMakeLists.txt 2008-07-28 07:53:49 UTC (rev 31982) +++ brlcad/trunk/include/conf/CMakeLists.txt 2008-07-28 08:00:16 UTC (rev 31983) @@ -1,32 +1,32 @@ -# update COUNT -find_file(countFile COUNT ${CMAKE_CURRENT_SOURCE_DIR}) - -if(countFile) - file(READ COUNT buildCounter) -else(countFile) - set(buildCounter 0) -endif(countFile) - -math(EXPR buildCounter "${buildCounter} + 1") -file(WRITE COUNT ${buildCounter}) - - -# update DATE -execute_process(COMMAND cmd /c date /t OUTPUT_VARIABLE currentDate OUTPUT_STRIP_TRAILING_WHITESPACE) -execute_process(COMMAND cmd /c time /t OUTPUT_VARIABLE currentTime OUTPUT_STRIP_TRAILING_WHITESPACE) - -file(WRITE DATE "\"${currentDate} ${currentTime}\"") - - -# update HOST -file(WRITE HOST "\"$ENV{COMPUTERNAME}\"") - - -# update PATH -set(programPath "\"$ENV{ProgramFiles}\\BRL-CAD\"") -string(REPLACE "\\" "\\\\" programPathForC ${programPath}) -file(WRITE PATH ${programPathForC}) - - -# update USER -file(WRITE USER "\"$ENV{USERNAME}\"") +# update COUNT +find_file(countFile COUNT ${CMAKE_CURRENT_SOURCE_DIR}) + +if(countFile) + file(READ COUNT buildCounter) +else(countFile) + set(buildCounter 0) +endif(countFile) + +math(EXPR buildCounter "${buildCounter} + 1") +file(WRITE COUNT ${buildCounter}) + + +# update DATE +execute_process(COMMAND cmd /c date /t OUTPUT_VARIABLE currentDate OUTPUT_STRIP_TRAILING_WHITESPACE) +execute_process(COMMAND cmd /c time /t OUTPUT_VARIABLE currentTime OUTPUT_STRIP_TRAILING_WHITESPACE) + +file(WRITE DATE "\"${currentDate} ${currentTime}\"") + + +# update HOST +file(WRITE HOST "\"$ENV{COMPUTERNAME}\"") + + +# update PATH +set(programPath "\"$ENV{ProgramFiles}\\BRL-CAD\"") +string(REPLACE "\\" "\\\\" programPathForC ${programPath}) +file(WRITE PATH ${programPathForC}) + + +# update USER +file(WRITE USER "\"$ENV{USERNAME}\"") Property changes on: brlcad/trunk/include/conf/CMakeLists.txt ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:eol-style + native Modified: brlcad/trunk/misc/win32-msvc/CMakeLists.txt =================================================================== --- brlcad/trunk/misc/win32-msvc/CMakeLists.txt 2008-07-28 07:53:49 UTC (rev 31982) +++ brlcad/trunk/misc/win32-msvc/CMakeLists.txt 2008-07-28 08:00:16 UTC (rev 31983) @@ -1,28 +1,28 @@ -cmake_minimum_required(VERSION 2.6) - -project(brlcad) - -set(BUILD_SHARED_LIBS OFF) - -add_definitions(-DOBJ_BREP) - -add_subdirectory(../../src/other/libregex .) -add_subdirectory(../../src/other/libz .) -add_subdirectory(../../src/other/openNURBS .) -add_subdirectory(../../src/other/tcl .) - -add_subdirectory(../../include/conf .) -add_subdirectory(../../src/libbn .) -add_subdirectory(../../src/libbu .) -add_subdirectory(../../src/librt .) -add_subdirectory(../../src/libged .) -add_subdirectory(../../src/libsysv .) -add_subdirectory(../../src/libwdb .) - -# build DLL -add_subdirectory(Dll .) - -# buld tools -add_subdirectory(../../src/conv .) -add_subdirectory(../../src/conv/3dm .) -add_subdirectory(../../src/conv/patch .) +cmake_minimum_required(VERSION 2.6) + +project(brlcad) + +set(BUILD_SHARED_LIBS OFF) + +add_definitions(-DOBJ_BREP) + +add_subdirectory(../../src/other/libregex .) +add_subdirectory(../../src/other/libz .) +add_subdirectory(../../src/other/openNURBS .) +add_subdirectory(../../src/other/tcl .) + +add_subdirectory(../../include/conf .) +add_subdirectory(../../src/libbn .) +add_subdirectory(../../src/libbu .) +add_subdirectory(../../src/librt .) +add_subdirectory(../../src/libged .) +add_subdirectory(../../src/libsysv .) +add_subdirectory(../../src/libwdb .) + +# build DLL +add_subdirectory(Dll .) + +# buld tools +add_subdirectory(../../src/conv .) +add_subdirectory(../../src/conv/3dm .) +add_subdirectory(../../src/conv/patch .) Property changes on: brlcad/trunk/misc/win32-msvc/CMakeLists.txt ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:eol-style + native Modified: brlcad/trunk/misc/win32-msvc/Dll/CMakeLists.txt =================================================================== --- brlcad/trunk/misc/win32-msvc/Dll/CMakeLists.txt 2008-07-28 07:53:49 UTC (rev 31982) +++ brlcad/trunk/misc/win32-msvc/Dll/CMakeLists.txt 2008-07-28 08:00:16 UTC (rev 31983) @@ -1,65 +1,65 @@ -# write brlcadrc_defines.h -file(READ ../../../include/conf/MAJOR majorVersionNumber) -file(READ ../../../include/conf/MINOR minorVersionNumber) -file(READ ../../../include/conf/PATCH patchVersionNumber) - -file(WRITE brlcadrc_defines.h - "#define BRLCAD_DLL_RC_MAJOR ${majorVersionNumber}" - "#define BRLCAD_DLL_RC_MINOR ${minorVersionNumber}" - "#define BRLCAD_DLL_RC_PATCH ${patchVersionNumber}" -) - - -# for all targets -include_directories( - ../../../include - ../../../src/other/tcl/generic -) - - -# build the brlcad.dll -set(BRLCAD_SOURCES - TclDummies.c - brlcad.def - brlcad.rc -) - -add_library(brlcad SHARED ${BRLCAD_SOURCES}) - -target_link_libraries(brlcad - libbn - libbu - libged - libregex - librt - libsysv - libwdb - libz - openNURBS -) - -set_property(TARGET brlcad PROPERTY LINK_INTERFACE_LIBRARIES "") - - -# build the BrlcadCore.dll -set(BRLCADCORE_SOURCES - BrlcadCore.def - BrlcadCore.rc -) - -add_library(BrlcadCore SHARED ${BRLCADCORE_SOURCES}) - -target_link_libraries(BrlcadCore - libbn - libbu - libged - libregex - librt - libsysv - libwdb - libz - openNURBS - tcl85 -) - -set_property(TARGET BrlcadCore PROPERTY LINK_INTERFACE_LIBRARIES "") +# write brlcadrc_defines.h +file(READ ../../../include/conf/MAJOR majorVersionNumber) +file(READ ../../../include/conf/MINOR minorVersionNumber) +file(READ ../../../include/conf/PATCH patchVersionNumber) + +file(WRITE brlcadrc_defines.h + "#define BRLCAD_DLL_RC_MAJOR ${majorVersionNumber}" + "#define BRLCAD_DLL_RC_MINOR ${minorVersionNumber}" + "#define BRLCAD_DLL_RC_PATCH ${patchVersionNumber}" +) + + +# for all targets +include_directories( + ../../../include + ../../../src/other/tcl/generic +) + + +# build the brlcad.dll +set(BRLCAD_SOURCES + TclDummies.c + brlcad.def + brlcad.rc +) + +add_library(brlcad SHARED ${BRLCAD_SOURCES}) + +target_link_libraries(brlcad + libbn + libbu + libged + libregex + librt + libsysv + libwdb + libz + openNURBS +) + +set_property(TARGET brlcad PROPERTY LINK_INTERFACE_LIBRARIES "") + + +# build the BrlcadCore.dll +set(BRLCADCORE_SOURCES + BrlcadCore.def + BrlcadCore.rc +) + +add_library(BrlcadCore SHARED ${BRLCADCORE_SOURCES}) + +target_link_libraries(BrlcadCore + libbn + libbu + libged + libregex + librt + libsysv + libwdb + libz + openNURBS + tcl85 +) + +set_property(TARGET BrlcadCore PROPERTY LINK_INTERFACE_LIBRARIES "") Property changes on: brlcad/trunk/misc/win32-msvc/Dll/CMakeLists.txt ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:eol-style + native Modified: brlcad/trunk/src/libbn/CMakeLists.txt =================================================================== --- brlcad/trunk/src/libbn/CMakeLists.txt 2008-07-28 07:53:49 UTC (rev 31982) +++ brlcad/trunk/src/libbn/CMakeLists.txt 2008-07-28 08:00:16 UTC (rev 31983) @@ -1,41 +1,41 @@ -set(LIBBN_SOURCES - anim.c - axis.c - bn_tcl.c - complex.c - font.c - fortran.c - globals.c - list.c - marker.c - mat.c - msr.c - noise.c - plane.c - plot3.c - poly.c - qmath.c - rand.c - scale.c - sphmap.c - symbol.c - tabdata.c - tplot.c - vectfont.c - vector.c - vers.c - vert_tree.c - wavelet.c -) - -include_directories( - ../../include - ../other/tcl/generic -) - -add_definitions( - -DHAVE_CONFIG_H - -DBRLCADBUILD -) - -add_library(libbn ${LIBBN_SOURCES}) +set(LIBBN_SOURCES + anim.c + axis.c + bn_tcl.c + complex.c + font.c + fortran.c + globals.c + list.c + marker.c + mat.c + msr.c + noise.c + plane.c + plot3.c + poly.c + qmath.c + rand.c + scale.c + sphmap.c + symbol.c + tabdata.c + tplot.c + vectfont.c + vector.c + vers.c + vert_tree.c + wavelet.c +) + +include_directories( + ../../include + ../other/tcl/generic +) + +add_definitions( + -DHAVE_CONFIG_H + -DBRLCADBUILD +) + +add_library(libbn ${LIBBN_SOURCES}) Property changes on: brlcad/trunk/src/libbn/CMakeLists.txt ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:eol-style + native Modified: brlcad/trunk/src/libbu/CMakeLists.txt =================================================================== --- brlcad/trunk/src/libbu/CMakeLists.txt 2008-07-28 07:53:49 UTC (rev 31982) +++ brlcad/trunk/src/libbu/CMakeLists.txt 2008-07-28 08:00:16 UTC (rev 31983) @@ -1,92 +1,92 @@ -set(LIBBU_SOURCES - argv.c - association.c - avs.c - backtrace.c - badmagic.c - basename.c - bitv.c - bomb.c - brlcad_path.c - bu_tcl.c - cmd.c - cmdhist.c - cmdhist_obj.c - color.c - convert.c - crashreport.c - dirent.c - dirname.c - endian.c - fchmod.c - fgets.c - fopen_uniq.c - getopt.c - globals.c - hash.c - hist.c - hook.c - htond.c - htonf.c - image.c - ispar.c - kill.c - lex.c - linebuf.c - list.c - log.c - magic.c - malloc.c - mappedfile.c - mread.c - mro.c - observer.c - parallel.c - parse.c - printb.c - process.c - ptbl.c - rb_create.c - rb_delete.c - rb_diag.c - rb_extreme.c - rb_free.c - rb_insert.c - rb_order_stats.c - rb_rotate.c - rb_search.c - rb_walk.c - semaphore.c - stat.c - str.c - temp.c - units.c - vers.c - vfont.c - vlb.c - vls.c - whereis.c - which.c - xdr.c -) - -include_directories( - ../../include - ../other/libpng - ../other/libz - ../other/tcl/generic -) - -add_definitions( - -DHAVE_CONFIG_H - -DBRLCADBUILD -) - -add_library(libbu ${LIBBU_SOURCES}) - -set(HTESTER_SOURCES - htester.c -) - -add_executable(htester ${HTESTER_SOURCES}) -target_link_libraries(htester libbu) +set(LIBBU_SOURCES + argv.c + association.c + avs.c + backtrace.c + badmagic.c + basename.c + bitv.c + bomb.c + brlcad_path.c + bu_tcl.c + cmd.c + cmdhist.c + cmdhist_obj.c + color.c + convert.c + crashreport.c + dirent.c + dirname.c + endian.c + fchmod.c + fgets.c + fopen_uniq.c + getopt.c + globals.c + hash.c + hist.c + hook.c + htond.c + htonf.c + image.c + ispar.c + kill.c + lex.c + linebuf.c + list.c + log.c + magic.c + malloc.c + mappedfile.c + mread.c + mro.c + observer.c + parallel.c + parse.c + printb.c + process.c + ptbl.c + rb_create.c + rb_delete.c + rb_diag.c + rb_extreme.c + rb_free.c + rb_insert.c + rb_order_stats.c + rb_rotate.c + rb_search.c + rb_walk.c + semaphore.c + stat.c + str.c + temp.c + units.c + vers.c + vfont.c + vlb.c + vls.c + whereis.c + which.c + xdr.c +) + +include_directories( + ../../include + ../other/libpng + ../other/libz + ../other/tcl/generic +) + +add_definitions( + -DHAVE_CONFIG_H + -DBRLCADBUILD +) + +add_library(libbu ${LIBBU_SOURCES}) + +set(HTESTER_SOURCES + htester.c +) + +add_executable(htester ${HTESTER_SOURCES}) +target_link_libraries(htester libbu) Property changes on: brlcad/trunk/src/libbu/CMakeLists.txt ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:eol-style + native Modified: brlcad/trunk/src/librt/CMakeLists.txt =================================================================== --- brlcad/trunk/src/librt/CMakeLists.txt 2008-07-28 07:53:49 UTC (rev 31982) +++ brlcad/trunk/src/librt/CMakeLists.txt 2008-07-28 08:00:16 UTC (rev 31983) @@ -1,159 +1,159 @@ -set(LIBRT_SOURCES - bezier_2d_isect.c - binary_obj.c - bomb.c - bool.c - bundle.c - cmd.c - constraint.c - cut.c - db5_alloc.c - db5_bin.c - db5_comb.c - db5_io.c - db5_scan.c - db5_types.c - db_alloc.c - db_anim.c - db_comb.c - db_flags.c - db_inmem.c - db_io.c - db_lookup.c - db_match.c - db_open.c - db_path.c - db_scan.c - db_tree.c - db_walk.c - dir.c - dspline.c - fortray.c - globals.c - htbl.c - many.c - mater.c - memalloc.c - mirror.c - mkbundle.c - opennurbs_ext.cpp - oslo_calc.c - oslo_map.c - pr.c - prep.c - primitives/arb8/arb8.c - primitives/arbn/arbn.c - primitives/ars/ars.c - primitives/bot/bot.c - primitives/brep/brep.cpp - primitives/bspline/bspline.c - primitives/bspline/nurb_basis.c - primitives/bspline/nurb_bezier.c - primitives/bspline/nurb_bound.c - primitives/bspline/nurb_c2.c - primitives/bspline/nurb_copy.c - primitives/bspline/nurb_diff.c - primitives/bspline/nurb_eval.c - primitives/bspline/nurb_flat.c - primitives/bspline/nurb_interp.c - primitives/bspline/nurb_knot.c - primitives/bspline/nurb_norm.c - primitives/bspline/nurb_plot.c - primitives/bspline/nurb_poly.c - primitives/bspline/nurb_ray.c - primitives/bspline/nurb_refine.c - primitives/bspline/nurb_reverse.c - primitives/bspline/nurb_solve.c - primitives/bspline/nurb_split.c - primitives/bspline/nurb_tess.c - primitives/bspline/nurb_trim.c - primitives/bspline/nurb_trim_util.c - primitives/bspline/nurb_util.c - primitives/bspline/nurb_xsplit.c - primitives/cline/cline.c - primitives/dsp/dsp.c - primitives/ebm/ebm.c - primitives/ehy/ehy.c - primitives/ell/ell.c - primitives/epa/epa.c - primitives/eto/eto.c - primitives/extrude/extrude.c - primitives/grip/grip.c - primitives/half/half.c - primitives/hf/hf.c - primitives/hyp/hyp.c - primitives/metaball/metaball.c - primitives/nmg/nmg.c - primitives/nmg/nmg_bool.c - primitives/nmg/nmg_ck.c - primitives/nmg/nmg_class.c - primitives/nmg/nmg_eval.c - primitives/nmg/nmg_extrude.c - primitives/nmg/nmg_fcut.c - primitives/nmg/nmg_fuse.c - primitives/nmg/nmg_index.c - primitives/nmg/nmg_info.c - primitives/nmg/nmg_inter.c - primitives/nmg/nmg_manif.c - primitives/nmg/nmg_mesh.c - primitives/nmg/nmg_misc.c - primitives/nmg/nmg_mk.c - primitives/nmg/nmg_mod.c - primitives/nmg/nmg_plot.c - primitives/nmg/nmg_pr.c - primitives/nmg/nmg_pt_fu.c - primitives/nmg/nmg_rt_isect.c - primitives/nmg/nmg_rt_segs.c - primitives/nmg/nmg_tri.c - primitives/nmg/nmg_visit.c - primitives/part/part.c - primitives/pipe/pipe.c - primitives/poly/poly.c - primitives/rec/rec.c - primitives/revolve/revolve.c - primitives/rhc/rhc.c - primitives/rpc/rpc.c - primitives/sketch/sketch.c - primitives/sph/sph.c - primitives/submodel/submodel.c - primitives/superell/superell.c - primitives/tgc/tgc.c - primitives/tor/tor.c - primitives/vol/vol.c - regionfix.c - roots.c - shoot.c - spectrum.c - storage.c - table.c - tcl.c - transform.c - tree.c - vers.c - vlist.c - wdb.c -) - -if(MSVC) - set(LIBRT_SOURCES - ${LIBRT_SOURCES} - timer-nt.c - ) -endif(MSVC) - -include_directories( - ../../include - ../other/libz - ../other/openNURBS - ../other/libregex - ../other/tcl/generic - ../other/tnt -) - -add_definitions( - -DHAVE_CONFIG_H - -DBRLCADBUILD - -DON_DLL_IMPORTS -) - -add_library(librt ${LIBRT_SOURCES}) +set(LIBRT_SOURCES + bezier_2d_isect.c + binary_obj.c + bomb.c + bool.c + bundle.c + cmd.c + constraint.c + cut.c + db5_alloc.c + db5_bin.c + db5_comb.c + db5_io.c + db5_scan.c + db5_types.c + db_alloc.c + db_anim.c + db_comb.c + db_flags.c + db_inmem.c + db_io.c + db_lookup.c + db_match.c + db_open.c + db_path.c + db_scan.c + db_tree.c + db_walk.c + dir.c + dspline.c + fortray.c + globals.c + htbl.c + many.c + mater.c + memalloc.c + mirror.c + mkbundle.c + opennurbs_ext.cpp + oslo_calc.c + oslo_map.c + pr.c + prep.c + primitives/arb8/arb8.c + primitives/arbn/arbn.c + primitives/ars/ars.c + primitives/bot/bot.c + primitives/brep/brep.cpp + primitives/bspline/bspline.c + primitives/bspline/nurb_basis.c + primitives/bspline/nurb_bezier.c + primitives/bspline/nurb_bound.c + primitives/bspline/nurb_c2.c + primitives/bspline/nurb_copy.c + primitives/bspline/nurb_diff.c + primitives/bspline/nurb_eval.c + primitives/bspline/nurb_flat.c + primitives/bspline/nurb_interp.c + primitives/bspline/nurb_knot.c + primitives/bspline/nurb_norm.c + primitives/bspline/nurb_plot.c + primitives/bspline/nurb_poly.c + primitives/bspline/nurb_ray.c + primitives/bspline/nurb_refine.c + primitives/bspline/nurb_reverse.c + primitives/bspline/nurb_solve.c + primitives/bspline/nurb_split.c + primitives/bspline/nurb_tess.c + primitives/bspline/nurb_trim.c + primitives/bspline/nurb_trim_util.c + primitives/bspline/nurb_util.c + primitives/bspline/nurb_xsplit.c + primitives/cline/cline.c + primitives/dsp/dsp.c + primitives/ebm/ebm.c + primitives/ehy/ehy.c + primitives/ell/ell.c + primitives/epa/epa.c + primitives/eto/eto.c + primitives/extrude/extrude.c + primitives/grip/grip.c + primitives/half/half.c + primitives/hf/hf.c + primitives/hyp/hyp.c + primitives/metaball/metaball.c + primitives/nmg/nmg.c + primitives/nmg/nmg_bool.c + primitives/nmg/nmg_ck.c + primitives/nmg/nmg_class.c + primitives/nmg/nmg_eval.c + primitives/nmg/nmg_extrude.c + primitives/nmg/nmg_fcut.c + primitives/nmg/nmg_fuse.c + primitives/nmg/nmg_index.c + primitives/nmg/nmg_info.c + primitives/nmg/nmg_inter.c + primitives/nmg/nmg_manif.c + primitives/nmg/nmg_mesh.c + primitives/nmg/nmg_misc.c + primitives/nmg/nmg_mk.c + primitives/nmg/nmg_mod.c + primitives/nmg/nmg_plot.c + primitives/nmg/nmg_pr.c + primitives/nmg/nmg_pt_fu.c + primitives/nmg/nmg_rt_isect.c + primitives/nmg/nmg_rt_segs.c + primitives/nmg/nmg_tri.c + primitives/nmg/nmg_visit.c + primitives/part/part.c + primitives/pipe/pipe.c + primitives/poly/poly.c + primitives/rec/rec.c + primitives/revolve/revolve.c + primitives/rhc/rhc.c + primitives/rpc/rpc.c + primitives/sketch/sketch.c + primitives/sph/sph.c + primitives/submodel/submodel.c + primitives/superell/superell.c + primitives/tgc/tgc.c + primitives/tor/tor.c + primitives/vol/vol.c + regionfix.c + roots.c + shoot.c + spectrum.c + storage.c + table.c + tcl.c + transform.c + tree.c + vers.c + vlist.c + wdb.c +) + +if(MSVC) + set(LIBRT_SOURCES + ${LIBRT_SOURCES} + timer-nt.c + ) +endif(MSVC) + +include_directories( + ../../include + ../other/libz + ../other/openNURBS + ../other/libregex + ../other/tcl/generic + ../other/tnt +) + +add_definitions( + -DHAVE_CONFIG_H + -DBRLCADBUILD + -DON_DLL_IMPORTS +) + +add_library(librt ${LIBRT_SOURCES}) Property changes on: brlcad/trunk/src/librt/CMakeLists.txt ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:eol-style + native Modified: brlcad/trunk/src/libsysv/CMakeLists.txt =================================================================== --- brlcad/trunk/src/libsysv/CMakeLists.txt 2008-07-28 07:53:49 UTC (rev 31982) +++ brlcad/trunk/src/libsysv/CMakeLists.txt 2008-07-28 08:00:16 UTC (rev 31983) @@ -1,16 +1,16 @@ -set(LIBSYSV_SOURCES - strsep.c - tcl.c -) - -include_directories( - ../../include - ../other/tcl/generic -) - -add_definitions( - -DHAVE_CONFIG_H - -DBRLCADBUILD -) - -add_library(libsysv ${LIBSYSV_SOURCES}) +set(LIBSYSV_SOURCES + strsep.c + tcl.c +) + +include_directories( + ../../include + ../other/tcl/generic +) + +add_definitions( + -DHAVE_CONFIG_H + -DBRLCADBUILD +) + +add_library(libsysv ${LIBSYSV_SOURCES}) Property changes on: brlcad/trunk/src/libsysv/CMakeLists.txt ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:eol-style + native Modified: brlcad/trunk/src/libwdb/CMakeLists.txt =================================================================== --- brlcad/trunk/src/libwdb/CMakeLists.txt 2008-07-28 07:53:49 UTC (rev 31982) +++ brlcad/trunk/src/libwdb/CMakeLists.txt 2008-07-28 08:00:16 UTC (rev 31983) @@ -1,38 +1,38 @@ -set(LIBWDB_SOURCES - brep.cpp - arbn.c - ars.c - bot.c - cline.c - dsp.c - dynamic_geometry.c - ebm.c - export.c - extr.c - id.c - mater.c - nmg.c - nurb.c - pipe.c - reg.c - skt.c - submodel.c - units.c - vol.c - wdb.c -) - -include_directories( - ../../include - ../other/libz - ../other/openNURBS - ../other/tcl/generic -) - -add_definitions( - -DHAVE_CONFIG_H - -DBRLCADBUILD - -DON_DLL_IMPORTS -) - -add_library(libwdb ${LIBWDB_SOURCES}) +set(LIBWDB_SOURCES + brep.cpp + arbn.c + ars.c + bot.c + cline.c + dsp.c + dynamic_geometry.c + ebm.c + export.c + extr.c + id.c + mater.c + nmg.c + nurb.c + pipe.c + reg.c + skt.c + submodel.c + units.c + vol.c + wdb.c +) + +include_directories( + ../../include + ../other/libz + ../other/openNURBS + ../other/tcl/generic +) + +add_definitions( + -DHAVE_CONFIG_H + -DBRLCADBUILD + -DON_DLL_IMPORTS +) + +add_library(libwdb ${LIBWDB_SOURCES}) Property changes on: brlcad/trunk/src/libwdb/CMakeLists.txt ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:eol-style + native Modified: brlcad/trunk/src/other/libregex/CMakeLists.txt =================================================================== --- brlcad/trunk/src/other/libregex/CMakeLists.txt 2008-07-28 07:53:49 UTC (rev 31982) +++ brlcad/trunk/src/other/libregex/CMakeLists.txt 2008-07-28 08:00:16 UTC (rev 31983) @@ -1,12 +1,12 @@ -set(LIBREGEX_SOURCES - regcomp.c - regerror.c - regexec.c - regfree.c -) - -include_directories( - ../../../include -) - -add_library(libregex ${LIBREGEX_SOURCES}) +set(LIBREGEX_SOURCES + regcomp.c + regerror.c + regexec.c + regfree.c +) + +include_directories( + ../../../include +) + +add_library(libregex ${LIBREGEX_SOURCES}) Property changes on: brlcad/trunk/src/other/libregex/CMakeLists.txt ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:eol-style + native Modified: brlcad/trunk/src/other/libz/CMakeLists.txt =================================================================== --- brlcad/trunk/src/other/libz/CMakeLists.txt 2008-07-28 07:53:49 UTC (rev 31982) +++ brlcad/trunk/src/other/libz/CMakeLists.txt 2008-07-28 08:00:16 UTC (rev 31983) @@ -1,16 +1,16 @@ -set(LIBZ_SOURCES - adler32.c - compress.c - crc32.c - deflate.c - gzio.c - infback.c - inffast.c - inflate.c - inftrees.c - trees.c - uncompr.c - zutil.c -) - -add_library(libz ${LIBZ_SOURCES}) +set(LIBZ_SOURCES + adler32.c + compress.c + crc32.c + deflate.c + gzio.c + infback.c + inffast.c + inflate.c + inftrees.c + trees.c + uncompr.c + zutil.c +) + +add_library(libz ${LIBZ_SOURCES}) Property changes on: brlcad/trunk/src/other/libz/CMakeLists.txt ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:eol-style + native Modified: brlcad/trunk/src/other/openNURBS/CMakeLists.txt =================================================================== --- brlcad/trunk/src/other/openNURBS/CMakeLists.txt 2008-07-28 07:53:49 UTC (rev 31982) +++ brlcad/trunk/src/other/openNURBS/CMakeLists.txt 2008-07-28 08:00:16 UTC (rev 31983) @@ -1,126 +1,126 @@ -set(OPENNURBS_SOURCES - opennurbs_3dm_attributes.cpp - opennurbs_3dm_properties.cpp - opennurbs_3dm_settings.cpp - opennurbs_annotation.cpp - opennurbs_annotation2.cpp - opennurbs_arc.cpp - opennurbs_arccurve.cpp - opennurbs_archive.cpp - opennurbs_array.cpp - opennurbs_basic.cpp - opennurbs_bezier.cpp - opennurbs_beziervolume.cpp - opennurbs_bitmap.cpp - opennurbs_bounding_box.cpp - opennurbs_brep.cpp - opennurbs_brep_changesrf.cpp - opennurbs_brep_extrude.cpp - opennurbs_brep_io.cpp - opennurbs_brep_isvalid.cpp - opennurbs_brep_kinky.cpp - opennurbs_brep_tools.cpp - opennurbs_brep_v2valid.cpp - opennurbs_circle.cpp - opennurbs_color.cpp - opennurbs_cone.cpp - opennurbs_crc.cpp - opennurbs_curve.cpp - opennurbs_curveonsurface.cpp - opennurbs_curveproxy.cpp - opennurbs_cylinder.cpp - opennurbs_defines.cpp - opennurbs_detail.cpp - opennurbs_dimstyle.cpp - opennurbs_ellipse.cpp - opennurbs_error.cpp - opennurbs_error_message.cpp - opennurbs_evaluate_nurbs.cpp - opennurbs_extensions.cpp - opennurbs_font.cpp - opennurbs_geometry.cpp - opennurbs_group.cpp - opennurbs_hatch.cpp - opennurbs_instance.cpp - opennurbs_intersect.cpp - opennurbs_knot.cpp - opennurbs_layer.cpp - opennurbs_light.cpp - opennurbs_line.cpp - opennurbs_linecurve.cpp - opennurbs_linetype.cpp - opennurbs_massprop.cpp - opennurbs_material.cpp - opennurbs_math.cpp - opennurbs_matrix.cpp - opennurbs_memory.c - opennurbs_memory_util.c - opennurbs_mesh.cpp - opennurbs_mesh_tools.cpp - opennurbs_morph.cpp - opennurbs_nurbscurve.cpp - opennurbs_nurbssurface.cpp - opennurbs_nurbsvolume.cpp - opennurbs_object.cpp - opennurbs_object_history.cpp - opennurbs_objref.cpp - opennurbs_offsetsurface.cpp - opennurbs_optimize.cpp - opennurbs_plane.cpp - opennurbs_planesurface.cpp - opennurbs_pluginlist.cpp - opennurbs_point.cpp - opennurbs_pointcloud.cpp - opennurbs_pointgeometry.cpp - opennurbs_pointgrid.cpp - opennurbs_polycurve.cpp - opennurbs_polyline.cpp - opennurbs_polylinecurve.cpp - opennurbs_revsurface.cpp - opennurbs_sphere.cpp - opennurbs_string.cpp - opennurbs_sum.cpp - opennurbs_sumsurface.cpp - opennurbs_surface.cpp - opennurbs_surfaceproxy.cpp - opennurbs_textlog.cpp - opennurbs_torus.cpp - opennurbs_userdata.cpp - opennurbs_uuid.cpp - opennurbs_viewport.cpp - opennurbs_workspace.cpp - opennurbs_wstring.cpp - opennurbs_xform.cpp - opennurbs_zlib.cpp -) - -set(OPENNURBS_LINKLIBRARIES - libz -) - -include_directories( - ../../../include - ../libz -) - -add_definitions( - -DON_COMPILING_OPENNURBS - -DON_DLL_EXPORTS -) - -if(MSVC) - add_definitions( - -DUNICODE - ) - - set(OPENNURBS_LINKLIBRARIES - ${OPENNURBS_LINKLIBRARIES} - Rpcrt4 - ) -endif(MSVC) - -add_library(openNURBS SHARED ${OPENNURBS_SOURCES}) - -target_link_libraries(openNURBS ${OPENNURBS_LINKLIBRARIES}) - -set_property(TARGET openNURBS PROPERTY LINK_INTERFACE_LIBRARIES "") +set(OPENNURBS_SOURCES + opennurbs_3dm_attributes.cpp + opennurbs_3dm_properties.cpp + opennurbs_3dm_settings.cpp + opennurbs_annotation.cpp + opennurbs_annotation2.cpp + opennurbs_arc.cpp + opennurbs_arccurve.cpp + opennurbs_archive.cpp + opennurbs_array.cpp + opennurbs_basic.cpp + opennurbs_bezier.cpp + opennurbs_beziervolume.cpp + opennurbs_bitmap.cpp + opennurbs_bounding_box.cpp + opennurbs_brep.cpp + opennurbs_brep_changesrf.cpp + opennurbs_brep_extrude.cpp + opennurbs_brep_io.cpp + opennurbs_brep_isvalid.cpp + opennurbs_brep_kinky.cpp + opennurbs_brep_tools.cpp + opennurbs_brep_v2valid.cpp + opennurbs_circle.cpp + opennurbs_color.cpp + opennurbs_cone.cpp + opennurbs_crc.cpp + opennurbs_curve.cpp + opennurbs_curveonsurface.cpp + opennurbs_curveproxy.cpp + opennurbs_cylinder.cpp + opennurbs_defines.cpp + opennurbs_detail.cpp + opennurbs_dimstyle.cpp + opennurbs_ellipse.cpp + opennurbs_error.cpp + opennurbs_error_message.cpp + opennurbs_evaluate_nurbs.cpp + opennurbs_extensions.cpp + opennurbs_font.cpp + opennurbs_geometry.cpp + opennurbs_group.cpp + opennurbs_hatch.cpp + opennurbs_instance.cpp + opennurbs_intersect.cpp + opennurbs_knot.cpp + opennurbs_layer.cpp + opennurbs_light.cpp + opennurbs_line.cpp + opennurbs_linecurve.cpp + opennurbs_linetype.cpp + opennurbs_massprop.cpp + opennurbs_material.cpp + opennurbs_math.cpp + opennurbs_matrix.cpp + opennurbs_memory.c + opennurbs_memory_util.c + opennurbs_mesh.cpp + opennurbs_mesh_tools.cpp + opennurbs_morph.cpp + opennurbs_nurbscurve.cpp + opennurbs_nurbssurface.cpp + opennurbs_nurbsvolume.cpp + opennurbs_object.cpp + opennurbs_object_history.cpp + opennurbs_objref.cpp + opennurbs_offsetsurface.cpp + opennurbs_optimize.cpp + opennurbs_plane.cpp + opennurbs_planesurface.cpp + opennurbs_pluginlist.cpp + opennurbs_point.cpp + opennurbs_pointcloud.cpp + opennurbs_pointgeometry.cpp + opennurbs_pointgrid.cpp + opennurbs_polycurve.cpp + opennurbs_polyline.cpp + opennurbs_polylinecurve.cpp + opennurbs_revsurface.cpp + opennurbs_sphere.cpp + opennurbs_string.cpp + opennurbs_sum.cpp + opennurbs_sumsurface.cpp + opennurbs_surface.cpp + opennurbs_surfaceproxy.cpp + opennurbs_textlog.cpp + opennurbs_torus.cpp + opennurbs_userdata.cpp + opennurbs_uuid.cpp + opennurbs_viewport.cpp + opennurbs_workspace.cpp + opennurbs_wstring.cpp + opennurbs_xform.cpp + opennurbs_zlib.cpp +) + +set(OPENNURBS_LINKLIBRARIES + libz +) + +include_directories( + ../../../include + ../libz +) + +add_definitions( + -DON_COMPILING_OPENNURBS + -DON_DLL_EXPORTS +) + +if(MSVC) + add_definitions( + -DUNICODE + ) + + set(OPENNURBS_LINKLIBRARIES + ${OPENNURBS_LINKLIBRARIES} + Rpcrt4 + ) +endif(MSVC) + +add_library(openNURBS SHARED ${OPENNURBS_SOURCES}) + +target_link_libraries(openNURBS ${OPENNURBS_LINKLIBRARIES}) + +set_property(TARGET openNURBS PROPERTY LINK_INTERFACE_LIBRARIES "") Property changes on: brlcad/trunk/src/other/openNURBS/CMakeLists.txt ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:eol-style + native Modified: brlcad/trunk/src/other/tcl/CMakeLists.txt =================================================================== --- brlcad/trunk/src/other/tcl/CMakeLists.txt 2008-07-28 07:53:49 UTC (rev 31982) +++ brlcad/trunk/src/other/tcl/CMakeLists.txt 2008-07-28 08:00:16 UTC (rev 31983) @@ -1,57 +1,57 @@ -include(generic/CMakeLists.txt) -include(libtommath/CMakeLists.txt) - -set(TCL_SOURCES - ${TCL_GENERIC_SOURCES} - ${TCL_LIBTOMMATH_SOURCES} -) - -include_directories( - generic - libtommath -) - -if(MSVC) - include(win/CMakeLists.txt) - - set(TCL_SOURCES - ${TCL_SOURCES} - ${TCL_WIN_SOURCES} - ) - - include_directories( - win - ) -endif(MSVC) - -add_definitions( - -Dinline=__inline - -DBUILD_tcl - -DTCL_CFGVAL_ENCODING="UTF-8" - -DTCL_PIPE_DLL="tclpip85.dll" - -DCFG_RUNTIME_LIBDIR=0 - -DCFG_RUNTIME_BINDIR=0 - -DCFG_RUNTIME_SCRDIR=0 - -DCFG_RUNTIME_INCDIR=0 - -DCFG_RUNTIME_DOCDIR=0 - -DCFG_INSTALL_LIBDIR=0 - -DCFG_INSTALL_BINDIR=0 - -DCFG_INSTALL_SCRDIR=0 - -DCFG_INSTALL_INCDIR=0 - -DCFG_INSTALL_DOCDIR=0 -) - -add_library(tcl85 SHARED ${TCL_SOURCES}) - -if(MSVC) - target_link_libraries(tcl85 - Ws2_32 - ) -endif(MSVC) - -set_property(TARGET tcl85 PROPERTY LINK_INTERFACE_LIBRARIES "") - -if(MSVC) - add_executable(tclpip85 win/stub16.c) - set_target_properties(tclpip85 PROPERTIES SUFFIX ".dll") -endif(MSVC) +include(generic/CMakeLists.txt) +include(libtommath/CMakeLists.txt) + +set(TCL_SOURCES + ${TCL_GENERIC_SOURCES} + ${TCL_LIBTOMMATH_SOURCES} +) + +include_directories( + generic + libtommath +) + +if(MSVC) + include(win/CMakeLists.txt) + + set(TCL_SOURCES + ${TCL_SOURCES} + ${TCL_WIN_SOURCES} + ) + + include_directories( + win + ) +endif(MSVC) + +add_definitions( + -Dinline=__inline + -DBUILD_tcl + -DTCL_CFGVAL_ENCODING="UTF-8" + -DTCL_PIPE_DLL="tclpip85.dll" + -DCFG_RUNTIME_LIBDIR=0 + -DCFG_RUNTIME_BINDIR=0 + -DCFG_RUNTIME_SCRDIR=0 + -DCFG_RUNTIME_INCDIR=0 + -DCFG_RUNTIME_DOCDIR=0 + -DCFG_INSTALL_LIBDIR=0 + -DCFG_INSTALL_BINDIR=0 + -DCFG_INSTALL_SCRDIR=0 + -DCFG_INSTALL_INCDIR=0 + -DCFG_INSTALL_DOCDIR=0 +) + +add_library(tcl85 SHARED ${TCL_SOURCES}) + +if(MSVC) + target_link_libraries(tcl85 + Ws2_32 + ) +endif(MSVC) + +set_property(TARGET tcl85 PROPERTY LINK_INTERFACE_LIBRARIES "") + +if(MSVC) + add_executable(tclpip85 win/stub16.c) + set_target_properties(tclpip85 PROPERTIES SUFFIX ".dll") +endif(MSVC) Property changes on: brlcad/trunk/src/other/tcl/CMakeLists.txt ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:eol-style + native Modified: brlcad/trunk/src/other/tcl/generic/CMakeLists.txt =================================================================== --- brlcad/trunk/src/other/tcl/generic/CMakeLists.txt 2008-07-28 07:53:49 UTC (rev 31982) +++ brlcad/trunk/src/other/tcl/generic/CMakeLists.txt 2008-07-28 08:00:16 UTC (rev 31983) @@ -1,73 +1,73 @@ -set(TCL_GENERIC_SOURCES - generic/regcomp.c - generic/regexec.c - generic/regfree.c - generic/regerror.c - generic/tclAlloc.c - generic/tclAsync.c - generic/tclBasic.c - generic/tclBinary.c - generic/tclCkalloc.c - generic/tclClock.c - generic/tclCmdAH.c - generic/tclCmdIL.c - generic/tclCmdMZ.c - generic/tclCompCmds.c - generic/tclCompExpr.c - generic/tclCompile.c - generic/tclConfig.c - generic/tclDate.c - generic/tclDictObj.c - generic/tclEncoding.c - generic/tclEnv.c - generic/tclEvent.c - generic/tclExecute.c - generic/tclFCmd.c - generic/tclFileName.c - generic/tclGet.c - generic/tclHash.c - generic/tclHistory.c - generic/tclIndexObj.c - generic/tclInterp.c - generic/tclIO.c - generic/tclIOCmd.c - generic/tclIOGT.c - generic/tclIORChan.c - generic/tclIOSock.c - generic/tclIOUtil.c - generic/tclLink.c - generic/tclLiteral.c - generic/tclListObj.c - generic/tclLoad.c - generic/tclMain.c - generic/tclNamesp.c - generic/tclNotify.c - generic/tclObj.c - generic/tclPanic.c - generic/tclParse.c - generic/tclPathObj.c - generic/tclPipe.c - generic/tclPkg.c - generic/tclPkgConfig.c - generic/tclPosixStr.c - generic/tclPreserve.c - generic/tclProc.c - generic/tclRegexp.c - generic/tclResolve.c - generic/tclResult.c - generic/tclScan.c - generic/tclStringObj.c - generic/tclStrToD.c - generic/tclStubInit.c - generic/tclStubLib.c - generic/tclThread.c - generic/tclThreadAlloc.c - generic/tclThreadJoin.c - generic/tclThreadStorage.c - generic/tclTimer.c - generic/tclTomMathInterface.c - generic/tclTrace.c - generic/tclUtf.c - generic/tclUtil.c - generic/tclVar.c -) +set(TCL_GENERIC_SOURCES + generic/regcomp.c + generic/regexec.c + generic/regfree.c + generic/regerror.c + generic/tclAlloc.c + generic/tclAsync.c + generic/tclBasic.c + generic/tclBinary.c + generic/tclCkalloc.c + generic/tclClock.c + generic/tclCmdAH.c + generic/tclCmdIL.c + generic/tclCmdMZ.c + generic/tclCompCmds.c + generic/tclCompExpr.c + generic/tclCompile.c + generic/tclConfig.c + generic/tclDate.c + generic/tclDictObj.c + generic/tclEncoding.c + generic/tclEnv.c + generic/tclEvent.c + generic/tclExecute.c + generic/tclFCmd.c + generic/tclFileName.c + generic/tclGet.c + generic/tclHash.c + generic/tclHistory.c + generic/tclIndexObj.c + generic/tclInterp.c + generic/tclIO.c + generic/tclIOCmd.c + generic/tclIOGT.c + generic/tclIORChan.c + generic/tclIOSock.c + generic/tclIOUtil.c + generic/tclLink.c + generic/tclLiteral.c + generic/tclListObj.c + generic/tclLoad.c + generic/tclMain.c + generic/tclNamesp.c + generic/tclNotify.c + generic/tclObj.c + generic/tclPanic.c + generic/tclParse.c + generic/tclPathObj.c + generic/tclPipe.c + generic/tclPkg.c + generic/tclPkgConfig.c + generic/tclPosixStr.c + generic/tclPreserve.c + generic/tclProc.c + generic/tclRegexp.c + generic/tclResolve.c + generic/tclResult.c + generic/tclScan.c + generic/tclStringObj.c + generic/tclStrToD.c + generic/tclStubInit.c + generic/tclStubLib.c + generic/tclThread.c + generic/tclThreadAlloc.c + generic/tclThreadJoin.c + generic/tclThreadStorage.c + generic/tclTimer.c + generic/tclTomMathInterface.c + generic/tclTrace.c + generic/tclUtf.c + generic/tclUtil.c + generic/tclVar.c +) Property changes on: brlcad/trunk/src/other/tcl/generic/CMakeLists.txt ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:eol-style + native Modified: brlcad/trunk/src/other/tcl/libtommath/CMakeLists.txt =================================================================== --- brlcad/trunk/src/other/tcl/libtommath/CMakeLists.txt 2008-07-28 07:53:49 UTC (rev 31982) +++ brlcad/trunk/src/other/tcl/libtommath/CMakeLists.txt 2008-07-28 08:00:16 UTC (rev 31983) @@ -1,63 +1,63 @@ -set(TCL_LIBTOMMATH_SOURCES - libtommath/bncore.c - libtommath/bn_reverse.c - libtommath/bn_fast_s_mp_mul_digs.c - libtommath/bn_fast_s_mp_sqr.c - libtommath/bn_mp_add.c - libtommath/bn_mp_add_d.c - libtommath/bn_mp_and.c - libtommath/bn_mp_clamp.c - libtommath/bn_mp_clear.c - libtommath/bn_mp_clear_multi.c - libtommath/bn_mp_cmp.c - libtommath/bn_mp_cmp_d.c - libtommath/bn_mp_cmp_mag.c - libtommath/bn_mp_copy.c - libtommath/bn_mp_count_bits.c - libtommath/bn_mp_div.c - libtommath/bn_mp_div_d.c - libtommath/bn_mp_div_2.c - libtommath/bn_mp_div_2d.c - libtommath/bn_mp_div_3.c - libtommath/bn_mp_exch.c - libtommath/bn_mp_expt_d.c - libtommath/bn_mp_grow.c - libtommath/bn_mp_init.c - libtommath/bn_mp_init_copy.c - libtommath/bn_mp_init_multi.c - libtommath/bn_mp_init_set.c - libtommath/bn_mp_init_size.c - libtommath/bn_mp_karatsuba_mul.c - libtommath/bn_mp_karatsuba_sqr.c - libtommath/bn_mp_lshd.c - libtommath/bn_mp_mod.c - libtommath/bn_mp_mod_2d.c - libtommath/bn_mp_mul.c - libtommath/bn_mp_mul_2.c - libtommath/bn_mp_mul_2d.c - libtommath/bn_mp_mul_d.c - libtommath/bn_mp_neg.c - libtommath/bn_mp_or.c - libtommath/bn_mp_radix_size.c - libtommath/bn_mp_radix_smap.c - libtommath/bn_mp_read_radix.c - libtommath/bn_mp_rshd.c - libtommath/bn_mp_set.c - libtommath/bn_mp_shrink.c - libtommath/bn_mp_sqr.c - libtommath/bn_mp_sqrt.c - libtommath/bn_mp_sub.c - libtommath/bn_mp_sub_d.c - libtommath/bn_mp_to_unsigned_bin.c - libtommath/bn_mp_to_unsigned_bin_n.c - libtommath/bn_mp_toom_mul.c - libtommath/bn_mp_toom_sqr.c - libtommath/bn_mp_toradix_n.c - libtommath/bn_mp_unsigned_bin_size.c - libtommath/bn_mp_xor.c - libtommath/bn_mp_zero.c - libtommath/bn_s_mp_add.c - libtommath/bn_s_mp_mul_digs.c - libtommath/bn_s_mp_sqr.c - libtommath/bn_s_mp_sub.c -) +set(TCL_LIBTOMMATH_SOURCES + libtommath/bncore.c + libtommath/bn_reverse.c + libtommath/bn_fast_s_mp_mul_digs.c + libtommath/bn_fast_s_mp_sqr.c + libtommath/bn_mp_add.c + libtommath/bn_mp_add_d.c + libtommath/bn_mp_and.c + libtommath/bn_mp_clamp.c + libtommath/bn_mp_clear.c + libtommath/bn_mp_clear_multi.c + libtommath/bn_mp_cmp.c + libtommath/bn_mp_cmp_d.c + libtommath/bn_mp_cmp_mag.c + libtommath/bn_mp_copy.c + libtommath/bn_mp_count_bits.c + libtommath/bn_mp_div.c + libtommath/bn_mp_div_d.c + libtommath/bn_mp_div_2.c + libtommath/bn_mp_div_2d.c + libtommath/bn_mp_div_3.c + libtommath/bn_mp_exch.c + libtommath/bn_mp_expt_d.c + libtommath/bn_mp_grow.c + libtommath/bn_mp_init.c + libtommath/bn_mp_init_copy.c + libtommath/bn_mp_init_multi.c + libtommath/bn_mp_init_set.c + libtommath/bn_mp_init_size.c + libtommath/bn_mp_karatsuba_mul.c + libtommath/bn_mp_karatsuba_sqr.c + libtommath/bn_mp_lshd.c + libtommath/bn_mp_mod.c + libtommath/bn_mp_mod_2d.c + libtommath/bn_mp_mul.c + libtommath/bn_mp_mul_2.c + libtommath/bn_mp_mul_2d.c + libtommath/bn_mp_mul_d.c + libtommath/bn_mp_neg.c + libtommath/bn_mp_or.c + libtommath/bn_mp_radix_size.c + libtommath/bn_mp_radix_smap.c + libtommath/bn_mp_read_radix.c + libtommath/bn_mp_rshd.c + libtommath/bn_mp_set.c + libtommath/bn_mp_shrink.c + libtommath/bn_mp_sqr.c + libtommath/bn_mp_sqrt.c + libtommath/bn_mp_sub.c + libtommath/bn_mp_sub_d.c + libtommath/bn_mp_to_unsigned_bin.c + libtommath/bn_mp_to_unsigned_bin_n.c + libtommath/bn_mp_toom_mul.c + libtommath/bn_mp_toom_sqr.c + libtommath/bn_mp_toradix_n.c + libtommath/bn_mp_unsigned_bin_size.c + libtommath/bn_mp_xor.c + libtommath/bn_mp_zero.c + libtommath/bn_s_mp_add.c + libtommath/bn_s_mp_mul_digs.c + libtommath/bn_s_mp_sqr.c + libtommath/bn_s_mp_sub.c +) Property changes on: brlcad/trunk/src/other/tcl/libtommath/CMakeLists.txt ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:eol-style + native Modified: brlcad/trunk/src/other/tcl/win/CMakeLists.txt =================================================================== --- brlcad/trunk/src/other/tcl/win/CMakeLists.txt 2008-07-28 07:53:49 UTC (rev 31982) +++ brlcad/trunk/src/other/tcl/win/CMakeLists.txt 2008-07-28 08:00:16 UTC (rev 31983) @@ -1,17 +1,17 @@ -set(TCL_WIN_SOURCES - win/tclWin32Dll.c - win/tclWinChan.c - win/tclWinConsole.c - win/tclWinSerial.c - win/tclWinError.c - win/tclWinFCmd.c - win/tclWinFile.c - win/tclWinInit.c - win/tclWinLoad.c - win/tclWinNotify.c - win/tclWinPipe.c - win/tclWinSock.c - win/tclWinThrd.c - win/tclWinTime.c - win/tcl.rc -) +set(TCL_WIN_SOURCES + win/tclWin32Dll.c + win/tclWinChan.c + win/tclWinConsole.c + win/tclWinSerial.c + win/tclWinError.c + win/tclWinFCmd.c + win/tclWinFile.c + win/tclWinInit.c + win/tclWinLoad.c + win/tclWinNotify.c + win/tclWinPipe.c + win/tclWinSock.c + win/tclWinThrd.c + win/tclWinTime.c + win/tcl.rc +) Property changes on: brlcad/trunk/src/other/tcl/win/CMakeLists.txt ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:eol-style + native This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sta...@us...> - 2008-07-28 15:20:14
|
Revision: 31993 http://brlcad.svn.sourceforge.net/brlcad/?rev=31993&view=rev Author: starseeker Date: 2008-07-28 15:20:22 +0000 (Mon, 28 Jul 2008) Log Message: ----------- Fix sketch in tire tool to avoid jagged stepping artifacts on inner tread wall. Modified Paths: -------------- brlcad/trunk/NEWS brlcad/trunk/src/proc-db/tire.c Modified: brlcad/trunk/NEWS =================================================================== --- brlcad/trunk/NEWS 2008-07-28 15:05:23 UTC (rev 31992) +++ brlcad/trunk/NEWS 2008-07-28 15:20:22 UTC (rev 31993) @@ -14,6 +14,7 @@ --- 2008-06-XX Release 7.13.0 --- ---------------------------------------------------------------------- +* tweak tread 2 in tire tool; avoid artifacts on tread wall - C. Yapp * fixed mged 'dbconcat' hang when not specifying an affix - Bob Parker * fixed primitive selection solid_illum bug in mged - Bob Parker * fix bug in tire tool's geometry causing 'nicks' in tread - C. Yapp Modified: brlcad/trunk/src/proc-db/tire.c =================================================================== --- brlcad/trunk/src/proc-db/tire.c 2008-07-28 15:05:23 UTC (rev 31992) +++ brlcad/trunk/src/proc-db/tire.c 2008-07-28 15:20:22 UTC (rev 31993) @@ -950,8 +950,8 @@ point2d_t verts3[] = { { .5, .45 }, { -.5, .4 }, - { -.7, .5 }, - { .3, .55 } + { -.6, .5 }, + { .5, .55 } }; verts[2] = verts3; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bo...@us...> - 2008-07-29 12:07:49
|
Revision: 32039 http://brlcad.svn.sourceforge.net/brlcad/?rev=32039&view=rev Author: bob1961 Date: 2008-07-29 12:07:50 +0000 (Tue, 29 Jul 2008) Log Message: ----------- Fleshing out a few libged commands that were previously stubbed in. Modified Paths: -------------- brlcad/trunk/include/ged.h brlcad/trunk/include/raytrace.h brlcad/trunk/misc/win32-msvc8/libged/libged.vcproj brlcad/trunk/src/libdm/dm-ogl.c brlcad/trunk/src/libdm/dm-wgl.c brlcad/trunk/src/libged/Makefile.am brlcad/trunk/src/libged/bot_smooth.c brlcad/trunk/src/libged/copy.c brlcad/trunk/src/libged/copyeval.c brlcad/trunk/src/libged/dbip.c brlcad/trunk/src/libged/dump.c brlcad/trunk/src/libged/dup.c brlcad/trunk/src/libged/expand.c brlcad/trunk/src/libged/facetize.c brlcad/trunk/src/libged/find.c brlcad/trunk/src/libged/ged_private.h brlcad/trunk/src/libged/group.c brlcad/trunk/src/libged/hide.c brlcad/trunk/src/libged/instance.c brlcad/trunk/src/libged/keep.c brlcad/trunk/src/libged/kill.c brlcad/trunk/src/libged/killall.c brlcad/trunk/src/libged/killtree.c brlcad/trunk/src/libged/ls.c brlcad/trunk/src/libged/lt.c brlcad/trunk/src/libged/make_bb.c brlcad/trunk/src/libged/match.c brlcad/trunk/src/libged/move.c brlcad/trunk/src/libged/move_all.c brlcad/trunk/src/libged/move_arb_edge.c brlcad/trunk/src/libged/move_arb_face.c brlcad/trunk/src/libged/nmg_collapse.c brlcad/trunk/src/libged/nmg_simplify.c brlcad/trunk/src/libged/open.c brlcad/trunk/src/libged/pathlist.c brlcad/trunk/src/libged/push.c brlcad/trunk/src/libged/region.c brlcad/trunk/src/libged/remove.c brlcad/trunk/src/libged/rotate_arb_face.c brlcad/trunk/src/libged/shells.c brlcad/trunk/src/libged/summary.c brlcad/trunk/src/libged/title.c brlcad/trunk/src/libged/tol.c brlcad/trunk/src/libged/tops.c brlcad/trunk/src/libged/track.c brlcad/trunk/src/libged/unhide.c brlcad/trunk/src/libged/units.c brlcad/trunk/src/libged/version.c brlcad/trunk/src/libged/wdb_obj.c brlcad/trunk/src/libged/whatid.c brlcad/trunk/src/libged/xpush.c brlcad/trunk/src/librt/primitives/arb8/arb8.c brlcad/trunk/src/libtclcad/ged_obj.c brlcad/trunk/src/mged/edarb.c brlcad/trunk/src/mged/edsol.c brlcad/trunk/src/mged/facedef.c brlcad/trunk/src/mged/inside.c brlcad/trunk/src/mged/mged.h brlcad/trunk/src/tclscripts/helplib.tcl Added Paths: ----------- brlcad/trunk/src/libged/which.c Removed Paths: ------------- brlcad/trunk/src/libged/rt_gettrees.c brlcad/trunk/src/libged/whichair.c brlcad/trunk/src/libged/whichid.c Modified: brlcad/trunk/include/ged.h =================================================================== --- brlcad/trunk/include/ged.h 2008-07-29 12:02:00 UTC (rev 32038) +++ brlcad/trunk/include/ged.h 2008-07-29 12:07:50 UTC (rev 32039) @@ -1358,6 +1358,14 @@ GED_EXPORT BU_EXTERN(int ged_killall, (struct ged *gedp, int argc, const char *argv[])); /** + * Kill all references to the specified object(s). + * + * Usage: + * killrefs object(s) + */ +GED_EXPORT BU_EXTERN(int ged_killrefs, (struct ged *gedp, int argc, const char *argv[])); + +/** * Kill all paths belonging to objects * * Usage: @@ -1894,6 +1902,14 @@ GED_EXPORT BU_EXTERN(int ged_tra, (struct ged *gedp, int argc, const char *argv[])); /** + * Create a track + * + * Usage: + * track args + */ +GED_EXPORT BU_EXTERN(int ged_track, (struct ged *gedp, int argc, const char *argv[])); + +/** * Return the object hierarchy for all object(s) specified or for all currently displayed * * Usage: @@ -1966,20 +1982,21 @@ GED_EXPORT BU_EXTERN(int ged_whatid, (struct ged *gedp, int argc, const char *argv[])); /** + * The ged_which() function serves both whichair and whichid. + * * Find the regions with the specified air codes * * Usage: * whichair codes(s) - */ -GED_EXPORT BU_EXTERN(int ged_whichair, (struct ged *gedp, int argc, const char *argv[])); - -/** + * + * * Find the regions with the specified region ids * * Usage: * whichid [-s] id(s) + * */ -GED_EXPORT BU_EXTERN(int ged_whichid, (struct ged *gedp, int argc, const char *argv[])); +GED_EXPORT BU_EXTERN(int ged_which, (struct ged *gedp, int argc, const char *argv[])); /** * List the objects currently prepped for drawing Modified: brlcad/trunk/include/raytrace.h =================================================================== --- brlcad/trunk/include/raytrace.h 2008-07-29 12:02:00 UTC (rev 32038) +++ brlcad/trunk/include/raytrace.h 2008-07-29 12:07:50 UTC (rev 32039) @@ -3311,13 +3311,13 @@ int loc)); #ifdef __RTGEOM_H__ RT_EXPORT BU_EXTERN(int rt_arb_calc_planes, - (Tcl_Interp *interp, + (struct bu_vls *error_msg_ret, struct rt_arb_internal *arb, int type, plane_t planes[6], const struct bn_tol *tol)); RT_EXPORT BU_EXTERN(int rt_arb_move_edge, - (Tcl_Interp *interp, + (struct bu_vls *error_msg_ret, struct rt_arb_internal *arb, vect_t thru, int bp1, @@ -3328,7 +3328,7 @@ plane_t planes[6], const struct bn_tol *tol)); RT_EXPORT BU_EXTERN(int rt_arb_edit, - (Tcl_Interp *interp, + (struct bu_vls *error_msg_ret, struct rt_arb_internal *arb, int arb_type, int edit_type, Modified: brlcad/trunk/misc/win32-msvc8/libged/libged.vcproj =================================================================== --- brlcad/trunk/misc/win32-msvc8/libged/libged.vcproj 2008-07-29 12:02:00 UTC (rev 32038) +++ brlcad/trunk/misc/win32-msvc8/libged/libged.vcproj 2008-07-29 12:07:50 UTC (rev 32039) @@ -346,6 +346,10 @@ > </File> <File + RelativePath="..\..\..\src\libged\keypoint.c" + > + </File> + <File RelativePath="..\..\..\src\libged\kill.c" > </File> @@ -354,11 +358,11 @@ > </File> <File - RelativePath="..\..\..\src\libged\killtree.c" + RelativePath="..\..\..\src\libged\killrefs.c" > </File> <File - RelativePath="..\..\..\src\libged\keypoint.c" + RelativePath="..\..\..\src\libged\killtree.c" > </File> <File @@ -558,10 +562,6 @@ > </File> <File - RelativePath="..\..\..\src\libged\rt_gettrees.c" - > - </File> - <File RelativePath="..\..\..\src\libged\scale.c" > </File> @@ -642,10 +642,6 @@ > </File> <File - RelativePath="..\..\..\src\libged\version.c" - > - </File> - <File RelativePath="..\..\..\src\libged\v2m_point.c" > </File> @@ -654,7 +650,7 @@ > </File> <File - RelativePath="..\..\..\src\libged\view_obj.c" + RelativePath="..\..\..\src\libged\version.c" > </File> <File @@ -662,6 +658,10 @@ > </File> <File + RelativePath="..\..\..\src\libged\view_obj.c" + > + </File> + <File RelativePath="..\..\..\src\libged\viewdir.c" > </File> @@ -682,15 +682,15 @@ > </File> <File - RelativePath="..\..\..\src\libged\whatid.c" + RelativePath="..\..\..\src\libged\wdb_track.c" > </File> <File - RelativePath="..\..\..\src\libged\whichair.c" + RelativePath="..\..\..\src\libged\whatid.c" > </File> <File - RelativePath="..\..\..\src\libged\whichid.c" + RelativePath="..\..\..\src\libged\which.c" > </File> <File Modified: brlcad/trunk/src/libdm/dm-ogl.c =================================================================== --- brlcad/trunk/src/libdm/dm-ogl.c 2008-07-29 12:02:00 UTC (rev 32038) +++ brlcad/trunk/src/libdm/dm-ogl.c 2008-07-29 12:07:50 UTC (rev 32039) @@ -160,7 +160,7 @@ 1, /* depth buffer is writable */ 1, /* zbuffer */ 0, /* no zclipping */ - 0, /* clear back buffer after drawing and swap */ + 0, /* clear back buffer after drawing and swap */ 0 /* Tcl interpreter */ }; Modified: brlcad/trunk/src/libdm/dm-wgl.c =================================================================== --- brlcad/trunk/src/libdm/dm-wgl.c 2008-07-29 12:02:00 UTC (rev 32038) +++ brlcad/trunk/src/libdm/dm-wgl.c 2008-07-29 12:07:50 UTC (rev 32039) @@ -144,7 +144,7 @@ 1, /* depth buffer is writable */ 1, /* zbuffer */ 0, /* no zclipping */ - 0, /* clear back buffer after drawing and swap */ + 0, /* clear back buffer after drawing and swap */ 0 /* Tcl interpreter */ }; Modified: brlcad/trunk/src/libged/Makefile.am =================================================================== --- brlcad/trunk/src/libged/Makefile.am 2008-07-29 12:02:00 UTC (rev 32038) +++ brlcad/trunk/src/libged/Makefile.am 2008-07-29 12:07:50 UTC (rev 32039) @@ -111,7 +111,6 @@ rotate_about.c \ rotate_arb_face.c \ rt.c \ - rt_gettrees.c \ scale.c \ set_outputHandler.c \ set_transparency.c \ @@ -143,8 +142,7 @@ wdb_comb_std.c \ wdb_obj.c \ whatid.c \ - whichair.c \ - whichid.c \ + which.c \ who.c \ wmater.c \ xpush.c \ Modified: brlcad/trunk/src/libged/bot_smooth.c =================================================================== --- brlcad/trunk/src/libged/bot_smooth.c 2008-07-29 12:02:00 UTC (rev 32038) +++ brlcad/trunk/src/libged/bot_smooth.c 2008-07-29 12:07:50 UTC (rev 32039) @@ -29,14 +29,24 @@ #include "bio.h" #include "cmd.h" +#include "rtgeom.h" #include "ged_private.h" + int ged_bot_smooth(struct ged *gedp, int argc, const char *argv[]) { + char *new_bot_name, *old_bot_name; + struct directory *dp_old, *dp_new; + struct rt_bot_internal *old_bot; + struct rt_db_internal intern; + fastf_t tolerance_angle=180.0; + int arg_index=1; + int id; static const char *usage = "[-t ntol] new_bot old_bot"; GED_CHECK_DATABASE_OPEN(gedp, BRLCAD_ERROR); + GED_CHECK_READ_ONLY(gedp, BRLCAD_ERROR); /* initialize result */ bu_vls_trunc(&gedp->ged_result_str, 0); @@ -50,11 +60,89 @@ return BRLCAD_OK; } - if (argc < 2 || MAXARGS < argc) { + /* check that we are using a version 5 database */ + if (gedp->ged_wdbp->dbip->dbi_version < 5) { + bu_vls_printf(&gedp->ged_result_str, "This is an older database version.\nIt does not support BOT surface normals.\nUse \"dbupgrade\" to upgrade this database to the current version.\n"); + return BRLCAD_ERROR; + } + + if (argc < 3) { bu_vls_printf(&gedp->ged_result_str, "Usage: %s %s", argv[0], usage); return BRLCAD_ERROR; } + while (*argv[arg_index] == '-') { + /* this is an option */ + if ( !strcmp( argv[arg_index], "-t" ) ) { + arg_index++; + tolerance_angle = atof( argv[arg_index] ); + } else { + bu_vls_printf(&gedp->ged_result_str, "Usage: %s %s", argv[0], usage); + return BRLCAD_ERROR; + } + arg_index++; + } + + if ( arg_index >= argc ) { + bu_vls_printf(&gedp->ged_result_str, "Usage: %s %s", argv[0], usage); + return BRLCAD_ERROR; + } + + new_bot_name = (char *)argv[arg_index++]; + old_bot_name = (char *)argv[arg_index]; + + if ( (dp_old=db_lookup( gedp->ged_wdbp->dbip, old_bot_name, LOOKUP_QUIET ) ) == DIR_NULL ) { + bu_vls_printf(&gedp->ged_result_str, "%s does not exist!!\n", old_bot_name); + return BRLCAD_ERROR; + } + + if ( strcmp( old_bot_name, new_bot_name ) ) { + + if ( (dp_new=db_lookup( gedp->ged_wdbp->dbip, new_bot_name, LOOKUP_QUIET ) ) != DIR_NULL ) { + bu_vls_printf(&gedp->ged_result_str, "%s already exists!!\n", new_bot_name); + return BRLCAD_ERROR; + } + } else { + dp_new = dp_old; + } + + if ( (id=rt_db_get_internal( &intern, dp_old, gedp->ged_wdbp->dbip, NULL, gedp->ged_wdbp->wdb_resp ) ) < 0 ) { + bu_vls_printf(&gedp->ged_result_str, "Failed to get internal form of %s\n", old_bot_name); + return BRLCAD_ERROR; + } + + if ( id != ID_BOT ) { + bu_vls_printf(&gedp->ged_result_str, "%s is not a BOT primitive\n", old_bot_name); + rt_db_free_internal( &intern, gedp->ged_wdbp->wdb_resp ); + return BRLCAD_ERROR; + } + + old_bot = (struct rt_bot_internal *)intern.idb_ptr; + RT_BOT_CK_MAGIC( old_bot ); + + if ( rt_bot_smooth( old_bot, old_bot_name, gedp->ged_wdbp->dbip, tolerance_angle*M_PI/180.0 ) ) { + bu_vls_printf(&gedp->ged_result_str, "Failed to smooth %s\n", old_bot_name); + rt_db_free_internal( &intern, gedp->ged_wdbp->wdb_resp ); + return BRLCAD_ERROR; + } + + if ( dp_new == DIR_NULL ) { + if ( (dp_new=db_diradd( gedp->ged_wdbp->dbip, new_bot_name, -1L, 0, DIR_SOLID, + (genptr_t)&intern.idb_type)) == DIR_NULL ) { + rt_db_free_internal(&intern, gedp->ged_wdbp->wdb_resp); + bu_vls_printf(&gedp->ged_result_str, "Cannot add %s to directory\n", new_bot_name); + return BRLCAD_ERROR; + } + } + + if ( rt_db_put_internal( dp_new, gedp->ged_wdbp->dbip, &intern, gedp->ged_wdbp->wdb_resp ) < 0 ) { + rt_db_free_internal(&intern, gedp->ged_wdbp->wdb_resp); + bu_vls_printf(&gedp->ged_result_str, "Database write error, aborting.\n"); + return BRLCAD_ERROR; + } + + rt_db_free_internal( &intern, gedp->ged_wdbp->wdb_resp ); + return BRLCAD_OK; } Modified: brlcad/trunk/src/libged/copy.c =================================================================== --- brlcad/trunk/src/libged/copy.c 2008-07-29 12:02:00 UTC (rev 32038) +++ brlcad/trunk/src/libged/copy.c 2008-07-29 12:07:50 UTC (rev 32039) @@ -34,9 +34,13 @@ int ged_copy(struct ged *gedp, int argc, const char *argv[]) { + register struct directory *proto; + register struct directory *dp; + struct bu_external external; static const char *usage = "from to"; GED_CHECK_DATABASE_OPEN(gedp, BRLCAD_ERROR); + GED_CHECK_READ_ONLY(gedp, BRLCAD_ERROR); /* initialize result */ bu_vls_trunc(&gedp->ged_result_str, 0); @@ -50,11 +54,37 @@ return BRLCAD_OK; } - if (argc < 2 || MAXARGS < argc) { + if (argc != 3) { bu_vls_printf(&gedp->ged_result_str, "Usage: %s %s", argv[0], usage); return BRLCAD_ERROR; } + + if ((proto = db_lookup(gedp->ged_wdbp->dbip, argv[1], LOOKUP_NOISY)) == DIR_NULL) + return BRLCAD_ERROR; + + if (db_lookup(gedp->ged_wdbp->dbip, argv[2], LOOKUP_QUIET) != DIR_NULL) { + bu_vls_printf(&gedp->ged_result_str, "%s: already exists", argv[2]); + return BRLCAD_ERROR; + } + + if (db_get_external(&external, proto, gedp->ged_wdbp->dbip)) { + bu_vls_printf(&gedp->ged_result_str, "Database read error, aborting\n"); + return BRLCAD_ERROR; + } + + if ((dp=db_diradd(gedp->ged_wdbp->dbip, argv[2], -1, 0, proto->d_flags, (genptr_t)&proto->d_minor_type)) == DIR_NULL ) { + bu_vls_printf(&gedp->ged_result_str, "An error has occured while adding a new object to the database."); + return BRLCAD_ERROR; + } + + if (db_put_external(&external, dp, gedp->ged_wdbp->dbip) < 0) { + bu_free_external(&external); + bu_vls_printf(&gedp->ged_result_str, "Database write error, aborting\n"); + return BRLCAD_ERROR; + } + bu_free_external(&external); + return BRLCAD_OK; } Modified: brlcad/trunk/src/libged/copyeval.c =================================================================== --- brlcad/trunk/src/libged/copyeval.c 2008-07-29 12:02:00 UTC (rev 32038) +++ brlcad/trunk/src/libged/copyeval.c 2008-07-29 12:07:50 UTC (rev 32039) @@ -34,9 +34,17 @@ int ged_copyeval(struct ged *gedp, int argc, const char *argv[]) { + struct directory *dp; + struct rt_db_internal internal, new_int; + mat_t start_mat; + int id; + int i; + int endpos; + struct ged_trace_data gtd; static const char *usage = "new_prim path_to_old_prim"; GED_CHECK_DATABASE_OPEN(gedp, BRLCAD_ERROR); + GED_CHECK_READ_ONLY(gedp, BRLCAD_ERROR); /* initialize result */ bu_vls_trunc(&gedp->ged_result_str, 0); @@ -50,11 +58,101 @@ return BRLCAD_OK; } - if (argc < 2 || MAXARGS < argc) { + if (argc < 3 || 27 < argc) { bu_vls_printf(&gedp->ged_result_str, "Usage: %s %s", argv[0], usage); return BRLCAD_ERROR; } + /* initialize gtd */ + gtd.gtd_gedp = gedp; + gtd.gtd_flag = GED_CPEVAL; + gtd.gtd_prflag = 0; + + /* check if new solid name already exists in description */ + if (db_lookup(gedp->ged_wdbp->dbip, argv[1], LOOKUP_QUIET) != DIR_NULL) { + bu_vls_printf(&gedp->ged_result_str, "%s: alread exists\n", argv[1]); + return BRLCAD_ERROR; + } + + MAT_IDN(start_mat); + + /* build directory pointer array for desired path */ + if (argc == 3 && strchr(argv[2], '/')) { + char *tok; + + endpos = 0; + + tok = strtok((char *)argv[2], "/"); + while (tok) { + if ((gtd.gtd_obj[endpos++] = db_lookup(gedp->ged_wdbp->dbip, tok, LOOKUP_NOISY)) == DIR_NULL) + return BRLCAD_ERROR; + tok = strtok((char *)NULL, "/"); + } + } else { + for (i=2; i<argc; i++) { + if ((gtd.gtd_obj[i-2] = db_lookup(gedp->ged_wdbp->dbip, argv[i], LOOKUP_NOISY)) == DIR_NULL) + return BRLCAD_ERROR; + } + endpos = argc - 2; + } + + gtd.gtd_objpos = endpos - 1; + + /* Make sure that final component in path is a solid */ + if ((id = rt_db_get_internal(&internal, gtd.gtd_obj[endpos - 1], gedp->ged_wdbp->dbip, bn_mat_identity, &rt_uniresource)) < 0) { + bu_vls_printf(&gedp->ged_result_str, "import failure on %s\n", argv[argc-1]); + return BRLCAD_ERROR; + } + + if (id >= ID_COMBINATION) { + rt_db_free_internal(&internal, &rt_uniresource); + bu_vls_printf(&gedp->ged_result_str, "final component on path must be a primitive!!!\n"); + return BRLCAD_ERROR; + } + + ged_trace(gtd.gtd_obj[0], 0, start_mat, >d); + + if (gtd.gtd_prflag == 0) { + bu_vls_printf(&gedp->ged_result_str, "PATH: "); + + for (i=0; i<gtd.gtd_objpos; i++) + bu_vls_printf(&gedp->ged_result_str, "/%s", gtd.gtd_obj[i]->d_namep); + + bu_vls_printf(&gedp->ged_result_str, " NOT FOUND\n"); + rt_db_free_internal(&internal, &rt_uniresource); + return BRLCAD_ERROR; + } + + /* Have found the desired path - wdb_xform is the transformation matrix */ + /* wdb_xform matrix calculated in wdb_trace() */ + + /* create the new solid */ + RT_INIT_DB_INTERNAL(&new_int); + if (rt_generic_xform(&new_int, gtd.gtd_xform, + &internal, 0, gedp->ged_wdbp->dbip, &rt_uniresource)) { + rt_db_free_internal(&internal, &rt_uniresource); + bu_vls_printf(&gedp->ged_result_str, "ged_copyeval: rt_generic_xform failed\n"); + return BRLCAD_ERROR; + } + + if ((dp=db_diradd(gedp->ged_wdbp->dbip, argv[1], -1L, 0, + gtd.gtd_obj[endpos-1]->d_flags, + (genptr_t)&new_int.idb_type)) == DIR_NULL) { + rt_db_free_internal(&internal, &rt_uniresource); + rt_db_free_internal(&new_int, &rt_uniresource); + bu_vls_printf(&gedp->ged_result_str, "An error has occured while adding a new object to the database."); + return BRLCAD_ERROR; + } + + if (rt_db_put_internal(dp, gedp->ged_wdbp->dbip, &new_int, &rt_uniresource) < 0) { + rt_db_free_internal(&internal, &rt_uniresource); + rt_db_free_internal(&new_int, &rt_uniresource); + bu_vls_printf(&gedp->ged_result_str, "Database write error, aborting"); + return BRLCAD_ERROR; + } + rt_db_free_internal(&internal, &rt_uniresource); + rt_db_free_internal(&new_int, &rt_uniresource); + return BRLCAD_OK; } Modified: brlcad/trunk/src/libged/dbip.c =================================================================== --- brlcad/trunk/src/libged/dbip.c 2008-07-29 12:02:00 UTC (rev 32038) +++ brlcad/trunk/src/libged/dbip.c 2008-07-29 12:07:50 UTC (rev 32039) @@ -41,18 +41,17 @@ gedp->ged_result = GED_RESULT_NULL; gedp->ged_result_flags = 0; - /* must be wanting help */ - if (argc == 1) { - gedp->ged_result_flags |= GED_RESULT_FLAGS_HELP_BIT; + if (argc != 1) { bu_vls_printf(&gedp->ged_result_str, "Usage: %s", argv[0]); - return BRLCAD_OK; - } - - if (argc < 2 || MAXARGS < argc) { - bu_vls_printf(&gedp->ged_result_str, "Usage: %s", argv[0]); return BRLCAD_ERROR; } +#if defined(_WIN32) && !defined(__CYGWIN__) + bu_vls_printf(&gedp->ged_result_str, "%llu", (_int64)gedp->ged_wdbp->dbip); +#else + bu_vls_printf(&gedp->ged_result_str, "%llu", (unsigned long long)gedp->ged_wdbp->dbip); +#endif + return BRLCAD_OK; } Modified: brlcad/trunk/src/libged/dump.c =================================================================== --- brlcad/trunk/src/libged/dump.c 2008-07-29 12:02:00 UTC (rev 32038) +++ brlcad/trunk/src/libged/dump.c 2008-07-29 12:07:50 UTC (rev 32039) @@ -34,6 +34,8 @@ int ged_dump(struct ged *gedp, int argc, const char *argv[]) { + struct rt_wdb *op; + int ret; static const char *usage = "file.g"; GED_CHECK_DATABASE_OPEN(gedp, BRLCAD_ERROR); @@ -50,11 +52,24 @@ return BRLCAD_OK; } - if (argc < 2 || MAXARGS < argc) { + if (argc != 2) { bu_vls_printf(&gedp->ged_result_str, "Usage: %s %s", argv[0], usage); return BRLCAD_ERROR; } + if ((op = wdb_fopen(argv[1])) == RT_WDB_NULL) { + bu_vls_printf(&gedp->ged_result_str, "dump: %s: cannot create", argv[1]); + return BRLCAD_ERROR; + } + + ret = db_dump(op, gedp->ged_wdbp->dbip); + wdb_close(op); + + if (ret < 0) { + bu_vls_printf(&gedp->ged_result_str, "dump: %s: db_dump() error", argv[1]); + return BRLCAD_ERROR; + } + return BRLCAD_OK; } Modified: brlcad/trunk/src/libged/dup.c =================================================================== --- brlcad/trunk/src/libged/dup.c 2008-07-29 12:02:00 UTC (rev 32038) +++ brlcad/trunk/src/libged/dup.c 2008-07-29 12:07:50 UTC (rev 32039) @@ -31,9 +31,33 @@ #include "cmd.h" #include "ged_private.h" +static void +ged_dir_check5(register struct db_i *input_dbip, + const struct db5_raw_internal *rip, + long addr, + genptr_t ptr); int +ged_dir_check(register struct db_i *input_dbip, + register const char *name, + long int laddr, + int len, + int flags, + genptr_t ptr); + + +struct dir_check_stuff { + struct db_i *main_dbip; + struct rt_wdb *wdbp; + struct directory **dup_dirp; +}; + + +int ged_dup(struct ged *gedp, int argc, const char *argv[]) { + struct db_i *newdbp = DBI_NULL; + struct directory **dirp0 = (struct directory **)NULL; + struct dir_check_stuff dcs; static const char *usage = "file.g prefix"; GED_CHECK_DATABASE_OPEN(gedp, BRLCAD_ERROR); @@ -50,15 +74,189 @@ return BRLCAD_OK; } - if (argc < 2 || MAXARGS < argc) { + if (argc < 2 || 3 < argc) { bu_vls_printf(&gedp->ged_result_str, "Usage: %s %s", argv[0], usage); return BRLCAD_ERROR; } + bu_vls_trunc( &gedp->ged_wdbp->wdb_prestr, 0 ); + if (argc == 3) + (void)bu_vls_strcpy(&gedp->ged_wdbp->wdb_prestr, argv[2]); + + gedp->ged_wdbp->wdb_num_dups = 0; + if ( gedp->ged_wdbp->dbip->dbi_version < 5 ) { + if ((gedp->ged_wdbp->wdb_ncharadd = bu_vls_strlen(&gedp->ged_wdbp->wdb_prestr)) > 12) { + gedp->ged_wdbp->wdb_ncharadd = 12; + bu_vls_trunc( &gedp->ged_wdbp->wdb_prestr, 12 ); + } + } else { + gedp->ged_wdbp->wdb_ncharadd = bu_vls_strlen(&gedp->ged_wdbp->wdb_prestr); + } + + /* open the input file */ + if ((newdbp = db_open(argv[1], "r")) == DBI_NULL) { + perror(argv[1]); + bu_vls_printf(&gedp->ged_result_str, "dup: Can't open %s", argv[1]); + return BRLCAD_ERROR; + } + + bu_vls_printf(&gedp->ged_result_str, + "\n*** Comparing %s with %s for duplicate names\n", + gedp->ged_wdbp->dbip->dbi_filename, argv[1]); + if (gedp->ged_wdbp->wdb_ncharadd) { + bu_vls_printf(&gedp->ged_result_str, + " For comparison, all names in %s were prefixed with: %s\n", + argv[1], bu_vls_addr( &gedp->ged_wdbp->wdb_prestr)); + } + + /* Get array to hold names of duplicates */ + if ((dirp0 = ged_getspace(gedp->ged_wdbp->dbip, 0)) == (struct directory **) 0) { + bu_vls_printf(&gedp->ged_result_str, "f_dup: unable to get memory\n"); + db_close( newdbp ); + return BRLCAD_ERROR; + } + + /* Scan new database for overlaps */ + dcs.main_dbip = gedp->ged_wdbp->dbip; + dcs.wdbp = gedp->ged_wdbp; + dcs.dup_dirp = dirp0; + if ( newdbp->dbi_version < 5 ) { + if (db_scan(newdbp, ged_dir_check, 0, (genptr_t)&dcs) < 0) { + bu_vls_printf(&gedp->ged_result_str, "dup: db_scan failure"); + bu_free((genptr_t)dirp0, "ged_getspace array"); + db_close(newdbp); + return BRLCAD_ERROR; + } + } else { + if ( db5_scan( newdbp, ged_dir_check5, (genptr_t)&dcs) < 0) { + bu_vls_printf(&gedp->ged_result_str, "dup: db_scan failure"); + bu_free((genptr_t)dirp0, "ged_getspace array"); + db_close(newdbp); + return BRLCAD_ERROR; + } + } + rt_mempurge( &(newdbp->dbi_freep) ); /* didn't really build a directory */ + + ged_vls_col_pr4v(&gedp->ged_result_str, dirp0, (int)(dcs.dup_dirp - dirp0), 0); + bu_vls_printf(&gedp->ged_result_str, "\n ----- %d duplicate names found -----", gedp->ged_wdbp->wdb_num_dups); + bu_free((genptr_t)dirp0, "ged_getspace array"); + db_close(newdbp); + return BRLCAD_OK; } +/** + * + * + */ +static void +ged_dir_check5(register struct db_i *input_dbip, + const struct db5_raw_internal *rip, + long addr, + genptr_t ptr) +{ + char *name; + struct directory *dupdp; + struct bu_vls local; + struct dir_check_stuff *dcsp = (struct dir_check_stuff *)ptr; + + if (dcsp->main_dbip == DBI_NULL) + return; + + RT_CK_DBI(input_dbip); + RT_CK_RIP( rip ); + + if ( rip->h_dli == DB5HDR_HFLAGS_DLI_HEADER_OBJECT ) return; + if ( rip->h_dli == DB5HDR_HFLAGS_DLI_FREE_STORAGE ) return; + + name = (char *)rip->name.ext_buf; + + if ( name == (char *)NULL ) return; + + /* do not compare _GLOBAL */ + if ( rip->major_type == DB5_MAJORTYPE_ATTRIBUTE_ONLY && + rip->minor_type == 0 ) + return; + + /* Add the prefix, if any */ + bu_vls_init( &local ); + if ( dcsp->main_dbip->dbi_version < 5 ) { + if (dcsp->wdbp->wdb_ncharadd > 0) { + bu_vls_strncpy( &local, bu_vls_addr( &dcsp->wdbp->wdb_prestr ), dcsp->wdbp->wdb_ncharadd ); + bu_vls_strcat( &local, name ); + } else { + bu_vls_strncpy( &local, name, GED_V4_MAXNAME ); + } + bu_vls_trunc( &local, GED_V4_MAXNAME ); + } else { + if (dcsp->wdbp->wdb_ncharadd > 0) { + (void)bu_vls_vlscat( &local, &dcsp->wdbp->wdb_prestr ); + (void)bu_vls_strcat( &local, name ); + } else { + (void)bu_vls_strcat( &local, name ); + } + } + + /* Look up this new name in the existing (main) database */ + if ((dupdp = db_lookup(dcsp->main_dbip, bu_vls_addr( &local ), LOOKUP_QUIET)) != DIR_NULL) { + /* Duplicate found, add it to the list */ + dcsp->wdbp->wdb_num_dups++; + *dcsp->dup_dirp++ = dupdp; + } + + bu_vls_free( &local ); + + return; +} + +/** + * G E D _ D I R _ C H E C K + *@brief + * Check a name against the global directory. + */ +static int +ged_dir_check(register struct db_i *input_dbip, register const char *name, long int laddr, int len, int flags, genptr_t ptr) +{ + struct directory *dupdp; + struct bu_vls local; + struct dir_check_stuff *dcsp = (struct dir_check_stuff *)ptr; + + if (dcsp->main_dbip == DBI_NULL) + return 0; + + RT_CK_DBI(input_dbip); + + /* Add the prefix, if any */ + bu_vls_init( &local ); + if ( dcsp->main_dbip->dbi_version < 5 ) { + if (dcsp->wdbp->wdb_ncharadd > 0) { + bu_vls_strncpy( &local, bu_vls_addr( &dcsp->wdbp->wdb_prestr ), dcsp->wdbp->wdb_ncharadd ); + bu_vls_strcat( &local, name ); + } else { + bu_vls_strncpy( &local, name, GED_V4_MAXNAME ); + } + bu_vls_trunc( &local, GED_V4_MAXNAME ); + } else { + if (dcsp->wdbp->wdb_ncharadd > 0) { + bu_vls_vlscat( &local, &dcsp->wdbp->wdb_prestr ); + bu_vls_strcat( &local, name ); + } else { + bu_vls_strcat( &local, name ); + } + } + + /* Look up this new name in the existing (main) database */ + if ((dupdp = db_lookup(dcsp->main_dbip, bu_vls_addr( &local ), LOOKUP_QUIET)) != DIR_NULL) { + /* Duplicate found, add it to the list */ + dcsp->wdbp->wdb_num_dups++; + *dcsp->dup_dirp++ = dupdp; + } + bu_vls_free( &local ); + return 0; +} + + /* * Local Variables: * tab-width: 8 Modified: brlcad/trunk/src/libged/expand.c =================================================================== --- brlcad/trunk/src/libged/expand.c 2008-07-29 12:02:00 UTC (rev 32038) +++ brlcad/trunk/src/libged/expand.c 2008-07-29 12:07:50 UTC (rev 32039) @@ -31,9 +31,17 @@ #include "cmd.h" #include "ged_private.h" +static void +ged_scrape_escapes_AppendResult(struct bu_vls *result, + char *str); + int ged_expand(struct ged *gedp, int argc, const char *argv[]) { + register char *pattern; + register struct directory *dp; + register int i, whicharg; + int regexp, nummatch, thismatch, backslashed; static const char *usage = "expression"; GED_CHECK_DATABASE_OPEN(gedp, BRLCAD_ERROR); @@ -50,15 +58,92 @@ return BRLCAD_OK; } - if (argc < 2 || MAXARGS < argc) { + if (argc < 1 || MAXARGS < argc) { bu_vls_printf(&gedp->ged_result_str, "Usage: %s %s", argv[0], usage); return BRLCAD_ERROR; } + nummatch = 0; + backslashed = 0; + for (whicharg = 1; whicharg < argc; whicharg++) { + /* If * ? or [ are present, this is a regular expression */ + pattern = (char *)argv[whicharg]; + regexp = 0; + do { + if ((*pattern == '*' || *pattern == '?' || *pattern == '[') && + !backslashed) { + regexp = 1; + break; + } + if (*pattern == '\\' && !backslashed) + backslashed = 1; + else + backslashed = 0; + } while (*pattern++); + + /* If it isn't a regexp, copy directly and continue */ + if (regexp == 0) { + if (nummatch > 0) + bu_vls_printf(&gedp->ged_result_str, " "); + ged_scrape_escapes_AppendResult(&gedp->ged_result_str, (char *)argv[whicharg]); + ++nummatch; + continue; + } + + /* Search for pattern matches. + * If any matches are found, we do not have to worry about + * '\' escapes since the match coming from dp->d_namep will be + * clean. In the case of no matches, just copy the argument + * directly. + */ + + pattern = (char *)argv[whicharg]; + thismatch = 0; + for (i = 0; i < RT_DBNHASH; i++) { + for (dp = gedp->ged_wdbp->dbip->dbi_Head[i]; dp != DIR_NULL; dp = dp->d_forw) { + if (!db_regexp_match(pattern, dp->d_namep)) + continue; + /* Successful match */ + if (nummatch == 0) + bu_vls_printf(&gedp->ged_result_str, "%s", dp->d_namep); + else + bu_vls_printf(&gedp->ged_result_str, " %s", dp->d_namep); + ++nummatch; + ++thismatch; + } + } + if (thismatch == 0) { + if (nummatch > 0) + bu_vls_printf(&gedp->ged_result_str, " "); + ged_scrape_escapes_AppendResult(&gedp->ged_result_str, (char *)argv[whicharg]); + } + } + return BRLCAD_OK; } +static void +ged_scrape_escapes_AppendResult(struct bu_vls *result, + char *str) +{ + char buf[2]; + buf[1] = '\0'; + while (*str) { + buf[0] = *str; + if (*str != '\\') { + bu_vls_printf(result, "%s", buf); + } else if (*(str+1) == '\\') { + bu_vls_printf(result, "%s", buf); + ++str; + } + if (*str == '\0') + break; + ++str; + } +} + + /* * Local Variables: * tab-width: 8 Modified: brlcad/trunk/src/libged/facetize.c =================================================================== --- brlcad/trunk/src/libged/facetize.c 2008-07-29 12:02:00 UTC (rev 32038) +++ brlcad/trunk/src/libged/facetize.c 2008-07-29 12:07:50 UTC (rev 32039) @@ -29,14 +29,32 @@ #include "bio.h" #include "cmd.h" +#include "rtgeom.h" +#include "raytrace.h" #include "ged_private.h" +static union tree *facetize_region_end(struct db_tree_state *tsp, struct db_full_path *pathp, union tree *curtree, genptr_t client_data); + int ged_facetize(struct ged *gedp, int argc, const char *argv[]) { - static const char *usage = "new_obj old_obj [old_obj2 old_obj3 ...]"; + int i; + register int c; + int triangulate; + char *newname; + struct rt_db_internal intern; + struct directory *dp; + int failed; + int nmg_use_tnurbs = 0; + int make_bot; + struct db_tree_state init_state; + struct db_i *dbip; + union tree *facetize_tree; + struct model *nmg_model; + static const char *usage = "[-n] [-t] [-T] new_obj old_obj [old_obj2 old_obj3 ...]"; GED_CHECK_DATABASE_OPEN(gedp, BRLCAD_ERROR); + GED_CHECK_READ_ONLY(gedp, BRLCAD_ERROR); /* initialize result */ bu_vls_trunc(&gedp->ged_result_str, 0); @@ -50,15 +68,236 @@ return BRLCAD_OK; } - if (argc < 2 || MAXARGS < argc) { + if (argc < 3) { bu_vls_printf(&gedp->ged_result_str, "Usage: %s %s", argv[0], usage); return BRLCAD_ERROR; } + dbip = gedp->ged_wdbp->dbip; + RT_CHECK_DBI(dbip); + + db_init_db_tree_state( &init_state, dbip, gedp->ged_wdbp->wdb_resp ); + + /* Establish tolerances */ + init_state.ts_ttol = &gedp->ged_wdbp->wdb_ttol; + init_state.ts_tol = &gedp->ged_wdbp->wdb_tol; + + /* Initial vaues for options, must be reset each time */ + triangulate = 0; + make_bot = 1; + + /* Parse options. */ + bu_optind = 1; /* re-init bu_getopt() */ + while ( (c=bu_getopt(argc, (char * const *)argv, "ntT")) != EOF ) { + switch (c) { + case 'n': + make_bot = 0; + break; + case 'T': + triangulate = 1; + break; + case 't': + nmg_use_tnurbs = 1; + break; + default: + { + bu_vls_printf(&gedp->ged_result_str, "Usage: %s %s", argv[0], usage); + return BRLCAD_ERROR; + } + } + } + argc -= bu_optind; + argv += bu_optind; + if ( argc < 0 ) { + bu_vls_printf(&gedp->ged_result_str, "facetize: missing argument\n"); + return BRLCAD_ERROR; + } + + newname = (char *)argv[0]; + argv++; + argc--; + if ( argc < 0 ) { + bu_vls_printf(&gedp->ged_result_str, "facetize: missing argument\n"); + return BRLCAD_ERROR; + } + + if ( db_lookup( dbip, newname, LOOKUP_QUIET ) != DIR_NULL ) { + bu_vls_printf(&gedp->ged_result_str, "error: solid '%s' already exists, aborting\n", newname); + return BRLCAD_ERROR; + } + + bu_vls_printf(&gedp->ged_result_str, + "facetize: tessellating primitives with tolerances a=%g, r=%g, n=%g\n", + gedp->ged_wdbp->wdb_ttol.abs, gedp->ged_wdbp->wdb_ttol.rel, gedp->ged_wdbp->wdb_ttol.norm ); + + facetize_tree = (union tree *)0; + nmg_model = nmg_mm(); + init_state.ts_m = &nmg_model; + + i = db_walk_tree( dbip, argc, (const char **)argv, + 1, + &init_state, + 0, /* take all regions */ + facetize_region_end, + nmg_use_tnurbs ? + nmg_booltree_leaf_tnurb : + nmg_booltree_leaf_tess, + (genptr_t)&facetize_tree + ); + + + if ( i < 0 ) { + bu_vls_printf(&gedp->ged_result_str, "facetize: error in db_walk_tree()\n"); + /* Destroy NMG */ + nmg_km( nmg_model ); + return BRLCAD_ERROR; + } + + if ( facetize_tree ) + { + /* Now, evaluate the boolean tree into ONE region */ + bu_vls_printf(&gedp->ged_result_str, "facetize: evaluating boolean expressions\n"); + + if ( BU_SETJUMP ) + { + BU_UNSETJUMP; + bu_vls_printf(&gedp->ged_result_str, "WARNING: facetization failed!!!\n"); + if ( facetize_tree ) + db_free_tree( facetize_tree, &rt_uniresource ); + facetize_tree = (union tree *)NULL; + nmg_km( nmg_model ); + nmg_model = (struct model *)NULL; + return BRLCAD_ERROR; + } + + failed = nmg_boolean( facetize_tree, nmg_model, &gedp->ged_wdbp->wdb_tol, &rt_uniresource ); + BU_UNSETJUMP; + } + else + failed = 1; + + if ( failed ) { + bu_vls_printf(&gedp->ged_result_str, "facetize: no resulting region, aborting\n"); + if ( facetize_tree ) + db_free_tree( facetize_tree, &rt_uniresource ); + facetize_tree = (union tree *)NULL; + nmg_km( nmg_model ); + nmg_model = (struct model *)NULL; + return BRLCAD_ERROR; + } + /* New region remains part of this nmg "model" */ + NMG_CK_REGION( facetize_tree->tr_d.td_r ); + bu_vls_printf(&gedp->ged_result_str, "facetize: %s\n", facetize_tree->tr_d.td_name); + + /* Triangulate model, if requested */ + if ( triangulate && !make_bot ) + { + bu_vls_printf(&gedp->ged_result_str, "facetize: triangulating resulting object\n"); + if ( BU_SETJUMP ) + { + BU_UNSETJUMP; + bu_vls_printf(&gedp->ged_result_str, "WARNING: triangulation failed!!!\n"); + if ( facetize_tree ) + db_free_tree( facetize_tree, &rt_uniresource ); + facetize_tree = (union tree *)NULL; + nmg_km( nmg_model ); + nmg_model = (struct model *)NULL; + return BRLCAD_ERROR; + } + nmg_triangulate_model( nmg_model, &gedp->ged_wdbp->wdb_tol ); + BU_UNSETJUMP; + } + + if ( make_bot ) + { + struct rt_bot_internal *bot; + struct nmgregion *r; + struct shell *s; + + bu_vls_printf(&gedp->ged_result_str, "facetize: converting to BOT format\n"); + + r = BU_LIST_FIRST( nmgregion, &nmg_model->r_hd ); + s = BU_LIST_FIRST( shell, &r->s_hd ); + bot = (struct rt_bot_internal *)nmg_bot( s, &gedp->ged_wdbp->wdb_tol ); + nmg_km( nmg_model ); + nmg_model = (struct model *)NULL; + + /* Export BOT as a new solid */ + RT_INIT_DB_INTERNAL(&intern); + intern.idb_major_type = DB5_MAJORTYPE_BRLCAD; + intern.idb_type = ID_BOT; + intern.idb_meth = &rt_functab[ID_BOT]; + intern.idb_ptr = (genptr_t) bot; + } + else + { + + bu_vls_printf(&gedp->ged_result_str, "facetize: converting NMG to database format\n"); + + /* Export NMG as a new solid */ + RT_INIT_DB_INTERNAL(&intern); + intern.idb_major_type = DB5_MAJORTYPE_BRLCAD; + intern.idb_type = ID_NMG; + intern.idb_meth = &rt_functab[ID_NMG]; + intern.idb_ptr = (genptr_t)nmg_model; + nmg_model = (struct model *)NULL; + } + + if ( (dp=db_diradd( dbip, newname, -1L, 0, DIR_SOLID, (genptr_t)&intern.idb_type)) == DIR_NULL ) + { + bu_vls_printf(&gedp->ged_result_str, "Cannot add ", newname, " to directory\n"); + return BRLCAD_ERROR; + } + + if ( rt_db_put_internal( dp, dbip, &intern, &rt_uniresource ) < 0 ) + { + bu_vls_printf(&gedp->ged_result_str, "Failed to write %s to database\n", newname); + rt_db_free_internal( &intern, &rt_uniresource ); + return BRLCAD_ERROR; + } + + facetize_tree->tr_d.td_r = (struct nmgregion *)NULL; + + /* Free boolean tree, and the regions in it */ + db_free_tree( facetize_tree, &rt_uniresource ); + facetize_tree = (union tree *)NULL; + return BRLCAD_OK; } +static union tree * +facetize_region_end(register struct db_tree_state *tsp, + struct db_full_path *pathp, + union tree *curtree, + genptr_t client_data) +{ + struct bu_list vhead; + union tree **facetize_tree; + facetize_tree = (union tree **)client_data; + BU_LIST_INIT( &vhead ); + + if ( curtree->tr_op == OP_NOP ) return curtree; + + if ( *facetize_tree ) { + union tree *tr; + tr = (union tree *)bu_calloc(1, sizeof(union tree), "union tree"); + tr->magic = RT_TREE_MAGIC; + tr->tr_op = OP_UNION; + tr->tr_b.tb_regionp = REGION_NULL; + tr->tr_b.tb_left = *facetize_tree; + tr->tr_b.tb_right = curtree; + *facetize_tree = tr; + } else { + *facetize_tree = curtree; + } + + /* Tree has been saved, and will be freed later */ + return( TREE_NULL ); +} + + + /* * Local Variables: * tab-width: 8 Modified: brlcad/trunk/src/libged/find.c =================================================================== --- brlcad/trunk/src/libged/find.c 2008-07-29 12:02:00 UTC (rev 32038) +++ brlcad/trunk/src/libged/find.c 2008-07-29 12:07:50 UTC (rev 32039) @@ -31,9 +31,23 @@ #include "cmd.h" #include "ged_private.h" +static void +ged_find_ref(struct db_i *dbip, + struct rt_comb_internal *comb, + union tree *comb_leaf, + genptr_t object, + genptr_t comb_name_ptr, + genptr_t user_ptr3); + int ged_find(struct ged *gedp, int argc, const char *argv[]) { + register int i, k; + register struct directory *dp; + struct rt_db_internal intern; + register struct rt_comb_internal *comb=(struct rt_comb_internal *)NULL; + int c; + int aflag = 0; /* look at all objects */ static const char *usage = "<objects>"; GED_CHECK_DATABASE_OPEN(gedp, BRLCAD_ERROR); @@ -55,10 +69,77 @@ return BRLCAD_ERROR; } + bu_optind = 1; /* re-init bu_getopt() */ + while ((c = bu_getopt(argc, (char * const *)argv, "a")) != EOF) { + switch (c) { + case 'a': + aflag = 1; + break; + default: + bu_vls_printf(&gedp->ged_result_str, "Unrecognized option - %c", c); + return BRLCAD_ERROR; + } + } + argc -= (bu_optind - 1); + argv += (bu_optind - 1); + + /* Examine all COMB nodes */ + for (i = 0; i < RT_DBNHASH; i++) { + for (dp = gedp->ged_wdbp->dbip->dbi_Head[i]; dp != DIR_NULL; dp = dp->d_forw) { + if (!(dp->d_flags & DIR_COMB) || + (!aflag && (dp->d_flags & DIR_HIDDEN))) + continue; + + if (rt_db_get_internal(&intern, + dp, + gedp->ged_wdbp->dbip, + (fastf_t *)NULL, + &rt_uniresource) < 0) { + bu_vls_printf(&gedp->ged_result_str, "Database read error, aborting"); + return BRLCAD_ERROR; + } + + comb = (struct rt_comb_internal *)intern.idb_ptr; + for (k=1; k<argc; k++) + db_tree_funcleaf(gedp->ged_wdbp->dbip, + comb, + comb->tree, + ged_find_ref, + (genptr_t)argv[k], + (genptr_t)dp->d_namep, + (genptr_t)gedp); + + rt_db_free_internal(&intern, &rt_uniresource); + } + } + return BRLCAD_OK; } +static void +ged_find_ref(struct db_i *dbip, + struct rt_comb_internal *comb, + union tree *comb_leaf, + genptr_t object, + genptr_t comb_name_ptr, + genptr_t user_ptr3) +{ + char *obj_name; + char *comb_name; + struct ged *gedp = (struct ged *)user_ptr3; + RT_CK_TREE(comb_leaf); + + obj_name = (char *)object; + if (strcmp(comb_leaf->tr_l.tl_name, obj_name)) + return; + + comb_name = (char *)comb_name_ptr; + + bu_vls_printf(&gedp->ged_result_str, "%s", comb_name); +} + + /* * Local Variables: * tab-width: 8 Modified: brlcad/trunk/src/libged/ged_private.h =================================================================== --- brlcad/trunk/src/libged/ged_private.h 2008-07-29 12:02:00 UTC (rev 32038) +++ brlcad/trunk/src/libged/ged_private.h 2008-07-29 12:07:50 UTC (rev 32039) @@ -199,6 +199,9 @@ int cflag, /* print combinations */ int rflag, /* print regions */ int sflag)); /* print solids */ +BU_EXTERN(struct directory ** ged_getspace, + (struct db_i *dbip, + register int num_entries)); /* defined in rt.c */ void @@ -206,6 +209,11 @@ (struct ged *gedp, vect_t eye_model)); +/* defined in tops.c */ +struct directory ** +ged_dir_getspace(struct db_i *dbip, + register int num_entries); + /* defined in trace.c */ BU_EXTERN (void ged_trace, (register struct directory *dp, Modified: brlcad/trunk/src/libged/group.c =================================================================== --- brlcad/trunk/src/libged/group.c 2008-07-29 12:02:00 UTC (rev 32038) +++ brlcad/trunk/src/libged/group.c 2008-07-29 12:07:50 UTC (rev 32039) @@ -29,14 +29,18 @@ #include "bio.h" #include "cmd.h" +#include "wdb.h" #include "ged_private.h" int ged_group(struct ged *gedp, int argc, const char *argv[]) { + register struct directory *dp; + register int i; static const char *usage = "gname object(s)"; GED_CHECK_DATABASE_OPEN(gedp, BRLCAD_ERROR); + GED_CHECK_READ_ONLY(gedp, BRLCAD_ERROR); /* initialize result */ bu_vls_trunc(&gedp->ged_result_str, 0); @@ -50,11 +54,21 @@ return BRLCAD_OK; } - if (argc < 2 || MAXARGS < argc) { + if (argc < 3 || MAXARGS < argc) { bu_vls_printf(&gedp->ged_result_str, "Usage: %s %s", argv[0], usage); return BRLCAD_ERROR; } + /* get objects to add to group */ + for (i = 2; i < argc; i++) { + if ((dp = db_lookup(gedp->ged_wdbp->dbip, argv[i], LOOKUP_NOISY)) != DIR_NULL) { + if (ged_combadd(gedp, dp, (char *)argv[1], 0, + WMOP_UNION, 0, 0) == DIR_NULL) + return BRLCAD_ERROR; + } else + bu_vls_printf(&gedp->ged_result_str, "skip member %s\n", argv[i]); + } + return BRLCAD_OK; } Modified: brlcad/trunk/src/libged/hide.c =================================================================== --- brlcad/trunk/src/libged/hide.c 2008-07-29 12:02:00 UTC (rev 32038) +++ brlcad/trunk/src/libged/hide.c 2008-07-29 12:07:50 UTC (rev 32039) @@ -34,9 +34,16 @@ int ged_hide(struct ged *gedp, int argc, const char *argv[]) { + struct directory *dp; + struct db_i *dbip; + struct bu_external ext; + struct bu_external tmp; + struct db5_raw_internal raw; + int i; static const char *usage = "<objects>"; GED_CHECK_DATABASE_OPEN(gedp, BRLCAD_ERROR); + GED_CHECK_READ_ONLY(gedp, BRLCAD_ERROR); /* initialize result */ bu_vls_trunc(&gedp->ged_result_str, 0); @@ -50,11 +57,59 @@ return BRLCAD_OK; } - if (argc < 2 || MAXARGS < argc) { + if (argc < 2) { bu_vls_printf(&gedp->ged_result_str, "Usage: %s %s", argv[0], usage); return BRLCAD_ERROR; } + dbip = gedp->ged_wdbp->dbip; + + if (dbip->dbi_version < 5) { + bu_vls_printf(&gedp->ged_result_str, "Database was created with a previous release of BRL-CAD.\nSelect \"Tools->Upgrade Database...\" to enable support for this feature."); + return BRLCAD_ERROR; + } + + for (i=1; i<argc; i++) { + if ((dp = db_lookup(dbip, argv[i], LOOKUP_NOISY)) == DIR_NULL) { + continue; + } + + RT_CK_DIR( dp ); + + BU_INIT_EXTERNAL(&ext); + + if ( db_get_external( &ext, dp, dbip ) < 0 ) { + bu_vls_printf(&gedp->ged_result_str, "db_get_external failed for %s\n", dp->d_namep); + continue; + } + + if (db5_get_raw_internal_ptr(&raw, ext.ext_buf) == NULL) { + bu_vls_printf(&gedp->ged_result_str, "db5_get_raw_internal_ptr() failed for %s\n", dp->d_namep); + bu_free_external( &ext ); + continue; + } + + raw.h_name_hidden = (unsigned char)(0x1); + + BU_INIT_EXTERNAL( &tmp ); + db5_export_object3( &tmp, DB5HDR_HFLAGS_DLI_APPLICATION_DATA_OBJECT, + dp->d_namep, + raw.h_name_hidden, + &raw.attributes, + &raw.body, + raw.major_type, raw.minor_type, + raw.a_zzz, raw.b_zzz ); + bu_free_external( &ext ); + + if (db_put_external(&tmp, dp, dbip)) { + bu_vls_printf(&gedp->ged_result_str, "db_put_external() failed for %s\n", dp->d_namep); + bu_free_external( &tmp ); + continue; + } + bu_free_external( &tmp ); + dp->d_flags |= DIR_HIDDEN; + } + return BRLCAD_OK; } Modified: brlcad/trunk/src/libged/instance.c =================================================================== --- brlcad/trunk/src/libged/instance.c 2008-07-29 12:02:00 UTC (rev 32038) +++ brlcad/trunk/src/libged/instance.c 2008-07-29 12:07:50 UTC (rev 32039) @@ -29,14 +29,18 @@ #include "bio.h" #include "cmd.h" +#include "wdb.h" #include "ged_private.h" int ged_instance(struct ged *gedp, int argc, const char *argv[]) { + register struct directory *dp; + char oper; static const char *usage = "obj comb [op]"; GED_CHECK_DATABASE_OPEN(gedp, BRLCAD_ERROR); + GED_CHECK_READ_ONLY(gedp, BRLCAD_ERROR); /* initialize result */ bu_vls_trunc(&gedp->ged_result_str, 0); @@ -50,11 +54,28 @@ return BRLCAD_OK; } - if (argc < 2 || MAXARGS < argc) { + if (argc < 3 || 4 < argc) { bu_vls_printf(&gedp->ged_result_str, "Usage: %s %s", argv[0], usage); return BRLCAD_ERROR; } + if ((dp = db_lookup(gedp->ged_wdbp->dbip, argv[1], LOOKUP_NOISY)) == DIR_NULL) + return BRLCAD_ERROR; + + oper = WMOP_UNION; + if (argc == 4) + oper = argv[3][0]; + + if (oper != WMOP_UNION && + oper != WMOP_SUBTRACT && + oper != WMOP_INTERSECT) { + bu_vls_printf(&gedp->ged_result_str, "bad operation: %c\n", oper); + return BRLCAD_ERROR; + } + + if (ged_combadd(gedp, dp, (char *)argv[2], 0, oper, 0, 0) == DIR_NULL) + return BRLCAD_ERROR; + return BRLCAD_OK; } Modified: brlcad/trunk/src/libged/keep.c =================================================================== --- brlcad/trunk/src/libged/keep.c 2008-07-29 12:02:00 UTC (rev 32038) +++ brlcad/trunk/src/libged/keep.c 2008-07-29 12:07:50 UTC (rev 32039) @@ -29,11 +29,28 @@ #include "bio.h" #include "cmd.h" +#include "rtgeom.h" #include "ged_private.h" +struct keep_node_data { + struct rt_wdb *wdbp; + struct ged *gedp; +}; + +static void +ged_node_write(struct db_i *dbip, + register struct directory *dp, + genptr_t ptr); + int ged_keep(struct ged *gedp, int argc, const char *argv[]) { + struct keep_node_data knd; + struct rt_wdb *keepfp; + register struct directory *dp; + struct bu_vls title; + register int i; + struct db_i *new_dbip; static const char *usage = "file object(s)"; GED_CHECK_DATABASE_OPEN(gedp, BRLCAD_ERROR); @@ -50,15 +67,134 @@ return BRLCAD_OK; } - if (argc < 2 || MAXARGS < argc) { + if (argc < 3 || MAXARGS < argc) { bu_vls_printf(&gedp->ged_result_str, "Usage: %s %s", argv[0], usage); return BRLCAD_ERROR; } + /* First, clear any existing counts */ + for (i = 0; i < RT_DBNHASH; i++) { + for (dp = gedp->ged_wdbp->dbip->dbi_Head[i]; dp != DIR_NULL; dp = dp->d_forw) + dp->d_nref = 0; + } + + /* Alert user if named file already exists */ + + new_dbip = db_open(argv[1], "w"); + + if (new_dbip != DBI_NULL) { + if (new_dbip->dbi_version != gedp->ged_wdbp->dbip->dbi_version) { + bu_vls_printf(&gedp->ged_result_str, "keep: File format mismatch between '%s' and '%s'\n", + argv[1], gedp->ged_wdbp->dbip->dbi_filename); + return BRLCAD_ERROR; + } + + if ((keepfp = wdb_dbopen(new_dbip, RT_WDB_TYPE_DB_DISK)) == NULL) { + bu_vls_printf(&gedp->ged_result_str, "keep: Error opening '%s'\n", argv[1]); + return BRLCAD_ERROR; + } else { + bu_vls_printf(&gedp->ged_result_str, "keep: appending to '%s'\n"); + + /* --- Scan geometry database and build in-memory directory --- */ + db_dirbuild(new_dbip); + } + } else { + /* Create a new database */ + keepfp = wdb_fopen_v(argv[1], gedp->ged_wdbp->dbip->dbi_version); + + if (keepfp == NULL) { + perror(argv[1]); + return BRLCAD_ERROR; + } + } + + knd.wdbp = keepfp; + knd.gedp = gedp; + + /* ident record */ + bu_vls_init(&title); + if (strncmp(gedp->ged_wdbp->dbip->dbi_title, "Parts of: ", 10) != 0) { + bu_vls_strcat(&title, "Parts of: "); + } + bu_vls_strcat(&title, gedp->ged_wdbp->dbip->dbi_title); + + if (db_update_ident(keepfp->dbip, bu_vls_addr(&title), gedp->ged_wdbp->dbip->dbi_local2base) < 0) { + perror("fwrite"); + bu_vls_printf(&gedp->ged_result_str, "db_update_ident() failed\n"); + wdb_close(keepfp); + bu_vls_free(&title); + return BRLCAD_ERROR; + } + bu_vls_free(&title); + + for (i = 2; i < argc; i++) { + if ((dp = db_lookup(gedp->ged_wdbp->dbip, argv[i], LOOKUP_NOISY)) == DIR_NULL) + continue; + db_functree(gedp->ged_wdbp->dbip, dp, ged_node_write, ged_node_write, &rt_uniresource, (genptr_t)&knd); + } + + wdb_close(keepfp); return BRLCAD_OK; } +/** + * G E D _ N O D E _ W R I T E + *@brief + * Support for the 'keep' method. + * Write each node encountered exactly once. + */ +void +ged_node_write(struct db_i *dbip, + register struct directory *dp, + genptr_t ptr) +{ + struct keep_node_data *kndp = (struct keep_node_data *)ptr; + struct rt_db_internal intern; + RT_CK_WDB(kndp->wdbp); + + if (dp->d_nref++ > 0) + return; /* already written */ + + if (rt_db_get_internal(&intern, dp, dbip, NULL, &rt_uniresource) < 0) { + bu_vls_printf(&kndp->gedp->ged_result_str, "Database read error, aborting\n"); + return; + } + + /* if this is an extrusion, keep the referenced sketch */ + if ( dp->d_major_type == DB5_MAJORTYPE_BRLCAD && dp->d_minor_type == DB5_MINORTYPE_BRLCAD_EXTRUDE ) { + struct rt_extrude_internal *extr; + struct directory *dp2; + + extr = (struct rt_extrude_internal *)intern.idb_ptr; + RT_EXTRUDE_CK_MAGIC( extr ); + + if ( (dp2 = db_lookup( dbip, extr->sketch_name, LOOKUP_QUIET )) != DIR_NULL ) { + ged_node_write( dbip, dp2, ptr ); + } + } else if ( dp->d_major_type == DB5_MAJORTYPE_BRLCAD && dp->d_minor_type == DB5_MINORTYPE_BRLCAD_DSP ) { + struct rt_dsp_internal *dsp; + struct directory *dp2; + + /* this is a DSP, if it uses a binary object, keep it also */ + dsp = (struct rt_dsp_internal *)intern.idb_ptr; + RT_DSP_CK_MAGIC( dsp ); + + if ( dsp->dsp_datasrc == RT_DSP_SRC_OBJ ) { + /* need to keep this object */ + if ( (dp2 = db_lookup( dbip, bu_vls_addr(&dsp->dsp_name), LOOKUP_QUIET )) != DIR_NULL ) { + ged_node_write( dbip, dp2, ptr ); + } + } + } + + if (wdb_put_internal(kndp->wdbp, dp->d_namep, &intern, 1.0) < 0) { + bu_vls_printf(&kndp->gedp->ged_result_str, "Database write error, aborting\n"); + return; + } +} + + /* * Local Variables: * tab-width: 8 Modified: brlcad/trunk/src/libged/kill.c =================================================================== --- brlcad/trunk/src/libged/kill.c 2008-07-29 12:02:00 UTC (rev 32038) +++ brlcad/trunk/src/libged/kill.c 2008-07-29 12:07:50 UTC (rev 32039) @@ -34,9 +34,14 @@ int ged_kill(struct ged *gedp, int argc, const char *argv[]) { + register struct directory *dp; + register int i; + int is_phony; + int verbose = LOOKUP_NOISY; static const char *usage = "object(s)"; GED_CHECK_DATABASE_OPEN(gedp, BRLCAD_ERROR); + GED_CHECK_READ_ONLY(gedp, BRLCAD_ERROR); /* initialize result */ bu_vls_trunc(&gedp->ged_result_str, 0); @@ -55,6 +60,36 @@ return BRLCAD_ERROR; } + /* skip past "-f" */ + if (argc > 1 && strcmp(argv[1], "-f") == 0) { + verbose = LOOKUP_QUIET; + argc--; + argv++; + } + + for (i = 1; i < argc; i++) { + if ((dp = db_lookup(gedp->ged_wdbp->dbip, argv[i], verbose)) != DIR_NULL) { + struct directory *dpp[2]; + + is_phony = (dp->d_addr == RT_DIR_PHONY_ADDR); + + /* don't worry about phony objects */ + if (is_phony) + continue; + + dpp[0] = dp; + dpp [1] = DIR_NULL; + ged_eraseobjall(gedp, dpp); + + if (db_delete(gedp->ged_wdbp->dbip, dp) < 0 || + db_dirdelete(gedp->ged_wdbp->dbip, dp) < 0) { + /* Abort kill processing on first error */ + bu_vls_printf(&gedp->ged_result_str, "an error occurred while deleting %s", argv[i]); + return BRLCAD_ERROR; + } + } + } + return BRLCAD_OK; } Modified: brlcad/trunk/src/libged/killall.c =================================================================== --- brlcad/trunk/src/libged/killall.c 2008-07-29 12:02:00 UTC (rev 32038) +++ brlcad/trunk/src/libged/killall.c 2008-07-29 12:07:50 UTC (rev 32039) @@ -34,9 +34,11 @@ int ged_killall(struct ged *gedp, int argc, const char *argv[]) { + int ret; static const char *usage = "object(s)"; GED_CHECK_DATABASE_OPEN(gedp, BRLCAD_ERROR); + GED_CHECK_READ_ONLY(gedp, BRLCAD_ERROR); /* initialize result */ bu_vls_trunc(&gedp->ged_result_str, 0); @@ -55,7 +57,15 @@ return BRLCAD_ERROR; } - return BRLCAD_OK; + if ((ret = ged_killrefs(gedp, argc, argv)) != BRLCAD_OK) { + bu_vls_printf(&gedp->ged_result_str, "KILL skipped because of earlier errors.\n"); + return ret; + } + + /* ALL references removed...now KILL the object[s] */ + /* reuse argv[] */ + argv[0] = "kill"; + return ged_kill(gedp, argc, argv); } Modified: brlcad/trunk/src/libged/killtree.c =================================================================== --- brlcad/trunk/src/libged/killtree.c 2008-07-29 12:02:00 UTC (rev 32038) +++ brlcad/trunk/src/libged/killtree.c 2008-07-29 12:07:50 UTC (rev 32039) @@ -31,12 +31,28 @@ #include "cmd.h" #include "ged_private.h" +struct ged_killtree_data { + struct ged *gedp; + int killrefs; + int ac; + char *av[MAXARGS]; +}; + +static void +ged_killtree_callback(struct db_i *dbip, + register struct directory *dp, + genptr_t ptr); + int ged_killtree(struct ged *gedp, int argc, const char *argv[]) { - static const char *usage = "object(s)"; + register struct directory *dp; + register int i; + struct ged_killtree_data gktd; + static const char *usage = "[-a] object(s)"; GED_CHECK_DATABASE_OPEN(gedp, BRLCAD_ERROR); + GED_CHECK_READ_ONLY(gedp, BRLCAD_ERROR); /* initialize result */ bu_vls_trunc(&gedp->ged_result_str, 0); @@ -55,10 +71,93 @@ return BRLCAD_ERROR; } + gktd.gedp = gedp; + gktd.ac = 1; + gktd.av[0] = "killrefs"; + gktd.av[1] = (char *)0; + + if (argv[1][0] == '-' && argv[1][1] == 'a' && argv[1][2] == '\0') { + gktd.killrefs = 1; + --argc; + ++argv; + } else + gktd.killrefs = 0; + + for (i=1; i<argc; i++) { + struct directory *dpp[2]; + + if ((dp = db_lookup(gedp->ged_wdbp->dbip, argv[i], LOOKUP_NOISY)) == DIR_NULL) + continue; + + /* ignore phony objects */ + if (dp->d_addr == RT_DIR_PHONY_ADDR) + continue; + + dpp[0] = dp; + dpp [1] = DIR_NULL; + ged_eraseobjall(gedp, dpp); + + db_functree(gedp->ged_wdbp->dbip, dp, + ged_killtree_callback, ged_killtree_callback, + gedp->ged_wdbp->wdb_resp, (genptr_t)&gktd); + } + + if (gktd.killrefs && gktd.ac > 1) { + (void)ged_killrefs(gedp, gktd.ac, gktd.av); + + for (i=1; i<gktd.ac; i++) { + bu_vls_printf(&gedp->ged_result_str, "Freeing %s\n", gktd.av[i]); + bu_free((genptr_t)gktd.av[i], "ged_killtree_data"); + } + } + return BRLCAD_OK; } +/* + * K I L L T R E E + */ +static void +ged_killtree_callback(struct db_i *dbip, + register struct directory *dp, + genptr_t ptr) +{ + struct ged_killtree_data *gktdp = (struct ged_killtree_data *)ptr; + if (dbip == DBI_NULL) + return; + + bu_vls_printf(&gktdp->gedp->ged_result_str, "KILL %s: %s\n", + (dp->d_flags & DIR_COMB) ? "COMB" : "Solid", + dp->d_namep); + + if (!gktdp->killrefs) { + if (db_delete(dbip, dp) < 0 || db_dirdelete(dbip, dp) < 0) { + bu_vls_printf(&gktdp->gedp->ged_result_str, "an error occurred while deleting %s\n", dp->d_namep); + } + } else { + if (gktdp->ac < MAXARGS-1) { + gktdp->av[gktdp->ac++] = bu_strdup(dp->d_namep); + gktdp->av[gktdp->ac] = (char *)0; + + if (db_delete(dbip, dp) < 0 || db_dirdelete(dbip, dp) < 0) { + bu_vls_printf(&gktdp->gedp->ged_result_str, "an error occurred while deleting %s\n", dp->d_namep); + + /* Remove from list */ + bu_free((genptr_t)gktdp->av[--gktdp->ac], "ged_killtree_callback"); + gktdp->av[gktdp->ac] = (char *)0; + } + } else { + bu_vls_printf(&gktdp->gedp->ged_result_str, "MAXARGS exceeded while scheduling %s for a killrefs\n", dp->d_namep); + + if (db_delete(dbip, dp) < 0 || db_dirdelete(dbip, dp) < 0) { + bu_vls_printf(&gktdp->gedp->ged_result_str, "an error occurred while deleting %s\n", dp->d_namep); + } + } + } +} + + /* * Local Variables: * tab-width: 8 Modified: brlcad/trunk/src/libged/ls.c =================================================================== --- brlcad/trunk/src/libged/ls.c 2008-07-29 12:02:00 UTC (rev 32038) +++ brlcad/trunk/src/libged/ls.c 2008-07-29 12:07:50 UTC (rev 32039) @@ -34,8 +34,6 @@ #define RT_TERMINAL_WIDTH 80 #define RT_COLUMNS ((RT_TERMINAL_WIDTH + V4_MAXNAME - 1) / V4_MAXNAME) -struct directory ** ged_getspace(struct db_i *dbip, - register int num_entries); /* Modified: brlcad/trunk/src/libged/lt.c =================================================================== --- brlcad/trunk/src/libged/lt.c 2008-07-29 12:02:00 UTC (rev 32038) +++ brlcad/trunk/src/libged/lt.c 2008-07-29 12:07:50 UTC (rev 32039) @@ -31,9 +31,14 @@ #include "cmd.h" #include "ged_private.h" +static int +ged_list_children(struct ged *gedp, + register struct directory *dp); + int ged_lt(struct ged *gedp, int argc, const char *argv[]) { + register struct directory *dp; static const char *usage = "object"; GED_CHECK_DATABASE_OPEN(gedp, BRLCAD_ERROR); @@ -50,11 +55,91 @@ return BRLCAD_OK; } - if (argc < 2 || MAXARGS < argc) { + if (argc != 2) { bu_vls_printf(&gedp->ged_result_str, "Usage: %s %s", argv[0], usage); return BRLCAD_ERROR; } + if ((dp = db_lookup(gedp->ged_wdbp->dbip, argv[1], LOOKUP_NOISY)) == DIR_NULL) { + bu_vls_printf(&gedp->ged_result_str, "Usage: %s %s", argv[0], usage); + return BRLCAD_ERROR; + } + + return ged_list_children(gedp, dp); +} + +static int +ged_list_children(struct ged *gedp, + register struct directory *dp) +{ + register int i; + struct rt_db_internal intern; + struct rt_comb_internal *comb; + + if (!(dp->d_flags & DIR_COMB)) +... [truncated message content] |
From: <bo...@us...> - 2008-07-29 12:44:30
|
Revision: 32044 http://brlcad.svn.sourceforge.net/brlcad/?rev=32044&view=rev Author: bob1961 Date: 2008-07-29 12:44:34 +0000 (Tue, 29 Jul 2008) Log Message: ----------- Removed ged_rt_gettrees. Modified Paths: -------------- brlcad/trunk/include/ged.h brlcad/trunk/src/libtclcad/ged_obj.c Modified: brlcad/trunk/include/ged.h =================================================================== --- brlcad/trunk/include/ged.h 2008-07-29 12:43:33 UTC (rev 32043) +++ brlcad/trunk/include/ged.h 2008-07-29 12:44:34 UTC (rev 32044) @@ -1773,14 +1773,6 @@ GED_EXPORT BU_EXTERN(int ged_rt, (struct ged *gedp, int argc, const char *argv[])); /** - * Create an RT instance object - * - * Usage: - * rt_gettrees procname [-i] [-u] treetops - */ -GED_EXPORT BU_EXTERN(int ged_rt_gettrees, (struct ged *gedp, int argc, const char *argv[])); - -/** * Scale the view. * * Usage: Modified: brlcad/trunk/src/libtclcad/ged_obj.c =================================================================== --- brlcad/trunk/src/libtclcad/ged_obj.c 2008-07-29 12:43:33 UTC (rev 32043) +++ brlcad/trunk/src/libtclcad/ged_obj.c 2008-07-29 12:44:34 UTC (rev 32044) @@ -210,6 +210,12 @@ ged_func_ptr func, const char *usage, int maxargs); +static int go_rt_gettrees(struct ged *gedp, + int argc, + const char *argv[], + ged_func_ptr func, + const char *usage, + int maxargs); static int go_scale_mode(struct ged *gedp, int argc, const char *argv[], @@ -433,7 +439,7 @@ {"rotate_mode", "vname x y", MAXARGS, go_rotate_mode, GED_FUNC_PTR_NULL}, #if GED_USE_RUN_RT {"rt", "vname [args]", GO_MAX_RT_ARGS, go_view_func, ged_rt}, - {"rt_gettrees", (char *)0, MAXARGS, go_pass_through_func, ged_rt_gettrees}, + {"rt_gettrees", (char *)0, MAXARGS, go_pass_through_func, go_rt_gettrees}, #if 0 {"rtabort", "vname [args]", GO_MAX_RT_ARGS, go_view_func, ged_rtabort}, {"rtcheck", "vname [args]", GO_MAX_RT_ARGS, go_view_func, ged_rtcheck}, This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bo...@us...> - 2008-07-29 15:04:49
|
Revision: 32054 http://brlcad.svn.sourceforge.net/brlcad/?rev=32054&view=rev Author: bob1961 Date: 2008-07-29 15:04:56 +0000 (Tue, 29 Jul 2008) Log Message: ----------- Temporarily adding wdb_importFg4Section. Modified Paths: -------------- brlcad/trunk/include/ged.h brlcad/trunk/misc/win32-msvc8/libged/libged.vcproj brlcad/trunk/src/libged/Makefile.am Added Paths: ----------- brlcad/trunk/src/libged/wdb_importFg4Section.c Modified: brlcad/trunk/include/ged.h =================================================================== --- brlcad/trunk/include/ged.h 2008-07-29 14:58:59 UTC (rev 32053) +++ brlcad/trunk/include/ged.h 2008-07-29 15:04:56 UTC (rev 32054) @@ -1310,6 +1310,14 @@ GED_EXPORT BU_EXTERN(int ged_instance, (struct ged *gedp, int argc, const char *argv[])); /** + * Makes a bot object out of the specified section. + * + * Usage: + * importFg4Section obj section + */ +GED_EXPORT BU_EXTERN(int ged_importFg4Section, (struct ged *gedp, int argc, const char *argv[])); + +/** * Returns the inverse view size. * * Usage: Modified: brlcad/trunk/misc/win32-msvc8/libged/libged.vcproj =================================================================== --- brlcad/trunk/misc/win32-msvc8/libged/libged.vcproj 2008-07-29 14:58:59 UTC (rev 32053) +++ brlcad/trunk/misc/win32-msvc8/libged/libged.vcproj 2008-07-29 15:04:56 UTC (rev 32054) @@ -678,6 +678,10 @@ > </File> <File + RelativePath="..\..\..\src\libged\wdb_importFg4Section.c" + > + </File> + <File RelativePath="..\..\..\src\libged\wdb_obj.c" > </File> Modified: brlcad/trunk/src/libged/Makefile.am =================================================================== --- brlcad/trunk/src/libged/Makefile.am 2008-07-29 14:58:59 UTC (rev 32053) +++ brlcad/trunk/src/libged/Makefile.am 2008-07-29 15:04:56 UTC (rev 32054) @@ -142,6 +142,7 @@ vutil.c \ wdb_comb_std.c \ wdb_obj.c \ + wdb_importFg4Section.c \ wdb_track.c \ whatid.c \ which.c \ Added: brlcad/trunk/src/libged/wdb_importFg4Section.c =================================================================== --- brlcad/trunk/src/libged/wdb_importFg4Section.c (rev 0) +++ brlcad/trunk/src/libged/wdb_importFg4Section.c 2008-07-29 15:04:56 UTC (rev 32054) @@ -0,0 +1,614 @@ +/* I M P O R T F G 4 S E C T I O N . C + * BRL-CAD + * + * Copyright (c) 1994-2008 United States Government as represented by + * the U.S. Army Research Laboratory. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * version 2.1 as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this file; see the file named COPYING for more + * information. + */ +/** @addtogroup librt */ +/** @{ */ +/** @file importFg4Section.c + * + * Some of this code was taken from conv/fast4-g.c and libwdb/bot.c + * and modified to behave as a method of the BRL-CAD database object + * that imports a Fastgen4 section from a string. This section can + * only contain GRIDs, CTRIs and CQUADs. + * + */ + +#include "common.h" + +#include <stdlib.h> +#include <math.h> +#include <string.h> +#include <ctype.h> +#include <errno.h> +#include "bio.h" + +#include "db.h" +#include "vmath.h" +#include "nmg.h" +#include "rtgeom.h" +#include "raytrace.h" +#include "wdb.h" +#include "plot3.h" + + +static int grid_size; /* Number of points that will fit in current grid_pts array */ +static int max_grid_no=0; /* Maximum grid number used */ +static int mode=0; /* Plate mode (1) or volume mode (2), of current component */ +static int group_id=(-1); /* Group identification number from SECTION card */ +static int comp_id=(-1); /* Component identification number from SECTION card */ +static int region_id=0; /* Region id number (group id no X 1000 + component id no) */ +static char field[9]; /* Space for storing one field from an input line */ +static int name_count; /* Count of number of times this name_name has been used */ +static int bot=0; /* Flag: >0 -> There are BOT's in current component */ +static int warnings=0; /* Flag: >0 -> Print warning messages */ +static int debug=0; /* Debug flag */ +static int rt_debug=0; /* RT_G_DEBUG */ +static int quiet=0; /* flag to not blather */ +static int comp_count=0; /* Count of components in FASTGEN4 file */ + +static int *faces=NULL; /* one triplet per face indexing three grid points */ +static fastf_t *thickness; /* thickness of each face */ +static char *facemode; /* mode for each face */ +static int face_size=0; /* actual length of above arrays */ +static int face_count=0; /* number of faces in above arrays */ + +static int *int_list; /* Array of integers */ +static int int_list_count=0; /* Number of ints in above array */ +static int int_list_length=0; /* Length of int_list array */ + +#define PLATE_MODE 1 +#define VOLUME_MODE 2 + +#define POS_CENTER 1 /* face positions for facets */ +#define POS_FRONT 2 + +#define END_OPEN 1 /* End closure codes for cones */ +#define END_CLOSED 2 + +#define GRID_BLOCK 256 /* allocate space for grid points in blocks of 256 points */ + +#define CLINE 'l' +#define CHEX1 'p' +#define CHEX2 'b' +#define CTRI 't' +#define CQUAD 'q' +#define CCONE1 'c' +#define CCONE2 'd' +#define CCONE3 'e' +#define CSPHERE 's' +#define NMG 'n' +#define BOT 't' +#define COMPSPLT 'h' + +static point_t *grid_pts; + +void do_grid(char *line); +void do_tri(char *line); +void do_quad(char *line); +void make_bot_object(char *name, + struct rt_wdb *wdbp); + +/*************************** code from libwdb/bot.c ***************************/ + +static int +rt_mk_bot_w_normals( + struct rt_wdb *fp, + const char *name, + unsigned char mode, + unsigned char orientation, + unsigned char flags, + int num_vertices, + int num_faces, + fastf_t *vertices, /* array of floats for vertices [num_vertices*3] */ + int *faces, /* array of ints for faces [num_faces*3] */ + fastf_t *thickness, /* array of plate mode thicknesses (corresponds to array of faces) + * NULL for modes RT_BOT_SURFACE and RT_BOT_SOLID. + */ + struct bu_bitv *face_mode, /* a flag for each face indicating thickness is appended to hit point, + * otherwise thickness is centered about hit point + */ + int num_normals, /* number of unit normals in normals array */ + fastf_t *normals, /* array of floats for normals [num_normals*3] */ + int *face_normals ) /* array of ints (indices into normals array), must have 3*num_faces entries */ +{ + struct rt_bot_internal *bot; + int i; + + if ( (num_normals > 0) && (fp->dbip->dbi_version < 5 ) ) { + bu_log( "You are using an old database format which does not support surface normals for BOT primitives\n" ); + bu_log( "You are attempting to create a BOT primitive named \"%s\" with surface normals\n" ); + bu_log( "The surface normals will not be saved\n" ); + bu_log( "Please upgrade to the current database format by using \"dbupgrade\"\n" ); + } + + BU_GETSTRUCT( bot, rt_bot_internal ); + bot->magic = RT_BOT_INTERNAL_MAGIC; + bot->mode = mode; + bot->orientation = orientation; + bot->bot_flags = flags; + bot->num_vertices = num_vertices; + bot->num_faces = num_faces; + bot->vertices = (fastf_t *)bu_calloc( num_vertices * 3, sizeof( fastf_t ), "bot->vertices" ); + for ( i=0; i<num_vertices*3; i++ ) + bot->vertices[i] = vertices[i]; + bot->faces = (int *)bu_calloc( num_faces * 3, sizeof( int ), "bot->faces" ); + for ( i=0; i<num_faces*3; i++ ) + bot->faces[i] = faces[i]; + if ( mode == RT_BOT_PLATE ) + { + bot->thickness = (fastf_t *)bu_calloc( num_faces, sizeof( fastf_t ), "bot->thickness" ); + for ( i=0; i<num_faces; i++ ) + bot->thickness[i] = thickness[i]; + bot->face_mode = bu_bitv_dup( face_mode ); + } + else + { + bot->thickness = (fastf_t *)NULL; + bot->face_mode = (struct bu_bitv *)NULL; + } + + if ( (num_normals > 0) && (fp->dbip->dbi_version >= 5 ) ) { + bot->num_normals = num_normals; + bot->num_face_normals = bot->num_faces; + bot->normals = (fastf_t *)bu_calloc( bot->num_normals * 3, sizeof( fastf_t ), "BOT normals" ); + bot->face_normals = (int *)bu_calloc( bot->num_faces * 3, sizeof( int ), "BOT face normals" ); + memcpy(bot->normals, normals, bot->num_normals * 3 * sizeof( fastf_t )); + memcpy(bot->face_normals, face_normals, bot->num_faces * 3 * sizeof( int )); + } else { + bot->bot_flags = 0; + bot->num_normals = 0; + bot->num_face_normals = 0; + bot->normals = (fastf_t *)NULL; + bot->face_normals = (int *)NULL; + } + + return wdb_export(fp, name, (genptr_t)bot, ID_BOT, 1.0); +} + +static int +rt_mk_bot( + struct rt_wdb *fp, + const char *name, + unsigned char mode, + unsigned char orientation, + unsigned char flags, + int num_vertices, + int num_faces, + fastf_t *vertices, /* array of floats for vertices [num_vertices*3] */ + int *faces, /* array of ints for faces [num_faces*3] */ + fastf_t *thickness, /* array of plate mode thicknesses (corresponds to array of faces) + * NULL for modes RT_BOT_SURFACE and RT_BOT_SOLID. + */ + struct bu_bitv *face_mode ) /* a flag for each face indicating thickness is appended to hit point, + * otherwise thickness is centered about hit point + */ +{ + return( rt_mk_bot_w_normals( fp, name, mode, orientation, flags, num_vertices, num_faces, vertices, + faces, thickness, face_mode, 0, NULL, NULL ) ); +} + +/*************************** code from conv/fast4-g.c ***************************/ + +void +do_grid(char *line) +{ + int grid_no; + fastf_t x, y, z; + + if ( RT_G_DEBUG&DEBUG_MEM_FULL && bu_mem_barriercheck() ) + bu_log( "ERROR: bu_mem_barriercheck failed at start of do_grid\n" ); + + bu_strlcpy(field, &line[8], sizeof(field)); + grid_no = atoi( field ); + + if ( grid_no < 1 ) + { + bu_log( "ERROR: grid id number = %d\n", grid_no ); + bu_bomb( "BAD GRID ID NUMBER\n" ); + } + + bu_strlcpy(field, &line[24], sizeof(field)); + x = atof( field ); + + bu_strlcpy(field, &line[32], sizeof(field)); + y = atof( field ); + + bu_strlcpy(field, &line[40], sizeof(field)); + z = atof( field ); + + while ( grid_no > grid_size - 1 ) + { + grid_size += GRID_BLOCK; + grid_pts = (point_t *)bu_realloc( (char *)grid_pts, grid_size * sizeof( point_t ), "fast4-g: grid_pts" ); + } + + VSET( grid_pts[grid_no], x*25.4, y*25.4, z*25.4 ); + + if ( grid_no > max_grid_no ) + max_grid_no = grid_no; + if ( RT_G_DEBUG&DEBUG_MEM_FULL && bu_mem_barriercheck() ) + bu_log( "ERROR: bu_mem_barriercheck failed at end of do_grid\n" ); +} + +void +Add_bot_face(int pt1, int pt2, int pt3, fastf_t thick, int pos) +{ + + if ( pt1 == pt2 || pt2 == pt3 || pt1 == pt3 ) + { + bu_log( "Add_bot_face: ignoring degenerate triangle in group %d component %d\n", group_id, comp_id ); + return; + } + + if ( pos == 0 ) /* use default */ + pos = POS_FRONT; + + if ( mode == PLATE_MODE ) + { + if ( pos != POS_CENTER && pos != POS_FRONT ) + { + bu_log( "Add_bot_face: illegal postion parameter (%d), must be one or two (ignoring face for group %d component %d)\n", pos, group_id, comp_id ); + return; + } + } + + if ( face_count >= face_size ) + { + face_size += GRID_BLOCK; + if (bu_debug&BU_DEBUG_MEM_CHECK && bu_mem_barriercheck() ) + bu_log( "memory corrupted before realloc of faces, thickness, and facemode\n" ); + faces = (int *)bu_realloc( (void *)faces, face_size*3*sizeof( int ), "faces" ); + thickness = (fastf_t *)bu_realloc( (void *)thickness, face_size*sizeof( fastf_t ), "thickness" ); + facemode = (char *)bu_realloc( (void *)facemode, face_size*sizeof( char ), "facemode" ); + if (bu_debug&BU_DEBUG_MEM_CHECK && bu_mem_barriercheck() ) + bu_log( "memory corrupted after realloc of faces, thickness, and facemode\n" ); + } + + faces[face_count*3] = pt1; + faces[face_count*3+1] = pt2; + faces[face_count*3+2] = pt3; + + if ( mode == PLATE_MODE ) + { + thickness[face_count] = thick; + facemode[face_count] = pos; + } + else + { + thickness[face_count] = 0, 0; + facemode[face_count] = 0; + } + + face_count++; + + if (bu_debug&BU_DEBUG_MEM_CHECK && bu_mem_barriercheck() ) + bu_log( "memory corrupted at end of Add_bot_face()\n" ); +} + +void +do_tri(char *line) +{ + int element_id; + int pt1, pt2, pt3; + fastf_t thick; + int pos; + + if ( debug ) + bu_log( "do_tri: %s\n", line ); + + bu_strlcpy(field, &line[8], sizeof(field)); + element_id = atoi( field ); + + if ( !bot ) + bot = element_id; + + if ( faces == NULL ) + { + if (bu_debug&BU_DEBUG_MEM_CHECK && bu_mem_barriercheck() ) + bu_log( "memory corrupted before malloc of faces\n" ); + faces = (int *)bu_malloc( GRID_BLOCK*3*sizeof( int ), "faces" ); + thickness = (fastf_t *)bu_malloc( GRID_BLOCK*sizeof( fastf_t ), "thickness" ); + facemode = (char *)bu_malloc( GRID_BLOCK*sizeof( char ), "facemode" ); + face_size = GRID_BLOCK; + face_count = 0; + if (bu_debug&BU_DEBUG_MEM_CHECK && bu_mem_barriercheck() ) + bu_log( "memory corrupted after malloc of faces, thickness, and facemode\n" ); + } + + bu_strlcpy(field, &line[24], sizeof(field)); + pt1 = atoi( field ); + + bu_strlcpy(field, &line[32], sizeof(field)); + pt2 = atoi( field ); + + bu_strlcpy(field, &line[40], sizeof(field)); + pt3 = atoi( field ); + + thick = 0.0; + pos = 0; + + if ( mode == PLATE_MODE ) + { + bu_strlcpy(field, &line[56], sizeof(field)); + thick = atof( field ) * 25.4; + + bu_strlcpy(field, &line[64], sizeof(field)); + pos = atoi( field ); + if ( pos == 0 ) + pos = POS_FRONT; + + if ( debug ) + bu_log( "\tplate mode: thickness = %f\n", thick ); + + } + + if (bu_debug&BU_DEBUG_MEM_CHECK && bu_mem_barriercheck() ) + bu_log( "memory corrupted before call to Add_bot_face()\n" ); + + Add_bot_face( pt1, pt2, pt3, thick, pos ); + + if (bu_debug&BU_DEBUG_MEM_CHECK && bu_mem_barriercheck() ) + bu_log( "memory corrupted after call to Add_bot_face()\n" ); +} + +void +do_quad(char *line) +{ + int element_id; + int pt1, pt2, pt3, pt4; + fastf_t thick = 0.0; + int pos = 0; + + bu_strlcpy(field, &line[8], sizeof(field)); + element_id = atoi( field ); + + if ( debug ) + bu_log( "do_quad: %s\n", line ); + + if ( !bot ) + bot = element_id; + + if ( faces == NULL ) + { + faces = (int *)bu_malloc( GRID_BLOCK*3*sizeof( int ), "faces" ); + thickness = (fastf_t *)bu_malloc( GRID_BLOCK*sizeof( fastf_t ), "thickness" ); + facemode = (char *)bu_malloc( GRID_BLOCK*sizeof( char ), "facemode" ); + face_size = GRID_BLOCK; + face_count = 0; + } + + bu_strlcpy(field, &line[24], sizeof(field)); + pt1 = atoi( field ); + + bu_strlcpy(field, &line[32], sizeof(field)); + pt2 = atoi( field ); + + bu_strlcpy(field, &line[40], sizeof(field)); + pt3 = atoi( field ); + + bu_strlcpy(field, &line[48], sizeof(field)); + pt4 = atoi( field ); + + if ( mode == PLATE_MODE ) + { + bu_strlcpy(field, &line[56], sizeof(field)); + thick = atof( field ) * 25.4; + + bu_strlcpy(field, &line[64], sizeof(field)); + pos = atoi( field ); + + if ( pos == 0 ) /* use default */ + pos = POS_FRONT; + + if ( pos != POS_CENTER && pos != POS_FRONT ) + { + bu_log( "do_quad: illegal postion parameter (%d), must be one or two\n", pos ); + bu_log( "\telement %d, component %d, group %d\n", element_id, comp_id, group_id ); + return; + } + } + + Add_bot_face( pt1, pt2, pt3, thick, pos ); + Add_bot_face( pt1, pt3, pt4, thick, pos ); +} + +void +make_bot_object(char *name, + struct rt_wdb *wdbp) +{ + int i; + int max_pt=0, min_pt=999999; + int num_vertices; + struct bu_bitv *bv=NULL; + int bot_mode; + int element_id=bot; + int count; + struct rt_bot_internal bot_ip; + + bot_ip.magic = RT_BOT_INTERNAL_MAGIC; + for ( i=0; i<face_count; i++ ) + { + V_MIN( min_pt, faces[i*3] ); + V_MAX( max_pt, faces[i*3] ); + V_MIN( min_pt, faces[i*3+1] ); + V_MAX( max_pt, faces[i*3+1] ); + V_MIN( min_pt, faces[i*3+2] ); + V_MAX( max_pt, faces[i*3+2] ); + } + + num_vertices = max_pt - min_pt + 1; + bot_ip.num_vertices = num_vertices; + bot_ip.vertices = (fastf_t *)bu_calloc( num_vertices*3, sizeof( fastf_t ), "BOT vertices" ); + for ( i=0; i<num_vertices; i++ ) + VMOVE( &bot_ip.vertices[i*3], grid_pts[min_pt+i] ) + + for ( i=0; i<face_count*3; i++ ) + faces[i] -= min_pt; + bot_ip.num_faces = face_count; + bot_ip.faces = bu_calloc( face_count*3, sizeof( int ), "BOT faces" ); + for ( i=0; i<face_count*3; i++ ) + bot_ip.faces[i] = faces[i]; + + bot_ip.face_mode = (struct bu_bitv *)NULL; + bot_ip.thickness = (fastf_t *)NULL; + if ( mode == PLATE_MODE ) + { + bot_mode = RT_BOT_PLATE; + bv = bu_bitv_new( face_count ); + bu_bitv_clear( bv ); + for ( i=0; i<face_count; i++ ) + { + if ( facemode[i] == POS_FRONT ) + BU_BITSET( bv, i ); + } + bot_ip.face_mode = bv; + bot_ip.thickness = (fastf_t *)bu_calloc( face_count, sizeof( fastf_t ), "BOT thickness" ); + for ( i=0; i<face_count; i++ ) + bot_ip.thickness[i] = thickness[i]; + } + else + bot_mode = RT_BOT_SOLID; + + bot_ip.mode = bot_mode; + bot_ip.orientation = RT_BOT_UNORIENTED; + bot_ip.bot_flags = 0; + + count = rt_bot_vertex_fuse( &bot_ip ); + if ( count ) + (void)rt_bot_condense( &bot_ip ); + + count = rt_bot_face_fuse( &bot_ip ); + if ( count ) + bu_log( "WARNING: %d duplicate faces eliminated from group %d component %d\n", count, group_id, comp_id ); + + rt_mk_bot(wdbp, name, bot_mode, RT_BOT_UNORIENTED, 0, + bot_ip.num_vertices, bot_ip.num_faces, bot_ip.vertices, + bot_ip.faces, bot_ip.thickness, bot_ip.face_mode); + + if ( mode == PLATE_MODE ) + { + bu_free( (char *)bot_ip.thickness, "BOT thickness" ); + bu_free( (char *)bot_ip.face_mode, "BOT face_mode" ); + } + bu_free( (char *)bot_ip.vertices, "BOT vertices" ); + bu_free( (char *)bot_ip.faces, "BOT faces" ); +} + + +/*************************** Start of new code. ***************************/ + +#define FIND_NEWLINE(_cp, _eosFlag) \ + while (*(_cp) != '\0' && \ + *(_cp) != '\n') \ + ++(_cp); \ +\ + if (*(_cp) == '\0') \ + _eosFlag = 1; \ + else \ + *(_cp) = '\0'; + +int +wdb_importFg4Section_cmd(struct rt_wdb *wdbp, + Tcl_Interp *interp, + int argc, + char *argv[]) +{ + char *cp; + char *line; + char *lines; + int eosFlag = 0; + + if (argc != 3) { + struct bu_vls vls; + + bu_vls_init(&vls); + bu_vls_printf(&vls, "helplib_alias wdb_importFg4Section %s", argv[0]); + Tcl_Eval(interp, bu_vls_addr(&vls)); + bu_vls_free(&vls); + return TCL_ERROR; + } + + grid_size = GRID_BLOCK; + grid_pts = (point_t *)bu_malloc(grid_size * sizeof(point_t) , + "importFg4Section: grid_pts"); + + lines = strdup(argv[2]); + cp = line = lines; + + FIND_NEWLINE(cp, eosFlag); + + bu_strlcpy(field, line+8, sizeof(field)); + group_id = atoi(field); + + bu_strlcpy(field, line+16, sizeof(field)); + comp_id = atoi(field); + + region_id = group_id * 1000 + comp_id; + + if (comp_id > 999) { + bu_log( "Illegal component id number %d, changed to 999\n", comp_id ); + comp_id = 999; + } + + bu_strlcpy(field, line+24, sizeof(field)); + mode = atoi(field); + if (mode != 1 && mode != 2) { + bu_log("Illegal mode (%d) for group %d component %d, using volume mode\n", + mode, group_id, comp_id); + mode = 2; + } + + while (!eosFlag) { + ++cp; + line = cp; + FIND_NEWLINE(cp, eosFlag); + + if (!strncmp(line, "GRID", 4)) + do_grid(line); + else if (!strncmp(line, "CTRI", 4)) + do_tri(line); + else if (!strncmp(line, "CQUAD", 4)) + do_quad(line); + } + + make_bot_object(argv[1], wdbp); + free((void *)lines); + bu_free((void *)grid_pts, "importFg4Section: grid_pts"); + + /* free memory associated with globals */ + bu_free((void *)faces, "importFg4Section: faces"); + bu_free((void *)thickness, "importFg4Section: thickness"); + bu_free((void *)facemode, "importFg4Section: facemode"); + + faces = NULL; + thickness = NULL; + facemode = NULL; + + return TCL_OK; +} +/** @} */ + +/* + * Local Variables: + * mode: C + * tab-width: 8 + * indent-tabs-mode: t + * c-file-style: "stroustrup" + * End: + * ex: shiftwidth=4 tabstop=8 + */ Property changes on: brlcad/trunk/src/libged/wdb_importFg4Section.c ___________________________________________________________________ Added: svn:executable + * Added: svn:mime-type + text/plain Added: svn:eol-style + native This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <br...@us...> - 2008-07-30 09:06:55
|
Revision: 32136 http://brlcad.svn.sourceforge.net/brlcad/?rev=32136&view=rev Author: brlcad Date: 2008-07-30 09:07:03 +0000 (Wed, 30 Jul 2008) Log Message: ----------- deprecate the duplicitous '-n' (not-new) option to mged. use -c console/classic/command option instead. Modified Paths: -------------- brlcad/trunk/NEWS brlcad/trunk/doc/deprecation.txt brlcad/trunk/doc/html/manuals/mged/mged.html brlcad/trunk/doc/html/manuals/mged/mged1.html brlcad/trunk/src/mged/mged.c Modified: brlcad/trunk/NEWS =================================================================== --- brlcad/trunk/NEWS 2008-07-30 08:43:36 UTC (rev 32135) +++ brlcad/trunk/NEWS 2008-07-30 09:07:03 UTC (rev 32136) @@ -14,6 +14,7 @@ --- 2008-06-XX Release 7.13.0 --- ---------------------------------------------------------------------- +* deprecated the mged '-n' option, use '-c' instead - Sean Morrison * added the ability to invoke mged through icons/menus - Sean Morrison * new -a option to mged 'killtree' for killing references - Bob Parker * added new 'killrefs' command to mged - Bob Parker Modified: brlcad/trunk/doc/deprecation.txt =================================================================== --- brlcad/trunk/doc/deprecation.txt 2008-07-30 08:43:36 UTC (rev 32135) +++ brlcad/trunk/doc/deprecation.txt 2008-07-30 09:07:03 UTC (rev 32136) @@ -47,6 +47,11 @@ ************** * DEPRECATED * ************** +7.14 +---- +src/mged/mged.c + -n option -> -c option [deprecated 7.14] + 7.12 ---- include/raytrace.h Modified: brlcad/trunk/doc/html/manuals/mged/mged.html =================================================================== --- brlcad/trunk/doc/html/manuals/mged/mged.html 2008-07-30 08:43:36 UTC (rev 32135) +++ brlcad/trunk/doc/html/manuals/mged/mged.html 2008-07-30 09:07:03 UTC (rev 32136) @@ -167,7 +167,7 @@ To edit or create a geometry file, the user starts the mged program from the shell by giving the command: <pre> - <tt>%</tt> <B><FONT color="#20a020">mged -n cup.g</FONT></B> + <tt>%</tt> <B><FONT color="#20a020">mged -c cup.g</FONT></B> </pre> The filename is required.  Unlike many programs which allow the user to create a new document or database in memory, mged always keeps everything on disk.  @@ -182,7 +182,7 @@ If the file specified does not exist when mged is started, it will stop and ask if the user wishes to create a new database: <pre> - <tt>%</tt> <B><FONT color="#20a020">mged -n cup.g</FONT></B><tt> + <tt>%</tt> <B><FONT color="#20a020">mged -c cup.g</FONT></B><tt> BRL-CAD Release 4.5 Graphics Editor (MGED) Mon May 19 16:31:32 EDT 1997, Compilation 5377 bp...@va...:/m/cad/.mged.6d @@ -196,7 +196,7 @@ will cause mged to quit without creating the database.  <pre> - <tt>%</tt> <B><FONT color="#20a020">mged -n cup.g</FONT></B><tt> + <tt>%</tt> <B><FONT color="#20a020">mged -c cup.g</FONT></B><tt> BRL-CAD Release 4.5 Graphics Editor (MGED) Mon May 19 16:31:32 EDT 1997, Compilation 5377 bp...@va...:/m/cad/.mged.6d @@ -221,7 +221,7 @@ </table></center> Enter one of the names listed followed by a return.  <pre> - <tt>%</tt> <B><FONT color="#20a020">mged -n cup.g</FONT></B><tt> + <tt>%</tt> <B><FONT color="#20a020">mged -c cup.g</FONT></B><tt> BRL-CAD Release 4.5 Graphics Editor (MGED) Mon May 19 16:31:32 EDT 1997, Compilation 5377 bp...@va...:/m/cad/.mged.6d Modified: brlcad/trunk/doc/html/manuals/mged/mged1.html =================================================================== --- brlcad/trunk/doc/html/manuals/mged/mged1.html 2008-07-30 08:43:36 UTC (rev 32135) +++ brlcad/trunk/doc/html/manuals/mged/mged1.html 2008-07-30 09:07:03 UTC (rev 32136) @@ -165,7 +165,7 @@ To edit or create a geometry file, the user starts mged from the shell by giving the command: <pre> - <tt>%</tt> <B><FONT color="#20a020">mged -n cup.g</FONT></B> + <tt>%</tt> <B><FONT color="#20a020">mged -c cup.g</FONT></B> </pre> The filename is required.  Unlike many programs which allow the user to create a new document or database in memory, mged always keeps everything on disk.  @@ -180,7 +180,7 @@ If the file specified does not exist when mged is started, it will stop and ask if the user wishes to create a new database: <pre> - <tt>%</tt> <B><FONT color="#20a020">mged -n cup.g</FONT></B><tt> + <tt>%</tt> <B><FONT color="#20a020">mged -c cup.g</FONT></B><tt> BRL-CAD Release 4.5 Graphics Editor (MGED) Mon May 19 16:31:32 EDT 1997, Compilation 5377 bp...@va...:/m/cad/.mged.6d @@ -194,7 +194,7 @@ will cause mged to quit without creating the database.  <pre> - <tt>%</tt> <B><FONT color="#20a020">mged -n cup.g</FONT></B><tt> + <tt>%</tt> <B><FONT color="#20a020">mged -c cup.g</FONT></B><tt> BRL-CAD Release 4.5 Graphics Editor (MGED) Mon May 19 16:31:32 EDT 1997, Compilation 5377 bp...@va...:/m/cad/.mged.6d @@ -219,7 +219,7 @@ </table></center> Enter one of the names listed followed by a return.  <pre> - <tt>%</tt> <B><FONT color="#20a020">mged -n cup.g</FONT></B><tt> + <tt>%</tt> <B><FONT color="#20a020">mged -c cup.g</FONT></B><tt> BRL-CAD Release 4.5 Graphics Editor (MGED) Mon May 19 16:31:32 EDT 1997, Compilation 5377 bp...@va...:/m/cad/.mged.6d Modified: brlcad/trunk/src/mged/mged.c =================================================================== --- brlcad/trunk/src/mged/mged.c 2008-07-30 08:43:36 UTC (rev 32135) +++ brlcad/trunk/src/mged/mged.c 2008-07-30 09:07:03 UTC (rev 32136) @@ -321,6 +321,8 @@ read_only_flag = 1; break; case 'n': /* "not new" == "classic" */ + bu_log("WARNING: -n is deprecated. used -c instead.\n"); + /* fall through */ case 'c': classic_mged = 1; break; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bo...@us...> - 2008-07-30 16:58:18
|
Revision: 32139 http://brlcad.svn.sourceforge.net/brlcad/?rev=32139&view=rev Author: bob1961 Date: 2008-07-30 16:58:19 +0000 (Wed, 30 Jul 2008) Log Message: ----------- Convert more dg_obj commands for use by libged (i.e. rtcheck, rtabort, importFg4Section and vdraw. Modified Paths: -------------- brlcad/trunk/include/ged.h brlcad/trunk/misc/win32-msvc8/libged/libged.vcproj brlcad/trunk/src/libged/Makefile.am brlcad/trunk/src/libged/draw.c brlcad/trunk/src/libged/ged_private.h brlcad/trunk/src/libged/importFg4Section.c brlcad/trunk/src/libged/nirt.c brlcad/trunk/src/libged/nmg_collapse.c brlcad/trunk/src/libged/qray.h brlcad/trunk/src/libged/rt.c brlcad/trunk/src/libged/vdraw.c brlcad/trunk/src/libtclcad/ged_obj.c Added Paths: ----------- brlcad/trunk/src/libged/label.c brlcad/trunk/src/libged/rtabort.c brlcad/trunk/src/libged/rtcheck.c brlcad/trunk/src/libged/set_output_script.c brlcad/trunk/src/libged/shaded_mode.c brlcad/trunk/src/libged/wdb_vdraw.c Removed Paths: ------------- brlcad/trunk/src/libged/set_outputHandler.c Modified: brlcad/trunk/include/ged.h =================================================================== --- brlcad/trunk/include/ged.h 2008-07-30 16:41:13 UTC (rev 32138) +++ brlcad/trunk/include/ged.h 2008-07-30 16:58:19 UTC (rev 32139) @@ -212,7 +212,6 @@ #endif void (*gd_rtCmdNotify)(); /**< @brief function called when rt command completes */ - char *gd_outputHandler; /**< @brief tcl script for handling output */ int gd_uplotOutputMode; /**< @brief output mode for unix plots */ /* qray state */ @@ -283,6 +282,8 @@ struct ged_drawable *ged_head_drawables; struct ged_view *ged_head_views; #endif + void (*ged_output_handler)(); /**< @brief function for handling output */ + char *ged_output_script; /**< @brief script for use by the outputHandler */ #if 0 struct bu_observer ged_observers; #endif @@ -1781,6 +1782,22 @@ GED_EXPORT BU_EXTERN(int ged_rt, (struct ged *gedp, int argc, const char *argv[])); /** + * Abort the current raytracing processes. + * + * Usage: + * rtabort + */ +GED_EXPORT BU_EXTERN(int ged_rtabort, (struct ged *gedp, int argc, const char *argv[])); + +/** + * Check for overlaps in the current view. + * + * Usage: + * rtcheck [args] + */ +GED_EXPORT BU_EXTERN(int ged_rtcheck, (struct ged *gedp, int argc, const char *argv[])); + +/** * Scale the view. * * Usage: @@ -1792,9 +1809,9 @@ * Get/set the output handler script * * Usage: - * set_outputHandler [script] + * set_output_script [script] */ -GED_EXPORT BU_EXTERN(int ged_set_outputHandler, (struct ged *gedp, int argc, const char *argv[])); +GED_EXPORT BU_EXTERN(int ged_set_output_script, (struct ged *gedp, int argc, const char *argv[])); /** * Get/set the unix plot output mode @@ -1821,6 +1838,14 @@ GED_EXPORT BU_EXTERN(int ged_setview, (struct ged *gedp, int argc, const char *argv[])); /** + * Set/get the shaded mode. + * + * Usage: + * shaded_mode [0|1|2] + */ +GED_EXPORT BU_EXTERN(int ged_shaded_mode, (struct ged *gedp, int argc, const char *argv[])); + +/** * Simpler, command-line version of 'mater' command. * * Usage: @@ -1934,22 +1959,30 @@ GED_EXPORT BU_EXTERN(int ged_units, (struct ged *gedp, int argc, const char *argv[])); /** - * Returns the database verson + * Convert the specified view point to a model point. * * Usage: - * version + * v2m_point x y z */ -GED_EXPORT BU_EXTERN(int ged_version, (struct ged *gedp, int argc, const char *argv[])); +GED_EXPORT BU_EXTERN(int ged_v2m_point, (struct ged *gedp, int argc, const char *argv[])); /** - * Convert the specified view point to a model point. + * Vector drawing utility. * * Usage: - * v2m_point x y z + * vdraw write|insert|delete|read|send|params|open|vlist [args] */ -GED_EXPORT BU_EXTERN(int ged_v2m_point, (struct ged *gedp, int argc, const char *argv[])); +GED_EXPORT BU_EXTERN(int ged_vdraw, (struct ged *gedp, int argc, const char *argv[])); /** + * Returns the database version. + * + * Usage: + * version + */ +GED_EXPORT BU_EXTERN(int ged_version, (struct ged *gedp, int argc, const char *argv[])); + +/** * Get the view2model matrix. * * Usage: Modified: brlcad/trunk/misc/win32-msvc8/libged/libged.vcproj =================================================================== --- brlcad/trunk/misc/win32-msvc8/libged/libged.vcproj 2008-07-30 16:41:13 UTC (rev 32138) +++ brlcad/trunk/misc/win32-msvc8/libged/libged.vcproj 2008-07-30 16:58:19 UTC (rev 32139) @@ -366,6 +366,10 @@ > </File> <File + RelativePath="..\..\..\src\libged\label.c" + > + </File> + <File RelativePath="..\..\..\src\libged\list.c" > </File> @@ -562,11 +566,19 @@ > </File> <File + RelativePath="..\..\..\src\libged\rtabort.c" + > + </File> + <File + RelativePath="..\..\..\src\libged\rtcheck.c" + > + </File> + <File RelativePath="..\..\..\src\libged\scale.c" > </File> <File - RelativePath="..\..\..\src\libged\set_outputHandler.c" + RelativePath="..\..\..\src\libged\set_output_script.c" > </File> <File @@ -582,6 +594,10 @@ > </File> <File + RelativePath="..\..\..\src\libged\shaded_mode.c" + > + </File> + <File RelativePath="..\..\..\src\libged\shader.c" > </File> @@ -690,6 +706,10 @@ > </File> <File + RelativePath="..\..\..\src\libged\wdb_vdraw.c" + > + </File> + <File RelativePath="..\..\..\src\libged\whatid.c" > </File> Modified: brlcad/trunk/src/libged/Makefile.am =================================================================== --- brlcad/trunk/src/libged/Makefile.am 2008-07-30 16:41:13 UTC (rev 32138) +++ brlcad/trunk/src/libged/Makefile.am 2008-07-30 16:58:19 UTC (rev 32139) @@ -63,6 +63,7 @@ killall.c \ killrefs.c \ killtree.c \ + label.c \ list.c \ log.c \ lookat.c \ @@ -112,11 +113,14 @@ rotate_about.c \ rotate_arb_face.c \ rt.c \ + rtabort.c \ + rtcheck.c \ scale.c \ - set_outputHandler.c \ + set_output_script.c \ set_transparency.c \ set_uplotOutputMode.c \ setview.c \ + shaded_mode.c \ shader.c \ shells.c \ showmats.c \ @@ -144,6 +148,7 @@ wdb_importFg4Section.c \ wdb_obj.c \ wdb_track.c \ + wdb_vdraw.c \ whatid.c \ which.c \ who.c \ Modified: brlcad/trunk/src/libged/draw.c =================================================================== --- brlcad/trunk/src/libged/draw.c 2008-07-30 16:41:13 UTC (rev 32138) +++ brlcad/trunk/src/libged/draw.c 2008-07-30 16:58:19 UTC (rev 32139) @@ -41,14 +41,6 @@ struct db_full_path *pathp, struct rt_db_internal *ip, genptr_t client_data); -int -ged_invent_solid(struct ged *gedp, - char *name, - struct bu_list *vhead, - long int rgb, - int copy, - fastf_t transparency, - int dmode); /** Modified: brlcad/trunk/src/libged/ged_private.h =================================================================== --- brlcad/trunk/src/libged/ged_private.h 2008-07-30 16:41:13 UTC (rev 32138) +++ brlcad/trunk/src/libged/ged_private.h 2008-07-30 16:58:19 UTC (rev 32139) @@ -137,7 +137,16 @@ struct bn_vlblock *vbp, char *name, int copy)); +BU_EXTERN (int ged_invent_solid, + (struct ged *gedp, + char *name, + struct bu_list *vhead, + long int rgb, + int copy, + fastf_t transparency, + int dmode)); + /* defined in erase.c */ BU_EXTERN (void ged_eraseobjpath, (struct ged *gedp, @@ -207,11 +216,32 @@ register int num_entries)); /* defined in rt.c */ -void -BU_EXTERN (ged_rt_set_eye_model, +BU_EXTERN (void ged_rt_set_eye_model, (struct ged *gedp, vect_t eye_model)); +#if GED_USE_RUN_RT +BU_EXTERN (int ged_run_rt, + (struct ged *gdp)); +BU_EXTERN (void ged_rt_write, + (struct ged *gedp, + FILE *fp, + vect_t eye_model)); +BU_EXTERN (void ged_rt_output_handler, + (ClientData clientData, + int mask)); +BU_EXTERN (int ged_build_tops, + (struct ged *gedp, + struct solid *hsp, + char **start, + register char **end)); +#endif +/* defined in rtcheck.c */ +BU_EXTERN (void ged_wait_status, + (struct bu_vls *log, + int status)); + + /* defined in tops.c */ struct directory ** ged_dir_getspace(struct db_i *dbip, Modified: brlcad/trunk/src/libged/importFg4Section.c =================================================================== --- brlcad/trunk/src/libged/importFg4Section.c 2008-07-30 16:41:13 UTC (rev 32138) +++ brlcad/trunk/src/libged/importFg4Section.c 2008-07-30 16:58:19 UTC (rev 32139) @@ -595,7 +595,7 @@ do_quad(line); } - make_bot_object(argv[1], gedp->ged_wdbp); + make_bot_object((char *)argv[1], gedp->ged_wdbp); free((void *)lines); bu_free((void *)grid_pts, "importFg4Section: grid_pts"); Added: brlcad/trunk/src/libged/label.c =================================================================== --- brlcad/trunk/src/libged/label.c (rev 0) +++ brlcad/trunk/src/libged/label.c 2008-07-30 16:58:19 UTC (rev 32139) @@ -0,0 +1,61 @@ +/* L A B E L . C + * BRL-CAD + * + * Copyright (c) 2008 United States Government as represented by + * the U.S. Army Research Laboratory. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * version 2.1 as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this file; see the file named COPYING for more + * information. + */ +/** @file label.c + * + * The label command. + * + */ + +#include "ged.h" + +/* + * Arrange for objects' label(s) to be drawn. + * + * Usage: + * label object(s) + * + */ +int +ged_label(struct ged *gedp, int argc, const char *argv[]) +{ + static const char *usage = "object(s)"; + + GED_CHECK_DATABASE_OPEN(gedp, BRLCAD_ERROR); + GED_CHECK_DRAWABLE(gedp, BRLCAD_ERROR); + + /* initialize result */ + bu_vls_trunc(&gedp->ged_result_str, 0); + gedp->ged_result = GED_RESULT_NULL; + gedp->ged_result_flags = 0; + + bu_vls_printf(&gedp->ged_result_str, "Not yet implemented!", argv[0], usage); + return BRLCAD_OK; +} + + +/* + * Local Variables: + * tab-width: 8 + * mode: C + * indent-tabs-mode: t + * c-file-style: "stroustrup" + * End: + * ex: shiftwidth=4 tabstop=8 + */ Property changes on: brlcad/trunk/src/libged/label.c ___________________________________________________________________ Added: svn:executable + * Added: svn:mime-type + text/plain Added: svn:eol-style + native Modified: brlcad/trunk/src/libged/nirt.c =================================================================== --- brlcad/trunk/src/libged/nirt.c 2008-07-30 16:41:13 UTC (rev 32138) +++ brlcad/trunk/src/libged/nirt.c 2008-07-30 16:58:19 UTC (rev 32139) @@ -55,18 +55,13 @@ #include "dg.h" #include "./qray.h" +#include "ged_private.h" -/* defined in qray.c */ -extern void ged_qray_data_to_vlist(struct ged *gedp, struct bn_vlblock *vbp, struct ged_qray_dataList *headp, fastf_t *dir, int do_overlaps); - -/* defined in dg_obj.c */ -extern int dgo_build_tops(struct bu_vls *result, struct solid *hsp, char **start, register char **end); -extern void dgo_pr_wait_status(struct bu_vls *result, int status); - /* defined in draw.c */ extern void ged_cvt_vlblock_to_solids(struct ged *gedp, struct bn_vlblock *vbp, char *name, int copy); + /* * F _ N I R T * @@ -268,8 +263,8 @@ gedp->ged_gdp->gd_rt_cmd_len = vp - gedp->ged_gdp->gd_rt_cmd; - /* Note - gd_build_tops sets the last vp to (char *)0 */ - gedp->ged_gdp->gd_rt_cmd_len += dgo_build_tops(&gedp->ged_result_str, + /* Note - ged_build_tops sets the last vp to (char *)0 */ + gedp->ged_gdp->gd_rt_cmd_len += ged_build_tops(gedp, (struct solid *)&gedp->ged_gdp->gd_headSolid, vp, &gedp->ged_gdp->gd_rt_cmd[RT_MAXARGS]); @@ -557,7 +552,7 @@ ; /* NULL */ if (retcode != 0) - dgo_pr_wait_status(&gedp->ged_result_str, retcode); + ged_wait_status(&gedp->ged_result_str, retcode); #else /* Wait for program to finish */ WaitForSingleObject( pi.hProcess, INFINITE ); @@ -647,6 +642,8 @@ return status; } + + /* * Local Variables: * mode: C Modified: brlcad/trunk/src/libged/nmg_collapse.c =================================================================== --- brlcad/trunk/src/libged/nmg_collapse.c 2008-07-30 16:41:13 UTC (rev 32138) +++ brlcad/trunk/src/libged/nmg_collapse.c 2008-07-30 16:58:19 UTC (rev 32139) @@ -68,7 +68,7 @@ return BRLCAD_ERROR; } - new_name = argv[2]; + new_name = (char *)argv[2]; if (db_lookup(gedp->ged_wdbp->dbip, new_name, LOOKUP_QUIET) != DIR_NULL) { bu_vls_printf(&gedp->ged_result_str, "%s already exists\n", new_name); Modified: brlcad/trunk/src/libged/qray.h =================================================================== --- brlcad/trunk/src/libged/qray.h 2008-07-30 16:41:13 UTC (rev 32138) +++ brlcad/trunk/src/libged/qray.h 2008-07-30 16:58:19 UTC (rev 32139) @@ -55,6 +55,9 @@ fastf_t los; }; +/* defined in qray.c */ +extern void ged_qray_data_to_vlist(struct ged *gedp, struct bn_vlblock *vbp, struct ged_qray_dataList *headp, fastf_t *dir, int do_overlaps); + #endif /* Modified: brlcad/trunk/src/libged/rt.c =================================================================== --- brlcad/trunk/src/libged/rt.c 2008-07-30 16:41:13 UTC (rev 32138) +++ brlcad/trunk/src/libged/rt.c 2008-07-30 16:58:19 UTC (rev 32139) @@ -35,18 +35,6 @@ #if GED_USE_RUN_RT -static int ged_run_rt(struct ged *gdp); -static void ged_rt_write(struct ged *gedp, - FILE *fp, - vect_t eye_model); -static void ged_rt_output_handler(ClientData clientData, - int mask); -static int ged_build_tops(struct ged *gedp, - struct solid *hsp, - char **start, - register char **end); - - int ged_rt(struct ged *gedp, int argc, const char *argv[]) { @@ -125,7 +113,7 @@ } -static int +int ged_run_rt(struct ged *gedp) { register int i; @@ -196,15 +184,10 @@ drcdp->gedp = gedp; drcdp->rrtp = run_rtp; -#if 0 - /*XXX We still need some way to handle output from rt */ - drcdp->interp = gedp->ged_wdbp->wdb_interp; - Tcl_CreateFileHandler(run_rtp->fd, TCL_READABLE, ged_rt_output_handler, (ClientData)drcdp); -#endif return 0; @@ -277,21 +260,17 @@ BU_GETSTRUCT(drcdp, ged_rt_client_data); drcdp->gedp = gedp; drcdp->rrtp = run_rtp; -#if 0 - /*XXX We still need some way to handle output from rt */ - drcdp->interp = gedp->ged_wdbp->wdb_interp; Tcl_CreateChannelHandler(run_rtp->chan, TCL_READABLE, ged_rt_output_handler, (ClientData)drcdp); -#endif return 0; #endif } -static void +void ged_rt_write(struct ged *gedp, FILE *fp, vect_t eye_model) @@ -334,7 +313,7 @@ } #ifndef _WIN32 -static void +void ged_rt_output_handler(ClientData clientData, int mask) { @@ -414,19 +393,14 @@ line[count] = '\0'; /*XXX For now just blather to stderr */ - if (drcdp->gedp->ged_gdp->gd_outputHandler != NULL) { - struct bu_vls vls; - - bu_vls_init(&vls); - bu_vls_printf(&vls, "%s \"%s\"", drcdp->gedp->ged_gdp->gd_outputHandler, line); - Tcl_Eval(brlcad_interp, bu_vls_addr(&vls)); - bu_vls_free(&vls); - } else - bu_log("%s", line); + if (drcdp->gedp->ged_output_handler != (void (*)())0) + drcdp->gedp->ged_output_handler(drcdp->gedp, line); + else + bu_vls_printf(&drcdp->gedp->ged_result_str, "%s", line); } #else -static void +void ged_rt_output_handler(ClientData clientData, int mask) { @@ -516,15 +490,10 @@ line[count] = '\0'; /*XXX For now just blather to stderr */ - if (drcdp->gedp->ged_gdp->gd_outputHandler != NULL) { - struct bu_vls vls; - - bu_vls_init(&vls); - bu_vls_printf(&vls, "%s \"%s\"", drcdp->gedp->ged_gdp->gd_outputHandler, line); - Tcl_Eval(brlcad_interp, bu_vls_addr(&vls)); - bu_vls_free(&vls); - } else - bu_log("%s", line); + if (drcdp->gedp->ged_output_handler != (void (*)())0) + drcdp->gedp->ged_output_handler(drcdp->gedp, line); + else + bu_vls_printf(&drcdp->gedp->ged_result_str, "%s", line); } #endif @@ -534,7 +503,7 @@ * * Build a command line vector of the tops of all objects in view. */ -static int +int ged_build_tops(struct ged *gedp, struct solid *hsp, char **start, Added: brlcad/trunk/src/libged/rtabort.c =================================================================== --- brlcad/trunk/src/libged/rtabort.c (rev 0) +++ brlcad/trunk/src/libged/rtabort.c 2008-07-30 16:58:19 UTC (rev 32139) @@ -0,0 +1,76 @@ +/* R T A B O R T . C + * BRL-CAD + * + * Copyright (c) 2008 United States Government as represented by + * the U.S. Army Research Laboratory. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * version 2.1 as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this file; see the file named COPYING for more + * information. + */ +/** @file rtabort.c + * + * The rtabort command. + * + */ + +#include "common.h" + +#include <stdlib.h> +#include "bio.h" + +#include "ged_private.h" + + +/* + * Abort the current raytrace processes. + * + * Usage: + * rtabort + * + */ +int +ged_rtabort(struct ged *gedp, int argc, const char *argv[]) +{ + struct ged_run_rt *rrp; + + GED_CHECK_DATABASE_OPEN(gedp, BRLCAD_ERROR); + GED_CHECK_DRAWABLE(gedp, BRLCAD_ERROR); + + /* initialize result */ + bu_vls_trunc(&gedp->ged_result_str, 0); + gedp->ged_result = GED_RESULT_NULL; + gedp->ged_result_flags = 0; + + if (argc != 1) { + bu_vls_printf(&gedp->ged_result_str, "Usage: %s", argv[0]); + return BRLCAD_ERROR; + } + + for (BU_LIST_FOR(rrp, ged_run_rt, &gedp->ged_gdp->gd_headRunRt.l)) { + bu_terminate(rrp->pid); + rrp->aborted = 1; + } + + return BRLCAD_OK; +} + + +/* + * Local Variables: + * tab-width: 8 + * mode: C + * indent-tabs-mode: t + * c-file-style: "stroustrup" + * End: + * ex: shiftwidth=4 tabstop=8 + */ Property changes on: brlcad/trunk/src/libged/rtabort.c ___________________________________________________________________ Added: svn:executable + * Added: svn:mime-type + text/plain Added: svn:eol-style + native Added: brlcad/trunk/src/libged/rtcheck.c =================================================================== --- brlcad/trunk/src/libged/rtcheck.c (rev 0) +++ brlcad/trunk/src/libged/rtcheck.c 2008-07-30 16:58:19 UTC (rev 32139) @@ -0,0 +1,547 @@ +/* R T C H E C K . C + * BRL-CAD + * + * Copyright (c) 2008 United States Government as represented by + * the U.S. Army Research Laboratory. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * version 2.1 as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this file; see the file named COPYING for more + * information. + */ +/** @file rtcheck.c + * + * The rtcheck command. + * + */ + +#include "common.h" + +#include <stdlib.h> +#include "bio.h" + +#include "cmd.h" +#include "solid.h" + +#include "ged_private.h" + + +struct ged_rtcheck { +#ifdef _WIN32 + HANDLE fd; + HANDLE hProcess; + DWORD pid; +#ifdef TCL_OK + Tcl_Channel chan; +#else + genptr_t chan; +#endif +#else + int fd; + int pid; +#endif + FILE *fp; + struct bn_vlblock *vbp; + struct bu_list *vhead; + double csize; + struct ged *gedp; + Tcl_Interp *interp; +}; + +struct ged_rtcheck_output { +#ifdef _WIN32 + HANDLE fd; + Tcl_Channel chan; +#else + int fd; +#endif + struct ged *gedp; + Tcl_Interp *interp; +}; + + +static void ged_rtcheck_vector_handler(ClientData clientData, int mask); +static void ged_rtcheck_output_handler(ClientData clientData, int mask); + + +/* + * Check for overlaps in the current view. + * + * Usage: + * rtcheck options + * + */ +int +ged_rtcheck(struct ged *gedp, int argc, const char *argv[]) +{ + register char **vp; + register int i; +#ifndef _WIN32 + int pid; + int i_pipe[2]; /* object reads results for building vectors */ + int o_pipe[2]; /* object writes view parameters */ + int e_pipe[2]; /* object reads textual results */ +#else + HANDLE i_pipe[2], pipe_iDup; /* MGED reads results for building vectors */ + HANDLE o_pipe[2], pipe_oDup; /* MGED writes view parameters */ + HANDLE e_pipe[2], pipe_eDup; /* MGED reads textual results */ + STARTUPINFO si; + PROCESS_INFORMATION pi; + SECURITY_ATTRIBUTES sa; + char line[2048]; + char name[256]; +#endif + FILE *fp; + struct ged_rtcheck *rtcp; + struct ged_rtcheck_output *rtcop; + vect_t eye_model; + static const char *usage = "options"; + + GED_CHECK_DATABASE_OPEN(gedp, BRLCAD_ERROR); + GED_CHECK_DRAWABLE(gedp, BRLCAD_ERROR); + GED_CHECK_VIEW(gedp, BRLCAD_ERROR); + + /* initialize result */ + bu_vls_trunc(&gedp->ged_result_str, 0); + gedp->ged_result = GED_RESULT_NULL; + gedp->ged_result_flags = 0; + +#ifndef _WIN32 + vp = &gedp->ged_gdp->gd_rt_cmd[0]; + *vp++ = argv[0]; + *vp++ = "-M"; + for (i=1; i < argc; i++) + *vp++ = argv[i]; + *vp++ = gedp->ged_wdbp->dbip->dbi_filename; + + /* + * Now that we've grabbed all the options, if no args remain, + * append the names of all stuff currently displayed. + * Otherwise, simply append the remaining args. + */ + if (i == argc) { + gedp->ged_gdp->gd_rt_cmd_len = vp - gedp->ged_gdp->gd_rt_cmd; + gedp->ged_gdp->gd_rt_cmd_len += ged_build_tops(gedp, + (struct solid *)&gedp->ged_gdp->gd_headSolid, + vp, + &gedp->ged_gdp->gd_rt_cmd[MAXARGS]); + } else { + while (i < argc) + *vp++ = argv[i++]; + *vp = 0; + vp = &gedp->ged_gdp->gd_rt_cmd[0]; + while (*vp) + Tcl_AppendResult(brlcad_interp, *vp++, " ", (char *)NULL); + + Tcl_AppendResult(brlcad_interp, "\n", (char *)NULL); + } + + (void)pipe(i_pipe); + (void)pipe(o_pipe); + (void)pipe(e_pipe); + + if ((pid = fork()) == 0) { + /* Redirect stdin, stdout and stderr */ + (void)close(0); + (void)dup(o_pipe[0]); + (void)close(1); + (void)dup(i_pipe[1]); + (void)close(2); + (void)dup(e_pipe[1]); + + /* close pipes */ + (void)close(i_pipe[0]); + (void)close(i_pipe[1]); + (void)close(o_pipe[0]); + (void)close(o_pipe[1]); + (void)close(e_pipe[0]); + (void)close(e_pipe[1]); + + for (i=3; i < 20; i++) + (void)close(i); + + (void)execvp(gedp->ged_gdp->gd_rt_cmd[0], gedp->ged_gdp->gd_rt_cmd); + perror(gedp->ged_gdp->gd_rt_cmd[0]); + exit(16); + } + + /* As parent, send view information down pipe */ + (void)close(o_pipe[0]); + fp = fdopen(o_pipe[1], "w"); + + ged_rt_set_eye_model(gedp, eye_model); + ged_rt_write(gedp, fp, eye_model); + (void)fclose(fp); + + /* close write end of pipes */ + (void)close(i_pipe[1]); + (void)close(e_pipe[1]); + + BU_GETSTRUCT(rtcp, ged_rtcheck); + + /* initialize the rtcheck struct */ + rtcp->fd = i_pipe[0]; + rtcp->fp = fdopen(i_pipe[0], "r"); + rtcp->pid = pid; + rtcp->vbp = rt_vlblock_init(); + rtcp->vhead = rt_vlblock_find(rtcp->vbp, 0xFF, 0xFF, 0x00); + rtcp->csize = gedp->ged_gvp->gv_scale * 0.01; + rtcp->gedp = gedp; + rtcp->interp = brlcad_interp; + + /* register file handlers */ + Tcl_CreateFileHandler(i_pipe[0], TCL_READABLE, + ged_rtcheck_vector_handler, (ClientData)rtcp); + + BU_GETSTRUCT(rtcop, ged_rtcheck_output); + rtcop->fd = e_pipe[0]; + rtcop->gedp = gedp; + rtcop->interp = brlcad_interp; + Tcl_CreateFileHandler(rtcop->fd, + TCL_READABLE, + ged_rtcheck_output_handler, + (ClientData)rtcop); + + return BRLCAD_OK; +#else + /* _WIN32 */ + vp = &gedp->ged_gdp->gd_rt_cmd[0]; + *vp++ = "rtcheck"; + *vp++ = "-M"; + for (i=1; i < argc; i++) + *vp++ = (char *)argv[i]; + + { + char buf[512]; + + snprintf(buf, 512, "\"%s\"", gedp->ged_wdbp->dbip->dbi_filename); + *vp++ = buf; + } + + /* + * Now that we've grabbed all the options, if no args remain, + * append the names of all stuff currently displayed. + * Otherwise, simply append the remaining args. + */ + if (i == argc) { + gedp->ged_gdp->gd_rt_cmd_len = vp - gedp->ged_gdp->gd_rt_cmd; + gedp->ged_gdp->gd_rt_cmd_len += ged_build_tops(gedp, + (struct solid *)&gedp->ged_gdp->gd_headSolid, + vp, + &gedp->ged_gdp->gd_rt_cmd[MAXARGS]); + } else { + while (i < argc) + *vp++ = (char *)argv[i++]; + *vp = 0; + vp = &gedp->ged_gdp->gd_rt_cmd[0]; + while (*vp) + Tcl_AppendResult(brlcad_interp, *vp++, " ", (char *)NULL); + + Tcl_AppendResult(brlcad_interp, "\n", (char *)NULL); + } + + + memset((void *)&si, 0, sizeof(STARTUPINFO)); + memset((void *)&pi, 0, sizeof(PROCESS_INFORMATION)); + memset((void *)&sa, 0, sizeof(SECURITY_ATTRIBUTES)); + + sa.nLength = sizeof(SECURITY_ATTRIBUTES); + sa.bInheritHandle = TRUE; + sa.lpSecurityDescriptor = NULL; + + /* Create a pipe for the child process's STDERR. */ + CreatePipe( &e_pipe[0], &e_pipe[1], &sa, 0); + + /* Create noninheritable read handle and close the inheritable read handle. */ + DuplicateHandle( GetCurrentProcess(), e_pipe[0], + GetCurrentProcess(), &pipe_eDup, + 0, FALSE, + DUPLICATE_SAME_ACCESS ); + CloseHandle( e_pipe[0]); + + /* Create a pipe for the child process's STDOUT. */ + CreatePipe( &o_pipe[0], &o_pipe[1], &sa, 0); + + /* Create noninheritable write handle and close the inheritable writehandle. */ + DuplicateHandle( GetCurrentProcess(), o_pipe[1], + GetCurrentProcess(), &pipe_oDup , + 0, FALSE, + DUPLICATE_SAME_ACCESS ); + CloseHandle( o_pipe[1]); + + /* Create a pipe for the child process's STDIN. */ + CreatePipe(&i_pipe[0], &i_pipe[1], &sa, 0); + + /* Duplicate the read handle to the pipe so it is not inherited. */ + DuplicateHandle(GetCurrentProcess(), i_pipe[0], + GetCurrentProcess(), &pipe_iDup, + 0, FALSE, /* not inherited */ + DUPLICATE_SAME_ACCESS ); + CloseHandle(i_pipe[0]); + + + si.cb = sizeof(STARTUPINFO); + si.lpReserved = NULL; + si.lpReserved2 = NULL; + si.cbReserved2 = 0; + si.lpDesktop = NULL; + si.dwFlags = STARTF_USESTDHANDLES | STARTF_USESHOWWINDOW; + si.hStdInput = o_pipe[0]; + si.hStdOutput = i_pipe[1]; + si.hStdError = e_pipe[1]; + si.wShowWindow = SW_HIDE; + + snprintf(line, sizeof(line), "%s ", gedp->ged_gdp->gd_rt_cmd[0]); + for (i=1; i < gedp->ged_gdp->gd_rt_cmd_len; i++) { + snprintf(name, sizeof(name), "%s ", gedp->ged_gdp->gd_rt_cmd[i]); + bu_strlcat(line, name, sizeof(line)); + } + + CreateProcess(NULL, line, NULL, NULL, TRUE, + DETACHED_PROCESS, NULL, NULL, + &si, &pi); + + /* close read end of pipe */ + CloseHandle(o_pipe[0]); + + /* close write end of pipes */ + (void)CloseHandle(i_pipe[1]); + (void)CloseHandle(e_pipe[1]); + + /* As parent, send view information down pipe */ + fp = _fdopen(_open_osfhandle((HFILE)pipe_oDup, _O_TEXT), "wb"); + setmode(_fileno(fp), O_BINARY); + + ged_rt_set_eye_model(gedp, eye_model); + ged_rt_write(gedp, fp, eye_model); + (void)fclose(fp); + + BU_GETSTRUCT(rtcp, ged_rtcheck); + + /* initialize the rtcheck struct */ + rtcp->fd = pipe_iDup; + rtcp->fp = _fdopen( _open_osfhandle((HFILE)pipe_iDup, _O_TEXT), "rb" ); + setmode(_fileno(rtcp->fp), O_BINARY); + rtcp->hProcess = pi.hProcess; + rtcp->pid = pi.dwProcessId; + rtcp->vbp = rt_vlblock_init(); + rtcp->vhead = rt_vlblock_find(rtcp->vbp, 0xFF, 0xFF, 0x00); + rtcp->csize = gedp->ged_gvp->gv_scale * 0.01; + rtcp->gedp = gedp; + rtcp->interp = brlcad_interp; + + rtcp->chan = Tcl_MakeFileChannel(pipe_iDup, TCL_READABLE); + Tcl_CreateChannelHandler(rtcp->chan, TCL_READABLE, + ged_rtcheck_vector_handler, + (ClientData)rtcp); + + BU_GETSTRUCT(rtcop, ged_rtcheck_output); + rtcop->fd = pipe_eDup; + rtcop->chan = Tcl_MakeFileChannel(pipe_eDup, TCL_READABLE); + rtcop->gedp = gedp; + rtcop->interp = brlcad_interp; + Tcl_CreateChannelHandler(rtcop->chan, + TCL_READABLE, + ged_rtcheck_output_handler, + (ClientData)rtcop); + return BRLCAD_OK; +#endif +} + +#ifndef _WIN32 +static void +ged_rtcheck_vector_handler(ClientData clientData, int mask) +{ + int value; + struct solid *sp; + struct ged_rtcheck *rtcp = (struct ged_rtcheck *)clientData; + + /* Get vector output from rtcheck */ + if ((value = getc(rtcp->fp)) == EOF) { + int retcode; + int rpid; + + Tcl_DeleteFileHandler(rtcp->fd); + fclose(rtcp->fp); + + FOR_ALL_SOLIDS(sp, &rtcp->gedp->ged_gdp->gd_headSolid) + sp->s_flag = DOWN; + + /* Add overlay */ + ged_cvt_vlblock_to_solids(rtcp->gedp, rtcp->vbp, "OVERLAPS", 0); + rt_vlblock_free(rtcp->vbp); + + /* wait for the forked process */ + while ((rpid = wait(&retcode)) != rtcp->pid && rpid != -1) { + + ged_wait_status(&rtcp->gedp->ged_result_str, retcode); + } + +#if 0 + dgo_notify(rtcp->dgop, rtcp->interp); +#endif + + /* free rtcp */ + bu_free((genptr_t)rtcp, "ged_rtcheck_vector_handler: rtcp"); + + return; + } + + (void)rt_process_uplot_value(&rtcp->vhead, + rtcp->vbp, + rtcp->fp, + value, + rtcp->csize, + rtcp->gedp->ged_gdp->gd_uplotOutputMode); +} + +static void +ged_rtcheck_output_handler(ClientData clientData, int mask) +{ + int count; + char line[RT_MAXLINE] = {0}; + struct ged_rtcheck_output *rtcop = (struct ged_rtcheck_output *)clientData; + + /* Get textual output from rtcheck */ + count = read((int)rtcop->fd, line, RT_MAXLINE); + if (count <= 0) { + if (count < 0) { + perror("READ ERROR"); + } + Tcl_DeleteFileHandler(rtcop->fd); + close(rtcop->fd); + + if (rtcop->gedp->ged_gdp->gd_rtCmdNotify != (void (*)())0) + rtcop->gedp->ged_gdp->gd_rtCmdNotify(); + + bu_free((genptr_t)rtcop, "ged_rtcheck_output_handler: rtcop"); + return; + } + + line[count] = '\0'; + if (rtcop->gedp->ged_output_handler != (void (*)())0) + rtcop->gedp->ged_output_handler(rtcop->gedp, line); + else + bu_vls_printf(&rtcop->gedp->ged_gdp, "%s", line); +} + +#else + +void +ged_rtcheck_vector_handler(ClientData clientData, int mask) +{ + int value; + struct solid *sp; + struct ged_rtcheck *rtcp = (struct ged_rtcheck *)clientData; + + /* Get vector output from rtcheck */ + if (feof(rtcp->fp)) { + Tcl_DeleteChannelHandler(rtcp->chan, + ged_rtcheck_vector_handler, + (ClientData)rtcp); + Tcl_Close(rtcp->interp, rtcp->chan); + + FOR_ALL_SOLIDS(sp, &rtcp->gedp->ged_gdp->gd_headSolid) + sp->s_flag = DOWN; + + /* Add overlay */ + ged_cvt_vlblock_to_solids(rtcp->gedp, rtcp->vbp, "OVERLAPS", 0); + rt_vlblock_free(rtcp->vbp); + + /* wait for the forked process */ + WaitForSingleObject( rtcp->hProcess, INFINITE ); + +#if 0 + dgo_notify(rtcp->dgop, rtcp->interp); +#endif + + /* free rtcp */ + bu_free((genptr_t)rtcp, "ged_rtcheck_vector_handler: rtcp"); + + return; + } + + value = getc(rtcp->fp); + (void)rt_process_uplot_value(&rtcp->vhead, + rtcp->vbp, + rtcp->fp, + value, + rtcp->csize, + rtcp->gedp->ged_gdp->gd_uplotOutputMode); +} + +void +ged_rtcheck_output_handler(ClientData clientData, int mask) +{ + int count; + char line[RT_MAXLINE]; + struct ged_rtcheck_output *rtcop = (struct ged_rtcheck_output *)clientData; + + /* Get textual output from rtcheck */ + if (Tcl_Eof(rtcop->chan) || + (!ReadFile(rtcop->fd, line, RT_MAXLINE, &count, 0))) { + + Tcl_DeleteChannelHandler(rtcop->chan, + ged_rtcheck_output_handler, + (ClientData)rtcop); + Tcl_Close(rtcop->interp, rtcop->chan); + + if (rtcop->gedp->ged_gdp->gd_rtCmdNotify != (void (*)())0) + rtcop->gedp->ged_gdp->gd_rtCmdNotify(); + + bu_free((genptr_t)rtcop, "ged_rtcheck_output_handler: rtcop"); + + return; + } + + line[count] = '\0'; + if (rtcop->gedp->ged_output_handler != (void (*)())0) + rtcop->gedp->ged_output_handler(rtcop->gedp, line); + else + bu_vls_printf(&rtcop->gedp->ged_result_str, "%s", line); +} + +#endif + +void +ged_wait_status(struct bu_vls *log, + int status) +{ + int sig = status & 0x7f; + int core = status & 0x80; + int ret = status >> 8; + + if (status == 0) { + bu_vls_printf(log, "Normal exit\n"); + return; + } + + bu_vls_printf(log, "Abnormal exit x%x", status); + + if (core) + bu_vls_printf(log, ", core dumped"); + + if (sig) + bu_vls_printf(log, ", terminating signal = %d", sig); + else + bu_vls_printf(log, ", return (exit) code = %d", ret); +} + + +/* + * Local Variables: + * tab-width: 8 + * mode: C + * indent-tabs-mode: t + * c-file-style: "stroustrup" + * End: + * ex: shiftwidth=4 tabstop=8 + */ Property changes on: brlcad/trunk/src/libged/rtcheck.c ___________________________________________________________________ Added: svn:executable + * Added: svn:mime-type + text/plain Added: svn:eol-style + native Deleted: brlcad/trunk/src/libged/set_outputHandler.c =================================================================== --- brlcad/trunk/src/libged/set_outputHandler.c 2008-07-30 16:41:13 UTC (rev 32138) +++ brlcad/trunk/src/libged/set_outputHandler.c 2008-07-30 16:58:19 UTC (rev 32139) @@ -1,81 +0,0 @@ -/* S E T _ O U T P U T H A N D L E R . C - * BRL-CAD - * - * Copyright (c) 2008 United States Government as represented by - * the U.S. Army Research Laboratory. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * version 2.1 as published by the Free Software Foundation. - * - * This library is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this file; see the file named COPYING for more - * information. - */ -/** @file set_outputhandler.c - * - * The set_outputhandler command. - * - */ - -#include "ged.h" - -/* - * Get/set the output handler script - * - * Usage: - * set_outputhandler [script] - * - */ -int -ged_set_outputHandler(struct ged *gedp, int argc, const char *argv[]) -{ - static const char *usage = "[script]"; - - GED_CHECK_DATABASE_OPEN(gedp, BRLCAD_ERROR); - GED_CHECK_DRAWABLE(gedp, BRLCAD_ERROR); - - /* initialize result */ - bu_vls_trunc(&gedp->ged_result_str, 0); - gedp->ged_result = GED_RESULT_NULL; - gedp->ged_result_flags = 0; - - if (argc < 1 || 2 < argc) { - bu_vls_printf(&gedp->ged_result_str, "Usage: %s %s", argv[0], usage); - return BRLCAD_ERROR; - } - - /* Get the output handler script */ - if (argc == 1) { - bu_vls_printf(&gedp->ged_result_str, "%s", gedp->ged_gdp->gd_outputHandler); - return BRLCAD_OK; - } - - /* We're now going to set the output handler script */ - /* First, we zap any previous script */ - if (gedp->ged_gdp->gd_outputHandler != NULL) { - bu_free((genptr_t)gedp->ged_gdp->gd_outputHandler, "ged_set_outputHandler: zap"); - gedp->ged_gdp->gd_outputHandler = NULL; - } - - if (argv[1] != NULL && argv[1][0] != '\0') - gedp->ged_gdp->gd_outputHandler = bu_strdup(argv[1]); - - return BRLCAD_OK; -} - - -/* - * Local Variables: - * tab-width: 8 - * mode: C - * indent-tabs-mode: t - * c-file-style: "stroustrup" - * End: - * ex: shiftwidth=4 tabstop=8 - */ Copied: brlcad/trunk/src/libged/set_output_script.c (from rev 32136, brlcad/trunk/src/libged/set_outputHandler.c) =================================================================== --- brlcad/trunk/src/libged/set_output_script.c (rev 0) +++ brlcad/trunk/src/libged/set_output_script.c 2008-07-30 16:58:19 UTC (rev 32139) @@ -0,0 +1,80 @@ +/* S E T _ O U T P U T _ S C R I P T . C + * BRL-CAD + * + * Copyright (c) 2008 United States Government as represented by + * the U.S. Army Research Laboratory. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * version 2.1 as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this file; see the file named COPYING for more + * information. + */ +/** @file set_output_script.c + * + * The set_output_script command. + * + */ + +#include "ged.h" + +/* + * Get/set the output handler script + * + * Usage: + * set_output_script [script] + * + */ +int +ged_set_output_script(struct ged *gedp, int argc, const char *argv[]) +{ + static const char *usage = "[script]"; + + GED_CHECK_DATABASE_OPEN(gedp, BRLCAD_ERROR); + + /* initialize result */ + bu_vls_trunc(&gedp->ged_result_str, 0); + gedp->ged_result = GED_RESULT_NULL; + gedp->ged_result_flags = 0; + + if (argc < 1 || 2 < argc) { + bu_vls_printf(&gedp->ged_result_str, "Usage: %s %s", argv[0], usage); + return BRLCAD_ERROR; + } + + /* Get the output handler script */ + if (argc == 1) { + bu_vls_printf(&gedp->ged_result_str, "%s", gedp->ged_output_script); + return BRLCAD_OK; + } + + /* We're now going to set the output handler script */ + /* First, we zap any previous script */ + if (gedp->ged_output_script != NULL) { + bu_free((genptr_t)gedp->ged_output_script, "ged_set_output_script: zap"); + gedp->ged_output_script = NULL; + } + + if (argv[1] != NULL && argv[1][0] != '\0') + gedp->ged_output_script = bu_strdup(argv[1]); + + return BRLCAD_OK; +} + + +/* + * Local Variables: + * tab-width: 8 + * mode: C + * indent-tabs-mode: t + * c-file-style: "stroustrup" + * End: + * ex: shiftwidth=4 tabstop=8 + */ Added: brlcad/trunk/src/libged/shaded_mode.c =================================================================== --- brlcad/trunk/src/libged/shaded_mode.c (rev 0) +++ brlcad/trunk/src/libged/shaded_mode.c 2008-07-30 16:58:19 UTC (rev 32139) @@ -0,0 +1,93 @@ +/* S H A D E D _ M O D E . C + * BRL-CAD + * + * Copyright (c) 2008 United States Government as represented by + * the U.S. Army Research Laboratory. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * version 2.1 as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this file; see the file named COPYING for more + * information. + */ +/** @file shaded_mode.c + * + * The shaded_mode command. + * + */ + +#include "common.h" + +#include <stdlib.h> +#include <ctype.h> +#include <string.h> + +#include "ged_private.h" + +/* + * Set/get the shaded mode. + * + * Usage: + * shaded_mode [0|1|2] + * + */ +int +ged_shaded_mode(struct ged *gedp, int argc, const char *argv[]) +{ + static const char *usage = "[0|1|2]"; + + GED_CHECK_DATABASE_OPEN(gedp, BRLCAD_ERROR); + GED_CHECK_DRAWABLE(gedp, BRLCAD_ERROR); + + /* initialize result */ + bu_vls_trunc(&gedp->ged_result_str, 0); + gedp->ged_result = GED_RESULT_NULL; + gedp->ged_result_flags = 0; + + if (argc < 1 || 2 < argc) { + bu_vls_printf(&gedp->ged_result_str, "Usage: %s %s", argv[0], usage); + return BRLCAD_ERROR; + } + + /* get shaded mode */ + if (argc == 1) { + bu_vls_printf(&gedp->ged_result_str, "%d", gedp->ged_gdp->gd_shaded_mode); + return BRLCAD_OK; + } + + /* set shaded mode */ + if (argc == 2) { + int shaded_mode; + + if (sscanf(argv[1], "%d", &shaded_mode) != 1) + goto bad; + + if (shaded_mode < 0 || 2 < shaded_mode) + goto bad; + + gedp->ged_gdp->gd_shaded_mode = shaded_mode; + return BRLCAD_OK; + } + + bad: + bu_vls_printf(&gedp->ged_result_str, "Usage: %s %s", argv[0], usage); + return BRLCAD_ERROR; +} + + +/* + * Local Variables: + * tab-width: 8 + * mode: C + * indent-tabs-mode: t + * c-file-style: "stroustrup" + * End: + * ex: shiftwidth=4 tabstop=8 + */ Property changes on: brlcad/trunk/src/libged/shaded_mode.c ___________________________________________________________________ Added: svn:executable + * Added: svn:mime-type + text/plain Added: svn:eol-style + native Modified: brlcad/trunk/src/libged/vdraw.c =================================================================== --- brlcad/trunk/src/libged/vdraw.c 2008-07-30 16:41:13 UTC (rev 32138) +++ brlcad/trunk/src/libged/vdraw.c 2008-07-30 16:58:19 UTC (rev 32139) @@ -109,7 +109,7 @@ #include "mater.h" #include "nmg.h" #include "dg.h" -#include "ged.h" +#include "ged_private.h" #ifndef M_SQRT2 @@ -121,95 +121,129 @@ BU_LIST_NOT_HEAD(p, hp); \ (p)=BU_LIST_PLAST(structure, p) -static int vdraw_write_tcl(ClientData clientData, Tcl_Interp *interp, int argc, char *argv[]); -static int vdraw_insert_tcl(ClientData clientData, Tcl_Interp *interp, int argc, char *argv[]); -static int vdraw_delete_tcl(ClientData clientData, Tcl_Interp *interp, int argc, char *argv[]); -static int vdraw_read_tcl(ClientData clientData, Tcl_Interp *interp, int argc, char *argv[]); -static int vdraw_send_tcl(ClientData clientData, Tcl_Interp *interp, int argc, char *argv[]); -static int vdraw_params_tcl(ClientData clientData, Tcl_Interp *interp, int argc, char *argv[]); -static int vdraw_open_tcl(ClientData clientData, Tcl_Interp *interp, int argc, char *argv[]); -static int vdraw_vlist_tcl(ClientData clientData, Tcl_Interp *interp, int argc, char *argv[]); +static int ged_vdraw_cmd(struct ged *gedp, int argc, const char *argv[]); +static int ged_vdraw_write(struct ged *gedp, int argc, const char *argv[]); +static int ged_vdraw_insert(struct ged *gedp, int argc, const char *argv[]); +static int ged_vdraw_delete(struct ged *gedp, int argc, const char *argv[]); +static int ged_vdraw_read(struct ged *gedp, int argc, const char *argv[]); +static int ged_vdraw_send(struct ged *gedp, int argc, const char *argv[]); +static int ged_vdraw_params(struct ged *gedp, int argc, const char *argv[]); +static int ged_vdraw_open(struct ged *gedp, int argc, const char *argv[]); +static int ged_vdraw_vlist(struct ged *gedp, int argc, const char *argv[]); /** * view draw command table */ static struct bu_cmdtab vdraw_cmds[] = { - {"write", vdraw_write_tcl}, - {"insert", vdraw_insert_tcl}, - {"delete", vdraw_delete_tcl}, - {"read", vdraw_read_tcl}, - {"send", vdraw_send_tcl}, - {"params", vdraw_params_tcl}, - {"open", vdraw_open_tcl}, - {"vlist", vdraw_vlist_tcl}, + {"write", ged_vdraw_write}, + {"insert", ged_vdraw_insert}, + {"delete", ged_vdraw_delete}, + {"read", ged_vdraw_read}, + {"send", ged_vdraw_send}, + {"params", ged_vdraw_params}, + {"open", ged_vdraw_open}, + {"vlist", ged_vdraw_vlist}, {(char *)0, (int (*)())0 } }; -/** - * figure out which vdraw command we're running, used by dg - */ int -vdraw_cmd(struct dg_obj *dgop, - Tcl_Interp *interp, - int argc, - char *argv[]) +ged_vdraw(struct ged *gedp, int argc, const char *argv[]) { - return bu_cmd((ClientData)dgop, interp, argc-1, argv+1, vdraw_cmds, 0); + return ged_vdraw_cmd(gedp, argc, argv); } +int +ged_vdraw_cmd(struct ged *gedp, int argc, const char *argv[]) +{ + register struct bu_cmdtab *ctp; + static const char *usage = "write|insert|delete|read|send|params|open|vlist [args]"; + GED_CHECK_DATABASE_OPEN(gedp, BRLCAD_ERROR); + GED_CHECK_DRAWABLE(gedp, BRLCAD_ERROR); + + /* initialize result */ + bu_vls_trunc(&gedp->ged_result_str, 0); + gedp->ged_result = GED_RESULT_NULL; + gedp->ged_result_flags = 0; + + /* must be wanting help */ + if (argc == 1) { + gedp->ged_result_flags |= GED_RESULT_FLAGS_HELP_BIT; + bu_vls_printf(&gedp->ged_result_str, "Usage: %s %s", argv[0], usage); + return BRLCAD_OK; + } + + for (ctp = vdraw_cmds; ctp->ct_name != (char *)0; ctp++) { + if (ctp->ct_name[0] == argv[1][0] && + !strcmp(ctp->ct_name, argv[1])) { + return (*ctp->ct_func)(gedp, argc, argv); + } + } + + bu_vls_printf(&gedp->ged_result_str, "Usage: %s %s", argv[0], usage); + + return BRLCAD_ERROR; +} + /* * Usage: - * write i|next c x y z + * vdraw write i|next c x y z */ static int -vdraw_write_tcl(ClientData clientData, Tcl_Interp *interp, int argc, char *argv[]) +ged_vdraw_write(struct ged *gedp, int argc, const char *argv[]) { - struct dg_obj *dgop = (struct dg_obj *)clientData; int index, uind; struct bn_vlist *vp, *cp; + static const char *usage = "i|next c x y z"; - if (!dgop->dgo_currVHead) { - Tcl_AppendResult(interp, "vdraw write: no vlist is currently open.", (char *)NULL); - return TCL_ERROR; + /* must be wanting help */ + if (argc == 2) { + gedp->ged_result_flags |= GED_RESULT_FLAGS_HELP_BIT; + bu_vls_printf(&gedp->ged_result_str, "Usage: %s %s %s", argv[0], argv[1], usage); + return BRLCAD_OK; } - if (argc < 4) { - Tcl_AppendResult(interp, "vdraw write: not enough args\n", (char *)NULL); - return TCL_ERROR; + + if (!gedp->ged_gdp->gd_currVHead) { + bu_vls_printf(&gedp->ged_result_str, "vdraw write: no vlist is currently open."); + return BRLCAD_ERROR; } - if (argv[1][0] == 'n') { + if (argc < 5) { + bu_vls_printf(&gedp->ged_result_str, "vdraw write: not enough args\n"); + return BRLCAD_ERROR; + } + if (argv[2][0] == 'n') { /* next */ - for (REV_BU_LIST_FOR(vp, bn_vlist, &(dgop->dgo_currVHead->vdc_vhd))) { + for (REV_BU_LIST_FOR(vp, bn_vlist, &(gedp->ged_gdp->gd_currVHead->vdc_vhd))) { if (vp->nused > 0) { break; } } - if (BU_LIST_IS_HEAD(vp, &(dgop->dgo_currVHead->vdc_vhd))) { + if (BU_LIST_IS_HEAD(vp, &(gedp->ged_gdp->gd_currVHead->vdc_vhd))) { /* we went all the way through */ vp = BU_LIST_PNEXT(bn_vlist, vp); - if (BU_LIST_IS_HEAD(vp, &(dgop->dgo_currVHead->vdc_vhd))) { + if (BU_LIST_IS_HEAD(vp, &(gedp->ged_gdp->gd_currVHead->vdc_vhd))) { RT_GET_VLIST(vp); - BU_LIST_INSERT(&(dgop->dgo_currVHead->vdc_vhd), &(vp->l)); + BU_LIST_INSERT(&(gedp->ged_gdp->gd_currVHead->vdc_vhd), &(vp->l)); } } if (vp->nused >= BN_VLIST_CHUNK) { vp = BU_LIST_PNEXT(bn_vlist, vp); - if (BU_LIST_IS_HEAD(vp, &(dgop->dgo_currVHead->vdc_vhd))) { + if (BU_LIST_IS_HEAD(vp, &(gedp->ged_gdp->gd_currVHead->vdc_vhd))) { RT_GET_VLIST(vp); - BU_LIST_INSERT(&(dgop->dgo_currVHead->vdc_vhd), &(vp->l)); + BU_LIST_INSERT(&(gedp->ged_gdp->gd_currVHead->vdc_vhd), &(vp->l)); } } cp = vp; index = vp->nused; - } else if (sscanf(argv[1], "%d", &uind) < 1) { - Tcl_AppendResult(interp, "vdraw: write index not an integer\n", (char *)NULL); - return TCL_ERROR; + } else if (sscanf(argv[2], "%d", &uind) < 1) { + bu_vls_printf(&gedp->ged_result_str, "vdraw: write index not an integer\n"); + return BRLCAD_ERROR; } else { /* uind holds user-specified index */ /* only allow one past the end */ - for (BU_LIST_FOR(vp, bn_vlist, &(dgop->dgo_currVHead->vdc_vhd))) { + for (BU_LIST_FOR(vp, bn_vlist, &(gedp->ged_gdp->gd_currVHead->vdc_vhd))) { if (uind < BN_VLIST_CHUNK) { /* this is the right vlist */ break; @@ -220,73 +254,79 @@ uind -= vp->nused; } - if (BU_LIST_IS_HEAD(vp, &(dgop->dgo_currVHead->vdc_vhd))) { + if (BU_LIST_IS_HEAD(vp, &(gedp->ged_gdp->gd_currVHead->vdc_vhd))) { if (uind > 0) { - Tcl_AppendResult(interp, "vdraw: write out of range\n", (char *)NULL); - return TCL_ERROR; + bu_vls_printf(&gedp->ged_result_str, "vdraw: write out of range\n"); + return BRLCAD_ERROR; } RT_GET_VLIST(vp); - BU_LIST_INSERT(&(dgop->dgo_currVHead->vdc_vhd), &(vp->l)); + BU_LIST_INSERT(&(gedp->ged_gdp->gd_currVHead->vdc_vhd), &(vp->l)); } if (uind > vp->nused) { - Tcl_AppendResult(interp, "vdraw: write out of range\n", (char *)NULL); - return TCL_ERROR; + bu_vls_printf(&gedp->ged_result_str, "vdraw: write out of range\n"); + return BRLCAD_ERROR; } cp = vp; index = uind; } - if (sscanf(argv[2], "%d", &(cp->cmd[index])) < 1) { - Tcl_AppendResult(interp, "vdraw: cmd not an integer\n", (char *)NULL); - return TCL_ERROR; + if (sscanf(argv[3], "%d", &(cp->cmd[index])) < 1) { + bu_vls_printf(&gedp->ged_result_str, "vdraw: cmd not an integer\n"); + return BRLCAD_ERROR; } - if (argc == 6) { - cp->pt[index][0] = atof(argv[3]); - cp->pt[index][1] = atof(argv[4]); - cp->pt[index][2] = atof(argv[5]); + if (argc == 7) { + cp->pt[index][0] = atof(argv[4]); + cp->pt[index][1] = atof(argv[5]); + cp->pt[index][2] = atof(argv[6]); } else { - if (argc != 4 || - bn_decode_vect(cp->pt[index], argv[3]) != 3) { - Tcl_AppendResult(interp, - "vdraw write: wrong # args, need either x y z or {x y z}\n", (char *)NULL); - return TCL_ERROR; + if (argc != 5 || + bn_decode_vect(cp->pt[index], argv[4]) != 3) { + bu_vls_printf(&gedp->ged_result_str, "vdraw write: wrong # args, need either x y z or {x y z}\n"); + return BRLCAD_ERROR; } } /* increment counter only if writing onto end */ if (index == cp->nused) cp->nused++; - return TCL_OK; + return BRLCAD_OK; } /* * Usage: - * insert i c x y z + * vdraw insert i c x y z */ int -vdraw_insert_tcl(ClientData clientData, Tcl_Interp *interp, int argc, char *argv[]) +ged_vdraw_insert(struct ged *gedp, int argc, const char *argv[]) { - struct dg_obj *dgop = (struct dg_obj *)clientData; struct bn_vlist *vp, *cp, *wp; int i; int index; int uind; + static const char *usage = "i c x y z"; - if (!dgop->dgo_currVHead) { - Tcl_AppendResult(interp, "vdraw: no vlist is currently open.", (char *)NULL); - return TCL_ERROR; + /* must be wanting help */ + if (argc == 2) { + gedp->ged_result_flags |= GED_RESULT_FLAGS_HELP_BIT; + bu_vls_printf(&gedp->ged_result_str, "Usage: %s %s %s", argv[0], argv[1], usage); + return BRLCAD_OK; } - if (argc < 6) { - Tcl_AppendResult(interp, "vdraw: not enough args", (char *)NULL); - return TCL_ERROR; + + if (!gedp->ged_gdp->gd_currVHead) { + bu_vls_printf(&gedp->ged_result_str, "vdraw: no vlist is currently open."); + return BRLCAD_ERROR; } + if (argc < 7) { + bu_vls_printf(&gedp->ged_result_str, "vdraw: not enough args"); + return BRLCAD_ERROR; + } if (sscanf(argv[2], "%d", &uind) < 1) { - Tcl_AppendResult(interp, "vdraw: insert index not an integer\n", (char *)NULL); - return TCL_ERROR; + bu_vls_printf(&gedp->ged_result_str, "vdraw: insert index not an integer\n"); + return BRLCAD_ERROR; } /* uinds hold user specified index */ - for (BU_LIST_FOR(vp, bn_vlist, &(dgop->dgo_currVHead->vdc_vhd))) { + for (BU_LIST_FOR(vp, bn_vlist, &(gedp->ged_gdp->gd_currVHead->vdc_vhd))) { if (uind < BN_VLIST_CHUNK) { /* this is the right vlist */ break; @@ -297,24 +337,24 @@ uind -= vp->nused; } - if (BU_LIST_IS_HEAD(vp, &(dgop->dgo_currVHead->vdc_vhd))) { + if (BU_LIST_IS_HEAD(vp, &(gedp->ged_gdp->gd_currVHead->vdc_vhd))) { if (uind > 0) { - Tcl_AppendResult(interp, "vdraw: insert out of range\n", (char *)NULL); - return TCL_ERROR; + bu_vls_printf(&gedp->ged_result_str, "vdraw: insert out of range\n"); + return BRLCAD_ERROR; } RT_GET_VLIST(vp); - BU_LIST_INSERT(&(dgop->dgo_currVHead->vdc_vhd), &(vp->l)); + BU_LIST_INSERT(&(gedp->ged_gdp->gd_currVHead->vdc_vhd), &(vp->l)); } if (uind > vp->nused) { - Tcl_AppendResult(interp, "vdraw: insert out of range\n", (char *)NULL); - return TCL_ERROR; + bu_vls_printf(&gedp->ged_result_str, "vdraw: insert out of range\n"); + return BRLCAD_ERROR; } cp = vp; index = uind; - vp = BU_LIST_LAST(bn_vlist, &(dgop->dgo_currVHead->vdc_vhd)); + vp = BU_LIST_LAST(bn_vlist, &(gedp->ged_gdp->gd_currVHead->vdc_vhd)); vp->nused++; while (vp != cp) { @@ -332,60 +372,67 @@ vp->cmd[i] = vp->cmd[i-1]; VMOVE(vp->pt[i], vp->pt[i-1]); } - if (sscanf(argv[2], "%d", &(vp->cmd[index])) < 1) { - Tcl_AppendResult(interp, "vdraw: cmd not an integer\n", (char *)NULL); - return TCL_ERROR; + if (sscanf(argv[3], "%d", &(vp->cmd[index])) < 1) { + bu_vls_printf(&gedp->ged_result_str, "vdraw: cmd not an integer\n"); + return BRLCAD_ERROR; } - vp->pt[index][0] = atof(argv[3]); - vp->pt[index][1] = atof(argv[4]); - vp->pt[index][2] = atof(argv[5]); + vp->pt[index][0] = atof(argv[4]); + vp->pt[index][1] = atof(argv[5]); + vp->pt[index][2] = atof(argv[6]); - return TCL_OK; + return BRLCAD_OK; } /* * Usage: - * delete i|last|all + * vdraw delete i|last|all */ int -vdraw_delete_tcl(ClientData clientData, Tcl_Interp *interp, int argc, char *argv[]) +ged_vdraw_delete(struct ged *gedp, int argc, const char *argv[]) { - struct dg_obj *dgop = (struct dg_obj *)clientData; struct bn_vlist *vp, *wp; int i; int uind; + static const char *usage = "i|last|all"; - if (!dgop->dgo_currVHead) { - Tcl_AppendResult(interp, "vdraw: no vlist is currently open.", (char *)NULL); - return TCL_ERROR; + /* must be wanting help */ + if (argc == 2) { + gedp->ged_result_flags |= GED_RESULT_FLAGS_HELP_BIT; + bu_vls_printf(&gedp->ged_result_str, "Usage: %s %s %s", argv[0], argv[1], usage); + return BRLCAD_OK; } - if (argc < 2) { - Tcl_AppendResult(interp, "vdraw: not enough args\n", (char *)NULL); - return TCL_ERROR; + + if (!gedp->ged_gdp->gd_currVHead) { + bu_vls_printf(&gedp->ged_result_str, "%s %s: no vlist is currently open.", argv[0], argv[1]); + return BRLCAD_ERROR; } - if (argv[1][0] == 'a') { + if (argc < 3) { + bu_vls_printf(&gedp->ged_result_str, "%s %s: not enough args\n", argv[0], argv[1]); + return BRLCAD_ERROR; + } + if (argv[2][0] == 'a') { /* delete all */ - for (BU_LIST_FOR(vp, bn_vlist, &(dgop->dgo_currVHead->vdc_vhd))) { + for (BU_LIST_FOR(vp, bn_vlist, &(gedp->ged_gdp->gd_currVHead->vdc_vhd))) { vp->nused = 0; } - return TCL_OK; + return BRLCAD_OK; } - if (argv[1][0] == 'l') { + if (argv[2][0] == 'l') { /* delete last */ - for (REV_BU_LIST_FOR(vp, bn_vlist, &(dgop->dgo_currVHead->vdc_vhd))) { + for (REV_BU_LIST_FOR(vp, bn_vlist, &(gedp->ged_gdp->gd_currVHead->vdc_vhd))) { if (vp->nused > 0) { vp->nused--; break; } } - return TCL_OK; + return BRLCAD_OK; } - if (sscanf(argv[1], "%d", &uind) < 1) { - Tcl_AppendResult(interp, "vdraw: delete index not an integer\n", (char *)NULL); - return TCL_ERROR; + if (sscanf(argv[2], "%d", &uind) < 1) { + bu_vls_printf(&gedp->ged_result_str, "%s %s: delete index not an integer\n", argv[0], argv[1]); + return BRLCAD_ERROR; } - for (BU_LIST_FOR(vp, bn_vlist, &(dgop->dgo_currVHead->vdc_vhd))) { + for (BU_LIST_FOR(vp, bn_vlist, &(gedp->ged_gdp->gd_currVHead->vdc_vhd))) { if (uind < BN_VLIST_CHUNK) { /* this is the right vlist */ break; @@ -398,8 +445,8 @@ } if (uind >= vp->nused) { - Tcl_AppendResult(interp, "vdraw: delete out of range\n", (char *)NULL); - return TCL_ERROR; + bu_vls_printf(&gedp->ged_result_str, "%s %s: delete out of range\n", argv[0], argv[1]); + return BRLCAD_ERROR; } for (i = uind; i < vp->nused - 1; i++) { @@ -408,7 +455,7 @@ } wp = BU_LIST_PNEXT(bn_vlist, vp); - while (BU_LIST_NOT_HEAD(wp, &(dgop->dgo_currVHead->vdc_vhd))) { + while (BU_LIST_NOT_HEAD(wp, &(gedp->ged_gdp->gd_currVHead->vdc_vhd))) { if (wp->nused == 0) { break; } @@ -426,71 +473,68 @@ if (vp->nused <= 0) { /* this shouldn't happen */ - Tcl_AppendResult(interp, "vdraw: vlist corrupt", (char *)NULL); - return TCL_ERROR; + bu_vls_printf(&gedp->ged_result_str, "%s %s: vlist corrupt", argv[0], argv[1]); + return BRLCAD_ERROR; } vp->nused--; - return TCL_OK; + return BRLCAD_OK; } /* * Usage: - * read i|color|length|name + * vdraw read i|color|length|name */ static int -vdraw_read_tcl(ClientData clientData, Tcl_Interp *interp, int argc, char *argv[]) +ged_vdraw_read(struct ged *gedp, int argc, const char *argv[]) { - struct dg_obj *dgop = (struct dg_obj *)clientData; struct bn_vlist *vp; - struct bu_vls vls; int uind; int length; + static const char *usage = "read i|color|length|name"; - if (!dgop->dgo_currVHead) { - Tcl_AppendResult(interp, "vdraw: no vlist is currently open.", (char *)NULL); - return TCL_ERROR; + /* must be wanting help */ + if (argc == 2) { + gedp->ged_result_flags |= GED_RESULT_FLAGS_HELP_BIT; + bu_vls_printf(&gedp->ged_result_str, "Usage: %s %s %s", argv[0], argv[1], usage); + return BRLCAD_OK; } - if (argc < 2) { - Tcl_AppendResult(interp, "vdraw: need index to read\n", (char *)NULL); - return TCL_ERROR; + + if (!gedp->ged_gdp->gd_currVHead) { + bu_vls_printf(&gedp->ged_result_str, "%s %s: no vlist is currently open.", argv[0], argv[1]); + return BRLCAD_ERROR; } - if (argv[1][0] == 'c') { + if (argc < 3) { + bu_vls_printf(&gedp->ged_result_str, "%s %s: need index to read\n", argv[0], argv[1]); + return BRLCAD_ERROR; + } + if (argv[2][0] == 'c') { /* read color of current solid */ - bu_vls_init(&vls); - bu_vls_printf(&vls, "%.6lx", dgop->dgo_currVHead->vdc_rgb); - Tcl_AppendResult(interp, bu_vls_addr(&vls), (char *)NULL); - bu_vls_free(&vls); - return TCL_OK; + bu_vls_printf(&gedp->ged_result_str, "%.6lx", gedp->ged_gdp->gd_currVHead->vdc_rgb); + return BRLCAD_OK; } - if (argv[1][0] == 'n') { + if (argv[2][0] == 'n') { /*read name of currently open solid*/ - bu_vls_init(&vls); - bu_vls_printf(&vls, "%.89s", dgop->dgo_currVHead->vdc_name); - Tcl_AppendResult(interp, bu_vls_addr(&vls), (char *)NULL); - bu_vls_free(&vls); - return TCL_OK; + bu_vls_printf(&gedp->ged_result_str, "%.89s", gedp->ged_gdp->gd_currVHead->vdc_name); + return BRLCAD_OK; } - if (argv[1][0] == 'l') { - /* return lenght of list */ + if (argv[2][0] == 'l') { + /* return length of list */ length = 0; - vp = BU_LIST_FIRST(bn_vlist, &(dgop->dgo_currVHead->vdc_vhd)); - while (!BU_LIST_IS_HEAD(vp, &(dgop->dgo_currVHead->vdc_vhd))) { + vp = BU_LIST_FIRST(bn_vlist, &(gedp->ged_gdp->gd_currVHead->vdc_vhd)); + while (!BU_LIST_IS_HEAD(vp, &(gedp->ged_gdp->gd_currVHead->vdc_vhd))) { length += vp->nused; vp = BU_LIST_PNEXT(bn_vlist, vp); } - bu_vls_init(&vls); - bu_vls_printf(&vls, "%d", length); - Tcl_AppendResult(interp, bu_vls_addr(&vls), (char *)NULL); - bu_vls_free(&vls); - return TCL_OK; + bu_vls_printf(&gedp->ged_result_str, "%d", length); +... [truncated message content] |
From: <sta...@us...> - 2008-08-01 16:44:46
|
Revision: 32201 http://brlcad.svn.sourceforge.net/brlcad/?rev=32201&view=rev Author: starseeker Date: 2008-08-01 16:44:54 +0000 (Fri, 01 Aug 2008) Log Message: ----------- Add w option to tire to allow modelers to avoid wheel/rim generation (also changes how air region is built accordingly) - eventually this option will also be used to specify different wheel types but right now the only options are on and off. Modified Paths: -------------- brlcad/trunk/NEWS brlcad/trunk/src/proc-db/tire.1 brlcad/trunk/src/proc-db/tire.c Modified: brlcad/trunk/NEWS =================================================================== --- brlcad/trunk/NEWS 2008-08-01 13:39:01 UTC (rev 32200) +++ brlcad/trunk/NEWS 2008-08-01 16:44:54 UTC (rev 32201) @@ -14,6 +14,7 @@ --- 2008-06-XX Release 7.13.0 --- ---------------------------------------------------------------------- +* add w option to tire to allow disabling wheel generation - C. Yapp * deprecated the mged '-n' option, use '-c' instead - Sean Morrison * added the ability to invoke mged through icons/menus - Sean Morrison * new -a option to mged 'killtree' for killing references - Bob Parker Modified: brlcad/trunk/src/proc-db/tire.1 =================================================================== --- brlcad/trunk/src/proc-db/tire.1 2008-08-01 13:39:01 UTC (rev 32200) +++ brlcad/trunk/src/proc-db/tire.1 2008-08-01 16:44:54 UTC (rev 32201) @@ -130,7 +130,12 @@ .TP .B \-u thickness# Specify tire thickness in mm. +.TP +.B \-w # +Specify wheel/rim type. If 0, include no wheel. As of 7.12.6 only +one wheel type is included by default. + .SH EXAMPLE The following will create a tire with width=185mm, ratio=65mm, and wheel diameter = 15in. The Modified: brlcad/trunk/src/proc-db/tire.c =================================================================== --- brlcad/trunk/src/proc-db/tire.c 2008-08-01 13:39:01 UTC (rev 32200) +++ brlcad/trunk/src/proc-db/tire.c 2008-08-01 16:44:54 UTC (rev 32201) @@ -1934,7 +1934,7 @@ } -void MakeAirRegion(struct rt_wdb (*file), char *suffix, fastf_t dyhub, fastf_t zhub) +void MakeAirRegion(struct rt_wdb (*file), char *suffix, fastf_t dyhub, fastf_t zhub, int usewheel) { struct wmember wheelair; struct bu_list air; @@ -1949,22 +1949,27 @@ bu_vls_printf(&str, "Air-Cyl%s.s", suffix); mk_rcc(file, bu_vls_addr(&str), origin, height, zhub); - BU_LIST_INIT(&wheelair.l); - bu_vls_trunc(&str, 0); - bu_vls_printf(&str, "Air-Cyl%s.s", suffix); - (void)mk_addmember(bu_vls_addr(&str), &wheelair.l, NULL, WMOP_UNION); - bu_vls_trunc(&str, 0); - bu_vls_printf(&str, "wheel-rim-solid%s.c", suffix); - (void)mk_addmember(bu_vls_addr(&str), &wheelair.l, NULL, WMOP_SUBTRACT); - bu_vls_trunc(&str, 0); - bu_vls_printf(&str, "wheel-air%s.c", suffix); - mk_lcomb(file, bu_vls_addr(&str), &wheelair, 0, NULL, NULL, NULL, 0); - + if (usewheel != 0) { + BU_LIST_INIT(&wheelair.l); + bu_vls_trunc(&str, 0); + bu_vls_printf(&str, "Air-Cyl%s.s", suffix); + (void)mk_addmember(bu_vls_addr(&str), &wheelair.l, NULL, WMOP_UNION); + bu_vls_trunc(&str, 0); + bu_vls_printf(&str, "wheel-rim-solid%s.c", suffix); + (void)mk_addmember(bu_vls_addr(&str), &wheelair.l, NULL, WMOP_SUBTRACT); + bu_vls_trunc(&str, 0); + bu_vls_printf(&str, "wheel-air%s.c", suffix); + mk_lcomb(file, bu_vls_addr(&str), &wheelair, 0, NULL, NULL, NULL, 0); + } + BU_LIST_INIT(&air); + + if (usewheel != 0) { + bu_vls_trunc(&str, 0); + bu_vls_printf(&str, "wheel-air%s.c", suffix); + (void)mk_addmember(bu_vls_addr(&str), &air, NULL, WMOP_UNION); + } bu_vls_trunc(&str, 0); - bu_vls_printf(&str, "wheel-air%s.c", suffix); - (void)mk_addmember(bu_vls_addr(&str), &air, NULL, WMOP_UNION); - bu_vls_trunc(&str, 0); bu_vls_printf(&str, "tire-cut%s.c", suffix); (void)mk_addmember(bu_vls_addr(&str), &air, NULL, WMOP_UNION); bu_vls_trunc(&str, 0); @@ -1974,13 +1979,13 @@ } /* Process command line arguments */ -int ReadArgs(int argc, char **argv, fastf_t *isoarray, fastf_t *overridearray, struct bu_vls *name, struct bu_vls *dimens, int *gen_name, int *treadtype, int *number_of_tread_patterns, fastf_t *tread_depth, fastf_t *tire_thickness, fastf_t *hub_width, int *pattern_type, fastf_t *zside1) +int ReadArgs(int argc, char **argv, fastf_t *isoarray, fastf_t *overridearray, struct bu_vls *name, struct bu_vls *dimens, int *gen_name, int *treadtype, int *number_of_tread_patterns, fastf_t *tread_depth, fastf_t *tire_thickness, fastf_t *hub_width, int *pattern_type, fastf_t *zside1, int *usewheel) { int c = 0; - char *options="d:n:c:g:j:p:s:t:u:W:R:D:ah"; + char *options="d:n:c:g:j:p:s:t:u:w:W:R:D:ah"; int d1, d2, d3; int count; - int tdtype, ptype; + int tdtype, ptype, usewheelc; float hwidth, treadep, tthickness, zsideh; float fd1, fd2, fd3; char spacer1, tiretype; @@ -2045,6 +2050,10 @@ sscanf(bu_optarg, "%f", &tthickness); *tire_thickness = tthickness; break; + case 'w': + sscanf(bu_optarg, "%d", &usewheelc); + *usewheel = usewheelc; + break; default: bu_log("%s: illegal option -- %c\n", bu_getprogname(), c); case 'h': @@ -2071,6 +2080,7 @@ struct bu_vls str; int gen_name = 0; int tread_type = 0; + int usewheel = 1; int number_of_tread_patterns = 30; fastf_t tread_depth = 11; fastf_t tire_thickness = 0; @@ -2095,7 +2105,7 @@ overridearray[2] = 0; /* Process arguments */ - ReadArgs(ac, av, isoarray, overridearray, &name, &dimen, &gen_name, &tread_type, &number_of_tread_patterns, &tread_depth, &tire_thickness, &hub_width, &pattern_type, &zside1); + ReadArgs(ac, av, isoarray, overridearray, &name, &dimen, &gen_name, &tread_type, &number_of_tread_patterns, &tread_depth, &tire_thickness, &hub_width, &pattern_type, &zside1, &usewheel); /* Calculate floating point value for tread depth */ fastf_t tread_depth_float = tread_depth/32.0; @@ -2194,10 +2204,11 @@ rim_thickness = tire_thickness/2.0; /* Make the wheel region*/ - MakeWheelRims(db_fp, bu_vls_addr(&dimen), dyhub, zhub, bolts, bolt_diam, bolt_circ_diam, spigot_diam, fixing_offset, bead_height, bead_width, rim_thickness); - + if (usewheel != 0) { + MakeWheelRims(db_fp, bu_vls_addr(&dimen), dyhub, zhub, bolts, bolt_diam, bolt_circ_diam, spigot_diam, fixing_offset, bead_height, bead_width, rim_thickness); + } /* Make the air region*/ - MakeAirRegion(db_fp, bu_vls_addr(&dimen), dyhub, zhub); + MakeAirRegion(db_fp, bu_vls_addr(&dimen), dyhub, zhub, usewheel); /* Final top level providing a single name for tire+wheel */ BU_LIST_INIT(&wheel_and_tire.l); @@ -2207,9 +2218,11 @@ bu_vls_trunc(&str, 0); bu_vls_printf(&str, "air%s.r", bu_vls_addr(&dimen)); (void)mk_addmember(bu_vls_addr(&str), &wheel_and_tire.l, NULL, WMOP_UNION); - bu_vls_trunc(&str, 0); - bu_vls_printf(&str, "wheel%s.r",bu_vls_addr(&dimen)); - (void)mk_addmember(bu_vls_addr(&str), &wheel_and_tire.l, NULL, WMOP_UNION); + if (usewheel != 0) { + bu_vls_trunc(&str, 0); + bu_vls_printf(&str, "wheel%s.r",bu_vls_addr(&dimen)); + (void)mk_addmember(bu_vls_addr(&str), &wheel_and_tire.l, NULL, WMOP_UNION); + } mk_lcomb(db_fp, bu_vls_addr(&name), &wheel_and_tire, 0, NULL, NULL, NULL, 0); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <br...@us...> - 2008-08-02 10:57:42
|
Revision: 32221 http://brlcad.svn.sourceforge.net/brlcad/?rev=32221&view=rev Author: brlcad Date: 2008-08-02 10:57:50 +0000 (Sat, 02 Aug 2008) Log Message: ----------- the deprecated M_SQRT_DIV2 and PI defines fit the criteria for minimally impacting given their deprecation spans a minor release and they have fully equivalent replacements (M_SQRT1_2 and M_PI respectively). make them now obsolete. Modified Paths: -------------- brlcad/trunk/doc/deprecation.txt brlcad/trunk/include/vmath.h Modified: brlcad/trunk/doc/deprecation.txt =================================================================== --- brlcad/trunk/doc/deprecation.txt 2008-08-02 10:53:48 UTC (rev 32220) +++ brlcad/trunk/doc/deprecation.txt 2008-08-02 10:57:50 UTC (rev 32221) @@ -60,8 +60,6 @@ ELEMENTS_PER_PT -> ELEMENTS_PER_POINT HVECT_LEN -> ELEMENTS_PER_HVECT HPT_LEN -> ELEMENTS_PER_HPOINT - M_SQRT2_DIV2 -> M_SQRT1_2 - PI -> M_PI srt/librt/cmd.c rt_split_cmd() -> bu_argv_from_string() [deprecated 7.12] src/rt/viewarea.c @@ -94,6 +92,12 @@ * OBSOLETE * ************ +7.14.0 +------ +include/vmath.h + PI -> M_PI + M_SQRT2_DIV2 -> M_SQRT1_2 + 7.12.4 ------ include/raytrace.h Modified: brlcad/trunk/include/vmath.h =================================================================== --- brlcad/trunk/include/vmath.h 2008-08-02 10:53:48 UTC (rev 32220) +++ brlcad/trunk/include/vmath.h 2008-08-02 10:57:50 UTC (rev 32221) @@ -131,9 +131,6 @@ #ifndef M_SQRT1_2 # define M_SQRT1_2 0.70710678118654752440084436210 /**< sqrt(1/2) */ #endif -#ifndef M_SQRT2_DIV2 -# define M_SQRT2_DIV2 0.70710678118654752440 /**< sqrt(2)/2 , DEPRECATED - use M_SQRT1_2 */ -#endif #ifndef M_SQRT2 # define M_SQRT2 1.41421356237309504880168872421 /**< sqrt(2) */ #endif @@ -144,9 +141,6 @@ # define M_SQRTPI 1.77245385090551602729816748334 /**< sqrt(pi) */ #endif -#ifndef PI -# define PI M_PI /**< DEPRECATED - do not use */ -#endif #ifndef DEG2RAD # define DEG2RAD 0.017453292519943295769236907684 /**< pi/180 */ #endif This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <br...@us...> - 2008-08-04 08:53:52
|
Revision: 32240 http://brlcad.svn.sourceforge.net/brlcad/?rev=32240&view=rev Author: brlcad Date: 2008-08-04 08:53:56 +0000 (Mon, 04 Aug 2008) Log Message: ----------- Crowd wave time! Bring the new INTAVAL converter (tgf-g) into the default fold for compilation/installation since the legalities and copyright issues have been sorted out. need to update our docs to reflect the granted rights (i.e. that they are in no way giving up any rights on their ability to hold copyright or make changes to the code on their end) but since it conforms, we can add it to the default compile now. excellentness. Modified Paths: -------------- brlcad/trunk/NEWS brlcad/trunk/configure.ac brlcad/trunk/src/conv/Makefile.am brlcad/trunk/src/other/Makefile.am Added Paths: ----------- brlcad/trunk/src/conv/intaval/ brlcad/trunk/src/conv/intaval/Makefile.am brlcad/trunk/src/conv/intaval/glob.h brlcad/trunk/src/conv/intaval/read_dra.cpp brlcad/trunk/src/conv/intaval/read_dra.h brlcad/trunk/src/conv/intaval/readme.txt brlcad/trunk/src/conv/intaval/regtab.cpp brlcad/trunk/src/conv/intaval/regtab.h brlcad/trunk/src/conv/intaval/tgf-g.cpp brlcad/trunk/src/conv/intaval/write_brl.cpp brlcad/trunk/src/conv/intaval/write_brl.h Removed Paths: ------------- brlcad/trunk/src/conv/intaval/Makefile.am brlcad/trunk/src/conv/intaval/glob.h brlcad/trunk/src/conv/intaval/read_dra.cpp brlcad/trunk/src/conv/intaval/read_dra.h brlcad/trunk/src/conv/intaval/readme.txt brlcad/trunk/src/conv/intaval/regtab.cpp brlcad/trunk/src/conv/intaval/regtab.h brlcad/trunk/src/conv/intaval/tgf-g.cpp brlcad/trunk/src/conv/intaval/write_brl.cpp brlcad/trunk/src/conv/intaval/write_brl.h brlcad/trunk/src/other/intaval/ Modified: brlcad/trunk/NEWS =================================================================== --- brlcad/trunk/NEWS 2008-08-04 08:47:30 UTC (rev 32239) +++ brlcad/trunk/NEWS 2008-08-04 08:53:56 UTC (rev 32240) @@ -14,6 +14,7 @@ --- 2008-06-XX Release 7.13.0 --- ---------------------------------------------------------------------- +* integrated tgf-g with the default compile/install - Daniel Roßberg * add w option to tire to allow disabling wheel generation - C. Yapp * deprecated the mged '-n' option, use '-c' instead - Sean Morrison * added the ability to invoke mged through icons/menus - Sean Morrison Modified: brlcad/trunk/configure.ac =================================================================== --- brlcad/trunk/configure.ac 2008-08-04 08:47:30 UTC (rev 32239) +++ brlcad/trunk/configure.ac 2008-08-04 08:53:56 UTC (rev 32240) @@ -3826,6 +3826,7 @@ src/conv/Makefile src/conv/comgeom/Makefile src/conv/iges/Makefile + src/conv/intaval/Makefile src/conv/jack/Makefile src/conv/off/Makefile src/conv/patch/Makefile @@ -3907,7 +3908,6 @@ src/other/incrTcl/itk/library/Makefile src/other/incrTcl/itk/pkgIndex.tcl src/other/incrTcl/tools/Makefile - src/other/intaval/Makefile src/other/iwidgets/Makefile src/other/iwidgets/doc/Makefile src/other/iwidgets/generic/Makefile Modified: brlcad/trunk/src/conv/Makefile.am =================================================================== --- brlcad/trunk/src/conv/Makefile.am 2008-08-04 08:47:30 UTC (rev 32239) +++ brlcad/trunk/src/conv/Makefile.am 2008-08-04 08:53:56 UTC (rev 32240) @@ -31,6 +31,7 @@ 3dm \ comgeom \ iges \ + intaval \ jack \ off \ patch Deleted: brlcad/trunk/src/conv/intaval/Makefile.am =================================================================== --- brlcad/trunk/src/other/intaval/Makefile.am 2008-08-01 22:26:31 UTC (rev 32211) +++ brlcad/trunk/src/conv/intaval/Makefile.am 2008-08-04 08:53:56 UTC (rev 32240) @@ -1,28 +0,0 @@ -# $Id$ - -EXTRA_PROGRAMS = tgf-g - -AM_CPPFLAGS = ${TCL_CPPFLAGS} ${OPENNURBS_CPPFLAGS} - -tgf_g_SOURCES = \ - read_dra.cpp \ - regtab.cpp \ - tgf-g.cpp \ - write_brl.cpp - -tgf_g_LDADD = ${WDB} - -noinst_HEADERS = glob.h \ - read_dra.h \ - regtab.h \ - write_brl.h - -EXTRA_DIST = readme.txt - -DEPS=src/libwdb src/librt - -include $(top_srcdir)/misc/Makefile.defs - -FAST_OBJECTS = \ - $(tgf_g_OBJECTS) \ - $(bin_PROGRAMS) Copied: brlcad/trunk/src/conv/intaval/Makefile.am (from rev 32235, brlcad/trunk/src/other/intaval/Makefile.am) =================================================================== --- brlcad/trunk/src/conv/intaval/Makefile.am (rev 0) +++ brlcad/trunk/src/conv/intaval/Makefile.am 2008-08-04 08:53:56 UTC (rev 32240) @@ -0,0 +1,27 @@ + +bin_PROGRAMS = tgf-g + +AM_CPPFLAGS = ${TCL_CPPFLAGS} ${OPENNURBS_CPPFLAGS} + +tgf_g_SOURCES = \ + read_dra.cpp \ + regtab.cpp \ + tgf-g.cpp \ + write_brl.cpp + +tgf_g_LDADD = ${WDB} + +noinst_HEADERS = glob.h \ + read_dra.h \ + regtab.h \ + write_brl.h + +EXTRA_DIST = readme.txt + +DEPS=src/libwdb src/librt + +include $(top_srcdir)/misc/Makefile.defs + +FAST_OBJECTS = \ + $(tgf_g_OBJECTS) \ + $(bin_PROGRAMS) Deleted: brlcad/trunk/src/conv/intaval/glob.h =================================================================== --- brlcad/trunk/src/other/intaval/glob.h 2008-08-01 22:26:31 UTC (rev 32211) +++ brlcad/trunk/src/conv/intaval/glob.h 2008-08-04 08:53:56 UTC (rev 32240) @@ -1,70 +0,0 @@ -/* G L O B . H - * BRL-CAD - * - * Copyright (c) 2008 United States Government as represented by - * the U.S. Army Research Laboratory. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * version 2.1 as published by the Free Software Foundation. - * - * This library is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this file; see the file named COPYING for more - * information. - */ -/** @file glob.h - * - * INTAVAL Target Geometry File to BRL-CAD converter: - * global declarations - * - * Origin - - * TNO (Netherlands) - * IABG mbH (Germany) - */ - -#ifndef GLOB_INCLUDED -#define GLOB_INCLUDED - -#include "common.h" - -#include "vmath.h" - - -const size_t LINELEN = 128; -const size_t MAX_TRIANGLES = 1000; -const size_t MAX_NPTS = 3 * MAX_TRIANGLES; - -typedef int I_Point_t[3]; - - -struct Form { - int id; - int compnr; - int s_compnr; // surrounding component number - size_t npts; - - union { - I_Point_t pt[MAX_NPTS]; - - struct { - size_t num_vertices; - size_t num_faces; - int vertices[MAX_NPTS * 3]; // points[3][num_vertices] - int faces[MAX_TRIANGLES * 3]; // faces[3][num_faces] - } bot; - }; - - int tr_vec[3]; - int thickness; - int width; - int radius1; - int radius2; -}; - - -#endif // GLOB_INCLUDED Copied: brlcad/trunk/src/conv/intaval/glob.h (from rev 32235, brlcad/trunk/src/other/intaval/glob.h) =================================================================== --- brlcad/trunk/src/conv/intaval/glob.h (rev 0) +++ brlcad/trunk/src/conv/intaval/glob.h 2008-08-04 08:53:56 UTC (rev 32240) @@ -0,0 +1,70 @@ +/* G L O B . H + * BRL-CAD + * + * Copyright (c) 2008 United States Government as represented by + * the U.S. Army Research Laboratory. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * version 2.1 as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this file; see the file named COPYING for more + * information. + */ +/** @file glob.h + * + * INTAVAL Target Geometry File to BRL-CAD converter: + * global declarations + * + * Origin - + * TNO (Netherlands) + * IABG mbH (Germany) + */ + +#ifndef GLOB_INCLUDED +#define GLOB_INCLUDED + +#include "common.h" + +#include "vmath.h" + + +const size_t LINELEN = 128; +const size_t MAX_TRIANGLES = 1000; +const size_t MAX_NPTS = 3 * MAX_TRIANGLES; + +typedef int I_Point_t[3]; + + +struct Form { + int id; + int compnr; + int s_compnr; // surrounding component number + size_t npts; + + union { + I_Point_t pt[MAX_NPTS]; + + struct { + size_t num_vertices; + size_t num_faces; + int vertices[MAX_NPTS * 3]; // points[3][num_vertices] + int faces[MAX_TRIANGLES * 3]; // faces[3][num_faces] + } bot; + }; + + int tr_vec[3]; + int thickness; + int width; + int radius1; + int radius2; +}; + + +#endif // GLOB_INCLUDED Deleted: brlcad/trunk/src/conv/intaval/read_dra.cpp =================================================================== --- brlcad/trunk/src/other/intaval/read_dra.cpp 2008-08-01 22:26:31 UTC (rev 32211) +++ brlcad/trunk/src/conv/intaval/read_dra.cpp 2008-08-04 08:53:56 UTC (rev 32240) @@ -1,466 +0,0 @@ -/* R E A D _ D R A . C P P - * BRL-CAD - * - * Copyright (c) 2008 United States Government as represented by - * the U.S. Army Research Laboratory. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * version 2.1 as published by the Free Software Foundation. - * - * This library is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this file; see the file named COPYING for more - * information. - */ -/** @file read_dra.cpp - * - * INTAVAL Target Geometry File to BRL-CAD converter: - * reads the INTAVAL data in - * - * Origin - - * TNO (Netherlands) - * IABG mbH (Germany) - */ - -#include <iostream> - -#include "glob.h" -#include "regtab.h" -#include "write_brl.h" -#include "read_dra.h" - - -size_t addBotPoint -( - Form& form, - int x, - int y, - int z -) { - size_t ret = form.bot.num_vertices; - - // search for duplicate vertex - for(size_t i = 0; i < form.bot.num_vertices; ++i) { - if ((form.bot.vertices[i * 3] == x) && - (form.bot.vertices[i * 3 + 1] == y) && - (form.bot.vertices[i * 3 + 2] == z)) { - ret = i; - break; - } - } - - if (ret == form.bot.num_vertices) { - // add a new vertex - form.bot.vertices[form.bot.num_vertices * 3] = x; - form.bot.vertices[form.bot.num_vertices * 3 + 1] = y; - form.bot.vertices[form.bot.num_vertices * 3 + 2] = z; - - ++form.bot.num_vertices; - } - - return ret; // return index of vertex -} - - -void addBotTriangle -( - Form& form, - int a, - int b, - int c -) { - // all three points on a line? - int ax = form.bot.vertices[a * 3] - form.bot.vertices[b * 3]; - int ay = form.bot.vertices[a * 3 + 1] - form.bot.vertices[b * 3 + 1]; - int az = form.bot.vertices[a * 3 + 2] - form.bot.vertices[b * 3 + 2]; - int bx = form.bot.vertices[a * 3] - form.bot.vertices[c * 3]; - int by = form.bot.vertices[a * 3 + 1] - form.bot.vertices[c * 3 + 1]; - int bz = form.bot.vertices[a * 3 + 2] - form.bot.vertices[c * 3 + 2]; - - int di = ay * bz - az * by; - int dj = az * bx - ax * bz; - int dk = ax * by - ay * bx; - - if ((di != 0) || (dj != 0) || (dk != 0)) - addTriangle(form.bot.faces, form.bot.num_faces, a, b, c); -} - - -void readCadTypeBot -( - std::istream& is, - Form& form -) { - form.bot.num_faces = 0; // unknown yet how many different faces are used, there may be some degenerated ones - form.bot.num_vertices = 0; // unknown yet how many different points are used - - for(size_t i = 0; i < form.npts; ++i) { - int x; - int y; - int z; - - is >> x >> y >> z; - int a = addBotPoint(form, x, y, z); - is >> x >> y >> z; - int b = addBotPoint(form, x, y, z); - is >> x >> y >> z; - int c = addBotPoint(form, x, y, z); - - addBotTriangle(form, a, b, c); - } -} - - -void readLongFormBot -( - std::istream& is, - Form& form -) { - form.bot.num_faces = 0; // unknown yet how many different faces are used - form.bot.num_vertices = 0; // unknown yet how many different points are used - - int x; - int y; - int z; - - is >> x >> y >> z; - int a = addBotPoint(form, x, y, z); - is >> x >> y >> z; - int b = addBotPoint(form, x, y, z); - is >> x >> y >> z; - int c = addBotPoint(form, x, y, z); - - addBotTriangle(form, a, b, c); - - for (size_t i = 3; i < form.npts; ++i) { - a = b; - b = c; - - is >> x >> y >> z; - c = addBotPoint(form, x, y, z); - - addBotTriangle(form, a, b, c); - } -} - - -void readCadTypeBox -( - std::istream& is, - Form& form -) { - is >> form.compnr; - is >> form.s_compnr; - - form.npts = -form.id - 20000; - - readCadTypeBot(is, form); - - std::cout << "CadTypeBox (" - << form.compnr - << ") with " - << form.npts - << " triangles" - << std::endl; -} - - -void readRingModeBox -( - std::istream& is, - Form& form -) { - is >> form.compnr; - is >> form.s_compnr; - is >> form.thickness; - is >> form.width; - - form.npts = -form.id - 10000; - - for (size_t i = 0; i < form.npts; ++i) - is >> form.pt[i][0] >> form.pt[i][1] >> form.pt[i][2]; - - std::cout << "RingModeBox (" - << form.compnr - << ") with " - << form.npts - << " points" - << std::endl; -} - - -void readPlateModeBox -( - std::istream& is, - Form& form -) { - is >> form.compnr; - is >> form.s_compnr; - is >> form.thickness; - - form.npts = -form.id; - - readLongFormBot(is, form); - - std::cout << "PlateModeBox (" - << form.compnr - << ") with " - << form.npts - << " points" - << std::endl; -} - - -void readPipe -( - std::istream& is, - Form& form -) { - is >> form.compnr; - is >> form.s_compnr; - - if (form.id == 1) - form.npts = 2; - else - is >> form.npts; - - for (size_t i = 0; i<form.npts; ++i) - is >> form.pt[i][0] >> form.pt[i][1] >> form.pt[i][2]; - - is >> form.radius1; - - std::cout << "Pipe (" - << form.compnr - << ") with " - << form.npts - << " points" - << std::endl; -} - - -void readRectangularBox -( - std::istream& is, - Form& form -) { - is >> form.compnr; - is >> form.s_compnr; - - form.npts = 2; - - for (size_t i = 0; i < form.npts; ++i) - is >> form.pt[i][0] >> form.pt[i][1] >> form.pt[i][2]; - - std::cout << "RectangularBox (" - << form.compnr - << ") with " - << form.npts - << " points" - << std::endl; -} - - -void readCone -( - std::istream& is, - Form& form -) { - is >> form.compnr; - is >> form.s_compnr; - - form.npts = 2; - - is >> form.pt[0][0] >> form.pt[0][1] >> form.pt[0][2]; - is >> form.radius1; - is >> form.pt[1][0] >> form.pt[1][1] >> form.pt[1][2]; - is >> form.radius2; - - std::cout << "Cone (" - << form.compnr - << ") with " - << form.npts - << " points" - << std::endl; -} - - -void readCylinder -( - std::istream& is, - Form& form -) { - is >> form.compnr; - is >> form.s_compnr; - - form.npts = 2; - - for (size_t i = 0; i < form.npts; ++i) - is >> form.pt[i][0] >> form.pt[i][1] >> form.pt[i][2]; - - is >> form.radius1; - - std::cout << "Cylinder (" - << form.compnr - << ") with " - << form.npts - << " points" - << std::endl; -} - - -void readArb8 -( - std::istream& is, - Form& form -) { - is >> form.compnr; - is >> form.s_compnr; - - form.npts = 8; - - for (size_t i = 0; i < form.npts; ++i) - is >> form.pt[i][0] >> form.pt[i][1] >> form.pt[i][2]; - - std::cout << "Arb8 (" - << form.compnr - << ") with " - << form.npts - << " points" - << std::endl; -} - - -void readLongForm -( - std::istream& is, - Form& form -) { - is >> form.compnr; - is >> form.s_compnr; - - form.npts = form.id; - - readLongFormBot(is, form); - - std::cout << "LongForm (" - << form.compnr - << ") with " - << form.npts - << " points" - << std::endl; -} - - -// -// Does the conversion -// -void conv -( - std::istream& is, - rt_wdb* wdbp -) { - char title[LINELEN]; - is.getline(title, LINELEN); - - if (is) { - writeTitle(wdbp, title); - - Form form; - bool translatedShape = false; - int id; - - is >> id; - - while (is) { - if (id == 0) { - // identical shape, dimensions and orientation - // form is grotendeels al gevuld - // lees compnr en s_compnr en translatie - // alleen schrijfactie voor form.id nog nodig - - is >> form.compnr; - is >> form.s_compnr; - - is >> form.tr_vec[0] >> form.tr_vec[1] >> form.tr_vec[2]; - translatedShape = true; - - std::cout << "Identical shape" << std::endl; - } - else { - form.id = id; - translatedShape = false; - } - - if (form.id <= -20000) { - // CAD type box - if (!translatedShape) - readCadTypeBox(is, form); - - writeSolidBot(wdbp, form, translatedShape); - } - else if (form.id <= -10000) { - // ring mode box - if (!translatedShape) - readRingModeBox(is, form); - - writeRingModeBox(wdbp, form, translatedShape); - } - else if (form.id <= -3) { - // plate mode box - if (!translatedShape) - readPlateModeBox(is, form); - - writePlateBot(wdbp, form, translatedShape); - } - else if ((form.id == -1) || (form.id == 1)) { - // pipe - if (!translatedShape) - readPipe(is, form); - - writePipe(wdbp, form, translatedShape); - } - else if (form.id == 2) { - // rectangular box - if (!translatedShape) - readRectangularBox(is, form); - - writeRectangularBox(wdbp, form, translatedShape); - } - else if (form.id == 3) { - // cone - if (!translatedShape) - readCone(is, form); - - writeCone(wdbp, form, translatedShape); - } - else if (form.id == 5) { - // cylinder - if (!translatedShape) - readCylinder(is, form); - - writeCylinder(wdbp, form, translatedShape); - } - else if (form.id == 8) { - // arb8 - if (!translatedShape) - readArb8(is, form); - - writeArb8(wdbp, form, translatedShape); - } - else { - // long form - if (!translatedShape) - readLongForm(is, form); - - writeSolidBot(wdbp, form, translatedShape); - } - - is >> id; - } - } -} Copied: brlcad/trunk/src/conv/intaval/read_dra.cpp (from rev 32235, brlcad/trunk/src/other/intaval/read_dra.cpp) =================================================================== --- brlcad/trunk/src/conv/intaval/read_dra.cpp (rev 0) +++ brlcad/trunk/src/conv/intaval/read_dra.cpp 2008-08-04 08:53:56 UTC (rev 32240) @@ -0,0 +1,466 @@ +/* R E A D _ D R A . C P P + * BRL-CAD + * + * Copyright (c) 2008 United States Government as represented by + * the U.S. Army Research Laboratory. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * version 2.1 as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this file; see the file named COPYING for more + * information. + */ +/** @file read_dra.cpp + * + * INTAVAL Target Geometry File to BRL-CAD converter: + * reads the INTAVAL data in + * + * Origin - + * TNO (Netherlands) + * IABG mbH (Germany) + */ + +#include <iostream> + +#include "glob.h" +#include "regtab.h" +#include "write_brl.h" +#include "read_dra.h" + + +size_t addBotPoint +( + Form& form, + int x, + int y, + int z +) { + size_t ret = form.bot.num_vertices; + + // search for duplicate vertex + for(size_t i = 0; i < form.bot.num_vertices; ++i) { + if ((form.bot.vertices[i * 3] == x) && + (form.bot.vertices[i * 3 + 1] == y) && + (form.bot.vertices[i * 3 + 2] == z)) { + ret = i; + break; + } + } + + if (ret == form.bot.num_vertices) { + // add a new vertex + form.bot.vertices[form.bot.num_vertices * 3] = x; + form.bot.vertices[form.bot.num_vertices * 3 + 1] = y; + form.bot.vertices[form.bot.num_vertices * 3 + 2] = z; + + ++form.bot.num_vertices; + } + + return ret; // return index of vertex +} + + +void addBotTriangle +( + Form& form, + int a, + int b, + int c +) { + // all three points on a line? + int ax = form.bot.vertices[a * 3] - form.bot.vertices[b * 3]; + int ay = form.bot.vertices[a * 3 + 1] - form.bot.vertices[b * 3 + 1]; + int az = form.bot.vertices[a * 3 + 2] - form.bot.vertices[b * 3 + 2]; + int bx = form.bot.vertices[a * 3] - form.bot.vertices[c * 3]; + int by = form.bot.vertices[a * 3 + 1] - form.bot.vertices[c * 3 + 1]; + int bz = form.bot.vertices[a * 3 + 2] - form.bot.vertices[c * 3 + 2]; + + int di = ay * bz - az * by; + int dj = az * bx - ax * bz; + int dk = ax * by - ay * bx; + + if ((di != 0) || (dj != 0) || (dk != 0)) + addTriangle(form.bot.faces, form.bot.num_faces, a, b, c); +} + + +void readCadTypeBot +( + std::istream& is, + Form& form +) { + form.bot.num_faces = 0; // unknown yet how many different faces are used, there may be some degenerated ones + form.bot.num_vertices = 0; // unknown yet how many different points are used + + for(size_t i = 0; i < form.npts; ++i) { + int x; + int y; + int z; + + is >> x >> y >> z; + int a = addBotPoint(form, x, y, z); + is >> x >> y >> z; + int b = addBotPoint(form, x, y, z); + is >> x >> y >> z; + int c = addBotPoint(form, x, y, z); + + addBotTriangle(form, a, b, c); + } +} + + +void readLongFormBot +( + std::istream& is, + Form& form +) { + form.bot.num_faces = 0; // unknown yet how many different faces are used + form.bot.num_vertices = 0; // unknown yet how many different points are used + + int x; + int y; + int z; + + is >> x >> y >> z; + int a = addBotPoint(form, x, y, z); + is >> x >> y >> z; + int b = addBotPoint(form, x, y, z); + is >> x >> y >> z; + int c = addBotPoint(form, x, y, z); + + addBotTriangle(form, a, b, c); + + for (size_t i = 3; i < form.npts; ++i) { + a = b; + b = c; + + is >> x >> y >> z; + c = addBotPoint(form, x, y, z); + + addBotTriangle(form, a, b, c); + } +} + + +void readCadTypeBox +( + std::istream& is, + Form& form +) { + is >> form.compnr; + is >> form.s_compnr; + + form.npts = -form.id - 20000; + + readCadTypeBot(is, form); + + std::cout << "CadTypeBox (" + << form.compnr + << ") with " + << form.npts + << " triangles" + << std::endl; +} + + +void readRingModeBox +( + std::istream& is, + Form& form +) { + is >> form.compnr; + is >> form.s_compnr; + is >> form.thickness; + is >> form.width; + + form.npts = -form.id - 10000; + + for (size_t i = 0; i < form.npts; ++i) + is >> form.pt[i][0] >> form.pt[i][1] >> form.pt[i][2]; + + std::cout << "RingModeBox (" + << form.compnr + << ") with " + << form.npts + << " points" + << std::endl; +} + + +void readPlateModeBox +( + std::istream& is, + Form& form +) { + is >> form.compnr; + is >> form.s_compnr; + is >> form.thickness; + + form.npts = -form.id; + + readLongFormBot(is, form); + + std::cout << "PlateModeBox (" + << form.compnr + << ") with " + << form.npts + << " points" + << std::endl; +} + + +void readPipe +( + std::istream& is, + Form& form +) { + is >> form.compnr; + is >> form.s_compnr; + + if (form.id == 1) + form.npts = 2; + else + is >> form.npts; + + for (size_t i = 0; i<form.npts; ++i) + is >> form.pt[i][0] >> form.pt[i][1] >> form.pt[i][2]; + + is >> form.radius1; + + std::cout << "Pipe (" + << form.compnr + << ") with " + << form.npts + << " points" + << std::endl; +} + + +void readRectangularBox +( + std::istream& is, + Form& form +) { + is >> form.compnr; + is >> form.s_compnr; + + form.npts = 2; + + for (size_t i = 0; i < form.npts; ++i) + is >> form.pt[i][0] >> form.pt[i][1] >> form.pt[i][2]; + + std::cout << "RectangularBox (" + << form.compnr + << ") with " + << form.npts + << " points" + << std::endl; +} + + +void readCone +( + std::istream& is, + Form& form +) { + is >> form.compnr; + is >> form.s_compnr; + + form.npts = 2; + + is >> form.pt[0][0] >> form.pt[0][1] >> form.pt[0][2]; + is >> form.radius1; + is >> form.pt[1][0] >> form.pt[1][1] >> form.pt[1][2]; + is >> form.radius2; + + std::cout << "Cone (" + << form.compnr + << ") with " + << form.npts + << " points" + << std::endl; +} + + +void readCylinder +( + std::istream& is, + Form& form +) { + is >> form.compnr; + is >> form.s_compnr; + + form.npts = 2; + + for (size_t i = 0; i < form.npts; ++i) + is >> form.pt[i][0] >> form.pt[i][1] >> form.pt[i][2]; + + is >> form.radius1; + + std::cout << "Cylinder (" + << form.compnr + << ") with " + << form.npts + << " points" + << std::endl; +} + + +void readArb8 +( + std::istream& is, + Form& form +) { + is >> form.compnr; + is >> form.s_compnr; + + form.npts = 8; + + for (size_t i = 0; i < form.npts; ++i) + is >> form.pt[i][0] >> form.pt[i][1] >> form.pt[i][2]; + + std::cout << "Arb8 (" + << form.compnr + << ") with " + << form.npts + << " points" + << std::endl; +} + + +void readLongForm +( + std::istream& is, + Form& form +) { + is >> form.compnr; + is >> form.s_compnr; + + form.npts = form.id; + + readLongFormBot(is, form); + + std::cout << "LongForm (" + << form.compnr + << ") with " + << form.npts + << " points" + << std::endl; +} + + +// +// Does the conversion +// +void conv +( + std::istream& is, + rt_wdb* wdbp +) { + char title[LINELEN]; + is.getline(title, LINELEN); + + if (is) { + writeTitle(wdbp, title); + + Form form; + bool translatedShape = false; + int id; + + is >> id; + + while (is) { + if (id == 0) { + // identical shape, dimensions and orientation + // form is grotendeels al gevuld + // lees compnr en s_compnr en translatie + // alleen schrijfactie voor form.id nog nodig + + is >> form.compnr; + is >> form.s_compnr; + + is >> form.tr_vec[0] >> form.tr_vec[1] >> form.tr_vec[2]; + translatedShape = true; + + std::cout << "Identical shape" << std::endl; + } + else { + form.id = id; + translatedShape = false; + } + + if (form.id <= -20000) { + // CAD type box + if (!translatedShape) + readCadTypeBox(is, form); + + writeSolidBot(wdbp, form, translatedShape); + } + else if (form.id <= -10000) { + // ring mode box + if (!translatedShape) + readRingModeBox(is, form); + + writeRingModeBox(wdbp, form, translatedShape); + } + else if (form.id <= -3) { + // plate mode box + if (!translatedShape) + readPlateModeBox(is, form); + + writePlateBot(wdbp, form, translatedShape); + } + else if ((form.id == -1) || (form.id == 1)) { + // pipe + if (!translatedShape) + readPipe(is, form); + + writePipe(wdbp, form, translatedShape); + } + else if (form.id == 2) { + // rectangular box + if (!translatedShape) + readRectangularBox(is, form); + + writeRectangularBox(wdbp, form, translatedShape); + } + else if (form.id == 3) { + // cone + if (!translatedShape) + readCone(is, form); + + writeCone(wdbp, form, translatedShape); + } + else if (form.id == 5) { + // cylinder + if (!translatedShape) + readCylinder(is, form); + + writeCylinder(wdbp, form, translatedShape); + } + else if (form.id == 8) { + // arb8 + if (!translatedShape) + readArb8(is, form); + + writeArb8(wdbp, form, translatedShape); + } + else { + // long form + if (!translatedShape) + readLongForm(is, form); + + writeSolidBot(wdbp, form, translatedShape); + } + + is >> id; + } + } +} Deleted: brlcad/trunk/src/conv/intaval/read_dra.h =================================================================== --- brlcad/trunk/src/other/intaval/read_dra.h 2008-08-01 22:26:31 UTC (rev 32211) +++ brlcad/trunk/src/conv/intaval/read_dra.h 2008-08-04 08:53:56 UTC (rev 32240) @@ -1,43 +0,0 @@ -/* R E A D _ D R A . H - * BRL-CAD - * - * Copyright (c) 2008 United States Government as represented by - * the U.S. Army Research Laboratory. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * version 2.1 as published by the Free Software Foundation. - * - * This library is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this file; see the file named COPYING for more - * information. - */ -/** @file read_dra.h - * - * INTAVAL Target Geometry File to BRL-CAD converter: - * INTAVAL data reading function declaration - * - * Origin - - * TNO (Netherlands) - * IABG mbH (Germany) - */ - -#ifndef READ_DRA_INCLUDED -#define READ_DRA_INCLUDED - -#include <istream> - - -void conv -( - std::istream& is, - rt_wdb* wdbp -); - - -#endif // READ_DRA_INCLUDED Copied: brlcad/trunk/src/conv/intaval/read_dra.h (from rev 32235, brlcad/trunk/src/other/intaval/read_dra.h) =================================================================== --- brlcad/trunk/src/conv/intaval/read_dra.h (rev 0) +++ brlcad/trunk/src/conv/intaval/read_dra.h 2008-08-04 08:53:56 UTC (rev 32240) @@ -0,0 +1,43 @@ +/* R E A D _ D R A . H + * BRL-CAD + * + * Copyright (c) 2008 United States Government as represented by + * the U.S. Army Research Laboratory. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * version 2.1 as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this file; see the file named COPYING for more + * information. + */ +/** @file read_dra.h + * + * INTAVAL Target Geometry File to BRL-CAD converter: + * INTAVAL data reading function declaration + * + * Origin - + * TNO (Netherlands) + * IABG mbH (Germany) + */ + +#ifndef READ_DRA_INCLUDED +#define READ_DRA_INCLUDED + +#include <istream> + + +void conv +( + std::istream& is, + rt_wdb* wdbp +); + + +#endif // READ_DRA_INCLUDED Deleted: brlcad/trunk/src/conv/intaval/readme.txt =================================================================== --- brlcad/trunk/src/other/intaval/readme.txt 2008-08-01 22:26:31 UTC (rev 32211) +++ brlcad/trunk/src/conv/intaval/readme.txt 2008-08-04 08:53:56 UTC (rev 32240) @@ -1,20 +0,0 @@ -(replacement for a manual page) - -Usage: - tgf-g.exe <INTAVAL material file name> <INTAVAL geometry file name> <BRL-CAD file name (will be created)> - -The conversion will transfer the primitives in the following way: - Long Form -----------> Bag of Triangles (Solid Mode) - Two-Point Box -------> Rectangular Parallelepiped - Three-Point Box -----> Truncated Right Circular Cone - Five-Point Box ------> Right Circular Cylinder - Eight-Point Box -----> Arbitrary Polyhedron with 8 Vertices - Zero-Point Box ------> (Translation of Previous Solid) - One-Point Box -------> Right Circular Cylinder - Minus One-Point Box -> Pipe - Minus N Point Box ---> Bag of Triangles (Plate Mode) - Ring Mode Box -------> Bag of Triangles (Plate Mode) - CAD Type Box --------> Bag of Triangles (Solid Mode) - -TGF is an INTAVAL Target Geometry File -DRA is the Defence Research Agency established by the UK Ministry of Defence Copied: brlcad/trunk/src/conv/intaval/readme.txt (from rev 32235, brlcad/trunk/src/other/intaval/readme.txt) =================================================================== --- brlcad/trunk/src/conv/intaval/readme.txt (rev 0) +++ brlcad/trunk/src/conv/intaval/readme.txt 2008-08-04 08:53:56 UTC (rev 32240) @@ -0,0 +1,20 @@ +(replacement for a manual page) + +Usage: + tgf-g.exe <INTAVAL material file name> <INTAVAL geometry file name> <BRL-CAD file name (will be created)> + +The conversion will transfer the primitives in the following way: + Long Form -----------> Bag of Triangles (Solid Mode) + Two-Point Box -------> Rectangular Parallelepiped + Three-Point Box -----> Truncated Right Circular Cone + Five-Point Box ------> Right Circular Cylinder + Eight-Point Box -----> Arbitrary Polyhedron with 8 Vertices + Zero-Point Box ------> (Translation of Previous Solid) + One-Point Box -------> Right Circular Cylinder + Minus One-Point Box -> Pipe + Minus N Point Box ---> Bag of Triangles (Plate Mode) + Ring Mode Box -------> Bag of Triangles (Plate Mode) + CAD Type Box --------> Bag of Triangles (Solid Mode) + +TGF is an INTAVAL Target Geometry File +DRA is the Defence Research Agency established by the UK Ministry of Defence Deleted: brlcad/trunk/src/conv/intaval/regtab.cpp =================================================================== --- brlcad/trunk/src/other/intaval/regtab.cpp 2008-08-01 22:26:31 UTC (rev 32211) +++ brlcad/trunk/src/conv/intaval/regtab.cpp 2008-08-04 08:53:56 UTC (rev 32240) @@ -1,138 +0,0 @@ -/* R E G T A B . C P P - * BRL-CAD - * - * Copyright (c) 2008 United States Government as represented by - * the U.S. Army Research Laboratory. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * version 2.1 as published by the Free Software Foundation. - * - * This library is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this file; see the file named COPYING for more - * information. - */ -/** @file regtab.cpp - * - * INTAVAL Target Geometry File to BRL-CAD converter: - * table of regions implementation - * - * Origin - - * TNO (Netherlands) - * IABG mbH (Germany) - */ - -#include <map> -#include <iostream> - -#include "regtab.h" -#include "glob.h" - - - -static std::map<std::string, Region*> regionTable; - - -int readMaterials(FILE *fp) -{ - char title[LINELEN]; - char name[20]; - int mat; - - if (fgets(title, LINELEN, fp) == NULL) - return 1; - - char descr[LINELEN]; - while (fscanf(fp, "%s%d%[^\n]", &name, &mat, &descr) != EOF) - { - if (name[0] == '-') - continue; - - Region *regionp; - - regionp = new Region(atoi(name), descr); - regionp->addMaterial(mat); - - std::string key = name; - regionTable[key] = regionp; - - fgetc(fp); // newline lezen - } - return 0; -} - - -static Region *getRegion(int compnr) -{ - char name[20]; - Region* regionp = 0; - - sprintf(name, "%d", compnr); - - std::string key = name; - - if (regionTable.find(key) == regionTable.end()) { - std::cout << "WARNING: region " << key - << " not in material list" << std::endl; - char name[] = "UNKNOWN"; - if (regionTable.find(name) == regionTable.end()) { - regionp = new Region(atoi(name), name); - regionp->addMaterial(0); - std::string key = name; - regionTable[key] = regionp; - } - else - regionp = regionTable[name]; - } - else - regionp = regionTable[key]; - - return regionp; -} - - -void addToRegion -( - int compnr, - char* name -) { - getRegion(compnr)->add(name); -} - - -void excludeFromRegion -( - int compnr, - char* name -) { - getRegion(compnr)->exclude(name); -} - - -void createRegions(struct rt_wdb* wdbp) -{ - struct wmember tophead; - BU_LIST_INIT(&tophead.l); - - for(std::map<std::string, Region*>::iterator it = regionTable.begin(); - it != regionTable.end(); - ++it) { - Region* regionp = it->second; - - std::cout << regionp->getDescription() << std::endl; - - if ((regionp->getMaterial() != 0) && (regionp->nonEmpty())) - regionp->push(wdbp, &tophead); - else - std::cout << "Empty region: " << regionp->getCompNr() << (regionp->referred() ? " (referred)" : " (unreferred)") << std::endl; - } - - mk_lfcomb(wdbp, "g_all", &tophead, 0); - - mk_freemembers(&tophead.l); -} Copied: brlcad/trunk/src/conv/intaval/regtab.cpp (from rev 32235, brlcad/trunk/src/other/intaval/regtab.cpp) =================================================================== --- brlcad/trunk/src/conv/intaval/regtab.cpp (rev 0) +++ brlcad/trunk/src/conv/intaval/regtab.cpp 2008-08-04 08:53:56 UTC (rev 32240) @@ -0,0 +1,138 @@ +/* R E G T A B . C P P + * BRL-CAD + * + * Copyright (c) 2008 United States Government as represented by + * the U.S. Army Research Laboratory. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * version 2.1 as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this file; see the file named COPYING for more + * information. + */ +/** @file regtab.cpp + * + * INTAVAL Target Geometry File to BRL-CAD converter: + * table of regions implementation + * + * Origin - + * TNO (Netherlands) + * IABG mbH (Germany) + */ + +#include <map> +#include <iostream> + +#include "regtab.h" +#include "glob.h" + + + +static std::map<std::string, Region*> regionTable; + + +int readMaterials(FILE *fp) +{ + char title[LINELEN]; + char name[20]; + int mat; + + if (fgets(title, LINELEN, fp) == NULL) + return 1; + + char descr[LINELEN]; + while (fscanf(fp, "%s%d%[^\n]", &name, &mat, &descr) != EOF) + { + if (name[0] == '-') + continue; + + Region *regionp; + + regionp = new Region(atoi(name), descr); + regionp->addMaterial(mat); + + std::string key = name; + regionTable[key] = regionp; + + fgetc(fp); // newline lezen + } + return 0; +} + + +static Region *getRegion(int compnr) +{ + char name[20]; + Region* regionp = 0; + + sprintf(name, "%d", compnr); + + std::string key = name; + + if (regionTable.find(key) == regionTable.end()) { + std::cout << "WARNING: region " << key + << " not in material list" << std::endl; + char name[] = "UNKNOWN"; + if (regionTable.find(name) == regionTable.end()) { + regionp = new Region(atoi(name), name); + regionp->addMaterial(0); + std::string key = name; + regionTable[key] = regionp; + } + else + regionp = regionTable[name]; + } + else + regionp = regionTable[key]; + + return regionp; +} + + +void addToRegion +( + int compnr, + char* name +) { + getRegion(compnr)->add(name); +} + + +void excludeFromRegion +( + int compnr, + char* name +) { + getRegion(compnr)->exclude(name); +} + + +void createRegions(struct rt_wdb* wdbp) +{ + struct wmember tophead; + BU_LIST_INIT(&tophead.l); + + for(std::map<std::string, Region*>::iterator it = regionTable.begin(); + it != regionTable.end(); + ++it) { + Region* regionp = it->second; + + std::cout << regionp->getDescription() << std::endl; + + if ((regionp->getMaterial() != 0) && (regionp->nonEmpty())) + regionp->push(wdbp, &tophead); + else + std::cout << "Empty region: " << regionp->getCompNr() << (regionp->referred() ? " (referred)" : " (unreferred)") << std::endl; + } + + mk_lfcomb(wdbp, "g_all", &tophead, 0); + + mk_freemembers(&tophead.l); +} Deleted: brlcad/trunk/src/conv/intaval/regtab.h =================================================================== --- brlcad/trunk/src/other/intaval/regtab.h 2008-08-01 22:26:31 UTC (rev 32211) +++ brlcad/trunk/src/conv/intaval/regtab.h 2008-08-04 08:53:56 UTC (rev 32240) @@ -1,182 +0,0 @@ -/* R E G T A B . H - * BRL-CAD - * - * Copyright (c) 2008 United States Government as represented by - * the U.S. Army Research Laboratory. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * version 2.1 as published by the Free Software Foundation. - * - * This library is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this file; see the file named COPYING for more - * information. - */ -/** @file regtab.h - * - * INTAVAL Target Geometry File to BRL-CAD converter: - * table of regions declarations - * - * Origin - - * TNO (Netherlands) - * IABG mbH (Germany) - */ - -#ifndef REGTAB_INCLUDED -#define REGTAB_INCLUDED - -#include <string> - -#include "common.h" - -#include "vmath.h" -#include "wdb.h" - - -class Region; - - -int readMaterials -( - FILE *fp -); - - -void addToRegion -( - int compnr, - char* name -); - - -void excludeFromRegion -( - int compnr, - char* name -); - - -void createRegions -( - struct rt_wdb *wdbp -); - - -class Region { -public: - Region() : addCreated(false), excludeCreated(false) { - BU_LIST_INIT(&head.l) - }; - - Region(int nr, - char* description) : compnr(nr), addCreated(false), excludeCreated(false) { - desc = description; - BU_LIST_INIT(&head.l); - } - - ~Region() { - mk_freemembers(&head.l); - } - - int getCompNr(void) { - return compnr; - } - - void addMaterial(int mat) { - material = mat; - } - - int getMaterial(void) { - return material; - } - - std::string getDescription(void) { - return desc; - } - - wmember* getHead(void) { - return &head; - } - - void push(rt_wdb* wdbp, - wmember* tophead) { - if (addCreated) { - char mName[20]; - sprintf(mName, "m_%d", compnr); - - mk_lfcomb(wdbp, mName, &addHead, 0); - mk_addmember(mName, &(head.l), NULL, WMOP_UNION); - } - - if (excludeCreated) { - char sName[20]; - sprintf(sName, "s_%d", compnr); - - mk_lfcomb(wdbp, sName, &excludeHead, 0); - mk_addmember(sName, &(head.l), NULL, WMOP_SUBTRACT); - } - - char name[20]; - sprintf(name, "r_%d", compnr); - - mk_lrcomb(wdbp, - name, // name of the db element created - &head, // list of elements in the region - 1, // 1 = region - "plastic", - "sh=4 sp=0.5 di=0.5 re=0.1", - (unsigned char *)0, - 1000, - 0, - material, - 100, - 0); - - mk_addmember(name, &(tophead->l), NULL, WMOP_UNION); - } - - bool nonEmpty(void) { - return addCreated; - } - - bool referred(void) { - return excludeCreated; - } - - void add(char* name) { - if (!addCreated) { - BU_LIST_INIT(&(addHead.l)) - addCreated = true; - } - - mk_addmember(name, &(addHead.l), NULL, WMOP_UNION); - } - - void exclude(char* name) { - if (!excludeCreated) { - BU_LIST_INIT(&(excludeHead.l)) - excludeCreated = true; - } - - mk_addmember(name, &(excludeHead.l), NULL, WMOP_UNION); - } - -private: - int compnr; - wmember head; - int material; - std::string desc; - - bool addCreated; - wmember addHead; - bool excludeCreated; - wmember excludeHead; -}; - - -#endif // REGTAB_INCLUDED Copied: brlcad/trunk/src/conv/intaval/regtab.h (from rev 32235, brlcad/trunk/src/other/intaval/regtab.h) =================================================================== --- brlcad/trunk/src/conv/intaval/regtab.h (rev 0) +++ brlcad/trunk/src/conv/intaval/regtab.h 2008-08-04 08:53:56 UTC (rev 32240) @@ -0,0 +1,182 @@ +/* R E G T A B . H + * BRL-CAD + * + * Copyright (c) 2008 United States Government as represented by + * the U.S. Army Research Laboratory. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * version 2.1 as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this file; see the file named COPYING for more + * information. + */ +/** @file regtab.h + * + * INTAVAL Target Geometry File to BRL-CAD converter: + * table of regions declarations + * + * Origin - + * TNO (Netherlands) + * IABG mbH (Germany) + */ + +#ifndef REGTAB_INCLUDED +#define REGTAB_INCLUDED + +#include <string> + +#include "common.h" + +#include "vmath.h" +#include "wdb.h" + + +class Region; + + +int readMaterials +( + FILE *fp +); + + +void addToRegion +( + int compnr, + char* name +); + + +void excludeFromRegion +( + int compnr, + char* name +); + + +void createRegions +( + struct rt_wdb *wdbp +); + + +class Region { +public: + Region() : addCreated(false), excludeCreated(false) { + BU_LIST_INIT(&head.l) + }; + + Region(int nr, + char* description) : compnr(nr), addCreated(false), excludeCreated(false) { + desc = description; + BU_LIST_INIT(&head.l); + } + + ~Region() { + mk_freemembers(&head.l); + } + + int getCompNr(void) { + return compnr; + } + + void addMaterial(int mat) { + material = mat; + } + + int getMaterial(void) { + return material; + } + + std::string getDescription(void) { + return desc; + } + + wmember* getHead(void) { + return &head; + } + + void push(rt_wdb* wdbp, + wmember* tophead) { + if (addCreated) { + char mName[20]; + sprintf(mName, "m_%d", compnr); + + mk_lfcomb(wdbp, mName, &addHead, 0); + mk_addmember(mName, &(head.l), NULL, WMOP_UNION); + } + + if (excludeCreated) { + char sName[20]; + sprintf(sName, "s_%d", compnr); + + mk_lfcomb(wdbp, sName, &excludeHead, 0); + mk_addmember(sName, &(head.l), NULL, WMOP_SUBTRACT); + } + + char name[20]; + sprintf(name, "r_%d", compnr); + + mk_lrcomb(wdbp, + name, // name of the db element created + &head, // list of elements in the region + 1, // 1 = region + "plastic", + "sh=4 sp=0.5 di=0.5 re=0.1", + (unsigned char *)0, + 1000, + 0, + material, + 100, + 0); + + mk_addmember(name, &(tophead->l), NULL, WMOP_UNION); + } + + bool nonEmpty(void) { + return addCreated; + } + + bool referred(void) { + return excludeCreated; + } + + void add(char* name) { + if (!addCreated) { + BU_LIST_INIT(&(addHead.l)) + addCreated = true; + } + + mk_addmember(name, &(addHead.l), NULL, WMOP_UNION); + } + + void exclude(char* name) { + if (!excludeCreated) { + BU_LIST_INIT(&(excludeHead.l)) + excludeCreated = true; + } + + mk_addmember(name, &(excludeHead.l), NULL, WMOP_UNION); + } + +private: + int compnr; + wmember head; + int material; + std::string desc; + + bool addCreated; + wmember addHead; + bool excludeCreated; + wmember excludeHead; +}; + + +#endif // REGTAB_INCLUDED Deleted: brlcad/trunk/src/conv/intaval/tgf-g.cpp =================================================================== --- brlcad/trunk/src/other/intaval/tgf-g.cpp 2008-08-01 22:26:31 UTC (rev 32211) +++ brlcad/trunk/src/conv/intaval/tgf-g.cpp 2008-08-04 08:53:56 UTC (rev 32240) @@ -1,78 +0,0 @@ -/* T G F - G . C P P - * BRL-CAD - * - * Copyright (c) 2008 United States Government as represented by - * the U.S. Army Research Laboratory. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * version 2.1 as published by the Free Software Foundation. - * - * This library is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this file; see the file named COPYING for more - * information. - */ -/** @file tgf-g.cpp - * - * INTAVAL Target Geometry File to BRL-CAD converter: - * main function - * - * Origin - - * TNO (Netherlands) - * IABG mbH (Germany) - */ - -#include <iostream> -#include <fstream> - -#include "regtab.h" -#include "read_dra.h" - - -int main -( - int argc, - char* argv[] -) { - int ret = 0; - - if (argc < 4) { - std::cout << "Usage: " << argv[0] << " <DRA-mat> <DRA-geo> <BRL-g>" << std::endl; - ret = 1; - } - else { - FILE* in = fopen(argv[1], "r"); - - if (in == 0) { - std::cout << "Error reading DRA-mat file" << std::endl; - ret = 1; - } - else { - ret = readMaterials(in); - fclose(in); - - if (ret == 0) { - std::ifstream is(argv[2]); - - if (!is.is_open()) { - std::cout << "Error reading DRA-geo file" << std::endl; - ret = 1; - } - else { - struct rt_wdb* wdbp = wdb_fopen(argv[3]); // force create - - conv(is, wdbp); - createRegions(wdbp); - wdb_close(wdbp); - } - } - } - } - - return ret; -} Copied: brlcad/trunk/src/conv/intaval/tgf-g.cpp (from rev 32235, brlcad/trunk/src/other/intaval/tgf-g.cpp) =================================================================== --- brlcad/trunk/src/conv/intaval/tgf-g.cpp (rev 0) +++ brlcad/trunk/src/conv/intaval/tgf-g.cpp 2008-08-04 08:53:56 UTC (rev 32240) @@ -0,0 +1,78 @@ +/* T G F - G . C P P + * BRL-CAD + * + * Copyright (c) 2008 United States Government as represented by + * the U.S. Army Research Laboratory. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * version 2.1 as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this file; see the file named COPYING for more + * information. + */ +/** @file tgf-g.cpp + * + * INTAVAL Target Geometry File to BRL-CAD converter: + * main function + * + * Origin - + * TNO (Netherlands) + * IABG mbH (Germany) + */ + +#include <iostream> +#include <fstream> + +#include "regtab.h" +#include "read_dra.h" + + +int main +( + int argc, + char* argv[] +) { + int ret = 0; + + if (argc < 4) { + std::cout << "Usage: " << argv[0] << " <DRA-mat> <DRA-geo> <BRL-g>" << std::endl; + ret = 1; + } + else { + FILE* in = fopen(argv[1], "r"); + + if (in == 0) { + std::cout << "Error reading DRA-mat file" << std::endl; + ret = 1; + } + else { + ret = readMaterials(in); + fclose(in); + + if (ret == 0) { + std::ifstream is(argv[2]); + + if (!is.is_open()) { + std::cout << "Error reading DRA-geo file" << std::endl; + ret = 1; + } + else { + struct rt_wdb* wdbp = wdb_fopen(argv[3]); // force create + + conv(is, wdbp); + createRegions(wdbp); + wdb_close(wdbp); + } + } + } + } + + return ret; +} Deleted: brlcad/trunk/src/conv/intaval/write_brl.cpp =================================================================== --- brlcad/trunk/src/other/intaval/write_brl.cpp 2008-08-01 22:26:31 UTC (rev 32211) +++ brlcad/trunk/src/conv/intaval/write_brl.cpp 2008-08-04 08:53:56 UTC (rev 32240) @@ -1,586 +0,0 @@ -/* W R I T E _ B R L . C P P - * BRL-CAD - * - * Copyright (c) 2008 United States Government as represented by - * the U.S. Army Research Laboratory. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * version 2.1 as published by the Free Software Foundation. - * - * This library is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this file; see the file named COPYING for more - * information. - */ -/** @file write_brl.cpp - * - * INTAVAL Target Geometry File to BRL-CAD converter: - * write primitives into BRL-CAD database - * - * Origin - - * TNO (Netherlands) - * IABG mbH (Germany) - */ - -#include "nmg.h" -#include "rtgeom.h" -#include "write_brl.h" - -// redefinition from vmath.h (undef is in brep.h) -#define X 0 -#define Y 1 -#define Z 2 - - -double IntavalUnitInMm = 0.1; - -int arb6_counter = 0; -int arb8_counter = 0; -int pipe_counter = 0; -int rcc_counter = 0; -int sph_counter = 0; -int rpp_counter = 0; -int trc_counter = 0; -int bot_counter = 0; - - -void addTriangle -( - int* faces, - size_t& num_faces, - int a, - int b, - int c -) { - // is it a triangle? - if ((a == b) || (b == c) || (c == a)) - return; - - // search for duplicate triangle - for(size_t i = 0; i < num_faces; ++i) { - if (faces[i * 3] == a) { - if (faces[i * 3 + 1] == b) { - if (faces[i * 3 + 2] == c) - return; - } - else if (faces[i * 3 + 1] == c) { - if (faces[i * 3 + 2] == b) - return; - } - } - else if (faces[i * 3] == b) { - if (faces[i * 3 + 1] == a) { - if (faces[i * 3 + 2] == c) - return; - } - else if (faces[i * 3 + 1] == c)... [truncated message content] |
From: <bo...@us...> - 2008-08-04 15:58:31
|
Revision: 32245 http://brlcad.svn.sourceforge.net/brlcad/?rev=32245&view=rev Author: bob1961 Date: 2008-08-04 15:58:21 +0000 (Mon, 04 Aug 2008) Log Message: ----------- Port tire to windows. Modified Paths: -------------- brlcad/trunk/src/proc-db/tire.c Added Paths: ----------- brlcad/trunk/misc/win32-msvc8/tire/ brlcad/trunk/misc/win32-msvc8/tire/tire.vcproj Added: brlcad/trunk/misc/win32-msvc8/tire/tire.vcproj =================================================================== --- brlcad/trunk/misc/win32-msvc8/tire/tire.vcproj (rev 0) +++ brlcad/trunk/misc/win32-msvc8/tire/tire.vcproj 2008-08-04 15:58:21 UTC (rev 32245) @@ -0,0 +1,242 @@ +<?xml version="1.0" encoding="Windows-1252"?> +<VisualStudioProject + ProjectType="Visual C++" + Version="8.00" + Name="tire" + ProjectGUID="{D4B7A4C2-1029-4273-8DA1-232668DD7B0F}" + > + <Platforms> + <Platform + Name="Win32" + /> + <Platform + Name="x64" + /> + </Platforms> + <ToolFiles> + </ToolFiles> + <Configurations> + <Configuration + Name="Release|Win32" + OutputDirectory=".\$(PlatformName)\$(ConfigurationName)" + IntermediateDirectory=".\$(PlatformName)\$(ConfigurationName)" + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="false" + CharacterSet="2" + > + <Tool + Name="VCPreBuildEventTool" + /> + <Tool + Name="VCCustomBuildTool" + /> + <Tool + Name="VCXMLDataGeneratorTool" + /> + <Tool + Name="VCWebServiceProxyGeneratorTool" + /> + <Tool + Name="VCMIDLTool" + TypeLibraryName=".\$(PlatformName)\$(ConfigurationName)/tire.tlb" + HeaderFileName="" + /> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + InlineFunctionExpansion="1" + AdditionalIncludeDirectories="../../../src/conv/iges;../../../include;../../../src/other/tcl/generic" + PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;TCL_THREADS=1;__win32;BRLCAD_DLL;HAVE_CONFIG_H;BRLCADBUILD;_CRT_SECURE_NO_WARNINGS" + StringPooling="true" + BasicRuntimeChecks="0" + RuntimeLibrary="2" + EnableFunctionLevelLinking="true" + TreatWChar_tAsBuiltInType="false" + UsePrecompiledHeader="0" + PrecompiledHeaderFile=".\$(PlatformName)\$(ConfigurationName)/tire.pch" + AssemblerListingLocation=".\$(PlatformName)\$(ConfigurationName)/" + ObjectFile=".\$(PlatformName)\$(ConfigurationName)/" + ProgramDataBaseFileName=".\$(PlatformName)\$(ConfigurationName)/" + WarningLevel="3" + SuppressStartupBanner="true" + Detect64BitPortabilityProblems="false" + DebugInformationFormat="0" + CompileAs="0" + /> + <Tool + Name="VCManagedResourceCompilerTool" + /> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="NDEBUG" + Culture="1033" + /> + <Tool + Name="VCPreLinkEventTool" + /> + <Tool + Name="VCLinkerTool" + AdditionalDependencies="libbu.lib libbn.lib libsysv.lib librt.lib libwdb.lib tcl85.lib" + OutputFile="$(PlatformName)\$(ConfigurationName)/tire.exe" + LinkIncremental="1" + SuppressStartupBanner="true" + AdditionalLibraryDirectories="../../../brlcadInstall/lib" + GenerateDebugInformation="false" + ProgramDatabaseFile=".\$(PlatformName)\$(ConfigurationName)/iges-g.pdb" + SubSystem="1" + TargetMachine="1" + /> + <Tool + Name="VCALinkTool" + /> + <Tool + Name="VCManifestTool" + /> + <Tool + Name="VCXDCMakeTool" + /> + <Tool + Name="VCBscMakeTool" + /> + <Tool + Name="VCFxCopTool" + /> + <Tool + Name="VCAppVerifierTool" + /> + <Tool + Name="VCWebDeploymentTool" + /> + <Tool + Name="VCPostBuildEventTool" + CommandLine="copy "$(TargetPath)" ..\..\..\brlcadInstall\bin" + /> + </Configuration> + <Configuration + Name="Release|x64" + OutputDirectory="$(PlatformName)\$(ConfigurationName)" + IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="false" + CharacterSet="2" + > + <Tool + Name="VCPreBuildEventTool" + /> + <Tool + Name="VCCustomBuildTool" + /> + <Tool + Name="VCXMLDataGeneratorTool" + /> + <Tool + Name="VCWebServiceProxyGeneratorTool" + /> + <Tool + Name="VCMIDLTool" + TargetEnvironment="3" + TypeLibraryName=".\$(PlatformName)\$(ConfigurationName)/tire.tlb" + HeaderFileName="" + /> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + InlineFunctionExpansion="1" + AdditionalIncludeDirectories="../../../src/conv/iges;../../../include;../../../src/other/tcl/generic" + PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;TCL_THREADS=1;__win32;BRLCAD_DLL;HAVE_CONFIG_H;BRLCADBUILD;_CRT_SECURE_NO_WARNINGS" + StringPooling="true" + BasicRuntimeChecks="0" + RuntimeLibrary="2" + EnableFunctionLevelLinking="true" + TreatWChar_tAsBuiltInType="false" + UsePrecompiledHeader="0" + PrecompiledHeaderFile=".\$(PlatformName)\$(ConfigurationName)/tire.pch" + AssemblerListingLocation=".\$(PlatformName)\$(ConfigurationName)/" + ObjectFile=".\$(PlatformName)\$(ConfigurationName)/" + ProgramDataBaseFileName=".\$(PlatformName)\$(ConfigurationName)/" + WarningLevel="3" + SuppressStartupBanner="true" + Detect64BitPortabilityProblems="false" + DebugInformationFormat="0" + CompileAs="0" + /> + <Tool + Name="VCManagedResourceCompilerTool" + /> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="NDEBUG" + Culture="1033" + /> + <Tool + Name="VCPreLinkEventTool" + /> + <Tool + Name="VCLinkerTool" + AdditionalDependencies="libbu.lib libbn.lib libsysv.lib librt.lib libwdb.lib tcl85.lib" + OutputFile="$(PlatformName)\$(ConfigurationName)/iges-g.exe" + LinkIncremental="1" + SuppressStartupBanner="true" + AdditionalLibraryDirectories="../../../brlcadInstall$(PlatformName)/lib" + GenerateDebugInformation="false" + ProgramDatabaseFile=".\$(PlatformName)\$(ConfigurationName)/tire.pdb" + SubSystem="1" + TargetMachine="17" + /> + <Tool + Name="VCALinkTool" + /> + <Tool + Name="VCManifestTool" + /> + <Tool + Name="VCXDCMakeTool" + /> + <Tool + Name="VCBscMakeTool" + /> + <Tool + Name="VCFxCopTool" + /> + <Tool + Name="VCAppVerifierTool" + /> + <Tool + Name="VCWebDeploymentTool" + /> + <Tool + Name="VCPostBuildEventTool" + CommandLine="copy "$(TargetPath)" ..\..\..\brlcadInstall$(PlatformName)\bin" + /> + </Configuration> + </Configurations> + <References> + </References> + <Files> + <Filter + Name="Source Files" + Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat;f90;for;f;fpp" + > + <File + RelativePath="..\..\..\src\proc-db\tire.c" + > + </File> + </Filter> + <Filter + Name="Header Files" + Filter="h;hpp;hxx;hm;inl;fi;fd" + > + </Filter> + <Filter + Name="Resource Files" + Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" + > + </Filter> + </Files> + <Globals> + </Globals> +</VisualStudioProject> Property changes on: brlcad/trunk/misc/win32-msvc8/tire/tire.vcproj ___________________________________________________________________ Added: svn:executable + * Added: svn:mime-type + text/plain Added: svn:eol-style + native Modified: brlcad/trunk/src/proc-db/tire.c =================================================================== --- brlcad/trunk/src/proc-db/tire.c 2008-08-04 15:25:34 UTC (rev 32244) +++ brlcad/trunk/src/proc-db/tire.c 2008-08-04 15:58:21 UTC (rev 32245) @@ -461,10 +461,11 @@ point_t origin, vertex; mat_t y; struct bu_vls str; - bu_vls_init(&str); int i; struct wmember bolthole, boltholes, hubhole, hubholes, innerhub; + bu_vls_init(&str); + bu_vls_trunc(&str, 0); bu_vls_printf(&str, "Inner-Hub%s.s", suffix); VSET(origin, 0, fixing_start_middle + fixing_width / 4, 0); @@ -822,11 +823,12 @@ vect_t u_vec, v_vec, h; int i; struct bu_vls str; - bu_vls_init(&str); struct bu_vls str2; - bu_vls_init(&str2); point2d_t tmpvert[] = {{0, 0}}; + bu_vls_init(&str); + bu_vls_init(&str2); + /* Basic allocation of structure */ skt = (struct rt_sketch_internal *)bu_calloc(1, sizeof(struct rt_sketch_internal), "sketch"); skt->magic = RT_SKETCH_INTERNAL_MAGIC; @@ -897,27 +899,19 @@ mk_extrusion(file, bu_vls_addr(&str2), bu_vls_addr(&str), V, h, u_vec, v_vec, 0); } - +#define SKETCHNUM2 4 void MakeTreadPattern2(struct rt_wdb (*file), char *suffix, fastf_t dwidth, fastf_t z_base, fastf_t ztire, int number_of_patterns) { struct bu_vls str; - bu_vls_init(&str); struct bu_vls str2; - bu_vls_init(&str2); struct wmember treadpattern, tread, treadrotated; fastf_t patternwidth1, patternwidth2; mat_t y; int i, j; - int sketchnum = 4; - int vertcounts[sketchnum]; - point2d_t *verts[sketchnum]; + int vertcounts[SKETCHNUM2]; + point2d_t *verts[SKETCHNUM2]; unsigned char rgb[3]; - VSET(rgb, 40, 40, 40); - - patternwidth1 = ztire * sin(F_PI / number_of_patterns); - patternwidth2 = z_base * sin(F_PI / number_of_patterns); - point2d_t verts1[] = { { 0, 0 }, { 0, .1 }, @@ -933,30 +927,18 @@ { .33, .1 }, { .4, 0 } }; - - verts[0] = verts1; - vertcounts[0] = 12; - point2d_t verts2[] = { { .2, .13 }, { -.6, .2 }, { -.5, .27 }, { .4, .2 } }; - - verts[1] = verts2; - vertcounts[1] = 4; - point2d_t verts3[] = { { .5, .45 }, { -.5, .4 }, { -.6, .5 }, { .5, .55 } }; - - verts[2] = verts3; - vertcounts[2] = 4; - point2d_t verts4[] = { { .6, .73 }, { -.3, .8 }, @@ -964,12 +946,29 @@ { .8, .8 } }; + VSET(rgb, 40, 40, 40); + + bu_vls_init(&str); + bu_vls_init(&str2); + + patternwidth1 = ztire * sin(F_PI / number_of_patterns); + patternwidth2 = z_base * sin(F_PI / number_of_patterns); + + verts[0] = verts1; + vertcounts[0] = 12; + + verts[1] = verts2; + vertcounts[1] = 4; + + verts[2] = verts3; + vertcounts[2] = 4; + verts[3] = verts4; vertcounts[3] = 4; BU_LIST_INIT(&treadpattern.l); - for ( i = 0; i < sketchnum; i++ ) { + for ( i = 0; i < SKETCHNUM2; i++ ) { bu_vls_trunc(&str, 0); bu_vls_printf(&str, "-%d%s", i + 1, suffix); MakeExtrude(file, bu_vls_addr(&str), verts[i], vertcounts[i], @@ -1023,26 +1022,19 @@ } +#define SKETCHNUM1 9 void MakeTreadPattern1(struct rt_wdb (*file), char *suffix, fastf_t dwidth, fastf_t z_base, fastf_t ztire, int number_of_patterns) { struct bu_vls str; - bu_vls_init(&str); struct bu_vls str2; - bu_vls_init(&str2); struct wmember treadpattern, tread, treadrotated; fastf_t patternwidth1, patternwidth2; mat_t y; int i, j; - int sketchnum = 9; - int vertcounts[sketchnum]; - point2d_t *verts[sketchnum]; + int vertcounts[SKETCHNUM1]; + point2d_t *verts[SKETCHNUM1]; unsigned char rgb[3]; - VSET(rgb, 40, 40, 40); - - patternwidth1 = ztire * sin(F_PI / number_of_patterns); - patternwidth2 = z_base * sin(F_PI / number_of_patterns); - point2d_t verts1[] = { { .9, 0 }, { .6, .3 }, @@ -1054,10 +1046,6 @@ { .73, .3 }, { 1.03, 0 } }; - - verts[0] = verts1; - vertcounts[0] = 8; - point2d_t verts2[] = { { .3, 0 }, { .0, .3 }, @@ -1069,70 +1057,42 @@ { .1, .3 }, { .4, 0 } }; - - verts[1] = verts2; - vertcounts[1] = 8; - point2d_t verts3[] = { { -.1, .1 }, { -.1, .12 }, { 1.1, .12 }, { 1.1, .1 } }; - - verts[2] = verts3; - vertcounts[2] = 4; - point2d_t verts4[] = { { -.1, .20 }, { -.1, .23 }, { 1.1, .23 }, { 1.1, .20 } }; - - verts[3] = verts4; - vertcounts[3] = 4; - point2d_t verts5[] = { { -.1, .37 }, { -.1, .4 }, { 1.1, .4 }, { 1.1, .37 } }; - - verts[4] = verts5; - vertcounts[4] = 4; - point2d_t verts6[] = { { -.1, .49 }, { -.1, .51}, { 1.1, .51 }, { 1.1, .49 } }; - - verts[5] = verts6; - vertcounts[5] = 4; - point2d_t verts7[] = { { -.1, .6 }, { -.1, .63 }, { 1.1, .63 }, { 1.1, .6 } }; - - verts[6] = verts7; - vertcounts[6] = 4; - point2d_t verts8[] = { { -.1, .77 }, { -.1, .80 }, { 1.1, .80 }, { 1.1, .77 } }; - - verts[7] = verts8; - vertcounts[7] = 4; - point2d_t verts9[] = { { -.1, .88 }, { -.1, .9 }, @@ -1140,12 +1100,44 @@ { 1.1, .88 } }; + VSET(rgb, 40, 40, 40); + + bu_vls_init(&str); + bu_vls_init(&str2); + + patternwidth1 = ztire * sin(F_PI / number_of_patterns); + patternwidth2 = z_base * sin(F_PI / number_of_patterns); + + verts[0] = verts1; + vertcounts[0] = 8; + + verts[1] = verts2; + vertcounts[1] = 8; + + verts[2] = verts3; + vertcounts[2] = 4; + + verts[3] = verts4; + vertcounts[3] = 4; + + verts[4] = verts5; + vertcounts[4] = 4; + + verts[5] = verts6; + vertcounts[5] = 4; + + verts[6] = verts7; + vertcounts[6] = 4; + + verts[7] = verts8; + vertcounts[7] = 4; + verts[8] = verts9; vertcounts[8] = 4; BU_LIST_INIT(&treadpattern.l); - for ( i = 0; i < sketchnum; i++ ) { + for ( i = 0; i < SKETCHNUM1; i++ ) { bu_vls_trunc(&str, 0); bu_vls_printf(&str, "-%d%s", i+1, suffix); MakeExtrude(file, bu_vls_addr(&str), verts[i], vertcounts[i], @@ -1232,10 +1224,10 @@ struct wmember tireslick; struct wmember innersolid; struct bu_vls str; - bu_vls_init(&str); vect_t vertex, height; point_t origin, normal, C; + bu_vls_init(&str); /* Insert primitives */ VSET(origin, 0, ell1cadparams[0], 0); @@ -1593,10 +1585,11 @@ struct wmember tiretreadintercept, tiretreadsolid, tiretreadshape; int i; struct bu_vls str; - bu_vls_init(&str); vect_t vertex, height; point_t origin, normal, C; + bu_vls_init(&str); + matrixelltred1 = (fastf_t **)bu_malloc(5 * sizeof(fastf_t *), "matrixrows"); for (i = 0; i < 5; i++) @@ -1712,6 +1705,20 @@ } +typedef void (*MakeTreadProfile) + (struct rt_wdb (*file), + char *suffix, + fastf_t *ell2coefficients, + fastf_t ztire, + fastf_t dztred, + fastf_t d1, + fastf_t dytred, + fastf_t dyhub, + fastf_t zhub, + fastf_t dyside1, + int number_of_tread_patterns, + int patterntype); + /********************************************************************** * * * MakeTire is the "top level" tire generation * @@ -1744,10 +1751,12 @@ fastf_t cut_d1, cut_dyside1, cut_zside1, cut_ztire, cut_dyhub, cut_zhub; struct wmember tire; unsigned char rgb[3]; + MakeTreadProfile TreadProfile[2]; struct bu_vls str; - bu_vls_init(&str); struct bu_vls str2; + + bu_vls_init(&str); bu_vls_init(&str2); /* Set Tire color */ @@ -1816,21 +1825,6 @@ ell3cadparams, ztire_with_offset, dztred, dytred, dyhub, zhub, dyside1, zside1); - typedef void (*MakeTreadProfile) - (struct rt_wdb (*file), - char *suffix, - fastf_t *ell2coefficients, - fastf_t ztire, - fastf_t dztred, - fastf_t d1, - fastf_t dytred, - fastf_t dyhub, - fastf_t zhub, - fastf_t dyside1, - int number_of_tread_patterns, - int patterntype); - - MakeTreadProfile TreadProfile[2]; TreadProfile[0] = &MakeTreadSolid; TreadProfile[1] = &MakeTreadSolid1; @@ -1939,10 +1933,11 @@ struct wmember wheelair; struct bu_list air; struct bu_vls str; - bu_vls_init(&str); point_t origin; vect_t height; + bu_vls_init(&str); + VSET(origin, 0, -dyhub/2, 0); VSET(height, 0, dyhub, 0); bu_vls_trunc(&str, 0); @@ -2087,6 +2082,7 @@ fastf_t hub_width = 0; int pattern_type = 0; fastf_t zside1 = 0; + fastf_t tread_depth_float = tread_depth/32.0; bu_vls_init(&str); bu_vls_init(&name); @@ -2108,7 +2104,7 @@ ReadArgs(ac, av, isoarray, overridearray, &name, &dimen, &gen_name, &tread_type, &number_of_tread_patterns, &tread_depth, &tire_thickness, &hub_width, &pattern_type, &zside1, &usewheel); /* Calculate floating point value for tread depth */ - fastf_t tread_depth_float = tread_depth/32.0; + tread_depth_float = tread_depth/32.0; /* Based on arguments, assign name for toplevel object Default of * "tire" is respected unless overridden by user supplied options. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bo...@us...> - 2008-08-04 16:12:12
|
Revision: 32248 http://brlcad.svn.sourceforge.net/brlcad/?rev=32248&view=rev Author: bob1961 Date: 2008-08-04 16:11:53 +0000 (Mon, 04 Aug 2008) Log Message: ----------- Added fracture, prefix, quat, regdef, view and ypr to libged. Modified Paths: -------------- brlcad/trunk/include/bn.h brlcad/trunk/include/ged.h brlcad/trunk/src/libbn/mat.c brlcad/trunk/src/libged/Makefile.am brlcad/trunk/src/libged/vrot.c brlcad/trunk/src/libtclcad/ged_obj.c Added Paths: ----------- brlcad/trunk/src/libged/fracture.c brlcad/trunk/src/libged/prefix.c brlcad/trunk/src/libged/quat.c brlcad/trunk/src/libged/regdef.c brlcad/trunk/src/libged/view.c brlcad/trunk/src/libged/ypr.c Modified: brlcad/trunk/include/bn.h =================================================================== --- brlcad/trunk/include/bn.h 2008-08-04 16:08:35 UTC (rev 32247) +++ brlcad/trunk/include/bn.h 2008-08-04 16:11:53 UTC (rev 32248) @@ -488,6 +488,14 @@ BN_EXPORT BU_EXTERN(int bn_mat_is_non_unif, (const mat_t m)); +void +BN_EXPORT BU_EXTERN(bn_wrt_point_direc, + (mat_t out, + const mat_t change, + const mat_t in, + const point_t point, + const vect_t direc)); + /*----------------------------------------------------------------------*/ /* msr.c */ /** @addtogroup msr */ Modified: brlcad/trunk/include/ged.h =================================================================== --- brlcad/trunk/include/ged.h 2008-08-04 16:08:35 UTC (rev 32247) +++ brlcad/trunk/include/ged.h 2008-08-04 16:11:53 UTC (rev 32248) @@ -1239,6 +1239,15 @@ GED_EXPORT BU_EXTERN(int ged_form, (struct ged *gedp, int argc, const char *argv[])); /** + * Given an NMG solid, break it up into several NMG solids, each + * containing a single shell with a single sub-element. + * + * Usage: + * fracture nmgsolid [prefix] + */ +GED_EXPORT BU_EXTERN(int ged_fracture, (struct ged *gedp, int argc, const char *argv[])); + +/** * Get object attributes * * Usage: @@ -1665,6 +1674,14 @@ GED_EXPORT BU_EXTERN(int ged_prcolor, (struct ged *gedp, int argc, const char *argv[])); /** + * Prefix the specified objects with the specified prefix + * + * Usage: + * prefix new_prefix object(s) + */ +GED_EXPORT BU_EXTERN(int ged_prefix, (struct ged *gedp, int argc, const char *argv[])); + +/** * Push objects' path transformations to primitives * * Usage: @@ -1688,12 +1705,28 @@ */ GED_EXPORT BU_EXTERN(int ged_qray, (struct ged *gedp, int argc, const char *argv[])); +/** + * Get/set the view orientation using a quaternion + * + * Usage: + * quat a b c d + */ +GED_EXPORT BU_EXTERN(int ged_quat, (struct ged *gedp, int argc, const char *argv[])); + GED_EXPORT BU_EXTERN(void ged_init_qray, (struct ged_drawable *gdp)); GED_EXPORT BU_EXTERN(void ged_free_qray, (struct ged_drawable *gdp)); /** + * Change the default region ident codes: item air los mat + * + * Usage: + * regdef item air los mat + */ +GED_EXPORT BU_EXTERN(int ged_regdef, (struct ged *gedp, int argc, const char *argv[])); + +/** * Create or append objects to a region * * Usage: @@ -1983,6 +2016,14 @@ GED_EXPORT BU_EXTERN(int ged_version, (struct ged *gedp, int argc, const char *argv[])); /** + * Get/set view attributes + * + * Usage: + * view quat|ypr|aet|center|eye|size [args] + */ +GED_EXPORT BU_EXTERN(int ged_view, (struct ged *gedp, int argc, const char *argv[])); + +/** * Get the view2model matrix. * * Usage: @@ -2056,6 +2097,14 @@ GED_EXPORT BU_EXTERN(int ged_xpush, (struct ged *gedp, int argc, const char *argv[])); /** + * Get/set the view orientation using yaw, pitch and roll + * + * Usage: + * ypr yaw pitch roll + */ +GED_EXPORT BU_EXTERN(int ged_ypr, (struct ged *gedp, int argc, const char *argv[])); + +/** * Erase all currently displayed geometry * * Usage: Modified: brlcad/trunk/src/libbn/mat.c =================================================================== --- brlcad/trunk/src/libbn/mat.c 2008-08-04 16:08:35 UTC (rev 32247) +++ brlcad/trunk/src/libbn/mat.c 2008-08-04 16:11:53 UTC (rev 32248) @@ -1367,6 +1367,49 @@ return 0; } +/* + * B N _ W R T _ P O I N T _ D I R E C + * + * Given a model-space transformation matrix "change", + * return a matrix which applies the change with-respect-to + * given "point" and "direc". + */ +void +bn_wrt_point_direc( mat_t out, const mat_t change, const mat_t in, const point_t point, const vect_t direc ) +{ + static mat_t t1; + static mat_t pt_to_origin, origin_to_pt; + static mat_t d_to_zaxis, zaxis_to_d; + static vect_t zaxis; + + /* build "point to origin" matrix */ + MAT_IDN( pt_to_origin ); + MAT_DELTAS_VEC_NEG(pt_to_origin, point); + + /* build "origin to point" matrix */ + MAT_IDN( origin_to_pt ); + MAT_DELTAS_VEC_NEG(origin_to_pt, point); + + /* build "direc to zaxis" matrix */ + VSET(zaxis, 0.0, 0.0, 1.0); + bn_mat_fromto(d_to_zaxis, direc, zaxis); + + /* build "zaxis to direc" matrix */ + bn_mat_inv(zaxis_to_d, d_to_zaxis); + + /* apply change matrix... + * t1 = change * d_to_zaxis * pt_to_origin * in + */ + bn_mat_mul4( t1, change, d_to_zaxis, pt_to_origin, in ); + + /* apply origin_to_pt matrix: + * out = origin_to_pt * zaxis_to_d * + * change * d_to_zaxis * pt_to_origin * in + */ + bn_mat_mul3( out, origin_to_pt, zaxis_to_d, t1 ); +} + + /** @} */ /* * Local Variables: Modified: brlcad/trunk/src/libged/Makefile.am =================================================================== --- brlcad/trunk/src/libged/Makefile.am 2008-08-04 16:08:35 UTC (rev 32247) +++ brlcad/trunk/src/libged/Makefile.am 2008-08-04 16:11:53 UTC (rev 32248) @@ -42,6 +42,7 @@ facetize.c \ find.c \ form.c \ + fracture.c \ ged.c \ get.c \ get_autoview.c \ @@ -99,9 +100,12 @@ pmodel2view.c \ pov.c \ prcolor.c \ + prefix.c \ push.c \ put.c \ qray.c \ + quat.c \ + regdef.c \ region.c \ remove.c \ report.c \ @@ -139,6 +143,7 @@ v2m_point.c \ vdraw.c \ version.c \ + view.c \ view2model.c \ view_obj.c \ viewdir.c \ @@ -154,6 +159,7 @@ who.c \ wmater.c \ xpush.c \ + ypr.c \ zap.c \ zoom.c Added: brlcad/trunk/src/libged/fracture.c =================================================================== --- brlcad/trunk/src/libged/fracture.c (rev 0) +++ brlcad/trunk/src/libged/fracture.c 2008-08-04 16:11:53 UTC (rev 32248) @@ -0,0 +1,252 @@ +/* F R A C T U R E . C + * BRL-CAD + * + * Copyright (c) 2008 United States Government as represented by + * the U.S. Army Research Laboratory. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * version 2.1 as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this file; see the file named COPYING for more + * information. + */ +/** @file fracture.c + * + * The fracture command. + * + */ + +#include "common.h" + +#include <stdlib.h> +#include <ctype.h> +#include <string.h> + +#include "ged_private.h" + +static void ged_add_nmg_part(struct ged *gedp, char *newname, struct model *m); + +static int frac_stat; + +int +ged_fracture(struct ged *gedp, int argc, const char *argv[]) +{ + register int i; + struct directory *old_dp; + struct rt_db_internal old_intern; + struct model *m, *new_model; + char newname[32]; + char prefix[32]; + int maxdigits; + struct nmgregion *r, *new_r; + struct shell *s, *new_s; + struct faceuse *fu; + struct vertex *v_new, *v; + unsigned long tw, tf, tp; + static const char *usage = "nmg_solid [prefix]"; + + GED_CHECK_DATABASE_OPEN(gedp, BRLCAD_ERROR); + GED_CHECK_READ_ONLY(gedp, BRLCAD_ERROR); + + /* initialize result */ + bu_vls_trunc(&gedp->ged_result_str, 0); + gedp->ged_result = GED_RESULT_NULL; + gedp->ged_result_flags = 0; + + /* must be wanting help */ + if (argc == 1) { + gedp->ged_result_flags |= GED_RESULT_FLAGS_HELP_BIT; + bu_vls_printf(&gedp->ged_result_str, "Usage: %s %s", argv[0], usage); + return BRLCAD_OK; + } + + if (argc < 2 || 3 < argc) { + bu_vls_printf(&gedp->ged_result_str, "Usage: %s %s", argv[0], usage); + return BRLCAD_ERROR; + } + + bu_vls_printf(&gedp->ged_result_str, "fracture:"); + for (i=0; i < argc; i++) + bu_vls_printf(&gedp->ged_result_str, " %s", argv[i]); + bu_vls_printf(&gedp->ged_result_str, "\n"); + + if ((old_dp = db_lookup(gedp->ged_wdbp->dbip, argv[1], LOOKUP_NOISY)) == DIR_NULL) + return BRLCAD_ERROR; + + if (rt_db_get_internal(&old_intern, old_dp, gedp->ged_wdbp->dbip, bn_mat_identity, &rt_uniresource) < 0) { + bu_vls_printf(&gedp->ged_result_str, "rt_db_get_internal() error\n"); + return BRLCAD_ERROR; + } + + if (old_intern.idb_type != ID_NMG) { + bu_vls_printf(&gedp->ged_result_str, " is not an NMG solid!!\n"); + rt_db_free_internal( &old_intern, &rt_uniresource ); + return BRLCAD_ERROR; + } + + m = (struct model *)old_intern.idb_ptr; + NMG_CK_MODEL(m); + + /* how many characters of the solid names do we reserve for digits? */ + nmg_count_shell_kids(m, &tf, &tw, &tp); + + maxdigits = (int)(log10((double)(tf+tw+tp)) + 1.0); + + bu_vls_printf(&gedp->ged_result_str, "%ld = %d digits\n", (long)(tf+tw+tp), maxdigits); + + /* for (maxdigits=1, i=tf+tw+tp; i > 0; i /= 10) + * maxdigits++; + */ + + /* get the prefix for the solids to be created. */ + memset(prefix, 0, sizeof(prefix)); + bu_strlcpy(prefix, argv[argc-1], sizeof(prefix)); + bu_strlcat(prefix, "_", sizeof(prefix)); + + /* Bust it up here */ + + i = 1; + for (BU_LIST_FOR(r, nmgregion, &m->r_hd)) { + NMG_CK_REGION(r); + for (BU_LIST_FOR(s, shell, &r->s_hd)) { + NMG_CK_SHELL(s); + if (s->vu_p) { + NMG_CK_VERTEXUSE(s->vu_p); + NMG_CK_VERTEX(s->vu_p->v_p); + v = s->vu_p->v_p; + +/* nmg_start_dup(m); */ + new_model = nmg_mm(); + new_r = nmg_mrsv(new_model); + new_s = BU_LIST_FIRST(shell, &r->s_hd); + v_new = new_s->vu_p->v_p; + if (v->vg_p) { + nmg_vertex_gv(v_new, v->vg_p->coord); + } +/* nmg_end_dup(); */ + + snprintf(newname, 32, "%s%0*d", prefix, maxdigits, i++); + + ged_add_nmg_part(gedp, newname, new_model); + if (frac_stat) return BRLCAD_ERROR; + continue; + } + for (BU_LIST_FOR(fu, faceuse, &s->fu_hd)) { + if (fu->orientation != OT_SAME) + continue; + + NMG_CK_FACEUSE(fu); + + new_model = nmg_mm(); + NMG_CK_MODEL(new_model); + new_r = nmg_mrsv(new_model); + NMG_CK_REGION(new_r); + new_s = BU_LIST_FIRST(shell, &new_r->s_hd); + NMG_CK_SHELL(new_s); +/* nmg_start_dup(m); */ + NMG_CK_SHELL(new_s); + nmg_dup_face(fu, new_s); +/* nmg_end_dup(); */ + + snprintf(newname, 32, "%s%0*d", prefix, maxdigits, i++); + ged_add_nmg_part(gedp, newname, new_model); + if (frac_stat) return BRLCAD_ERROR; + } +#if 0 + while (BU_LIST_NON_EMPTY(&s->lu_hd)) { + lu = BU_LIST_FIRST(loopuse, &s->lu_hd); + new_model = nmg_mm(); + r = nmg_mrsv(new_model); + new_s = BU_LIST_FIRST(shell, &r->s_hd); + + nmg_dup_loop(lu, new_s); + nmg_klu(lu); + + snprintf(newname, 32, "%s%0*d", prefix, maxdigits, i++); + ged_add_nmg_part(gedp, newname, new_model); + if (frac_stat) return BRLCAD_ERROR; + } + while (BU_LIST_NON_EMPTY(&s->eu_hd)) { + eu = BU_LIST_FIRST(edgeuse, &s->eu_hd); + new_model = nmg_mm(); + r = nmg_mrsv(new_model); + new_s = BU_LIST_FIRST(shell, &r->s_hd); + + nmg_dup_edge(eu, new_s); + nmg_keu(eu); + + snprintf(newname, 32, "%s%0*d", prefix, maxdigits, i++); + + ged_add_nmg_part(gedp, newname, new_model); + if (frac_stat) return BRLCAD_ERROR; + } +#endif + } + } + + return BRLCAD_OK; +} + +static void +ged_add_nmg_part(struct ged *gedp, char *newname, struct model *m) +{ + struct rt_db_internal new_intern; + struct directory *new_dp; + struct nmgregion *r; + + if ( db_lookup( gedp->ged_wdbp->dbip, newname, LOOKUP_QUIET ) != DIR_NULL ) { + bu_vls_printf(&gedp->ged_result_str, "%s: already exists\n", newname); + /* Free memory here */ + nmg_km(m); + frac_stat = 1; + return; + } + + if ( (new_dp=db_diradd( gedp->ged_wdbp->dbip, newname, -1, 0, DIR_SOLID, (genptr_t)&new_intern.idb_type)) == DIR_NULL ) { + bu_vls_printf(&gedp->ged_result_str, + "Failed to add new object name (%s) to directory - aborting!!\n", + newname); + return; + } + + /* make sure the geometry/bounding boxes are up to date */ + for (BU_LIST_FOR(r, nmgregion, &m->r_hd)) + nmg_region_a(r, &gedp->ged_wdbp->wdb_tol); + + + /* Export NMG as a new solid */ + RT_INIT_DB_INTERNAL(&new_intern); + new_intern.idb_major_type = DB5_MAJORTYPE_BRLCAD; + new_intern.idb_type = ID_NMG; + new_intern.idb_meth = &rt_functab[ID_NMG]; + new_intern.idb_ptr = (genptr_t)m; + + if ( rt_db_put_internal( new_dp, gedp->ged_wdbp->dbip, &new_intern, &rt_uniresource ) < 0 ) { + /* Free memory */ + nmg_km(m); + bu_vls_printf(&gedp->ged_result_str, "rt_db_put_internal() failure\n"); + frac_stat = 1; + return; + } + /* Internal representation has been freed by rt_db_put_internal */ + new_intern.idb_ptr = (genptr_t)NULL; + frac_stat = 0; +} + + +/* + * Local Variables: + * tab-width: 8 + * mode: C + * indent-tabs-mode: t + * c-file-style: "stroustrup" + * End: + * ex: shiftwidth=4 tabstop=8 + */ Property changes on: brlcad/trunk/src/libged/fracture.c ___________________________________________________________________ Added: svn:executable + * Added: svn:mime-type + text/plain Added: svn:eol-style + native Added: brlcad/trunk/src/libged/prefix.c =================================================================== --- brlcad/trunk/src/libged/prefix.c (rev 0) +++ brlcad/trunk/src/libged/prefix.c 2008-08-04 16:11:53 UTC (rev 32248) @@ -0,0 +1,174 @@ +/* P R E F I X . C + * BRL-CAD + * + * Copyright (c) 2008 United States Government as represented by + * the U.S. Army Research Laboratory. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * version 2.1 as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this file; see the file named COPYING for more + * information. + */ +/** @file prefix.c + * + * The prefix command. + * + */ + +#include "common.h" + +#include <stdlib.h> +#include <ctype.h> +#include <string.h> + +#include "ged_private.h" + +static void ged_do_prefix(struct db_i *dbip, struct rt_comb_internal *comb, union tree *comb_leaf, genptr_t prefix_ptr, genptr_t obj_ptr, genptr_t user_ptr3); + +int +ged_prefix(struct ged *gedp, int argc, const char *argv[]) +{ + register int i, k; + register struct directory *dp; + struct rt_db_internal intern; + struct rt_comb_internal *comb; + char tempstring_v4[NAMESIZE+1]; + struct bu_vls tempstring_v5; + char *tempstring; + int len = NAMESIZE+1; + static const char *usage = "quat|ypr|aet|center|eye|size [args]"; + + GED_CHECK_DATABASE_OPEN(gedp, BRLCAD_ERROR); + GED_CHECK_READ_ONLY(gedp, BRLCAD_ERROR); + + /* initialize result */ + bu_vls_trunc(&gedp->ged_result_str, 0); + gedp->ged_result = GED_RESULT_NULL; + gedp->ged_result_flags = 0; + + /* must be wanting help */ + if (argc == 1) { + gedp->ged_result_flags |= GED_RESULT_FLAGS_HELP_BIT; + bu_vls_printf(&gedp->ged_result_str, "Usage: %s %s", argv[0], usage); + return BRLCAD_OK; + } + + if (argc < 3) { + bu_vls_printf(&gedp->ged_result_str, "Usage: %s %s", argv[0], usage); + return BRLCAD_ERROR; + } + + bu_vls_init(&tempstring_v5); + + /* First, check validity, and change node names */ + for (i = 2; i < argc; i++) { + if ((dp = db_lookup(gedp->ged_wdbp->dbip, argv[i], LOOKUP_NOISY)) == DIR_NULL) { + argv[i] = ""; + continue; + } + + if (gedp->ged_wdbp->dbip->dbi_version < 5 && (int)(strlen(argv[1]) + strlen(argv[i])) > NAMESIZE) { + bu_vls_printf(&gedp->ged_result_str, "'%s%s' too long, must be %d characters or less.\n", + argv[1], argv[i], NAMESIZE); + + argv[i] = ""; + continue; + } + + if (gedp->ged_wdbp->dbip->dbi_version < 5) { + bu_strlcpy(tempstring_v4, argv[1], len); + bu_strlcat(tempstring_v4, argv[i], len); + tempstring = tempstring_v4; + } else { + bu_vls_trunc(&tempstring_v5, 0); + bu_vls_strcpy(&tempstring_v5, argv[1]); + bu_vls_strcat(&tempstring_v5, argv[i]); + tempstring = bu_vls_addr(&tempstring_v5); + } + + if (db_lookup( gedp->ged_wdbp->dbip, tempstring, LOOKUP_QUIET) != DIR_NULL) { + bu_vls_printf(&gedp->ged_result_str, "%s: already exists\n", tempstring); + argv[i] = ""; + continue; + } + /* Change object name in the directory. */ + if (db_rename(gedp->ged_wdbp->dbip, dp, tempstring) < 0) { + bu_vls_free(&tempstring_v5); + bu_vls_printf(&gedp->ged_result_str, "error in rename to %s, aborting\n", tempstring); + return BRLCAD_ERROR; + } + } + + bu_vls_free(&tempstring_v5); + + /* Examine all COMB nodes */ + FOR_ALL_DIRECTORY_START(dp, gedp->ged_wdbp->dbip) { + if (!(dp->d_flags & DIR_COMB)) + continue; + + if (rt_db_get_internal(&intern, dp, gedp->ged_wdbp->dbip, (fastf_t *)NULL, &rt_uniresource) < 0) { + bu_vls_printf(&gedp->ged_result_str, "Database read error, aborting"); + return BRLCAD_ERROR; + } + comb = (struct rt_comb_internal *)intern.idb_ptr; + + for (k=2; k<argc; k++) + db_tree_funcleaf(gedp->ged_wdbp->dbip, comb, comb->tree, ged_do_prefix, + (genptr_t)argv[1], (genptr_t)argv[k], (genptr_t)NULL); + if (rt_db_put_internal(dp, gedp->ged_wdbp->dbip, &intern, &rt_uniresource)) { + bu_vls_printf(&gedp->ged_result_str, "Database write error, aborting"); + return BRLCAD_ERROR; + } + } FOR_ALL_DIRECTORY_END; + + return BRLCAD_OK; +} + +static void +ged_do_prefix(struct db_i *dbip, struct rt_comb_internal *comb, union tree *comb_leaf, genptr_t prefix_ptr, genptr_t obj_ptr, genptr_t user_ptr3) +{ + char *prefix, *obj; + char tempstring_v4[NAMESIZE+1]; + int len = NAMESIZE+1; + + RT_CK_DBI( dbip ); + RT_CK_TREE( comb_leaf ); + + prefix = (char *)prefix_ptr; + obj = (char *)obj_ptr; + + if ( strcmp( comb_leaf->tr_l.tl_name, obj ) ) + return; + + bu_free( comb_leaf->tr_l.tl_name, "comb_leaf->tr_l.tl_name" ); + if ( dbip->dbi_version < 5 ) { + bu_strlcpy( tempstring_v4, prefix, len); + bu_strlcat( tempstring_v4, obj, len); + comb_leaf->tr_l.tl_name = bu_strdup( tempstring_v4 ); + } else { + len = strlen(prefix)+strlen(obj)+1; + comb_leaf->tr_l.tl_name = (char *)bu_malloc( len, "Adding prefix" ); + + bu_strlcpy( comb_leaf->tr_l.tl_name , prefix, len); + bu_strlcat( comb_leaf->tr_l.tl_name , obj, len ); + } +} + + +/* + * Local Variables: + * tab-width: 8 + * mode: C + * indent-tabs-mode: t + * c-file-style: "stroustrup" + * End: + * ex: shiftwidth=4 tabstop=8 + */ Property changes on: brlcad/trunk/src/libged/prefix.c ___________________________________________________________________ Added: svn:executable + * Added: svn:mime-type + text/plain Added: svn:eol-style + native Added: brlcad/trunk/src/libged/quat.c =================================================================== --- brlcad/trunk/src/libged/quat.c (rev 0) +++ brlcad/trunk/src/libged/quat.c 2008-08-04 16:11:53 UTC (rev 32248) @@ -0,0 +1,85 @@ +/* Q U A T . C + * BRL-CAD + * + * Copyright (c) 2008 United States Government as represented by + * the U.S. Army Research Laboratory. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * version 2.1 as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this file; see the file named COPYING for more + * information. + */ +/** @file quat.c + * + * The quat command. + * + */ + +#include "common.h" + +#include <stdlib.h> +#include <ctype.h> +#include <string.h> + +#include "ged_private.h" + +int +ged_quat(struct ged *gedp, int argc, const char *argv[]) +{ + quat_t quat; + static const char *usage = "a b c d"; + + GED_CHECK_DATABASE_OPEN(gedp, BRLCAD_ERROR); + GED_CHECK_VIEW(gedp, BRLCAD_ERROR); + + /* initialize result */ + bu_vls_trunc(&gedp->ged_result_str, 0); + gedp->ged_result = GED_RESULT_NULL; + gedp->ged_result_flags = 0; + + /* return Viewrot as a quaternion */ + if (argc == 1) { + quat_mat2quat(quat, gedp->ged_gvp->gv_rotation); + bu_vls_printf(&gedp->ged_result_str, "%.12g %.12g %.12g %.12g", V4ARGS(quat)); + return BRLCAD_OK; + } + + if (argc != 6) { + bu_vls_printf(&gedp->ged_result_str, "Usage: %s %s", argv[0], usage); + return BRLCAD_ERROR; + } + + /* Set the view orientation given a quaternion */ + if (sscanf(argv[2], "%lf", quat) != 1 || + sscanf(argv[3], "%lf", quat+1) != 1 || + sscanf(argv[4], "%lf", quat+2) != 1 || + sscanf(argv[5], "%lf", quat+3) != 1) { + + bu_vls_printf(&gedp->ged_result_str, "%s quat: bad value detected - %s %s %s %s", + argv[0], argv[2], argv[3], argv[4], argv[5]); + return BRLCAD_ERROR; + } + + quat_quat2mat(gedp->ged_gvp->gv_rotation, quat); + ged_view_update(gedp->ged_gvp); + + return BRLCAD_OK; +} + +/* + * Local Variables: + * tab-width: 8 + * mode: C + * indent-tabs-mode: t + * c-file-style: "stroustrup" + * End: + * ex: shiftwidth=4 tabstop=8 + */ Property changes on: brlcad/trunk/src/libged/quat.c ___________________________________________________________________ Added: svn:executable + * Added: svn:mime-type + text/plain Added: svn:eol-style + native Added: brlcad/trunk/src/libged/regdef.c =================================================================== --- brlcad/trunk/src/libged/regdef.c (rev 0) +++ brlcad/trunk/src/libged/regdef.c 2008-08-04 16:11:53 UTC (rev 32248) @@ -0,0 +1,107 @@ +/* R E G D E F . C + * BRL-CAD + * + * Copyright (c) 2008 United States Government as represented by + * the U.S. Army Research Laboratory. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * version 2.1 as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this file; see the file named COPYING for more + * information. + */ +/** @file regdef.c + * + * The regdef command. + * + */ + +#include <stdlib.h> +#include "ged.h" + +int +ged_regdef(struct ged *gedp, int argc, const char *argv[]) +{ + int item, air, los, mat; + static const char *usage = "item air los mat"; + + GED_CHECK_DATABASE_OPEN(gedp, BRLCAD_ERROR); + GED_CHECK_READ_ONLY(gedp, BRLCAD_ERROR); + + /* initialize result */ + bu_vls_trunc(&gedp->ged_result_str, 0); + gedp->ged_result = GED_RESULT_NULL; + gedp->ged_result_flags = 0; + + if (argc < 2 || 5 < argc) { + bu_vls_printf(&gedp->ged_result_str, "Usage: %s %s", argv[0], usage); + return BRLCAD_ERROR; + } + + /* Get region defaults */ + if (argc == 1) { + bu_vls_printf(&gedp->ged_result_str, "ident %d air %d los %d material %d", + gedp->ged_wdbp->wdb_item_default, + gedp->ged_wdbp->wdb_air_default, + gedp->ged_wdbp->wdb_los_default, + gedp->ged_wdbp->wdb_mat_default); + return BRLCAD_OK; + } + + if (sscanf(argv[1], "%d", &item) != 1) { + bu_vls_printf(&gedp->ged_result_str, "Usage: %s %s", argv[0], usage); + return BRLCAD_ERROR; + } + gedp->ged_wdbp->wdb_item_default = item; + + if (argc == 2) + return BRLCAD_OK; + + if (sscanf(argv[2], "%d", &air) != 1) { + bu_vls_printf(&gedp->ged_result_str, "Usage: %s %s", argv[0], usage); + return BRLCAD_ERROR; + } + gedp->ged_wdbp->wdb_air_default = air; + if (air) { + item = 0; + gedp->ged_wdbp->wdb_item_default = 0; + } + + if (argc == 3) + return BRLCAD_OK; + + if (sscanf(argv[3], "%d", &los) != 1) { + bu_vls_printf(&gedp->ged_result_str, "Usage: %s %s", argv[0], usage); + return BRLCAD_ERROR; + } + gedp->ged_wdbp->wdb_los_default = los; + + if (argc == 4) + return BRLCAD_OK; + + if (sscanf(argv[4], "%d", &mat) != 1) { + bu_vls_printf(&gedp->ged_result_str, "Usage: %s %s", argv[0], usage); + return BRLCAD_ERROR; + } + gedp->ged_wdbp->wdb_mat_default = mat; + + return BRLCAD_OK; +} + + +/* + * Local Variables: + * tab-width: 8 + * mode: C + * indent-tabs-mode: t + * c-file-style: "stroustrup" + * End: + * ex: shiftwidth=4 tabstop=8 + */ Property changes on: brlcad/trunk/src/libged/regdef.c ___________________________________________________________________ Added: svn:executable + * Added: svn:mime-type + text/plain Added: svn:eol-style + native Added: brlcad/trunk/src/libged/view.c =================================================================== --- brlcad/trunk/src/libged/view.c (rev 0) +++ brlcad/trunk/src/libged/view.c 2008-08-04 16:11:53 UTC (rev 32248) @@ -0,0 +1,95 @@ +/* V I E W . C + * BRL-CAD + * + * Copyright (c) 2008 United States Government as represented by + * the U.S. Army Research Laboratory. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * version 2.1 as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this file; see the file named COPYING for more + * information. + */ +/** @file view.c + * + * The view command. + * + */ + +#include "common.h" + +#include <stdlib.h> +#include <ctype.h> +#include <string.h> + +#include "ged_private.h" + +int +ged_view(struct ged *gedp, int argc, const char *argv[]) +{ + static const char *usage = "quat|ypr|aet|center|eye|size [args]"; + + GED_CHECK_DATABASE_OPEN(gedp, BRLCAD_ERROR); + GED_CHECK_VIEW(gedp, BRLCAD_ERROR); + + /* initialize result */ + bu_vls_trunc(&gedp->ged_result_str, 0); + gedp->ged_result = GED_RESULT_NULL; + gedp->ged_result_flags = 0; + + /* must be wanting help */ + if (argc == 1) { + gedp->ged_result_flags |= GED_RESULT_FLAGS_HELP_BIT; + bu_vls_printf(&gedp->ged_result_str, "Usage: %s %s", argv[0], usage); + return BRLCAD_OK; + } + + if (argc < 1 || 6 < argc) { + bu_vls_printf(&gedp->ged_result_str, "Usage: %s %s", argv[0], usage); + return BRLCAD_ERROR; + } + + if (!strcmp(argv[1], "quat")) { + return ged_quat(gedp, argc-1, argv+1); + } + + if (!strcmp(argv[1], "ypr")) { + return ged_ypr(gedp, argc-1, argv+1); + } + + if (!strcmp(argv[1], "aet")) { + return ged_aet(gedp, argc-1, argv+1); + } + + if (!strcmp(argv[1], "center")) { + return ged_center(gedp, argc-1, argv+1); + } + + if (!strcmp(argv[1], "eye")) { + return ged_eye(gedp, argc-1, argv+1); + } + + if (!strcmp(argv[1], "size")) { + return ged_size(gedp, argc-1, argv+1); + } + + bu_vls_printf(&gedp->ged_result_str, "Usage: %s %s", argv[0], usage); + return BRLCAD_ERROR; +} + +/* + * Local Variables: + * tab-width: 8 + * mode: C + * indent-tabs-mode: t + * c-file-style: "stroustrup" + * End: + * ex: shiftwidth=4 tabstop=8 + */ Property changes on: brlcad/trunk/src/libged/view.c ___________________________________________________________________ Added: svn:executable + * Added: svn:mime-type + text/plain Added: svn:eol-style + native Modified: brlcad/trunk/src/libged/vrot.c =================================================================== --- brlcad/trunk/src/libged/vrot.c 2008-08-04 16:08:35 UTC (rev 32247) +++ brlcad/trunk/src/libged/vrot.c 2008-08-04 16:11:53 UTC (rev 32248) @@ -42,6 +42,18 @@ GED_CHECK_DATABASE_OPEN(gedp, BRLCAD_ERROR); GED_CHECK_VIEW(gedp, BRLCAD_ERROR); + /* initialize result */ + bu_vls_trunc(&gedp->ged_result_str, 0); + gedp->ged_result = GED_RESULT_NULL; + gedp->ged_result_flags = 0; + + /* must be wanting help */ + if (argc == 1) { + gedp->ged_result_flags |= GED_RESULT_FLAGS_HELP_BIT; + bu_vls_printf(&gedp->ged_result_str, "Usage: %s %s", argv[0], usage); + return BRLCAD_OK; + } + if (argc != 2 && argc != 4) { bu_vls_printf(&gedp->ged_result_str, "Usage: %s %s", argv[0], usage); return BRLCAD_ERROR; Added: brlcad/trunk/src/libged/ypr.c =================================================================== --- brlcad/trunk/src/libged/ypr.c (rev 0) +++ brlcad/trunk/src/libged/ypr.c 2008-08-04 16:11:53 UTC (rev 32248) @@ -0,0 +1,99 @@ +/* Y P R . C + * BRL-CAD + * + * Copyright (c) 2008 United States Government as represented by + * the U.S. Army Research Laboratory. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * version 2.1 as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this file; see the file named COPYING for more + * information. + */ +/** @file ypr.c + * + * The ypr command. + * + */ + +#include "common.h" + +#include <stdlib.h> +#include <ctype.h> +#include <string.h> + +#include "ged_private.h" + +int +ged_ypr(struct ged *gedp, int argc, const char *argv[]) +{ + vect_t ypr; + mat_t mat; + static const char *usage = "yaw pitch roll"; + + GED_CHECK_DATABASE_OPEN(gedp, BRLCAD_ERROR); + GED_CHECK_VIEW(gedp, BRLCAD_ERROR); + + /* initialize result */ + bu_vls_trunc(&gedp->ged_result_str, 0); + gedp->ged_result = GED_RESULT_NULL; + gedp->ged_result_flags = 0; + + /* return Viewrot as yaw, pitch and roll */ + if (argc == 1) { + int n; + point_t pt; + + bn_mat_trn(mat, gedp->ged_gvp->gv_rotation); + anim_v_unpermute(mat); + + if (anim_mat2ypr(pt, mat) == 2) { + bu_vls_printf(&gedp->ged_result_str, "%s ypr - matrix is not a rotation matrix", argv[0]); + return BRLCAD_ERROR; + } + + VSCALE(pt, pt, bn_radtodeg); + bu_vls_printf(&gedp->ged_result_str, "%.12g %.12g %.12g", V3ARGS(pt)); + + return BRLCAD_OK; + } + + if (argc != 5) { + bu_vls_printf(&gedp->ged_result_str, "Usage: %s %s", argv[0], usage); + return BRLCAD_ERROR; + } + + /* attempt to set Viewrot given yaw, pitch and roll */ + if (sscanf(argv[2], "%lf", ypr) != 1 || + sscanf(argv[3], "%lf", ypr+1) != 1 || + sscanf(argv[4], "%lf", ypr+2) != 1) { + + bu_vls_printf(&gedp->ged_result, "%s ypr: bad value detected - %s %s %s", + argv[0], argv[2], argv[3], argv[4]); + return BRLCAD_ERROR; + } + + anim_dy_p_r2mat(mat, V3ARGS(ypr)); + anim_v_permute(mat); + bn_mat_trn(gedp->ged_gvp->gv_rotation, mat); + ged_view_update(gedp->ged_gvp); + + return BRLCAD_OK; +} + +/* + * Local Variables: + * tab-width: 8 + * mode: C + * indent-tabs-mode: t + * c-file-style: "stroustrup" + * End: + * ex: shiftwidth=4 tabstop=8 + */ Property changes on: brlcad/trunk/src/libged/ypr.c ___________________________________________________________________ Added: svn:executable + * Added: svn:mime-type + text/plain Added: svn:eol-style + native Modified: brlcad/trunk/src/libtclcad/ged_obj.c =================================================================== --- brlcad/trunk/src/libtclcad/ged_obj.c 2008-08-04 16:08:35 UTC (rev 32247) +++ brlcad/trunk/src/libtclcad/ged_obj.c 2008-08-04 16:11:53 UTC (rev 32248) @@ -357,6 +357,8 @@ {"constrain_tmode", "vname x|y|z x y", MAXARGS, go_constrain_tmode, GED_FUNC_PTR_NULL}, {"copyeval", (char *)0, MAXARGS, go_pass_through_func, ged_copyeval}, {"cp", (char *)0, MAXARGS, go_pass_through_func, ged_copy}, + {"d", (char *)0, MAXARGS, go_pass_through_and_refresh_func, ged_erase}, + {"dall", (char *)0, MAXARGS, go_pass_through_and_refresh_func, ged_erase_all}, {"dbip", (char *)0, MAXARGS, go_pass_through_func, ged_dbip}, {"delete_view", "vname", MAXARGS, go_delete_view, GED_FUNC_PTR_NULL}, {"dir2ae", (char *)0, MAXARGS, go_pass_through_func, ged_dir2ae}, @@ -364,6 +366,7 @@ {"dump", (char *)0, MAXARGS, go_pass_through_func, ged_dump}, {"dup", (char *)0, MAXARGS, go_pass_through_func, ged_dup}, {"E", (char *)0, MAXARGS, go_autoview_func, ged_E}, + {"e", (char *)0, MAXARGS, go_autoview_func, ged_draw}, {"edcomb", (char *)0, MAXARGS, go_pass_through_func, ged_edcomb}, {"edmater", (char *)0, MAXARGS, go_pass_through_func, ged_edmater}, {"erase", (char *)0, MAXARGS, go_pass_through_and_refresh_func, ged_erase}, @@ -375,6 +378,7 @@ {"facetize", (char *)0, MAXARGS, go_pass_through_func, ged_facetize}, {"find", (char *)0, MAXARGS, go_pass_through_func, ged_find}, {"form", (char *)0, MAXARGS, go_pass_through_func, ged_form}, + {"fracture", (char *)0, MAXARGS, go_pass_through_func, ged_fracture}, {"g", (char *)0, MAXARGS, go_pass_through_func, ged_group}, {"get", (char *)0, MAXARGS, go_pass_through_func, ged_get}, {"get_autoview", (char *)0, MAXARGS, go_pass_through_func, ged_get_autoview}, @@ -437,12 +441,15 @@ {"pmodel2view", "vname", 2, go_view_func, ged_pmodel2view}, {"pov", "vname center quat scale eye_pos perspective", 7, go_view_func, ged_pmat}, {"prcolor", (char *)0, MAXARGS, go_pass_through_func, ged_prcolor}, + {"prefix", (char *)0, MAXARGS, go_pass_through_func, ged_prefix}, {"push", (char *)0, MAXARGS, go_pass_through_func, ged_push}, {"put", (char *)0, MAXARGS, go_pass_through_func, ged_put}, {"qray", (char *)0, MAXARGS, go_pass_through_func, ged_qray}, + {"quat", "vname a b c d", 5, go_view_func, ged_quat}, {"r", (char *)0, MAXARGS, go_pass_through_func, ged_region}, {"refresh", "vname", MAXARGS, go_refresh, GED_FUNC_PTR_NULL}, {"refresh_all", (char *)0, MAXARGS, go_refresh_all, GED_FUNC_PTR_NULL}, + {"regdef", (char *)0, MAXARGS, go_pass_through_func, ged_regdef}, {"report", (char *)0, MAXARGS, go_pass_through_func, ged_report}, {"rm", (char *)0, MAXARGS, go_pass_through_func, ged_remove}, {"rmap", (char *)0, MAXARGS, go_pass_through_func, ged_rmap}, @@ -486,6 +493,7 @@ {"v2m_point", "vname x y z", 5, go_view_func, ged_v2m_point}, {"vdraw", (char *)0, MAXARGS, go_autoview_func, ged_vdraw}, {"version", (char *)0, MAXARGS, go_pass_through_func, ged_version}, + {"view", "vname quat|ypr|aet|center|eye|size [args]", 3, go_view_func, ged_view}, {"view2model", "vname", 2, go_view_func, ged_view2model}, {"viewdir", "vname [-i]", 3, go_view_func, ged_viewdir}, {"vmake", "vname pname ptype", MAXARGS, go_vmake, GED_FUNC_PTR_NULL}, @@ -497,6 +505,7 @@ {"who", (char *)0, MAXARGS, go_pass_through_func, ged_who}, {"wmater", (char *)0, MAXARGS, go_pass_through_func, ged_wmater}, {"xpush", (char *)0, MAXARGS, go_pass_through_func, ged_xpush}, + {"ypr", "vname yaw pitch roll", 3, go_view_func, ged_ypr}, {"zap", (char *)0, MAXARGS, go_pass_through_and_refresh_func, ged_zap}, {"zbuffer", "vname [0|1]", MAXARGS, go_zbuffer, GED_FUNC_PTR_NULL}, {"zclip", "vname [0|1]", MAXARGS, go_zclip, GED_FUNC_PTR_NULL}, This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bo...@us...> - 2008-08-04 18:22:02
|
Revision: 32251 http://brlcad.svn.sourceforge.net/brlcad/?rev=32251&view=rev Author: bob1961 Date: 2008-08-04 18:21:49 +0000 (Mon, 04 Aug 2008) Log Message: ----------- Enable E, nirt and qray Modified Paths: -------------- brlcad/trunk/misc/win32-msvc8/libged/libged.vcproj brlcad/trunk/src/libged/Makefile.am brlcad/trunk/src/libged/dg_obj.c brlcad/trunk/src/mged/cmd.c brlcad/trunk/src/mged/qray.c brlcad/trunk/src/mged/rtif.c brlcad/trunk/src/mged/setup.c Added Paths: ----------- brlcad/trunk/src/libged/wdb_bigE.c brlcad/trunk/src/libged/wdb_nirt.c brlcad/trunk/src/libged/wdb_qray.c brlcad/trunk/src/libged/wdb_qray.h Modified: brlcad/trunk/misc/win32-msvc8/libged/libged.vcproj =================================================================== --- brlcad/trunk/misc/win32-msvc8/libged/libged.vcproj 2008-08-04 17:17:04 UTC (rev 32250) +++ brlcad/trunk/misc/win32-msvc8/libged/libged.vcproj 2008-08-04 18:21:49 UTC (rev 32251) @@ -710,6 +710,10 @@ > </File> <File + RelativePath="..\..\..\src\libged\wdb_bigE.c" + > + </File> + <File RelativePath="..\..\..\src\libged\wdb_comb_std.c" > </File> @@ -718,10 +722,18 @@ > </File> <File + RelativePath="..\..\..\src\libged\wdb_nirt.c" + > + </File> + <File RelativePath="..\..\..\src\libged\wdb_obj.c" > </File> <File + RelativePath="..\..\..\src\libged\wdb_qray.c" + > + </File> + <File RelativePath="..\..\..\src\libged\wdb_track.c" > </File> Modified: brlcad/trunk/src/libged/Makefile.am =================================================================== --- brlcad/trunk/src/libged/Makefile.am 2008-08-04 17:17:04 UTC (rev 32250) +++ brlcad/trunk/src/libged/Makefile.am 2008-08-04 18:21:49 UTC (rev 32251) @@ -149,9 +149,12 @@ viewdir.c \ vrot.c \ vutil.c \ + wdb_bigE.c \ wdb_comb_std.c \ wdb_importFg4Section.c \ + wdb_nirt.c \ wdb_obj.c \ + wdb_qray.c \ wdb_track.c \ wdb_vdraw.c \ whatid.c \ Modified: brlcad/trunk/src/libged/dg_obj.c =================================================================== --- brlcad/trunk/src/libged/dg_obj.c 2008-08-04 17:17:04 UTC (rev 32250) +++ brlcad/trunk/src/libged/dg_obj.c 2008-08-04 18:21:49 UTC (rev 32251) @@ -104,12 +104,10 @@ return TCL_ERROR; \ } -#if 0 /* declared in qray.c */ extern int dgo_qray_cmd(struct dg_obj *dgop, Tcl_Interp *interp, int argc, char *argv[]); extern void dgo_init_qray(struct dg_obj *dgop); extern void dgo_free_qray(struct dg_obj *dgop); -#endif /* in wdb_obj.c */ void wdb_print_node(struct rt_wdb *wdbp, Tcl_Interp *interp, register struct directory *dp, int pathpos, int indentSize, char prefix, int cflag, int displayDepth, int currdisplayDepth); @@ -134,15 +132,11 @@ static int dgo_rtcheck_tcl(ClientData clientData, Tcl_Interp *interp, int argc, char *argv[]); static int dgo_observer_tcl(ClientData clientData, Tcl_Interp *interp, int argc, char *argv[]); static int dgo_report_tcl(ClientData clientData, Tcl_Interp *interp, int argc, char *argv[]); -#if 0 extern int dgo_E_tcl(ClientData clientData, Tcl_Interp *interp, int argc, char *argv[]); -#endif static int dgo_autoview_tcl(ClientData clientData, Tcl_Interp *interp, int argc, char *argv[]); -#if 0 static int dgo_qray_tcl(ClientData clientData, Tcl_Interp *interp, int argc, char *argv[]); static int dgo_nirt_tcl(ClientData clientData, Tcl_Interp *interp, int argc, char *argv[]); static int dgo_vnirt_tcl(ClientData clientData, Tcl_Interp *interp, int argc, char *argv[]); -#endif static int dgo_vdraw_tcl(ClientData clientData, Tcl_Interp *interp, int argc, char *argv[]); static int dgo_tree_tcl(ClientData clientData, Tcl_Interp *interp, int argc, char *argv[]); @@ -172,9 +166,7 @@ {"blast", dgo_blast_tcl}, {"clear", dgo_zap_tcl}, {"draw", dgo_draw_tcl}, -#if 0 {"E", dgo_E_tcl}, -#endif {"erase", dgo_erase_tcl}, {"erase_all", dgo_erase_all_tcl}, {"ev", dgo_ev_tcl}, @@ -184,14 +176,10 @@ {"how", dgo_how_tcl}, {"illum", dgo_illum_tcl}, {"label", dgo_label_tcl}, -#if 0 {"nirt", dgo_nirt_tcl}, -#endif {"observer", dgo_observer_tcl}, {"overlay", dgo_overlay_tcl}, -#if 0 {"qray", dgo_qray_tcl}, -#endif {"report", dgo_report_tcl}, {"rt", dgo_rt_tcl}, {"rtabort", dgo_rtabort_tcl}, @@ -202,10 +190,8 @@ {"set_transparency", dgo_set_transparency_tcl}, {"shaded_mode", dgo_shaded_mode_tcl}, {"tree", dgo_tree_tcl}, -#if 0 {"vdraw", dgo_vdraw_tcl}, {"vnirt", dgo_vnirt_tcl}, -#endif {"who", dgo_who_tcl}, {"zap", dgo_zap_tcl}, {(char *)0, (int (*)())0} @@ -256,9 +242,7 @@ bu_vls_free(&dgop->dgo_name); -#if 0 - ged_free_qray(dgop); -#endif + dgo_free_qray(dgop); BU_LIST_DEQUEUE(&dgop->l); bu_free((genptr_t)dgop, "dgo_deleteProc: dgop"); @@ -305,9 +289,7 @@ dgop->dgo_freeSolids = &FreeSolid; dgop->dgo_uplotOutputMode = PL_OUTPUT_MODE_BINARY; -#if 0 dgo_init_qray(dgop); -#endif /* append to list of dg_obj's */ BU_LIST_APPEND(&HeadDGObj.l, &dgop->l); @@ -584,7 +566,6 @@ return ret; } -#if 0 /* * * Evaluated Edit something (add to visible display) @@ -602,7 +583,6 @@ return dgo_E_cmd(dgop, interp, argc-1, argv+1); } -#endif /* * Prepare database objects for drawing. @@ -1137,9 +1117,7 @@ return TCL_ERROR; } -#if 0 DGO_CHECK_WDBP_NULL(dgop, interp); -#endif /* search for view object */ for (BU_LIST_FOR(vop, view_obj, &HeadViewObj.l)) { @@ -2257,7 +2235,6 @@ return dgo_rtabort_cmd(dgop, interp, argc-1, argv+1); } -#if 0 static int dgo_qray_tcl(ClientData clientData, Tcl_Interp *interp, @@ -2341,7 +2318,6 @@ return dgo_vnirt_cmd(dgop, vop, interp, argc-2, argv+2); } -#endif int dgo_set_outputHandler_cmd(struct dg_obj *dgop, Added: brlcad/trunk/src/libged/wdb_bigE.c =================================================================== --- brlcad/trunk/src/libged/wdb_bigE.c (rev 0) +++ brlcad/trunk/src/libged/wdb_bigE.c 2008-08-04 18:21:49 UTC (rev 32251) @@ -0,0 +1,2397 @@ +/* B I G E . C + * BRL-CAD + * + * Copyright (c) 1997-2008 United States Government as represented by + * the U.S. Army Research Laboratory. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * version 2.1 as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this file; see the file named COPYING for more + * information. + */ +/** @addtogroup libged */ +/** @{ */ +/** @file bigE.c + * + * This module implements the 'E' command. + * + */ +/** @} */ + +#include "common.h" + +#include <stdlib.h> +#include <stdio.h> +#include <string.h> +#include <time.h> +#include "bio.h" + +#include "bu.h" +#include "vmath.h" +#include "nmg.h" +#include "rtgeom.h" +#include "solid.h" +#include "dg.h" +#include "ged.h" + +/* #define debug 1 */ + +struct dg_client_data { + struct dg_obj *dgop; + Tcl_Interp *interp; + int wireframe_color_override; + int wireframe_color[3]; + struct application *ap; + struct bu_ptbl leaf_list; + struct rt_i *rtip; + time_t start_time; + time_t etime; + long nvectors; + int do_polysolids; + int num_halfs; +}; + +union E_tree *wdb_build_etree(union tree *tp, struct dg_client_data *dgcdp); + +/* segment types (stored in the "seg_stp" field of the (struct seg) */ +#define ON_SURF (struct soltab *)0x1 +#define IN_SOL (struct soltab *)0x2 +#define ON_INT (struct soltab *)0x3 + +#define NOT_SEG_OVERLAP( _a, _b ) ((_a->seg_out.hit_dist <= _b->seg_in.hit_dist) || (_b->seg_out.hit_dist <= _a->seg_in.hit_dist)) + +/* RT_FREE_SEG_LIST assumed list head is a "struct seg" */ +#define MY_FREE_SEG_LIST( _segheadp, _res ) { \ + register struct seg *_a; \ + while ( BU_LIST_WHILE( _a, seg, (_segheadp) ) ) { \ + BU_LIST_DEQUEUE( &(_a->l) ); \ + RT_FREE_SEG( _a, _res ); \ + } } + +/* stolen from g_half.c */ +struct half_specific { + plane_t half_eqn; /* Plane equation, outward normal */ + vect_t half_Xbase; /* "X" basis direction */ + vect_t half_Ybase; /* "Y" basis direction */ +}; +#define HALF_NULL ((struct half_specific *)0) + +/* structures for building a tree corresponding to the region to be drawn + * uses the same "op" values as "union tree" + */ +union E_tree +{ + long magic; + + struct E_node /* the operator nodes */ + { + long magic; + int op; + union E_tree *left; + union E_tree *right; + } n; + + struct E_leaf /* the leaf nodes */ + { + long magic; + int op; + struct model *m; /* NMG version of this leaf solid */ + struct bu_list seghead; /* head of list of segments for this leaf solid */ + struct bu_ptbl edge_list; /* list of edges from above NMG */ + struct soltab *stp; /* the usual soltab pointer */ + unsigned char do_not_free_model; /* A flag indicating that the NMG model pointer is a reference to the + * NMG model in the soltab structure */ + } l; +}; + +#define E_TREE_MAGIC 0x45545245 +#define CK_ETREE(_p) BU_CKMAG( _p, E_TREE_MAGIC, "struct E_tree" ) + +HIDDEN union E_tree * +wdb_add_solid(const struct directory *dp, + matp_t mat, + struct dg_client_data *dgcdp) +{ + union E_tree *eptr; + struct nmgregion *r; + struct rt_db_internal intern; + int id; + int solid_is_plate_mode_bot=0; + + BU_GETUNION( eptr, E_tree ); + eptr->magic = E_TREE_MAGIC; + + id = rt_db_get_internal( &intern, dp, dgcdp->dgop->dgo_wdbp->dbip, mat, &rt_uniresource ); + if ( id < 0 ) + { + Tcl_AppendResult(dgcdp->interp, "Failed to get internal form of ", + dp->d_namep, "\n", (char *)NULL ); + eptr->l.m = (struct model *)NULL; + return( eptr ); + } + if ( id == ID_COMBINATION ) + { + /* do explicit expansion of referenced combinations */ + + struct rt_comb_internal *comb; + + bu_free( (char *)eptr, "eptr" ); + + comb = (struct rt_comb_internal *)intern.idb_ptr; + RT_CK_COMB( comb ); + + eptr = wdb_build_etree( comb->tree, dgcdp ); + rt_db_free_internal( &intern, &rt_uniresource ); + return( eptr ); + } +#if 0 + if ( id == ID_BOT ) + { + struct rt_bot_internal *bot = (struct rt_bot_internal *)intern.idb_ptr; + + /* if this is a plate mode BOT, lie to the tesselator to get + * an approximation + */ + + RT_BOT_CK_MAGIC( bot ); + + if ( bot->mode == RT_BOT_PLATE || bot->mode == RT_BOT_PLATE_NOCOS ) + { + solid_is_plate_mode_bot = 1; + bot->mode = RT_BOT_SOLID; + } + } +#endif + if ( id == ID_HALF ) + { + eptr->l.m = NULL; + dgcdp->num_halfs++; + } + else if ( id == ID_NMG ) + { + /* steal the nmg model */ + eptr->l.m = (struct model *)intern.idb_ptr; + eptr->l.do_not_free_model = 1; + } + else + { + /* create the NMG version of this solid */ + eptr->l.m = nmg_mm(); + if (rt_functab[id].ft_tessellate( &r, eptr->l.m, &intern, + &dgcdp->dgop->dgo_wdbp->wdb_ttol, &dgcdp->dgop->dgo_wdbp->wdb_tol) < 0) + { + nmg_km( eptr->l.m ); + eptr->l.m = NULL; + } + } + + /* get the soltab stuff */ + BU_GETSTRUCT( eptr->l.stp, soltab ); + eptr->l.stp->l.magic = RT_SOLTAB_MAGIC; + eptr->l.stp->l2.magic = RT_SOLTAB2_MAGIC; + eptr->l.stp->st_dp = dp; + eptr->l.stp->st_matp = mat; + + { + struct rt_bot_internal *bot; + struct rt_db_internal intern2; + + if ( dgcdp->do_polysolids ) + { + struct shell *s=(struct shell *)NULL; + struct nmgregion *r=(struct nmgregion *)NULL; + + /* create and prep a BoT version of this solid */ + if ( eptr->l.m ) { + r = BU_LIST_FIRST( nmgregion, &eptr->l.m->r_hd ); + s = BU_LIST_FIRST( shell, &r->s_hd ); + } + + if ( solid_is_plate_mode_bot || + !eptr->l.m || + (bot=nmg_bot( s, &dgcdp->dgop->dgo_wdbp->wdb_tol ) ) == (struct rt_bot_internal *)NULL ) + { + eptr->l.stp->st_id = id; + eptr->l.stp->st_meth = &rt_functab[id]; + if ( rt_functab[id].ft_prep( eptr->l.stp, &intern, dgcdp->rtip ) < 0 ) + Tcl_AppendResult(dgcdp->interp, "Prep failure for solid '", dp->d_namep, + "'\n", (char *)NULL ); + } + else + { + RT_INIT_DB_INTERNAL( &intern2 ); + intern2.idb_major_type = DB5_MAJORTYPE_BRLCAD; + intern2.idb_type = ID_BOT; + intern2.idb_meth = &rt_functab[ID_BOT]; + intern2.idb_ptr = (genptr_t)bot; + eptr->l.stp->st_id = ID_BOT; + eptr->l.stp->st_meth = &rt_functab[ID_BOT]; + if (rt_functab[ID_BOT].ft_prep( eptr->l.stp, &intern2, dgcdp->rtip ) < 0 ) + { + Tcl_AppendResult(dgcdp->interp, "Prep failure for solid '", dp->d_namep, + "'\n", (char *)NULL ); + } + + rt_db_free_internal( &intern2, &rt_uniresource ); + } + } + else + { + /* prep this solid */ + + eptr->l.stp->st_id = id; + eptr->l.stp->st_meth = &rt_functab[id]; + if ( rt_functab[id].ft_prep( eptr->l.stp, &intern, dgcdp->rtip ) < 0 ) + Tcl_AppendResult(dgcdp->interp, "Prep failure for solid '", dp->d_namep, + "'\n", (char *)NULL ); + } + } + + if ( id != ID_NMG ) + rt_db_free_internal( &intern, &rt_uniresource ); + + /* add this leaf to the leaf list */ + bu_ptbl_ins( &dgcdp->leaf_list, (long *)eptr ); + + return( eptr ); +} + +/* build an E_tree corresponding to the region tree (tp) */ +union E_tree * +wdb_build_etree(union tree *tp, + struct dg_client_data *dgcdp) +{ + union E_tree *eptr = NULL; + struct soltab *stp; + struct directory *dp; + + RT_CK_TREE( tp ); + + switch ( tp->tr_op ) + { + case OP_UNION: + case OP_SUBTRACT: + case OP_INTERSECT: + BU_GETUNION( eptr, E_tree ); + eptr->magic = E_TREE_MAGIC; + eptr->n.op = tp->tr_op; + eptr->n.left = wdb_build_etree( tp->tr_b.tb_left, dgcdp ); + eptr->n.right = wdb_build_etree( tp->tr_b.tb_right, dgcdp ); + break; + case OP_SOLID: + stp = tp->tr_a.tu_stp; + eptr = wdb_add_solid( stp->st_dp, stp->st_matp, dgcdp ); + eptr->l.op = tp->tr_op; + BU_LIST_INIT( &eptr->l.seghead ); + break; + case OP_DB_LEAF: + if ( (dp=db_lookup( dgcdp->dgop->dgo_wdbp->dbip, tp->tr_l.tl_name, LOOKUP_NOISY )) == DIR_NULL ) + { + eptr->l.m = (struct model *)NULL; + break; + } + eptr = wdb_add_solid( dp, tp->tr_l.tl_mat, dgcdp ); + eptr->l.op = tp->tr_op; + BU_LIST_INIT( &eptr->l.seghead ); + break; + case OP_NOP: + /* add a NULL solid */ + BU_GETUNION( eptr, E_tree ); + eptr->magic = E_TREE_MAGIC; + eptr->l.m = (struct model *)NULL; + break; + default: + bu_bomb("wdb_build_etree() Unknown tr_op\n"); + } + return( eptr ); +} + +/* a handy routine (for debugging) that prints asegment list */ +void +wdb_show_seg(struct bu_list *seg, int str) +{ + struct seg *ptr; + + if ( !seg ) + bu_log( "%s - NULL seg list\n", str ); + else + { + if ( BU_LIST_IS_EMPTY( seg ) ) + bu_log( "%s - empty\n", str ); + else + { + bu_log( "%s:\n", str ); + for ( BU_LIST_FOR( ptr, seg, seg ) ) + { + if ( ptr->seg_stp == ON_SURF ) + bu_log( "\t %g to %g (ON_SURF)\n", ptr->seg_in.hit_dist, ptr->seg_out.hit_dist ); + else if ( ptr->seg_stp == ON_INT ) + bu_log( "\t %g to %g (ON_INT)\n", ptr->seg_in.hit_dist, ptr->seg_out.hit_dist ); + else if ( ptr->seg_stp == IN_SOL ) + bu_log( "\t %g to %g (IN)\n", ptr->seg_in.hit_dist, ptr->seg_out.hit_dist ); + else + bu_log( "\t %g to %g (?)\n", ptr->seg_in.hit_dist, ptr->seg_out.hit_dist ); + bu_log( "\t\t( %g %g %g) <-> (%g %g %g)\n", V3ARGS( ptr->seg_in.hit_point), + V3ARGS( ptr->seg_out.hit_point ) ); + } + } + } +} + +/* given a segment list, eliminate any overlaps in the segments */ +HIDDEN void +wdb_eliminate_overlaps(struct bu_list *seghead, + struct dg_client_data *dgcdp) +{ + struct seg *a, *b, *nextb; + + a = BU_LIST_FIRST( seg, seghead ); + while ( BU_LIST_NOT_HEAD( &a->l, seghead ) ) + { + b = BU_LIST_PNEXT( seg, &a->l ); + if ( BU_LIST_IS_HEAD( &b->l, seghead ) ) + break; + + while ( BU_LIST_NOT_HEAD( &b->l, seghead ) ) + { + nextb = BU_LIST_PNEXT( seg, &b->l ); + if ( NOT_SEG_OVERLAP( a, b ) ) + break; + + if ( b->seg_in.hit_dist < a->seg_out.hit_dist ) + { + if ( b->seg_out.hit_dist > a->seg_out.hit_dist ) + a->seg_out.hit_dist = b->seg_out.hit_dist; + + BU_LIST_DEQUEUE( &b->l ); + RT_FREE_SEG( b, dgcdp->ap->a_resource ); + b = nextb; + continue; + } + + b = nextb; + } + + a = BU_LIST_PNEXT(seg, &a->l ); + } +} + +/* perform the intersection of two segments + * the result is assigned the provided type + */ +HIDDEN void +wdb_do_intersect(struct seg *A, + struct seg *B, + struct bu_list *seghead, + struct soltab *type, + struct dg_client_data *dgcdp) +{ + struct seg *tmp=(struct seg *)NULL; + + if ( NOT_SEG_OVERLAP( A, B ) ) + return; + + RT_GET_SEG( tmp, dgcdp->ap->a_resource ); + if ( A->seg_in.hit_dist <= B->seg_in.hit_dist ) + { + if ( B->seg_out.hit_dist <= A->seg_out.hit_dist ) + { + *tmp = *B; + tmp->seg_stp = type; + } + else + { + tmp->seg_in.hit_dist = B->seg_in.hit_dist; + tmp->seg_out.hit_dist = A->seg_out.hit_dist; + tmp->seg_stp = type; + } + } + else + { + if ( B->seg_out.hit_dist >= A->seg_out.hit_dist ) + { + *tmp = *A; + tmp->seg_stp = type; + } + else + { + tmp->seg_in.hit_dist = A->seg_in.hit_dist; + tmp->seg_out.hit_dist = B->seg_out.hit_dist; + tmp->seg_stp = type; + } + } + if ( tmp ) + BU_LIST_INSERT( seghead, &tmp->l ) + return; +} + +/* perform the subtraction of one segment from another + * the result is assigned the type from segment A + */ +HIDDEN void +wdb_do_subtract(struct seg *A, + struct seg *B, + struct bu_list *seghead, + struct dg_client_data *dgcdp) +{ + struct seg *tmp=(struct seg *)NULL; + + + if ( NOT_SEG_OVERLAP( A, B ) ) + { + RT_GET_SEG( tmp, dgcdp->ap->a_resource ) + *tmp = *A; + BU_LIST_INSERT( seghead, &tmp->l ) + return; + } + + if ( B->seg_in.hit_dist<= A->seg_in.hit_dist ) + { + if ( B->seg_out.hit_dist < A->seg_out.hit_dist ) + { + RT_GET_SEG( tmp, dgcdp->ap->a_resource ) + *tmp = *A; + tmp->seg_in.hit_dist = B->seg_out.hit_dist; + BU_LIST_INSERT( seghead, &tmp->l ) + return; + } + else + return; + } + else + { + if ( B->seg_out.hit_dist >= A->seg_out.hit_dist ) + { + RT_GET_SEG( tmp, dgcdp->ap->a_resource ) + *tmp = *A; + tmp->seg_out.hit_dist = B->seg_in.hit_dist; + BU_LIST_INSERT( seghead, &tmp->l ) + return; + } + else + { + RT_GET_SEG( tmp, dgcdp->ap->a_resource ); + tmp->seg_in.hit_dist = A->seg_in.hit_dist; + tmp->seg_out.hit_dist = B->seg_in.hit_dist; + tmp->seg_stp = A->seg_stp; + BU_LIST_INSERT( seghead, &tmp->l ) + RT_GET_SEG( tmp, dgcdp->ap->a_resource ); + tmp->seg_in.hit_dist = B->seg_out.hit_dist; + tmp->seg_out.hit_dist = A->seg_out.hit_dist; + tmp->seg_stp = A->seg_stp; + BU_LIST_INSERT( seghead, &tmp->l ) + return; + } + } +} + +/* perform the union of two segments + * the types of A and B should be the same + */ +HIDDEN void +wdb_do_union(struct seg *A, + struct seg *B, + struct bu_list *seghead, + struct dg_client_data *dgcdp) +{ + struct seg *tmp; + + RT_GET_SEG( tmp, dgcdp->ap->a_resource ) + + if ( NOT_SEG_OVERLAP( A, B ) ) + { + if ( A->seg_in.hit_dist <= B->seg_in.hit_dist ) + { + *tmp = *A; + BU_LIST_INSERT( seghead, &tmp->l ) + RT_GET_SEG( tmp, dgcdp->ap->a_resource ) + *tmp = *B; + BU_LIST_INSERT( seghead, &tmp->l ) + } + else + { + *tmp = *B; + BU_LIST_INSERT( seghead, &tmp->l ) + RT_GET_SEG( tmp, dgcdp->ap->a_resource ) + *tmp = *A; + BU_LIST_INSERT( seghead, &tmp->l ) + } + return; + } + + if ( A->seg_in.hit_dist <= B->seg_in.hit_dist ) + { + *tmp = *A; + if ( B->seg_out.hit_dist > A->seg_out.hit_dist ) + tmp->seg_out.hit_dist = B->seg_out.hit_dist; + } + else + { + *tmp = *B; + if ( A->seg_out.hit_dist > B->seg_out.hit_dist ) + tmp->seg_out.hit_dist = B->seg_out.hit_dist; + } + + BU_LIST_INSERT( seghead, &tmp->l ) + } + +HIDDEN void +wdb_promote_ints(struct bu_list *head, + struct dg_client_data *dgcdp) +{ + struct seg *a, *b, *tmp; + +#ifdef debug + bu_log( "In wdb_promote_ints():\n" ); + wdb_show_seg( head, "SEGS" ); + for ( BU_LIST_FOR( a, seg, head ) ) + { + b = BU_LIST_PNEXT( seg, &a->l ); + if ( BU_LIST_IS_HEAD( &b->l, head ) ) + break; + + if ( b->seg_in.hit_dist < a->seg_in.hit_dist ) + bu_log( "\tsegments out of order:\n" ); + } +#endif + + a = BU_LIST_FIRST( seg, head ); + while ( BU_LIST_NOT_HEAD( &a->l, head ) ) + { + b = BU_LIST_PNEXT( seg, &a->l ); + while ( BU_LIST_NOT_HEAD( &b->l, head ) ) + { + if ( a->seg_stp == ON_INT && b->seg_stp == ON_SURF ) + { + if ( NOT_SEG_OVERLAP( a, b ) ) + { + b = BU_LIST_PNEXT( seg, &b->l ); + continue; + } + + if ( a->seg_in.hit_dist == b->seg_in.hit_dist && + a->seg_out.hit_dist == b->seg_out.hit_dist ) + { + a->seg_stp = ON_SURF; + tmp = b; + b = BU_LIST_PNEXT( seg, &b->l ); + BU_LIST_DEQUEUE( &tmp->l ) + RT_FREE_SEG( tmp, dgcdp->ap->a_resource ) + continue;; + } + + if ( a->seg_out.hit_dist == b->seg_out.hit_dist ) + a->seg_out.hit_dist = b->seg_in.hit_dist; + else if ( a->seg_out.hit_dist < b->seg_out.hit_dist ) + { + if ( b->seg_in.hit_dist > a->seg_in.hit_dist ) + a->seg_out.hit_dist = b->seg_in.hit_dist; + else + { + tmp = a; + a = BU_LIST_PLAST( seg, &a->l ); + BU_LIST_DEQUEUE( &tmp->l ) + RT_FREE_SEG( tmp, dgcdp->ap->a_resource ) + break; + } + } + else if ( a->seg_in.hit_dist == b->seg_in.hit_dist ) + { + fastf_t tmp_dist; + + tmp_dist = a->seg_out.hit_dist; + a->seg_out.hit_dist = b->seg_out.hit_dist; + b->seg_in.hit_dist = a->seg_out.hit_dist; + b->seg_out.hit_dist = tmp_dist; + a->seg_stp = ON_SURF; + b->seg_stp = ON_INT; + } + else + { + RT_GET_SEG( tmp, dgcdp->ap->a_resource ) + *tmp = *a; + tmp->seg_in.hit_dist = b->seg_out.hit_dist; + a->seg_out.hit_dist = b->seg_in.hit_dist; + BU_LIST_APPEND( &b->l, &tmp->l ) + } + } + else if ( b->seg_stp == ON_INT && a->seg_stp == ON_SURF ) + { + if ( NOT_SEG_OVERLAP( b, a ) ) + { + b = BU_LIST_PNEXT( seg, &b->l ); + continue; + } + + if ( b->seg_in.hit_dist == a->seg_in.hit_dist && + b->seg_out.hit_dist == a->seg_out.hit_dist ) + { + b->seg_stp = ON_SURF; + tmp = a; + a = BU_LIST_PLAST( seg, &a->l ); + BU_LIST_DEQUEUE( &tmp->l ) + RT_FREE_SEG( tmp, dgcdp->ap->a_resource ) + break; + } + + if ( b->seg_out.hit_dist == a->seg_out.hit_dist ) + { + tmp = b; + b = BU_LIST_PNEXT( seg, &b->l ); + BU_LIST_DEQUEUE( &tmp->l ) + RT_FREE_SEG( tmp, dgcdp->ap->a_resource ) + } + else if ( b->seg_out.hit_dist < a->seg_out.hit_dist ) + { + if ( a->seg_in.hit_dist > b->seg_in.hit_dist ) + b->seg_out.hit_dist = a->seg_in.hit_dist; + else + { + tmp = b; + b = BU_LIST_PNEXT( seg, &b->l ); + BU_LIST_DEQUEUE( &tmp->l ) + RT_FREE_SEG( tmp, dgcdp->ap->a_resource ) + continue; + } + } + else if ( b->seg_in.hit_dist == a->seg_in.hit_dist ) + b->seg_in.hit_dist = a->seg_out.hit_dist; + else + { + RT_GET_SEG( tmp, dgcdp->ap->a_resource ) + *tmp = *b; + tmp->seg_in.hit_dist = a->seg_out.hit_dist; + b->seg_out.hit_dist = a->seg_in.hit_dist; + BU_LIST_APPEND( &a->l, &tmp->l ) + } + } + + if ( (a->seg_stp != ON_INT) || (b->seg_stp != ON_INT) ) + { + b = BU_LIST_PNEXT( seg, &b->l ); + continue; + } + + if ( NOT_SEG_OVERLAP( a, b ) ) + { + b = BU_LIST_PNEXT( seg, &b->l ); + continue; + } + +#ifdef debug + bu_log( "\tfound overlapping ON_INT segs:\n" ); +#endif + + if ( a->seg_in.hit_dist == b->seg_in.hit_dist && + a->seg_out.hit_dist == b->seg_out.hit_dist ) + { +#ifdef debug + bu_log( "Promoting A, eliminating B\n" ); +#endif + + a->seg_stp = ON_SURF; + BU_LIST_DEQUEUE( &b->l ) + RT_FREE_SEG( b, dgcdp->ap->a_resource ) + break; + } + + if ( a->seg_out.hit_dist == b->seg_out.hit_dist ) + { + b->seg_stp = ON_SURF; + a->seg_out.hit_dist = b->seg_in.hit_dist; + +#ifdef debug + bu_log( "Promoting B, reducing A:\n" ); +#endif + } + else if ( a->seg_out.hit_dist < b->seg_out.hit_dist ) + { + if ( b->seg_in.hit_dist > a->seg_in.hit_dist ) + { + RT_GET_SEG( tmp, dgcdp->ap->a_resource ) + tmp->seg_stp = ON_SURF; + tmp->seg_in.hit_dist = b->seg_in.hit_dist; + tmp->seg_out.hit_dist = a->seg_out.hit_dist; + b->seg_in.hit_dist = a->seg_out.hit_dist; + a->seg_out.hit_dist = tmp->seg_in.hit_dist; + BU_LIST_INSERT( &b->l, &tmp->l ) + +#ifdef debug + bu_log( "--==__ overlap\n" ); +#endif + } + else + { + b->seg_in.hit_dist = a->seg_out.hit_dist; + a->seg_stp = ON_SURF; + +#ifdef debug + bu_log( "A within B\n" ); +#endif + } + } + else + { + if ( a->seg_in.hit_dist == b->seg_in.hit_dist ) + { + fastf_t tmp_dist; + + tmp_dist = a->seg_out.hit_dist; + a->seg_out.hit_dist = b->seg_out.hit_dist; + a->seg_stp = ON_SURF; + b->seg_in.hit_dist = a->seg_out.hit_dist; + b->seg_out.hit_dist = tmp_dist; + } + else + { + RT_GET_SEG( tmp, dgcdp->ap->a_resource ) + *tmp = *a; + tmp->seg_in.hit_dist = b->seg_out.hit_dist; + a->seg_out.hit_dist = b->seg_in.hit_dist; + b->seg_stp = ON_SURF; + BU_LIST_APPEND( &b->l, &tmp->l ) + +#ifdef debug + bu_log( "B within A:\n" ); +#endif + } + } + b = BU_LIST_PNEXT( seg, &b->l ); + } + a = BU_LIST_PNEXT( seg, &a->l ); + } + +#ifdef debug + bu_log( "Results of wdb_promote_ints()\n" ); + wdb_show_seg( head, "SEGS" ); +#endif +} + +/* Evaluate an operation on the operands (segment lists) */ +HIDDEN struct bu_list * +wdb_eval_op(struct bu_list *A, + int op, + struct bu_list *B, + struct dg_client_data *dgcdp) +{ + struct seg *sega, *segb, *tmp, *next; + struct bu_list ret, ons, ins; + int inserted; + + BU_LIST_INIT( &ret ); + +#ifdef debug + bu_log( "In wdb_eval_op:\n" ); + wdb_show_seg( A, "\tA:" ); + wdb_show_seg( B, "\tB:" ); +#endif + + switch ( op ) + { + case OP_SUBTRACT: + +#ifdef debug + bu_log( "\t\tSUBTACT\n" ); +#endif + + if ( BU_LIST_IS_EMPTY( A ) ) + { + MY_FREE_SEG_LIST( B, dgcdp->ap->a_resource ); + bu_free( (char *)B, "bu_list" ); + +#ifdef debug + wdb_show_seg( A, "Returning" ); +#endif + + return( A ); + } + else if ( BU_LIST_IS_EMPTY( B ) ) + { + bu_free( (char *)B, "bu_list" ); + +#ifdef debug + wdb_show_seg( A, "Returning" ); +#endif + + return( A ); + } + + /* A - B: + * keep segments: + * ON_A - IN_B + * ON_A - ON_B + * ON_B + IN_A + * IN_A - IN_B + */ + for ( BU_LIST_FOR( sega, seg, A ) ) + { + for ( BU_LIST_FOR( segb, seg, B ) ) + { + if ( sega->seg_stp == ON_INT && segb->seg_stp == ON_INT ) + wdb_do_intersect( sega, segb, &ret, ON_SURF, dgcdp ); + else if ( sega->seg_stp == ON_SURF || sega->seg_stp == ON_INT ) + { + wdb_do_subtract( sega, segb, &ret, dgcdp ); + } + else if ( segb->seg_stp == ON_SURF || segb->seg_stp == ON_INT ) + wdb_do_intersect( segb, sega, &ret, segb->seg_stp, dgcdp ); + } + } + MY_FREE_SEG_LIST( B, dgcdp->ap->a_resource ); + bu_free( (char *)B, "bu_list" ); + MY_FREE_SEG_LIST( A, dgcdp->ap->a_resource ); + BU_LIST_INSERT_LIST( A, &ret ) + +#ifdef debug + wdb_show_seg( A, "Returning" ); +#endif + + return( A ); + case OP_INTERSECT: + +#ifdef debug + bu_log( "\t\tINTERSECT\n" ); +#endif + + if ( BU_LIST_IS_EMPTY( A ) || BU_LIST_IS_EMPTY( B ) ) + { + MY_FREE_SEG_LIST( A, dgcdp->ap->a_resource ); + MY_FREE_SEG_LIST( B, dgcdp->ap->a_resource ); + bu_free( (char *)B, "bu_list" ); + +#ifdef debug + wdb_show_seg( A, "Returning" ); +#endif + + return( A ); + } + /* A + B + * This is merely the intersection of segments from A with those from B + * The two different calls to "wdb_do_intersect" get the types (IN, ON) right + */ + for ( BU_LIST_FOR( sega, seg, A ) ) + { + for ( BU_LIST_FOR( segb, seg, B ) ) + { + if ( sega->seg_stp == ON_INT && segb->seg_stp == ON_INT ) + wdb_do_intersect( sega, segb, &ret, ON_SURF, dgcdp ); + else if ( sega->seg_stp == ON_SURF || sega->seg_stp == ON_INT ) + wdb_do_intersect( sega, segb, &ret, sega->seg_stp, dgcdp ); + else + wdb_do_intersect( segb, sega, &ret, segb->seg_stp, dgcdp ); + } + } + MY_FREE_SEG_LIST( B, dgcdp->ap->a_resource ); + bu_free( (char *)B, "bu_list" ); + MY_FREE_SEG_LIST( A, dgcdp->ap->a_resource ); + BU_LIST_INSERT_LIST( A, &ret ) + +#ifdef debug + wdb_show_seg( A, "Returning" ); +#endif + + return( A ); + case OP_UNION: + +#ifdef debug + bu_log( "\t\tUNION\n" ); +#endif + + if ( BU_LIST_IS_EMPTY( A ) ) + { + bu_free( (char *)A, "bu_list" ); + +#ifdef debug + wdb_show_seg( B, "Returning B (A is empty)" ); +#endif + + return( B ); + } + if ( BU_LIST_IS_EMPTY( B ) ) + { + bu_free( (char *)B, "bu_list" ); + +#ifdef debug + wdb_show_seg( A, "Returning A (B is empty)" ); +#endif + + return( A ); + } + /* A u B: + * keep segments: + * ON_A - IN_B (ON) + * IN_B + ON_A (IN ) + * ON_B - IN_A (ON) + * IN_A + ON_B (IN) + * all remaining unique ON or IN segments + */ + + /* create two new lists, one with all the ON segments, + * the other with all the IN segments + */ + BU_LIST_INIT( &ons ) + BU_LIST_INIT( &ins ) + + /* Put the A operand segments on the lists */ + while ( BU_LIST_WHILE( sega, seg, A ) ) + { + BU_LIST_DEQUEUE( &sega->l ) + + if ( sega->seg_stp == ON_SURF || sega->seg_stp == ON_INT ) + BU_LIST_INSERT( &ons, &sega->l ) + else + BU_LIST_INSERT( &ins, &sega->l ) + } + + /* insert the B operand segments in the lists (maintaining order from smaller starting + * hit distance to larger + */ + while ( BU_LIST_WHILE( segb, seg, B ) ) + { + int inserted; + BU_LIST_DEQUEUE( &segb->l ) + + if ( segb->seg_stp == IN_SOL ) + { + inserted = 0; + for ( BU_LIST_FOR( tmp, seg, &ins ) ) + { + if ( tmp->seg_in.hit_dist >= segb->seg_in.hit_dist ) + { + inserted = 1; + BU_LIST_INSERT( &tmp->l, &segb->l ) + break; + } + } + if ( !inserted ) + BU_LIST_INSERT( &ins, &segb->l ) + } + else + { + inserted = 0; + for ( BU_LIST_FOR( tmp, seg, &ons ) ) + { + if ( tmp->seg_in.hit_dist >= segb->seg_in.hit_dist ) + { + inserted = 1; + BU_LIST_INSERT( &tmp->l, &segb->l ) + break; + } + } + if ( !inserted ) + BU_LIST_INSERT( &ons, &segb->l ) + } + } + + /* promote intersecting ON_INT's to ON_SURF */ + wdb_promote_ints( &ons, dgcdp ); + + /* make sure the segments are unique */ + wdb_eliminate_overlaps( &ins, dgcdp ); + wdb_eliminate_overlaps( &ons, dgcdp ); + +#ifdef debug + wdb_show_seg( &ons, "ONS" ); + wdb_show_seg( &ins, "INS" ); +#endif + + /* subtract INS from ONS */ +#ifdef debug + bu_log( "doing subtraction:\n" ); +#endif + sega = BU_LIST_FIRST( seg, &ons ); + while ( BU_LIST_NOT_HEAD( &sega->l, &ons ) ) + { + next = BU_LIST_PNEXT( seg, &sega->l ); + +#ifdef debug + bu_log( "A is %g to %g:\n", sega->seg_in.hit_dist, sega->seg_out.hit_dist ); +#endif + + for ( BU_LIST_FOR( segb, seg, &ins ) ) + { +#ifdef debug + bu_log( "\tcomparing to B %g to %g\n", segb->seg_in.hit_dist, segb->seg_out.hit_dist ); +#endif + + if ( NOT_SEG_OVERLAP( sega, segb ) ) + { +#ifdef debug + bu_log( "\t\tNo overlap!!\n" ); +#endif + + continue; + } + + if ( segb->seg_in.hit_dist <= sega->seg_in.hit_dist && + segb->seg_out.hit_dist >= sega->seg_out.hit_dist ) + { +#ifdef debug + bu_log( "\t\teliminating A\n" ); +#endif + + /* eliminate sega */ + BU_LIST_DEQUEUE( &sega->l ) + RT_FREE_SEG( sega, dgcdp->ap->a_resource ) + sega = next; + break; + } + + if ( segb->seg_in.hit_dist > sega->seg_in.hit_dist && + segb->seg_out.hit_dist < sega->seg_out.hit_dist ) + { + /* split sega */ + RT_GET_SEG( tmp, dgcdp->ap->a_resource ) + *tmp = *sega; + tmp->seg_in.hit_dist = segb->seg_out.hit_dist; + sega->seg_out.hit_dist = segb->seg_in.hit_dist; + BU_LIST_APPEND( &sega->l, &tmp->l ) + next = tmp; + +#ifdef debug + bu_log( "\t\tsplit A into: %g to %g and %g to %g\n", sega->seg_in.hit_dist, sega->seg_out.hit_dist, tmp->seg_in.hit_dist, tmp->seg_out.hit_dist ); +#endif + } + else + { + /* subtract edges */ + if ( segb->seg_in.hit_dist > sega->seg_in.hit_dist ) + sega->seg_out.hit_dist = segb->seg_in.hit_dist; + if ( segb->seg_out.hit_dist < sega->seg_out.hit_dist ) + sega->seg_in.hit_dist = segb->seg_out.hit_dist; + +#ifdef debug + bu_log( "\t\tsubtracted A down to %g to %g\n", sega->seg_in.hit_dist, sega->seg_out.hit_dist ); +#endif + } + } + sega = next; + } + + /* put the resuling ONS list on the result list */ + BU_LIST_INSERT_LIST( &ret, &ons ) + + /* add INS to the return list (maintain order) */ + while ( BU_LIST_WHILE( sega, seg, &ins ) ) + { + BU_LIST_DEQUEUE( &sega->l ) + + inserted = 0; + for ( BU_LIST_FOR( segb, seg, &ret ) ) + { + if ( sega->seg_in.hit_dist < segb->seg_in.hit_dist ) + { + BU_LIST_INSERT( &segb->l, &sega->l ) + inserted = 1; + break; + } + } + + if ( !inserted ) + BU_LIST_INSERT( &ret, &sega->l ) + } + + MY_FREE_SEG_LIST( B, dgcdp->ap->a_resource ); + bu_free( (char *)B, "bu_list" ); + MY_FREE_SEG_LIST( A, dgcdp->ap->a_resource ); + BU_LIST_INSERT_LIST( A, &ret ) + +#ifdef debug + wdb_show_seg( A, "Returning" ); +#endif + + return( A ); + } + + /* should never get here */ + MY_FREE_SEG_LIST( A, dgcdp->ap->a_resource ); + MY_FREE_SEG_LIST( B, dgcdp->ap->a_resource ); + bu_free( (char *)B, "bu_list" ); + +#ifdef debug + wdb_show_seg( A, "Returning (default)" ); +#endif + + return( A ); + +} + +/* evaluate an E-tree */ +HIDDEN struct bu_list * +wdb_eval_etree(union E_tree *eptr, + struct dg_client_data *dgcdp) + +{ + struct bu_list *A, *B; + + CK_ETREE( eptr ); + +#ifdef debug + bu_log( "In wdb_eval_etree:\n" ); +#endif + + switch ( eptr->l.op ) + { + case OP_DB_LEAF: + case OP_SOLID: + A = (struct bu_list *)bu_malloc( sizeof( struct bu_list ), "bu_list" ); + BU_LIST_INIT( A ); + BU_LIST_INSERT_LIST( A, &eptr->l.seghead ) + +#ifdef debug + wdb_show_seg( A, "LEAF:" ); +#endif + + return( A ); + case OP_SUBTRACT: + case OP_INTERSECT: + case OP_UNION: +#ifdef debug + bu_log( "Evaluating subtrees\n" ); +#endif + + A = wdb_eval_etree( eptr->n.left, dgcdp ); + B = wdb_eval_etree( eptr->n.right, dgcdp ); + return( wdb_eval_op( A, eptr->n.op, B, dgcdp ) ); + } + + /* should never get here */ + return( (struct bu_list *)NULL ); /* for the compilers */ +} + +HIDDEN void +wdb_inverse_dir( vect_t dir, vect_t inv_dir ) +{ + /* Compute the inverse of the direction cosines */ + if ( !NEAR_ZERO( dir[X], SQRT_SMALL_FASTF ) ) { + inv_dir[X]=1.0/dir[X]; + } else { + inv_dir[X] = INFINITY; + dir[X] = 0.0; + } + if ( !NEAR_ZERO( dir[Y], SQRT_SMALL_FASTF ) ) { + inv_dir[Y]=1.0/dir[Y]; + } else { + inv_dir[Y] = INFINITY; + dir[Y] = 0.0; + } + if ( !NEAR_ZERO( dir[Z], SQRT_SMALL_FASTF ) ) { + inv_dir[Z]=1.0/dir[Z]; + } else { + inv_dir[Z] = INFINITY; + dir[Z] = 0.0; + } +} + +HIDDEN struct soltab * +wdb_classify_seg( struct seg *seg, struct soltab *shoot, struct xray *rp, struct dg_client_data *dgcdp ) +{ + fastf_t mid_dist; + struct xray new_rp; + struct ray_data rd; + struct soltab *ret = IN_SOL; + + memset(&rd, 0, sizeof( struct ray_data )); + + BU_GETSTRUCT( rd.seghead, seg ); + BU_LIST_INIT( &rd.seghead->l ); + + mid_dist = (seg->seg_in.hit_dist + seg->seg_out.hit_dist) / 2.0; + VJOIN1( new_rp.r_pt, rp->r_pt, mid_dist, rp->r_dir ); +#ifdef debug + bu_log( "Classifying segment with mid_pt (%g %g %g) with respct to %s\n", V3ARGS( new_rp.r_pt ), shoot->st_dp->d_namep ); +#endif + + bn_vec_ortho( new_rp.r_dir, rp->r_dir ); + wdb_inverse_dir( new_rp.r_dir, rd.rd_invdir ); + + /* set up "ray_data" structure for nmg raytrace */ + rd.rp = &new_rp; + rd.tol = &dgcdp->dgop->dgo_wdbp->wdb_tol; + rd.ap = dgcdp->ap; + rd.magic = NMG_RAY_DATA_MAGIC; + rd.classifying_ray = 0; + rd.hitmiss = (struct hitmiss **)NULL; + rd.stp = shoot; + + if ( rt_functab[shoot->st_id].ft_shot( shoot, &new_rp, dgcdp->ap, rd.seghead ) ) { + struct seg *seg; + + while ( BU_LIST_WHILE( seg, seg, &rd.seghead->l ) ) { + BU_LIST_DEQUEUE( &seg->l ); +#ifdef debug + bu_log( "dist = %g and %g\n", seg->seg_in.hit_dist, + seg->seg_out.hit_dist ); +#endif + if ( ret != ON_SURF ) { + if ( NEAR_ZERO( seg->seg_in.hit_dist, rd.tol->dist ) ) { + ret = ON_SURF; + } + if ( NEAR_ZERO( seg->seg_out.hit_dist, rd.tol->dist ) ) { + ret = ON_SURF; + } + } + RT_FREE_SEG( seg, dgcdp->ap->a_resource ); + } + } + + if ( ret != ON_SURF ) { + vect_t new_dir; + + VCROSS( new_dir, new_rp.r_dir, rp->r_dir ); + VMOVE( new_rp.r_dir, new_dir ); + wdb_inverse_dir( new_rp.r_dir, rd.rd_invdir ); + if ( rt_functab[shoot->st_id].ft_shot( shoot, &new_rp, dgcdp->ap, rd.seghead ) ) { + struct seg *seg; + + while ( BU_LIST_WHILE( seg, seg, &rd.seghead->l ) ) { + BU_LIST_DEQUEUE( &seg->l ); +#ifdef debug + bu_log( "dist = %g and %g\n", seg->seg_in.hit_dist, + seg->seg_out.hit_dist ); +#endif + if ( ret != ON_SURF ) { + if ( NEAR_ZERO( seg->seg_in.hit_dist, rd.tol->dist ) ) { + ret = ON_SURF; + } + if ( NEAR_ZERO( seg->seg_out.hit_dist, rd.tol->dist ) ) { + ret = ON_SURF; + } + } + RT_FREE_SEG( seg, dgcdp->ap->a_resource ); + } + } + } +#ifdef debug + bu_log( "\t x%x\n", ret ); +#endif + return ret; +} + +/* Shoot rays (corresponding to possible edges in the result) + * at the solids, put the results in the E-tree leaves as type IN_SOL. + * Call wdb_eval_etree() and plot the results + */ +HIDDEN void +wdb_shoot_and_plot(point_t start_pt, + vect_t dir, + struct bu_list *vhead, + fastf_t edge_len, + int skip_leaf1, + int skip_leaf2, + union E_tree *eptr, + struct soltab *type, + struct dg_client_data *dgcdp) +{ + struct xray rp; + struct ray_data rd; + int shoot_leaf; + struct bu_list *final_segs; + + if ( bu_debug&BU_DEBUG_MEM_CHECK && bu_mem_barriercheck() ) + bu_log( "Error at start of wdb_shoot_and_plot()\n" ); + + CK_ETREE( eptr ); + + memset(&rd, 0, sizeof( struct ray_data )); + + BU_GETSTRUCT( rd.seghead, seg ); + BU_LIST_INIT( &rd.seghead->l ); + + VMOVE( rp.r_pt, start_pt ) + VMOVE( rp.r_dir, dir ) + /* Compute the inverse of the direction cosines */ + if ( !NEAR_ZERO( rp.r_dir[X], SQRT_SMALL_FASTF ) ) { + rd.rd_invdir[X]=1.0/rp.r_dir[X]; + } else { + rd.rd_invdir[X] = INFINITY; + rp.r_dir[X] = 0.0; + } + if ( !NEAR_ZERO( rp.r_dir[Y], SQRT_SMALL_FASTF ) ) { + rd.rd_invdir[Y]=1.0/rp.r_dir[Y]; + } else { + rd.rd_invdir[Y] = INFINITY; + rp.r_dir[Y] = 0.0; + } + if ( !NEAR_ZERO( rp.r_dir[Z], SQRT_SMALL_FASTF ) ) { + rd.rd_invdir[Z]=1.0/rp.r_dir[Z]; + } else { + rd.rd_invdir[Z] = INFINITY; + rp.r_dir[Z] = 0.0; + } + + /* set up "ray_data" structure for nmg raytrace */ + rd.rp = &rp; + rd.tol = &dgcdp->dgop->dgo_wdbp->wdb_tol; + rd.ap = dgcdp->ap; + rd.magic = NMG_RAY_DATA_MAGIC; + rd.classifying_ray = 0; + rd.hitmiss = (struct hitmiss **)NULL; + + /* shoot this ray at every leaf solid except the one this edge came from + * (or the two that this intersection line came from + */ + for ( shoot_leaf=0; shoot_leaf < BU_PTBL_END( &dgcdp->leaf_list ); shoot_leaf++ ) + { + union E_tree *shoot; + int dont_shoot=0; + + shoot = (union E_tree *)BU_PTBL_GET( &dgcdp->leaf_list, shoot_leaf ); + + if ( BU_LIST_NON_EMPTY( &shoot->l.seghead ) ) + { + MY_FREE_SEG_LIST( &shoot->l.seghead, dgcdp->ap->a_resource ); + } + BU_LIST_INIT( &shoot->l.seghead ); + + /* don't shoot rays at the leaves that were the source of this possible edge */ + if ( shoot_leaf == skip_leaf1 || shoot_leaf == skip_leaf2 ) + dont_shoot = 1; + else + { + /* don't shoot at duplicate solids either */ + union E_tree *leaf; + + if ( skip_leaf1 >= 0 ) + { + leaf = (union E_tree *)BU_PTBL_GET( &dgcdp->leaf_list, skip_leaf1 ); + if ( leaf->l.stp->st_dp == shoot->l.stp->st_dp ) + { + if ( !leaf->l.stp->st_matp && !shoot->l.stp->st_matp ) + dont_shoot = 1; + else if ( !leaf->l.stp->st_matp && + bn_mat_is_equal( shoot->l.stp->st_matp, + bn_mat_identity, + &dgcdp->dgop->dgo_wdbp->wdb_tol ) ) + dont_shoot = 1; + else if ( !shoot->l.stp->st_matp && + bn_mat_is_equal( leaf->l.stp->st_matp, + bn_mat_identity, + &dgcdp->dgop->dgo_wdbp->wdb_tol ) ) + dont_shoot = 1; + else if ( leaf->l.stp->st_matp && + shoot->l.stp->st_matp && + bn_mat_is_equal( leaf->l.stp->st_matp, + shoot->l.stp->st_matp, + &dgcdp->dgop->dgo_wdbp->wdb_tol ) ) + dont_shoot = 1; + } + } + if ( !dont_shoot && skip_leaf2 >= 0 ) + { + leaf = (union E_tree *)BU_PTBL_GET( &dgcdp->leaf_list, skip_leaf2 ); + if ( leaf->l.stp->st_dp == shoot->l.stp->st_dp ) + { + if ( !leaf->l.stp->st_matp && !shoot->l.stp->st_matp ) + dont_shoot = 1; + else if ( !leaf->l.stp->st_matp && + bn_mat_is_equal( shoot->l.stp->st_matp, + bn_mat_identity, + &dgcdp->dgop->dgo_wdbp->wdb_tol ) ) + dont_shoot = 1; + else if ( !shoot->l.stp->st_matp && + bn_mat_is_equal( leaf->l.stp->st_matp, + bn_mat_identity, + &dgcdp->dgop->dgo_wdbp->wdb_tol ) ) + dont_shoot = 1; + else if ( leaf->l.stp->st_matp && + shoot->l.stp->st_matp && + bn_mat_is_equal( leaf->l.stp->st_matp, + shoot->l.stp->st_matp, + &dgcdp->dgop->dgo_wdbp->wdb_tol ) ) + dont_shoot = 1; + } + } + } + + if ( dont_shoot ) + { + struct seg *seg; + + /* put entire edge in seg list and mark it as ON the surface */ + RT_GET_SEG( seg, dgcdp->ap->a_resource ); + seg->l.magic = RT_SEG_MAGIC; + seg->seg_in.hit_dist = 0.0; + seg->seg_out.hit_dist = edge_len; + seg->seg_stp = type; + BU_LIST_INSERT( &shoot->l.seghead, &seg->l ); + continue; + } + + /* initialize the lists of things that have been hit/missed */ + rd.rd_m = shoot->l.m; + BU_LIST_INIT(&rd.rd_hit); + BU_LIST_INIT(&rd.rd_miss); + + rd.stp = shoot->l.stp; + + /* actually shoot the ray, assign segments to the leaf, and mark them as IN_SOL */ + if ( rt_in_rpp( &rp, rd.rd_invdir, shoot->l.stp->st_min, shoot->l.stp->st_max ) ) + { + if ( rt_functab[shoot->l.stp->st_id].ft_shot( shoot->l.stp, &rp, dgcdp->ap, rd.seghead ) ) + { + struct seg *seg; + + /* put the segments in the lead solid structure */ + while ( BU_LIST_WHILE( seg, seg, &rd.seghead->l ) ) + { + BU_LIST_DEQUEUE( &seg->l ) + /* clip segments to the edge being considered */ + if ( seg->seg_in.hit_dist >= edge_len || seg->seg_out.hit_dist <= 0 ) + RT_FREE_SEG( seg, dgcdp->ap->a_resource ) + else + { + if ( seg->seg_in.hit_dist < 0.0 ) + seg->seg_in.hit_dist = 0.0; + if ( seg->seg_out.hit_dist > edge_len ) + seg->seg_out.hit_dist = edge_len; + seg->seg_stp = wdb_classify_seg( seg, shoot->l.stp, &rp, dgcdp ); + BU_LIST_INSERT( &shoot->l.seghead, &seg->l ) + } + } + } + } + } + + /* Evaluate the Boolean tree to get the "final" segments + * which are to be plotted. + */ +#ifdef debug + bu_log( "EVALUATING ETREE:\n" ); + bu_log( "ray start (%g %g %g), dir=(%g %g %g)\n", V3ARGS( start_pt ), V3ARGS( dir ) ); +#endif + + final_segs = wdb_eval_etree( eptr, dgcdp ); + +#ifdef debug + wdb_show_seg( final_segs, "DRAWING" ); +#endif + + if ( final_segs ) + { + struct seg *seg; + + /* add the segemnts to the VLIST */ + for ( BU_LIST_FOR( seg, seg, final_segs ) ) + { + point_t pt; + + /* only plot the resulting segments that are ON the SURFace */ + if ( seg->seg_stp != ON_SURF ) + continue; + + dgcdp->nvectors++; + VJOIN1( pt, rp.r_pt, seg->seg_in.hit_dist, rp.r_dir ) + +#ifdef debug + bu_log( "\t\tDRAW (%g %g %g)", V3ARGS( pt ) ); +#endif + + RT_ADD_VLIST( vhead, pt, BN_VLIST_LINE_MOVE ); + VJOIN1( pt, rp.r_pt, seg->seg_out.hit_dist, rp.r_dir ) + +#ifdef debug + bu_log( "<->(%g %g %g)\n", V3ARGS( pt ) ); +#endif + + RT_ADD_VLIST( vhead, pt, BN_VLIST_LINE_DRAW ); + } + + } + + if ( final_segs ) + MY_FREE_SEG_LIST( final_segs, dgcdp->ap->a_resource ); + bu_free( (char *)final_segs, "bu_list" ); + + if ( bu_debug&BU_DEBUG_MEM_CHECK && bu_mem_barriercheck() ) + bu_log( "Error at end of wdb_shoot_and_plot()\n" ); + +} + +#define HITS_BLOCK 20 + +HIDDEN void +wdb_Eplot(union E_tree *eptr, + struct bu_list *vhead, + struct dg_client_data *dgcdp) +{ + point_t start_pt; + int leaf_no; + union E_tree *leaf_ptr; + int hit_count1=0, hit_count2=0; + point_t *hits1=NULL, *hits2=NULL; + int hits_avail1=0, hits_avail2=0; + int i; + struct bu_list *result; + struct bn_tol *tol; + + tol = &dgcdp->dgop->dgo_wdbp->wdb_tol; + + CK_ETREE( eptr ); + + /* create an edge list for each leaf solid */ + for ( leaf_no=0; leaf_no < BU_PTBL_END( &dgcdp->leaf_list ); leaf_no++ ) + { + leaf_ptr = (union E_tree *)BU_PTBL_GET( &dgcdp->leaf_list, leaf_no ); + CK_ETREE( leaf_ptr ); + if ( leaf_ptr->l.op != OP_DB_LEAF && leaf_ptr->l.op != OP_SOLID ) + { + Tcl_AppendResult(dgcdp->interp, "wdb_Eplot: Bad leaf node!!!\n", (char *)NULL ); + return; + } + + if ( leaf_ptr->l.m ) + nmg_edge_tabulate( &leaf_ptr->l.edge_list, &leaf_ptr->l.m->magic ); + else + bu_ptbl_init( &leaf_ptr->l.edge_list, 1, "edge_list" ); + } + + /* now plot appropriate parts of each solid */ + + /* loop through every leaf solid */ + for ( leaf_no=0; leaf_no < BU_PTBL_END( &dgcdp->leaf_list ); leaf_no++ ) + { + int edge_no; + + leaf_ptr = (union E_tree *)BU_PTBL_GET( &dgcdp->leaf_list, leaf_no ); + + if ( !leaf_ptr->l.m ) + continue; + + /* do each edge of the current leaf solid */ + for ( edge_no=0; edge_no < BU_PTBL_END( &leaf_ptr->l.edge_list ); edge_no++ ) + { + struct edge *e; + struct vertex_g *vg; + struct vertex_g *vg2; + vect_t dir; + fastf_t edge_len; + fastf_t inv_len; + + e = (struct edge *)BU_PTBL_GET( &leaf_ptr->l.edge_list, edge_no ); + NMG_CK_EDGE( e ); + vg = e->eu_p->vu_p->v_p->vg_p; + NMG_CK_VERTEX_G( vg ); + + vg2 = e->eu_p->eumate_p->vu_p->v_p->vg_p; + NMG_CK_VERTEX_G( vg2 ); + + /* set up a ray from vg towards vg2 */ + VSUB2( dir, vg2->coord, vg->coord ); + edge_len = MAGNITUDE( dir ); + if ( edge_len < tol->dist ) + continue; + inv_len = 1.0/edge_len; + VSCALE( dir, dir, inv_len ); + wdb_shoot_and_plot( vg->coord, dir, vhead, edge_len, leaf_no, -1, eptr, ON_SURF, dgcdp ); + + } + } + + hits1 = (point_t *)bu_calloc( HITS_BLOCK, sizeof( point_t ), "hits" ); + hits_avail1 = HITS_BLOCK; + hits2 = (point_t *)bu_calloc( HITS_BLOCK, sizeof( point_t ), "hits" ); + hits_avail2 = HITS_BLOCK; + + /* Now draw solid intersection lines */ + for ( leaf_no=0; leaf_no < BU_PTBL_END( &dgcdp->leaf_list ); leaf_no++ ) + { + int leaf2; + + leaf_ptr = (union E_tree *)BU_PTBL_GET( &dgcdp->leaf_list, leaf_no ); + if ( !leaf_ptr->l.m ) + continue; + + for ( leaf2=leaf_no+1; leaf2 < BU_PTBL_END( &dgcdp->leaf_list ); leaf2++ ) + { + union E_tree *leaf2_ptr; + struct nmgregion *r1, *r2; + struct shell *s1, *s2; + struct faceuse *fu1, *fu2; + struct face *f1, *f2; + plane_t pl1, pl2; + struct loopuse *lu1, *lu2; + struct edgeuse *eu1, *eu2; + struct vertex_g *vg1a, *vg1b, *vg2a, *vg2b; + struct bu_list *A, *B; + + leaf2_ptr = (union E_tree *)BU_PTBL_GET( &dgcdp->leaf_list, leaf2 ); + if ( !leaf2_ptr->l.m ) + continue; + + /* find intersection lines between these two NMG's */ + + r1 = BU_LIST_FIRST( nmgregion, &leaf_ptr->l.m->r_hd ); + s1 = BU_LIST_FIRST( shell, &r1->s_hd ); + r2 = BU_LIST_FIRST( nmgregion, &leaf2_ptr->l.m->r_hd ); + s2 = BU_LIST_FIRST( shell, &r2->s_hd ); + + for ( BU_LIST_FOR( fu1, faceuse, &s1->fu_hd ) ) + { + if ( fu1->orientation != OT_SAME ) + continue; + + f1 = fu1->f_p; + NMG_GET_FU_PLANE( pl1, fu1 ); + + for ( BU_LIST_FOR( fu2, faceuse, &s2->fu_hd ) ) + { + fastf_t dist; + vect_t dir; + vect_t diff; + fastf_t *dists1, *dists2; + fastf_t min_dist, max_dist; + int min_hit, max_hit; + int done; + struct seg *aseg; + + if ( fu2->orientation != OT_SAME ) + continue; + + f2 = fu2->f_p; + + if ( !V3RPP_OVERLAP_TOL(f2->min_pt, f2->max_pt, + f1->min_pt, f1->max_pt, + tol) ) + continue; + + NMG_GET_FU_PLANE( pl2, fu2 ); + + if ( bn_coplanar( pl1, pl2, tol ) ) { + continue; + } + + hit_count1=0; + hit_count2=0; + for ( BU_LIST_FOR( lu1, loopuse, &fu1->lu_hd ) ) + { + if ( BU_LIST_FIRST_MAGIC( &lu1->down_hd ) != NMG_EDGEUSE_MAGIC ) + continue; + + for ( BU_LIST_FOR( eu1, edgeuse, &lu1->down_hd ) ) + { + vg1a = eu1->vu_p->v_p->vg_p; + vg1b = eu1->eumate_p->vu_p->v_p->vg_p; + VSUB2( dir, vg1b->coord, vg1a->coord ); + + /* find intersection of this edge with fu2 */ + + if ( bn_isect_line3_plane( &dist, vg1a->coord, + dir, pl2, + tol ) < 1 ) + continue; + + if ( dist < -tol->dist || dist > 1.0 + tol->dist ) + continue; + + if ( hit_count1 >= hits_avail1 ) { + hits_avail1 += HITS_BLOCK; + hits1 = (point_t *)bu_realloc( hits1, + hits_avail1 * sizeof( point_t ), "hits1" ); + } + VJOIN1( hits1[hit_count1], vg1a->coord, dist, dir ); + hit_count1++; + } + } + for ( BU_LIST_FOR( lu2, loopuse, &fu2->lu_hd ) ) + { + if ( BU_LIST_FIRST_MAGIC( &lu2->down_hd ) != NMG_EDGEUSE_MAGIC ) + continue; + + for ( BU_LIST_FOR( eu2, edgeuse, &lu2->down_hd ) ) + { + vg2a = eu2->vu_p->v_p->vg_p; + vg2b = eu2->eumate_p->vu_p->v_p->vg_p; + VSUB2( dir, vg2b->coord, vg2a->coord ); + + /* find intersection of this edge with fu1 */ + + if ( bn_isect_line3_plane( &dist, vg2a->coord, + dir, pl1, + tol ) < 1 ) + continue; + + if ( dist < -tol->dist || dist > 1.0 + tol->dist ) + continue; + + if ( hit_count2 >= hits_avail2 ) { + hits_avail2 += HITS_BLOCK; + hits2 = (point_t *)bu_realloc( hits2, + hits_avail2 * sizeof( point_t ), "hits2" ); + } + VJOIN1( hits2[hit_count2], vg2a->coord, dist, dir ); + hit_count2++; + } + } + + if ( hit_count1 < 2 || hit_count2 < 2 ) { + /* nothing to plot */ + continue; + } + + /* sort the hits on face 1 */ + dists1 = (fastf_t *)bu_calloc( hit_count1, + sizeof( fastf_t ), "dists1" ); + dists2 = (fastf_t *)bu_calloc( hit_count2, + sizeof( fastf_t ), "dists2" ); + VMOVE( start_pt, hits1[0] ); + dists1[0] = 0.0; + min_dist = 0.0; + min_hit = 0; + VSUB2( dir, hits1[1], hits1[0] ); + dists1[1] = MAGNITUDE( dir ); + VUNITIZE( dir ); + max_dist = dists1[1]; + max_hit = 1; + for ( i=2; i<hit_count1; i++ ) { + VSUB2( diff, hits1[i], start_pt ); + dists1[i] = MAGNITUDE( diff ); + if ( VDOT( dir, diff ) < 0.0 ) + dists1[i] = -dists1[i]; + if ( dists1[i] > max_dist ) { + max_dist = dists1[i]; + max_hit = i; + } + if ( dists1[i] < min_dist ) { + min_dist = dists1[i]; + min_hit = i; + } + } + + /* recalculate dir */ + VSUB2( dir, hits1[max_hit], hits1[min_hit] ); + VUNITIZE( dir ); + + done = 0; + while ( !done ) { + done = 1; + for ( i=1; i<hit_count1; i++ ) { + if ( dists1[i-1] > dists1[i] ) { + fastf_t tmp; + point_t tmp_pt; + + done = 0; + tmp = dists1[i]; + VMOVE( tmp_pt, hits1[i] ); + dists1[i] = dists1[i-1]; + VMOVE( hits1[i], hits1[i-1] ); + dists1[i-1] = tmp; + VMOVE( hits1[i-1], tmp_pt ); + } + } + } + + /* sort the hits on face 2 */ + min_dist = MAX_FASTF; + min_hit = -1; + max_dist = -min_dist; + max_hit = -1; + for ( i=0; i<hit_count2; i++ ) { + VSUB2( diff, hits2[i], start_pt ); + dists2[i] = MAGNITUDE( diff ); + if ( VDOT( dir, diff ) < 0.0 ) + dists2[i] = -dists2[i]; + if ( dists2[i] > max_dist ) { + max_dist = dists2[i]; + max_hit = i; + } + if ( dists2[i] < min_dist ) { + min_dist = dists2[i]; + min_hit = i; + } + } + + done = 0; + while ( !done ) { + done = 1; + for ( i=1; i<hit_count2; i++ ) { + if ( dists2[i-1] > dists2[i] ) { + fastf_t tmp; + point_t tmp_pt; + + done = 0; + tmp = dists2[i]; + VMOVE( tmp_pt, hits2[i] ); + dists2[i] = dists2[i-1]; + VMOVE( hits2[i], hits2[i-1] ); + dists2[i-1] = tmp; + VMOVE( hits2[i-1], tmp_pt ); + } + } + } + + /* build a segment list for each solid */ + A = (struct bu_list *)bu_calloc( 1, sizeof( struct bu_list ), "A" ); + B = (struct bu_list *)bu_calloc( 1, sizeof( struct bu_list ), "B" ); + BU_LIST_INIT( A ); + BU_LIST_INIT( B ); + + for ( i=1; i<hit_count1; i += 2 ) { + fastf_t diff; + + diff = dists1[i] - dists1[i-1]; + if ( NEAR_ZERO( diff, tol->dist )) { + continue; + } + RT_GET_SEG( aseg, dgcdp->ap->a_resource ); + aseg->l.magic = RT_SEG_MAGIC; + aseg->seg_stp = ON_INT; + VMOVE( aseg->seg_in.hit_point, hits1[i-1] ); + aseg->seg_in.hit_dist = dists1[i-1]; + VMOVE( aseg->seg_out.hit_point, hits1[i] ); + aseg->seg_out.hit_dist = dists1[i]; + + BU_LIST_APPEND( A, &aseg->l ); + } + + for ( i=1; i<hit_count2; i += 2 ) { + fastf_t diff; + + diff = dists2[i] - dists2[i-1]; + if ( NEAR_ZERO( diff, tol->dist )) { + continue; + } + RT_GET_SEG( aseg, dgcdp->ap->a_resource ); + aseg->l.magic = RT_SEG_MAGIC; + aseg->seg_stp = ON_INT; + VMOVE( aseg->seg_in.hit_point, hits2[i-1] ); + aseg->seg_in.hit_dist = dists2[i-1]; + VMOVE( aseg->seg_out.hit_point, hits2[i] ); + aseg->seg_out.hit_dist = dists2[i]; + + BU_LIST_APPEND( B, &aseg->l ); + } + + result = wdb_eval_op( A, OP_INTERSECT, B, dgcdp ); + + for ( BU_LIST_FOR( aseg, seg, result ) ) { + point_t ray_start; + + VJOIN1( ray_start, start_pt, aseg->seg_in.hit_dist, dir ); + wdb_shoot_and_plot( ray_start, dir, vhead, + aseg->seg_out.hit_dist - aseg->seg_in.hit_dist, + leaf_no, leaf2, eptr, ON_INT, dgcdp ); + } + MY_FREE_SEG_LIST( result, dgcdp->ap->a_resource ); + + bu_free( (char *)dists1, "dists1" ); + bu_free( (char *)dists2, "dists2" ); + } + } + } + } + + bu_free( (char *)hits1, "hits1" ); + bu_free( (char *)hits2, "hits2" ); +} + +HIDDEN void +wdb_free_etree(union E_tree *eptr, + struct dg_client_data *dgcdp) +{ + CK_ETREE( eptr ); + + switch ( eptr->l.op ) + { + case OP_UNION: + case OP_SUBTRACT: + case OP_INTERSECT: + wdb_free_etree( eptr->n.left, dgcdp ); + wdb_free_etree( eptr->n.right, dgcdp ); + bu_free( (char *)eptr, "node pointer" ); + break; + case OP_DB_LEAF: + case OP_SOLID: + if ( eptr->l.m && !eptr->l.do_not_free_model ) + { + nmg_km( eptr->l.m ); + eptr->l.m = (struct model *)NULL; + } + if ( BU_LIST_NON_EMPTY( &eptr->l.seghead ) ) + { + MY_FREE_SEG_LIST( &eptr->l.seghead, dgcdp->ap->a_resource ); + } + if ( BU_LIST_NON_EMPTY( &eptr->l.edge_list.l ) ) + { + bu_ptbl_free( &eptr->l.edge_list ); + } + if ( eptr->l.stp ) + { + if ( eptr->l.stp->st_specific ) + rt_functab[eptr->l.stp->st_id].ft_free( eptr->l.stp ); + bu_free( (char *)eptr->l.stp, "struct soltab" ); + } + + bu_free( (char *)eptr, "leaf pointer" ); + break; + } +} + +/* convert all "half" solids to polysolids */ +HIDDEN void +wdb_fix_halfs(struct dg_client_data *dgcdp) +{ + point_t max, min; + int i, count=0; + struct bn_tol *tol; + + tol = &dgcdp->dgop->dgo_wdbp->wdb_tol; + + VSETALL( max, -MAX_FASTF ) + VSETALL( min, MAX_FASTF ) + + for ( i=0; i<BU_PTBL_END( &dgcdp->leaf_list ); i++ ) + { + union E_tree *tp; + + tp = (union E_tree *)BU_PTBL_GET( &dgcdp->leaf_list, i ); + + if ( tp->l.stp->st_id == ID_HALF ) + continue; + + VMINMAX( min, max, tp->l.stp->st_min ) + VMINMAX( min, max, tp->l.stp->st_max ) + count++; + } + + if ( !count ) + { + Tcl_AppendResult(dgcdp->interp, "A 'half' solid is the only solid in a region (ignored)\n", (char *)NULL ); + return; + } + + for ( i=0; i<BU_PTBL_END( &dgcdp->leaf_list ); i++ ) + { + union E_tree *tp; + struct vertex *v[8]; + struct vertex **vp[4]; + struct nmgregion *r; + struct shell *s; + struct rt_pg_internal *pg; + struct faceuse *fu; + plane_t haf_pl; + struct half_specific *hp; + int j; + + tp = (union E_tree *)BU_PTBL_GET( &dgcdp->leaf_list, i ); + + if ( tp->l.stp->st_id != ID_HALF ) + continue; + + hp = (struct half_specific *)tp->l.stp->st_specific; + + HMOVE( haf_pl, hp->half_eqn ) + + if ( DIST_PT_PLANE( max, haf_pl ) >= -tol->dist && + DIST_PT_PLANE( min, haf_pl ) >= -tol->dist ) + continue; + + /* make an NMG the size of our model bounding box */ + tp->l.m = nmg_mm(); + r = nmg_mrsv( tp->l.m ); + s = BU_LIST_FIRST( shell, &r->s_hd ); + + for ( j=0; j<8; j++ ) + v[j] = (struct vertex *)NULL; + + vp[0] = &v[0]; + vp[1] = &v[1]; + vp[2] = &v[2]; + vp[3] = &v[3]; + fu = nmg_cmface( s, vp, 4 ); + nmg_vertex_g( v[0], max[X], min[Y], min[Z] ); + nmg_vertex_g( v[1], max[X], max[Y], min[Z] ); + nmg_vertex_g( v[2], max[X], max[Y], max[Z] ); + nmg_vertex_g( v[3], max[X], min[Y], max[Z] ); + nmg_calc_face_g( fu ); + + vp[0] = &v[4]; + vp[1] = &v[5]; + vp[2] = &v[6]; + vp[3] = &v[7]; + fu = nmg_cmface( s, vp, 4 ); + nmg_vertex_g( v[4], min[X], min[Y], min[Z] ); + nmg_vertex_g( v[5], min[X], min[Y], max[Z] ); + nmg_vertex_g( v[6], min[X], max[Y], max[Z] ); + nmg_vertex_g( v[7], min[X], max[Y], min[Z] ); + nmg_calc_face_g( fu ); + + vp[0] = &v[0]; + vp[1] = &v[3]; + vp[2] = &v[5]; + vp[3] = &v[4]; + fu = nmg_cmface( s, vp, 4 ); + nmg_calc_face_g( fu ); + + vp[0] = &v[1]; + vp[1] = &v[7]; + vp[2] = &v[6]; + vp[3] = &v[2]; + fu = nmg_cmface( s, vp, 4 ); + nmg_calc_face_g( fu ); + + vp[0] = &v[3]; + vp[1] = &v[2]; + vp[2] = &v[6]; + vp[3] = &v[5]; + fu = nmg_cmface( s, vp, 4 ); + nmg_calc_face_g( fu ); + + vp[0] = &v[1]; + vp[1] = &v[0]; + vp[2] = &v[4]; + vp[3] = &v[7]; + fu = nmg_cmface( s, vp, 4 ); + nmg_calc_face_g( fu ); + + nmg_region_a( r, tol ); + + for ( BU_LIST_FOR( fu, faceuse, &s->fu_hd ) ) + { + struct edgeuse *eu, *new_eu; + struct loopuse *lu, *new_lu; + plane_t pl; + int count; + struct vertexuse *vcut[2]; + point_t pt[2]; + struct edgeuse *eu_split[2]; + + if ( fu->orientation != OT_SAME ) + continue; + + NMG_GET_FU_PLANE( pl, fu ); + + if ( bn_coplanar( pl, haf_pl, tol ) > 0 ) + continue; + + lu = BU_LIST_FIRST( loopuse, &fu->lu_hd ); + + count = 0; + for ( BU_LIST_FOR( eu, edgeuse, &lu->down_hd ) ) + { + vect_t dir; + struct vertex_g *v1g, *v2g; + fastf_t dist; + + v1g = eu->vu_p->v_p->vg_p; + v2g = eu->eumate_p->vu_p->v_p->vg_p; + + VSUB2( di... [truncated message content] |
From: <bo...@us...> - 2008-08-05 16:14:49
|
Revision: 32260 http://brlcad.svn.sourceforge.net/brlcad/?rev=32260&view=rev Author: bob1961 Date: 2008-08-05 16:14:38 +0000 (Tue, 05 Aug 2008) Log Message: ----------- Port of the following to windows: bottest, brickwall, clutter, contours, fence, globe, kurt, masonry, molecule, nmgmodel, picket_fence, pipe, pipetest, pix2g, pyramid, rawbot, room, sketch, sphflake, spltest, tea, tea_nmg, terrain, torii, tube, vegitation and wdb_example Modified Paths: -------------- brlcad/trunk/misc/win32-msvc8/brlcad/brlcad.sln brlcad/trunk/src/proc-db/brep_cube.cpp brlcad/trunk/src/proc-db/terrain.c brlcad/trunk/src/proc-db/vegitation.c brlcad/trunk/src/proc-db/vegitation.h Added Paths: ----------- brlcad/trunk/misc/win32-msvc8/bottest/ brlcad/trunk/misc/win32-msvc8/bottest/bottest.vcproj brlcad/trunk/misc/win32-msvc8/brickwall/ brlcad/trunk/misc/win32-msvc8/brickwall/brickwall.vcproj brlcad/trunk/misc/win32-msvc8/clutter/ brlcad/trunk/misc/win32-msvc8/clutter/clutter.vcproj brlcad/trunk/misc/win32-msvc8/contours/ brlcad/trunk/misc/win32-msvc8/contours/contours.vcproj brlcad/trunk/misc/win32-msvc8/fence/ brlcad/trunk/misc/win32-msvc8/fence/fence.vcproj brlcad/trunk/misc/win32-msvc8/globe/ brlcad/trunk/misc/win32-msvc8/globe/globe.vcproj brlcad/trunk/misc/win32-msvc8/kurt/ brlcad/trunk/misc/win32-msvc8/kurt/kurt.vcproj brlcad/trunk/misc/win32-msvc8/masonry/ brlcad/trunk/misc/win32-msvc8/masonry/masonry.vcproj brlcad/trunk/misc/win32-msvc8/molecule/ brlcad/trunk/misc/win32-msvc8/molecule/molecule.vcproj brlcad/trunk/misc/win32-msvc8/nmgmodel/ brlcad/trunk/misc/win32-msvc8/nmgmodel/nmgmodel.vcproj brlcad/trunk/misc/win32-msvc8/picket_fence/ brlcad/trunk/misc/win32-msvc8/picket_fence/picket_fence.vcproj brlcad/trunk/misc/win32-msvc8/pipe/ brlcad/trunk/misc/win32-msvc8/pipe/pipe.vcproj brlcad/trunk/misc/win32-msvc8/pipetest/ brlcad/trunk/misc/win32-msvc8/pipetest/pipetest.vcproj brlcad/trunk/misc/win32-msvc8/pix2g/ brlcad/trunk/misc/win32-msvc8/pix2g/pix2g.vcproj brlcad/trunk/misc/win32-msvc8/pyramid/ brlcad/trunk/misc/win32-msvc8/pyramid/pyramid.vcproj brlcad/trunk/misc/win32-msvc8/rawbot/ brlcad/trunk/misc/win32-msvc8/rawbot/rawbot.vcproj brlcad/trunk/misc/win32-msvc8/room/ brlcad/trunk/misc/win32-msvc8/room/room.vcproj brlcad/trunk/misc/win32-msvc8/sketch/ brlcad/trunk/misc/win32-msvc8/sketch/sketch.vcproj brlcad/trunk/misc/win32-msvc8/sphflake/ brlcad/trunk/misc/win32-msvc8/sphflake/sphflake.vcproj brlcad/trunk/misc/win32-msvc8/spltest/ brlcad/trunk/misc/win32-msvc8/spltest/spltest.vcproj brlcad/trunk/misc/win32-msvc8/tea/ brlcad/trunk/misc/win32-msvc8/tea/tea.vcproj brlcad/trunk/misc/win32-msvc8/tea_nmg/ brlcad/trunk/misc/win32-msvc8/tea_nmg/tea_nmg.vcproj brlcad/trunk/misc/win32-msvc8/terrain/ brlcad/trunk/misc/win32-msvc8/terrain/terrain.vcproj brlcad/trunk/misc/win32-msvc8/torii/ brlcad/trunk/misc/win32-msvc8/torii/torii.vcproj brlcad/trunk/misc/win32-msvc8/tube/ brlcad/trunk/misc/win32-msvc8/tube/tube.vcproj brlcad/trunk/misc/win32-msvc8/vegitation/ brlcad/trunk/misc/win32-msvc8/vegitation/vegitation.vcproj brlcad/trunk/misc/win32-msvc8/wdb_example/ brlcad/trunk/misc/win32-msvc8/wdb_example/wdb_example.vcproj Added: brlcad/trunk/misc/win32-msvc8/bottest/bottest.vcproj =================================================================== --- brlcad/trunk/misc/win32-msvc8/bottest/bottest.vcproj (rev 0) +++ brlcad/trunk/misc/win32-msvc8/bottest/bottest.vcproj 2008-08-05 16:14:38 UTC (rev 32260) @@ -0,0 +1,242 @@ +<?xml version="1.0" encoding="Windows-1252"?> +<VisualStudioProject + ProjectType="Visual C++" + Version="8.00" + Name="bottest" + ProjectGUID="{1108C81D-B787-4D05-94F6-493818D691DE}" + > + <Platforms> + <Platform + Name="Win32" + /> + <Platform + Name="x64" + /> + </Platforms> + <ToolFiles> + </ToolFiles> + <Configurations> + <Configuration + Name="Release|Win32" + OutputDirectory=".\$(PlatformName)\$(ConfigurationName)" + IntermediateDirectory=".\$(PlatformName)\$(ConfigurationName)" + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="false" + CharacterSet="2" + > + <Tool + Name="VCPreBuildEventTool" + /> + <Tool + Name="VCCustomBuildTool" + /> + <Tool + Name="VCXMLDataGeneratorTool" + /> + <Tool + Name="VCWebServiceProxyGeneratorTool" + /> + <Tool + Name="VCMIDLTool" + TypeLibraryName=".\$(PlatformName)\$(ConfigurationName)/bottest.tlb" + HeaderFileName="" + /> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + InlineFunctionExpansion="1" + AdditionalIncludeDirectories="../../../include;../../../src/other/tcl/generic" + PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;TCL_THREADS=1;__win32;BRLCAD_DLL;HAVE_CONFIG_H;BRLCADBUILD;_CRT_SECURE_NO_WARNINGS" + StringPooling="true" + BasicRuntimeChecks="0" + RuntimeLibrary="2" + EnableFunctionLevelLinking="true" + TreatWChar_tAsBuiltInType="false" + UsePrecompiledHeader="0" + PrecompiledHeaderFile=".\$(PlatformName)\$(ConfigurationName)/bottest.pch" + AssemblerListingLocation=".\$(PlatformName)\$(ConfigurationName)/" + ObjectFile=".\$(PlatformName)\$(ConfigurationName)/" + ProgramDataBaseFileName=".\$(PlatformName)\$(ConfigurationName)/" + WarningLevel="3" + SuppressStartupBanner="true" + Detect64BitPortabilityProblems="false" + DebugInformationFormat="0" + CompileAs="0" + /> + <Tool + Name="VCManagedResourceCompilerTool" + /> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="NDEBUG" + Culture="1033" + /> + <Tool + Name="VCPreLinkEventTool" + /> + <Tool + Name="VCLinkerTool" + AdditionalDependencies="libbu.lib libbn.lib libsysv.lib librt.lib libwdb.lib tcl85.lib" + OutputFile="$(PlatformName)\$(ConfigurationName)/bottest.exe" + LinkIncremental="1" + SuppressStartupBanner="true" + AdditionalLibraryDirectories="../../../brlcadInstall/lib" + GenerateDebugInformation="false" + ProgramDatabaseFile=".\$(PlatformName)\$(ConfigurationName)/bottest.pdb" + SubSystem="1" + TargetMachine="1" + /> + <Tool + Name="VCALinkTool" + /> + <Tool + Name="VCManifestTool" + /> + <Tool + Name="VCXDCMakeTool" + /> + <Tool + Name="VCBscMakeTool" + /> + <Tool + Name="VCFxCopTool" + /> + <Tool + Name="VCAppVerifierTool" + /> + <Tool + Name="VCWebDeploymentTool" + /> + <Tool + Name="VCPostBuildEventTool" + CommandLine="copy "$(TargetPath)" ..\..\..\brlcadInstall\bin" + /> + </Configuration> + <Configuration + Name="Release|x64" + OutputDirectory="$(PlatformName)\$(ConfigurationName)" + IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="false" + CharacterSet="2" + > + <Tool + Name="VCPreBuildEventTool" + /> + <Tool + Name="VCCustomBuildTool" + /> + <Tool + Name="VCXMLDataGeneratorTool" + /> + <Tool + Name="VCWebServiceProxyGeneratorTool" + /> + <Tool + Name="VCMIDLTool" + TargetEnvironment="3" + TypeLibraryName=".\$(PlatformName)\$(ConfigurationName)/bottest.tlb" + HeaderFileName="" + /> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + InlineFunctionExpansion="1" + AdditionalIncludeDirectories="../../../include;../../../src/other/tcl/generic" + PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;TCL_THREADS=1;__win32;BRLCAD_DLL;HAVE_CONFIG_H;BRLCADBUILD;_CRT_SECURE_NO_WARNINGS" + StringPooling="true" + BasicRuntimeChecks="0" + RuntimeLibrary="2" + EnableFunctionLevelLinking="true" + TreatWChar_tAsBuiltInType="false" + UsePrecompiledHeader="0" + PrecompiledHeaderFile=".\$(PlatformName)\$(ConfigurationName)/bottest.pch" + AssemblerListingLocation=".\$(PlatformName)\$(ConfigurationName)/" + ObjectFile=".\$(PlatformName)\$(ConfigurationName)/" + ProgramDataBaseFileName=".\$(PlatformName)\$(ConfigurationName)/" + WarningLevel="3" + SuppressStartupBanner="true" + Detect64BitPortabilityProblems="false" + DebugInformationFormat="0" + CompileAs="0" + /> + <Tool + Name="VCManagedResourceCompilerTool" + /> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="NDEBUG" + Culture="1033" + /> + <Tool + Name="VCPreLinkEventTool" + /> + <Tool + Name="VCLinkerTool" + AdditionalDependencies="libbu.lib libbn.lib libsysv.lib librt.lib libwdb.lib tcl85.lib" + OutputFile="$(PlatformName)\$(ConfigurationName)/bottest.exe" + LinkIncremental="1" + SuppressStartupBanner="true" + AdditionalLibraryDirectories="../../../brlcadInstall$(PlatformName)/lib" + GenerateDebugInformation="false" + ProgramDatabaseFile=".\$(PlatformName)\$(ConfigurationName)/bottest.pdb" + SubSystem="1" + TargetMachine="17" + /> + <Tool + Name="VCALinkTool" + /> + <Tool + Name="VCManifestTool" + /> + <Tool + Name="VCXDCMakeTool" + /> + <Tool + Name="VCBscMakeTool" + /> + <Tool + Name="VCFxCopTool" + /> + <Tool + Name="VCAppVerifierTool" + /> + <Tool + Name="VCWebDeploymentTool" + /> + <Tool + Name="VCPostBuildEventTool" + CommandLine="copy "$(TargetPath)" ..\..\..\brlcadInstall$(PlatformName)\bin" + /> + </Configuration> + </Configurations> + <References> + </References> + <Files> + <Filter + Name="Source Files" + Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat;f90;for;f;fpp" + > + <File + RelativePath="..\..\..\src\proc-db\bottest.c" + > + </File> + </Filter> + <Filter + Name="Header Files" + Filter="h;hpp;hxx;hm;inl;fi;fd" + > + </Filter> + <Filter + Name="Resource Files" + Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" + > + </Filter> + </Files> + <Globals> + </Globals> +</VisualStudioProject> Property changes on: brlcad/trunk/misc/win32-msvc8/bottest/bottest.vcproj ___________________________________________________________________ Added: svn:executable + * Added: svn:mime-type + text/plain Added: svn:eol-style + native Added: brlcad/trunk/misc/win32-msvc8/brickwall/brickwall.vcproj =================================================================== --- brlcad/trunk/misc/win32-msvc8/brickwall/brickwall.vcproj (rev 0) +++ brlcad/trunk/misc/win32-msvc8/brickwall/brickwall.vcproj 2008-08-05 16:14:38 UTC (rev 32260) @@ -0,0 +1,242 @@ +<?xml version="1.0" encoding="Windows-1252"?> +<VisualStudioProject + ProjectType="Visual C++" + Version="8.00" + Name="brickwall" + ProjectGUID="{DA1F0F34-AC10-497B-9AD2-3811AEDF6A7A}" + > + <Platforms> + <Platform + Name="Win32" + /> + <Platform + Name="x64" + /> + </Platforms> + <ToolFiles> + </ToolFiles> + <Configurations> + <Configuration + Name="Release|Win32" + OutputDirectory=".\$(PlatformName)\$(ConfigurationName)" + IntermediateDirectory=".\$(PlatformName)\$(ConfigurationName)" + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="false" + CharacterSet="2" + > + <Tool + Name="VCPreBuildEventTool" + /> + <Tool + Name="VCCustomBuildTool" + /> + <Tool + Name="VCXMLDataGeneratorTool" + /> + <Tool + Name="VCWebServiceProxyGeneratorTool" + /> + <Tool + Name="VCMIDLTool" + TypeLibraryName=".\$(PlatformName)\$(ConfigurationName)/brickwall.tlb" + HeaderFileName="" + /> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + InlineFunctionExpansion="1" + AdditionalIncludeDirectories="../../../include;../../../src/other/tcl/generic" + PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;TCL_THREADS=1;__win32;BRLCAD_DLL;HAVE_CONFIG_H;BRLCADBUILD;_CRT_SECURE_NO_WARNINGS" + StringPooling="true" + BasicRuntimeChecks="0" + RuntimeLibrary="2" + EnableFunctionLevelLinking="true" + TreatWChar_tAsBuiltInType="false" + UsePrecompiledHeader="0" + PrecompiledHeaderFile=".\$(PlatformName)\$(ConfigurationName)/brickwall.pch" + AssemblerListingLocation=".\$(PlatformName)\$(ConfigurationName)/" + ObjectFile=".\$(PlatformName)\$(ConfigurationName)/" + ProgramDataBaseFileName=".\$(PlatformName)\$(ConfigurationName)/" + WarningLevel="3" + SuppressStartupBanner="true" + Detect64BitPortabilityProblems="false" + DebugInformationFormat="0" + CompileAs="0" + /> + <Tool + Name="VCManagedResourceCompilerTool" + /> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="NDEBUG" + Culture="1033" + /> + <Tool + Name="VCPreLinkEventTool" + /> + <Tool + Name="VCLinkerTool" + AdditionalDependencies="libbu.lib libbn.lib libsysv.lib librt.lib libwdb.lib tcl85.lib" + OutputFile="$(PlatformName)\$(ConfigurationName)/brickwall.exe" + LinkIncremental="1" + SuppressStartupBanner="true" + AdditionalLibraryDirectories="../../../brlcadInstall/lib" + GenerateDebugInformation="false" + ProgramDatabaseFile=".\$(PlatformName)\$(ConfigurationName)/brickwall.pdb" + SubSystem="1" + TargetMachine="1" + /> + <Tool + Name="VCALinkTool" + /> + <Tool + Name="VCManifestTool" + /> + <Tool + Name="VCXDCMakeTool" + /> + <Tool + Name="VCBscMakeTool" + /> + <Tool + Name="VCFxCopTool" + /> + <Tool + Name="VCAppVerifierTool" + /> + <Tool + Name="VCWebDeploymentTool" + /> + <Tool + Name="VCPostBuildEventTool" + CommandLine="copy "$(TargetPath)" ..\..\..\brlcadInstall\bin" + /> + </Configuration> + <Configuration + Name="Release|x64" + OutputDirectory="$(PlatformName)\$(ConfigurationName)" + IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" + ConfigurationType="1" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="false" + CharacterSet="2" + > + <Tool + Name="VCPreBuildEventTool" + /> + <Tool + Name="VCCustomBuildTool" + /> + <Tool + Name="VCXMLDataGeneratorTool" + /> + <Tool + Name="VCWebServiceProxyGeneratorTool" + /> + <Tool + Name="VCMIDLTool" + TargetEnvironment="3" + TypeLibraryName=".\$(PlatformName)\$(ConfigurationName)/brickwall.tlb" + HeaderFileName="" + /> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + InlineFunctionExpansion="1" + AdditionalIncludeDirectories="../../../include;../../../src/other/tcl/generic" + PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;TCL_THREADS=1;__win32;BRLCAD_DLL;HAVE_CONFIG_H;BRLCADBUILD;_CRT_SECURE_NO_WARNINGS" + StringPooling="true" + BasicRuntimeChecks="0" + RuntimeLibrary="2" + EnableFunctionLevelLinking="true" + TreatWChar_tAsBuiltInType="false" + UsePrecompiledHeader="0" + PrecompiledHeaderFile=".\$(PlatformName)\$(ConfigurationName)/brickwall.pch" + AssemblerListingLocation=".\$(PlatformName)\$(ConfigurationName)/" + ObjectFile=".\$(PlatformName)\$(ConfigurationName)/" + ProgramDataBaseFileName=".\$(PlatformName)\$(ConfigurationName)/" + WarningLevel="3" + SuppressStartupBanner="true" + Detect64BitPortabilityProblems="false" + DebugInformationFormat="0" + CompileAs="0" + /> + <Tool + Name="VCManagedResourceCompilerTool" + /> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="NDEBUG" + Culture="1033" + /> + <Tool + Name="VCPreLinkEventTool" + /> + <Tool + Name="VCLinkerTool" + AdditionalDependencies="libbu.lib libbn.lib libsysv.lib librt.lib libwdb.lib tcl85.lib" + OutputFile="$(PlatformName)\$(ConfigurationName)/brickwall.exe" + LinkIncremental="1" + SuppressStartupBanner="true" + AdditionalLibraryDirectories="../../../brlcadInstall$(PlatformName)/lib" + GenerateDebugInformation="false" + ProgramDatabaseFile=".\$(PlatformName)\$(ConfigurationName)/brickwall.pdb" + SubSystem="1" + TargetMachine="17" + /> + <Tool + Name="VCALinkTool" + /> + <Tool + Name="VCManifestTool" + /> + <Tool + Name="VCXDCMakeTool" + /> + <Tool + Name="VCBscMakeTool" + /> + <Tool + Name="VCFxCopTool" + /> + <Tool + Name="VCAppVerifierTool" + /> + <Tool + Name="VCWebDeploymentTool" + /> + <Tool + Name="VCPostBuildEventTool" + CommandLine="copy "$(TargetPath)" ..\..\..\brlcadInstall$(PlatformName)\bin" + /> + </Configuration> + </Configurations> + <References> + </References> + <Files> + <Filter + Name="Source Files" + Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat;f90;for;f;fpp" + > + <File + RelativePath="..\..\..\src\proc-db\brickwall.c" + > + </File> + </Filter> + <Filter + Name="Header Files" + Filter="h;hpp;hxx;hm;inl;fi;fd" + > + </Filter> + <Filter + Name="Resource Files" + Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" + > + </Filter> + </Files> + <Globals> + </Globals> +</VisualStudioProject> Property changes on: brlcad/trunk/misc/win32-msvc8/brickwall/brickwall.vcproj ___________________________________________________________________ Added: svn:executable + * Added: svn:mime-type + text/plain Added: svn:eol-style + native Modified: brlcad/trunk/misc/win32-msvc8/brlcad/brlcad.sln =================================================================== --- brlcad/trunk/misc/win32-msvc8/brlcad/brlcad.sln 2008-08-05 15:34:37 UTC (rev 32259) +++ brlcad/trunk/misc/win32-msvc8/brlcad/brlcad.sln 2008-08-05 16:14:38 UTC (rev 32260) @@ -6,65 +6,65 @@ Release.AspNetCompiler.Debug = "False" EndProjectSection ProjectSection(ProjectDependencies) = postProject + {498DE300-007F-4D8D-B280-A1ACA20784A8} = {498DE300-007F-4D8D-B280-A1ACA20784A8} + {EA0BB405-25E2-4B31-92D7-97316770F32B} = {EA0BB405-25E2-4B31-92D7-97316770F32B} + {6EC2E706-4704-4F93-985D-DD0945411ABE} = {6EC2E706-4704-4F93-985D-DD0945411ABE} + {628CDD07-CCCB-4D7C-A290-FB6AE0125C64} = {628CDD07-CCCB-4D7C-A290-FB6AE0125C64} + {DDD6E20A-8F64-443D-9428-AFB56715AA6E} = {DDD6E20A-8F64-443D-9428-AFB56715AA6E} + {2794FD11-F9A6-4145-92DE-A05F5A2E6361} = {2794FD11-F9A6-4145-92DE-A05F5A2E6361} + {39785814-94C1-4245-AA56-60ED2C0E1F41} = {39785814-94C1-4245-AA56-60ED2C0E1F41} + {A0C3B415-61DD-4E5A-B724-D13AA64DA645} = {A0C3B415-61DD-4E5A-B724-D13AA64DA645} + {3B28AB18-C065-4426-9802-4A70528CAB55} = {3B28AB18-C065-4426-9802-4A70528CAB55} + {E0391F1A-B376-4EA1-8C49-521B195DB3D3} = {E0391F1A-B376-4EA1-8C49-521B195DB3D3} + {FCF25D1B-ED36-46B9-8DA8-2BF8F589C86B} = {FCF25D1B-ED36-46B9-8DA8-2BF8F589C86B} + {5118991D-8BCF-4FE4-981C-F33C9D500E95} = {5118991D-8BCF-4FE4-981C-F33C9D500E95} + {8003B222-7F4E-4723-BC1F-67B1F9825697} = {8003B222-7F4E-4723-BC1F-67B1F9825697} + {DE92C423-14C5-4604-8539-174D0B911548} = {DE92C423-14C5-4604-8539-174D0B911548} + {205D4C24-C72D-4269-88A4-8C04595436BC} = {205D4C24-C72D-4269-88A4-8C04595436BC} + {2BFBED31-BB63-49EA-A1DD-11A6F3561681} = {2BFBED31-BB63-49EA-A1DD-11A6F3561681} + {745CE333-57DA-4B3F-B402-1FCACA82D86B} = {745CE333-57DA-4B3F-B402-1FCACA82D86B} + {9CC65742-70A4-49C6-AC96-6C4219F1AB25} = {9CC65742-70A4-49C6-AC96-6C4219F1AB25} + {577A7D54-8739-45D6-8A49-89C1E84D7E51} = {577A7D54-8739-45D6-8A49-89C1E84D7E51} + {A57AE857-8899-4599-AC79-D3E1A4DD4EAE} = {A57AE857-8899-4599-AC79-D3E1A4DD4EAE} + {055F2F38-D3AB-4A30-A8C6-A7C9A393BB30} = {055F2F38-D3AB-4A30-A8C6-A7C9A393BB30} + {E0756E58-9FF9-489C-8264-F39BF1A621AC} = {E0756E58-9FF9-489C-8264-F39BF1A621AC} + {CEC2F065-CAD0-4F3D-8BA0-D2096EC39869} = {CEC2F065-CAD0-4F3D-8BA0-D2096EC39869} + {8C0C9368-6222-4D60-BB8E-4BABE95F19CC} = {8C0C9368-6222-4D60-BB8E-4BABE95F19CC} + {6C09EE6B-A1A2-4F0D-B7B0-32647987B49A} = {6C09EE6B-A1A2-4F0D-B7B0-32647987B49A} + {02BD806D-906C-4B4A-98CA-165337BCD533} = {02BD806D-906C-4B4A-98CA-165337BCD533} + {DE3BD86E-C8BC-494F-B5EC-FD677F6C4B5E} = {DE3BD86E-C8BC-494F-B5EC-FD677F6C4B5E} + {D0C8AE72-6699-4198-93C3-FCA91A2B274F} = {D0C8AE72-6699-4198-93C3-FCA91A2B274F} + {CEACCF73-0618-42BB-B6A1-AC25FCB623F5} = {CEACCF73-0618-42BB-B6A1-AC25FCB623F5} + {9F53E773-C457-4EB0-8228-5C13156127F4} = {9F53E773-C457-4EB0-8228-5C13156127F4} + {E6903075-2C80-40F5-9852-173FDB94823F} = {E6903075-2C80-40F5-9852-173FDB94823F} + {34145676-AEA6-459F-BCC1-6E7C72D6B394} = {34145676-AEA6-459F-BCC1-6E7C72D6B394} + {7A073879-92A6-4934-B386-37AF30F27B38} = {7A073879-92A6-4934-B386-37AF30F27B38} + {61E17285-3FAB-44A5-B556-4626A3322631} = {61E17285-3FAB-44A5-B556-4626A3322631} + {97D16904-207B-4602-ADC5-4D4D34AA421D} = {97D16904-207B-4602-ADC5-4D4D34AA421D} + {B6EF1001-264C-43BB-8FF9-8F663813E1FC} = {B6EF1001-264C-43BB-8FF9-8F663813E1FC} + {13D5E98A-50A1-40DF-A992-84CE4B60B16F} = {13D5E98A-50A1-40DF-A992-84CE4B60B16F} + {E8A0D08B-5CB3-4D75-9088-14A1791DD2BA} = {E8A0D08B-5CB3-4D75-9088-14A1791DD2BA} + {450E958D-9F67-4A24-AE37-7E5C0681C2C6} = {450E958D-9F67-4A24-AE37-7E5C0681C2C6} + {E017F898-A6B6-4ACC-8955-F7E98565E00D} = {E017F898-A6B6-4ACC-8955-F7E98565E00D} + {68B4F899-795B-4A71-84DE-ACACC49CC9EF} = {68B4F899-795B-4A71-84DE-ACACC49CC9EF} + {1D5003A0-E5EE-4C92-AB78-CD69D96E7047} = {1D5003A0-E5EE-4C92-AB78-CD69D96E7047} + {0483ABA1-D087-4C60-97AF-F4FBE115F1D5} = {0483ABA1-D087-4C60-97AF-F4FBE115F1D5} + {DCF397A2-A67E-45CA-9087-840BC223C3DD} = {DCF397A2-A67E-45CA-9087-840BC223C3DD} + {4D24C1A8-67B5-4154-B758-BD9170E92BBF} = {4D24C1A8-67B5-4154-B758-BD9170E92BBF} + {C6F8C5AB-4166-4653-9792-C04A9CE3CCD5} = {C6F8C5AB-4166-4653-9792-C04A9CE3CCD5} + {333C38B9-BD2E-4D34-98DD-69E9B5E56ECB} = {333C38B9-BD2E-4D34-98DD-69E9B5E56ECB} + {0D52ACBE-DE4F-4197-8BE3-9CE3C98C6120} = {0D52ACBE-DE4F-4197-8BE3-9CE3C98C6120} + {D2A218BF-FAB3-4BEA-B288-E357FE003E29} = {D2A218BF-FAB3-4BEA-B288-E357FE003E29} + {AF7942C6-4E22-4544-B16B-7522DD063EE9} = {AF7942C6-4E22-4544-B16B-7522DD063EE9} + {B8A3EACB-468E-4F28-BF95-77DD565DD3DC} = {B8A3EACB-468E-4F28-BF95-77DD565DD3DC} + {5C6560D2-F106-483D-A769-65C1A2F8F99B} = {5C6560D2-F106-483D-A769-65C1A2F8F99B} + {2E7781DC-C6A0-445B-A32E-3F18C42EDBFF} = {2E7781DC-C6A0-445B-A32E-3F18C42EDBFF} + {1328A8EF-E103-4472-8A17-0AA93DC8042E} = {1328A8EF-E103-4472-8A17-0AA93DC8042E} + {14E44CF2-49E1-4D8E-B23B-28B7824ED6FB} = {14E44CF2-49E1-4D8E-B23B-28B7824ED6FB} + {F3E3D3F2-E040-4EDB-B311-C5D8AC3B74AB} = {F3E3D3F2-E040-4EDB-B311-C5D8AC3B74AB} + {F81527F7-49FD-43DD-8337-EB409F5568FB} = {F81527F7-49FD-43DD-8337-EB409F5568FB} + {5223BCFC-41A4-4758-9DB4-94075FE05C7B} = {5223BCFC-41A4-4758-9DB4-94075FE05C7B} {9C2287FD-4991-493F-81A4-41CAA48565CE} = {9C2287FD-4991-493F-81A4-41CAA48565CE} - {5223BCFC-41A4-4758-9DB4-94075FE05C7B} = {5223BCFC-41A4-4758-9DB4-94075FE05C7B} - {F81527F7-49FD-43DD-8337-EB409F5568FB} = {F81527F7-49FD-43DD-8337-EB409F5568FB} - {F3E3D3F2-E040-4EDB-B311-C5D8AC3B74AB} = {F3E3D3F2-E040-4EDB-B311-C5D8AC3B74AB} - {14E44CF2-49E1-4D8E-B23B-28B7824ED6FB} = {14E44CF2-49E1-4D8E-B23B-28B7824ED6FB} - {1328A8EF-E103-4472-8A17-0AA93DC8042E} = {1328A8EF-E103-4472-8A17-0AA93DC8042E} - {2E7781DC-C6A0-445B-A32E-3F18C42EDBFF} = {2E7781DC-C6A0-445B-A32E-3F18C42EDBFF} - {5C6560D2-F106-483D-A769-65C1A2F8F99B} = {5C6560D2-F106-483D-A769-65C1A2F8F99B} - {B8A3EACB-468E-4F28-BF95-77DD565DD3DC} = {B8A3EACB-468E-4F28-BF95-77DD565DD3DC} - {AF7942C6-4E22-4544-B16B-7522DD063EE9} = {AF7942C6-4E22-4544-B16B-7522DD063EE9} - {D2A218BF-FAB3-4BEA-B288-E357FE003E29} = {D2A218BF-FAB3-4BEA-B288-E357FE003E29} - {0D52ACBE-DE4F-4197-8BE3-9CE3C98C6120} = {0D52ACBE-DE4F-4197-8BE3-9CE3C98C6120} - {333C38B9-BD2E-4D34-98DD-69E9B5E56ECB} = {333C38B9-BD2E-4D34-98DD-69E9B5E56ECB} - {C6F8C5AB-4166-4653-9792-C04A9CE3CCD5} = {C6F8C5AB-4166-4653-9792-C04A9CE3CCD5} - {4D24C1A8-67B5-4154-B758-BD9170E92BBF} = {4D24C1A8-67B5-4154-B758-BD9170E92BBF} - {DCF397A2-A67E-45CA-9087-840BC223C3DD} = {DCF397A2-A67E-45CA-9087-840BC223C3DD} - {0483ABA1-D087-4C60-97AF-F4FBE115F1D5} = {0483ABA1-D087-4C60-97AF-F4FBE115F1D5} - {1D5003A0-E5EE-4C92-AB78-CD69D96E7047} = {1D5003A0-E5EE-4C92-AB78-CD69D96E7047} - {68B4F899-795B-4A71-84DE-ACACC49CC9EF} = {68B4F899-795B-4A71-84DE-ACACC49CC9EF} - {E017F898-A6B6-4ACC-8955-F7E98565E00D} = {E017F898-A6B6-4ACC-8955-F7E98565E00D} - {450E958D-9F67-4A24-AE37-7E5C0681C2C6} = {450E958D-9F67-4A24-AE37-7E5C0681C2C6} - {E8A0D08B-5CB3-4D75-9088-14A1791DD2BA} = {E8A0D08B-5CB3-4D75-9088-14A1791DD2BA} - {13D5E98A-50A1-40DF-A992-84CE4B60B16F} = {13D5E98A-50A1-40DF-A992-84CE4B60B16F} - {B6EF1001-264C-43BB-8FF9-8F663813E1FC} = {B6EF1001-264C-43BB-8FF9-8F663813E1FC} - {97D16904-207B-4602-ADC5-4D4D34AA421D} = {97D16904-207B-4602-ADC5-4D4D34AA421D} - {61E17285-3FAB-44A5-B556-4626A3322631} = {61E17285-3FAB-44A5-B556-4626A3322631} - {7A073879-92A6-4934-B386-37AF30F27B38} = {7A073879-92A6-4934-B386-37AF30F27B38} - {34145676-AEA6-459F-BCC1-6E7C72D6B394} = {34145676-AEA6-459F-BCC1-6E7C72D6B394} - {E6903075-2C80-40F5-9852-173FDB94823F} = {E6903075-2C80-40F5-9852-173FDB94823F} - {9F53E773-C457-4EB0-8228-5C13156127F4} = {9F53E773-C457-4EB0-8228-5C13156127F4} - {CEACCF73-0618-42BB-B6A1-AC25FCB623F5} = {CEACCF73-0618-42BB-B6A1-AC25FCB623F5} - {D0C8AE72-6699-4198-93C3-FCA91A2B274F} = {D0C8AE72-6699-4198-93C3-FCA91A2B274F} - {DE3BD86E-C8BC-494F-B5EC-FD677F6C4B5E} = {DE3BD86E-C8BC-494F-B5EC-FD677F6C4B5E} - {02BD806D-906C-4B4A-98CA-165337BCD533} = {02BD806D-906C-4B4A-98CA-165337BCD533} - {6C09EE6B-A1A2-4F0D-B7B0-32647987B49A} = {6C09EE6B-A1A2-4F0D-B7B0-32647987B49A} - {8C0C9368-6222-4D60-BB8E-4BABE95F19CC} = {8C0C9368-6222-4D60-BB8E-4BABE95F19CC} - {CEC2F065-CAD0-4F3D-8BA0-D2096EC39869} = {CEC2F065-CAD0-4F3D-8BA0-D2096EC39869} - {E0756E58-9FF9-489C-8264-F39BF1A621AC} = {E0756E58-9FF9-489C-8264-F39BF1A621AC} - {055F2F38-D3AB-4A30-A8C6-A7C9A393BB30} = {055F2F38-D3AB-4A30-A8C6-A7C9A393BB30} - {A57AE857-8899-4599-AC79-D3E1A4DD4EAE} = {A57AE857-8899-4599-AC79-D3E1A4DD4EAE} - {577A7D54-8739-45D6-8A49-89C1E84D7E51} = {577A7D54-8739-45D6-8A49-89C1E84D7E51} - {9CC65742-70A4-49C6-AC96-6C4219F1AB25} = {9CC65742-70A4-49C6-AC96-6C4219F1AB25} - {745CE333-57DA-4B3F-B402-1FCACA82D86B} = {745CE333-57DA-4B3F-B402-1FCACA82D86B} - {2BFBED31-BB63-49EA-A1DD-11A6F3561681} = {2BFBED31-BB63-49EA-A1DD-11A6F3561681} - {205D4C24-C72D-4269-88A4-8C04595436BC} = {205D4C24-C72D-4269-88A4-8C04595436BC} - {DE92C423-14C5-4604-8539-174D0B911548} = {DE92C423-14C5-4604-8539-174D0B911548} - {8003B222-7F4E-4723-BC1F-67B1F9825697} = {8003B222-7F4E-4723-BC1F-67B1F9825697} - {5118991D-8BCF-4FE4-981C-F33C9D500E95} = {5118991D-8BCF-4FE4-981C-F33C9D500E95} - {FCF25D1B-ED36-46B9-8DA8-2BF8F589C86B} = {FCF25D1B-ED36-46B9-8DA8-2BF8F589C86B} - {E0391F1A-B376-4EA1-8C49-521B195DB3D3} = {E0391F1A-B376-4EA1-8C49-521B195DB3D3} - {3B28AB18-C065-4426-9802-4A70528CAB55} = {3B28AB18-C065-4426-9802-4A70528CAB55} - {A0C3B415-61DD-4E5A-B724-D13AA64DA645} = {A0C3B415-61DD-4E5A-B724-D13AA64DA645} - {39785814-94C1-4245-AA56-60ED2C0E1F41} = {39785814-94C1-4245-AA56-60ED2C0E1F41} - {2794FD11-F9A6-4145-92DE-A05F5A2E6361} = {2794FD11-F9A6-4145-92DE-A05F5A2E6361} - {DDD6E20A-8F64-443D-9428-AFB56715AA6E} = {DDD6E20A-8F64-443D-9428-AFB56715AA6E} - {628CDD07-CCCB-4D7C-A290-FB6AE0125C64} = {628CDD07-CCCB-4D7C-A290-FB6AE0125C64} - {6EC2E706-4704-4F93-985D-DD0945411ABE} = {6EC2E706-4704-4F93-985D-DD0945411ABE} - {EA0BB405-25E2-4B31-92D7-97316770F32B} = {EA0BB405-25E2-4B31-92D7-97316770F32B} - {498DE300-007F-4D8D-B280-A1ACA20784A8} = {498DE300-007F-4D8D-B280-A1ACA20784A8} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "fast42g", "..\fast42g\fast42g.vcproj", "{498DE300-007F-4D8D-B280-A1ACA20784A8}" @@ -73,12 +73,12 @@ Release.AspNetCompiler.Debug = "False" EndProjectSection ProjectSection(ProjectDependencies) = postProject + {14E44CF2-49E1-4D8E-B23B-28B7824ED6FB} = {14E44CF2-49E1-4D8E-B23B-28B7824ED6FB} + {D2A218BF-FAB3-4BEA-B288-E357FE003E29} = {D2A218BF-FAB3-4BEA-B288-E357FE003E29} + {333C38B9-BD2E-4D34-98DD-69E9B5E56ECB} = {333C38B9-BD2E-4D34-98DD-69E9B5E56ECB} + {5118991D-8BCF-4FE4-981C-F33C9D500E95} = {5118991D-8BCF-4FE4-981C-F33C9D500E95} + {2794FD11-F9A6-4145-92DE-A05F5A2E6361} = {2794FD11-F9A6-4145-92DE-A05F5A2E6361} {EA0BB405-25E2-4B31-92D7-97316770F32B} = {EA0BB405-25E2-4B31-92D7-97316770F32B} - {2794FD11-F9A6-4145-92DE-A05F5A2E6361} = {2794FD11-F9A6-4145-92DE-A05F5A2E6361} - {5118991D-8BCF-4FE4-981C-F33C9D500E95} = {5118991D-8BCF-4FE4-981C-F33C9D500E95} - {333C38B9-BD2E-4D34-98DD-69E9B5E56ECB} = {333C38B9-BD2E-4D34-98DD-69E9B5E56ECB} - {D2A218BF-FAB3-4BEA-B288-E357FE003E29} = {D2A218BF-FAB3-4BEA-B288-E357FE003E29} - {14E44CF2-49E1-4D8E-B23B-28B7824ED6FB} = {14E44CF2-49E1-4D8E-B23B-28B7824ED6FB} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "fb2pix", "..\fb2pix\fb2pix.vcproj", "{2BFBED31-BB63-49EA-A1DD-11A6F3561681}" @@ -87,14 +87,14 @@ Release.AspNetCompiler.Debug = "False" EndProjectSection ProjectSection(ProjectDependencies) = postProject + {9C2287FD-4991-493F-81A4-41CAA48565CE} = {9C2287FD-4991-493F-81A4-41CAA48565CE} + {14E44CF2-49E1-4D8E-B23B-28B7824ED6FB} = {14E44CF2-49E1-4D8E-B23B-28B7824ED6FB} + {D2A218BF-FAB3-4BEA-B288-E357FE003E29} = {D2A218BF-FAB3-4BEA-B288-E357FE003E29} + {5118991D-8BCF-4FE4-981C-F33C9D500E95} = {5118991D-8BCF-4FE4-981C-F33C9D500E95} + {A0C3B415-61DD-4E5A-B724-D13AA64DA645} = {A0C3B415-61DD-4E5A-B724-D13AA64DA645} + {2794FD11-F9A6-4145-92DE-A05F5A2E6361} = {2794FD11-F9A6-4145-92DE-A05F5A2E6361} + {DDD6E20A-8F64-443D-9428-AFB56715AA6E} = {DDD6E20A-8F64-443D-9428-AFB56715AA6E} {EA0BB405-25E2-4B31-92D7-97316770F32B} = {EA0BB405-25E2-4B31-92D7-97316770F32B} - {DDD6E20A-8F64-443D-9428-AFB56715AA6E} = {DDD6E20A-8F64-443D-9428-AFB56715AA6E} - {2794FD11-F9A6-4145-92DE-A05F5A2E6361} = {2794FD11-F9A6-4145-92DE-A05F5A2E6361} - {A0C3B415-61DD-4E5A-B724-D13AA64DA645} = {A0C3B415-61DD-4E5A-B724-D13AA64DA645} - {5118991D-8BCF-4FE4-981C-F33C9D500E95} = {5118991D-8BCF-4FE4-981C-F33C9D500E95} - {D2A218BF-FAB3-4BEA-B288-E357FE003E29} = {D2A218BF-FAB3-4BEA-B288-E357FE003E29} - {14E44CF2-49E1-4D8E-B23B-28B7824ED6FB} = {14E44CF2-49E1-4D8E-B23B-28B7824ED6FB} - {9C2287FD-4991-493F-81A4-41CAA48565CE} = {9C2287FD-4991-493F-81A4-41CAA48565CE} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "fb2png", "..\fb2png\fb2png.vcproj", "{5223BCFC-41A4-4758-9DB4-94075FE05C7B}" @@ -103,16 +103,16 @@ Release.AspNetCompiler.Debug = "False" EndProjectSection ProjectSection(ProjectDependencies) = postProject + {9C2287FD-4991-493F-81A4-41CAA48565CE} = {9C2287FD-4991-493F-81A4-41CAA48565CE} + {14E44CF2-49E1-4D8E-B23B-28B7824ED6FB} = {14E44CF2-49E1-4D8E-B23B-28B7824ED6FB} + {D2A218BF-FAB3-4BEA-B288-E357FE003E29} = {D2A218BF-FAB3-4BEA-B288-E357FE003E29} + {02BD806D-906C-4B4A-98CA-165337BCD533} = {02BD806D-906C-4B4A-98CA-165337BCD533} + {6C09EE6B-A1A2-4F0D-B7B0-32647987B49A} = {6C09EE6B-A1A2-4F0D-B7B0-32647987B49A} + {5118991D-8BCF-4FE4-981C-F33C9D500E95} = {5118991D-8BCF-4FE4-981C-F33C9D500E95} + {A0C3B415-61DD-4E5A-B724-D13AA64DA645} = {A0C3B415-61DD-4E5A-B724-D13AA64DA645} + {2794FD11-F9A6-4145-92DE-A05F5A2E6361} = {2794FD11-F9A6-4145-92DE-A05F5A2E6361} + {DDD6E20A-8F64-443D-9428-AFB56715AA6E} = {DDD6E20A-8F64-443D-9428-AFB56715AA6E} {EA0BB405-25E2-4B31-92D7-97316770F32B} = {EA0BB405-25E2-4B31-92D7-97316770F32B} - {DDD6E20A-8F64-443D-9428-AFB56715AA6E} = {DDD6E20A-8F64-443D-9428-AFB56715AA6E} - {2794FD11-F9A6-4145-92DE-A05F5A2E6361} = {2794FD11-F9A6-4145-92DE-A05F5A2E6361} - {A0C3B415-61DD-4E5A-B724-D13AA64DA645} = {A0C3B415-61DD-4E5A-B724-D13AA64DA645} - {5118991D-8BCF-4FE4-981C-F33C9D500E95} = {5118991D-8BCF-4FE4-981C-F33C9D500E95} - {6C09EE6B-A1A2-4F0D-B7B0-32647987B49A} = {6C09EE6B-A1A2-4F0D-B7B0-32647987B49A} - {02BD806D-906C-4B4A-98CA-165337BCD533} = {02BD806D-906C-4B4A-98CA-165337BCD533} - {D2A218BF-FAB3-4BEA-B288-E357FE003E29} = {D2A218BF-FAB3-4BEA-B288-E357FE003E29} - {14E44CF2-49E1-4D8E-B23B-28B7824ED6FB} = {14E44CF2-49E1-4D8E-B23B-28B7824ED6FB} - {9C2287FD-4991-493F-81A4-41CAA48565CE} = {9C2287FD-4991-493F-81A4-41CAA48565CE} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "fbclear", "..\fbclear\fbclear.vcproj", "{CEACCF73-0618-42BB-B6A1-AC25FCB623F5}" @@ -121,8 +121,8 @@ Release.AspNetCompiler.Debug = "False" EndProjectSection ProjectSection(ProjectDependencies) = postProject + {A0C3B415-61DD-4E5A-B724-D13AA64DA645} = {A0C3B415-61DD-4E5A-B724-D13AA64DA645} {DDD6E20A-8F64-443D-9428-AFB56715AA6E} = {DDD6E20A-8F64-443D-9428-AFB56715AA6E} - {A0C3B415-61DD-4E5A-B724-D13AA64DA645} = {A0C3B415-61DD-4E5A-B724-D13AA64DA645} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "fbserv", "..\fbserv\fbserv.vcproj", "{E0391F1A-B376-4EA1-8C49-521B195DB3D3}" @@ -131,15 +131,15 @@ Release.AspNetCompiler.Debug = "False" EndProjectSection ProjectSection(ProjectDependencies) = postProject + {9C2287FD-4991-493F-81A4-41CAA48565CE} = {9C2287FD-4991-493F-81A4-41CAA48565CE} + {14E44CF2-49E1-4D8E-B23B-28B7824ED6FB} = {14E44CF2-49E1-4D8E-B23B-28B7824ED6FB} + {D2A218BF-FAB3-4BEA-B288-E357FE003E29} = {D2A218BF-FAB3-4BEA-B288-E357FE003E29} + {333C38B9-BD2E-4D34-98DD-69E9B5E56ECB} = {333C38B9-BD2E-4D34-98DD-69E9B5E56ECB} + {5118991D-8BCF-4FE4-981C-F33C9D500E95} = {5118991D-8BCF-4FE4-981C-F33C9D500E95} + {A0C3B415-61DD-4E5A-B724-D13AA64DA645} = {A0C3B415-61DD-4E5A-B724-D13AA64DA645} + {2794FD11-F9A6-4145-92DE-A05F5A2E6361} = {2794FD11-F9A6-4145-92DE-A05F5A2E6361} + {DDD6E20A-8F64-443D-9428-AFB56715AA6E} = {DDD6E20A-8F64-443D-9428-AFB56715AA6E} {EA0BB405-25E2-4B31-92D7-97316770F32B} = {EA0BB405-25E2-4B31-92D7-97316770F32B} - {DDD6E20A-8F64-443D-9428-AFB56715AA6E} = {DDD6E20A-8F64-443D-9428-AFB56715AA6E} - {2794FD11-F9A6-4145-92DE-A05F5A2E6361} = {2794FD11-F9A6-4145-92DE-A05F5A2E6361} - {A0C3B415-61DD-4E5A-B724-D13AA64DA645} = {A0C3B415-61DD-4E5A-B724-D13AA64DA645} - {5118991D-8BCF-4FE4-981C-F33C9D500E95} = {5118991D-8BCF-4FE4-981C-F33C9D500E95} - {333C38B9-BD2E-4D34-98DD-69E9B5E56ECB} = {333C38B9-BD2E-4D34-98DD-69E9B5E56ECB} - {D2A218BF-FAB3-4BEA-B288-E357FE003E29} = {D2A218BF-FAB3-4BEA-B288-E357FE003E29} - {14E44CF2-49E1-4D8E-B23B-28B7824ED6FB} = {14E44CF2-49E1-4D8E-B23B-28B7824ED6FB} - {9C2287FD-4991-493F-81A4-41CAA48565CE} = {9C2287FD-4991-493F-81A4-41CAA48565CE} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "g2asc", "..\g2asc\g2asc.vcproj", "{745CE333-57DA-4B3F-B402-1FCACA82D86B}" @@ -148,12 +148,12 @@ Release.AspNetCompiler.Debug = "False" EndProjectSection ProjectSection(ProjectDependencies) = postProject + {14E44CF2-49E1-4D8E-B23B-28B7824ED6FB} = {14E44CF2-49E1-4D8E-B23B-28B7824ED6FB} + {D2A218BF-FAB3-4BEA-B288-E357FE003E29} = {D2A218BF-FAB3-4BEA-B288-E357FE003E29} + {333C38B9-BD2E-4D34-98DD-69E9B5E56ECB} = {333C38B9-BD2E-4D34-98DD-69E9B5E56ECB} + {5118991D-8BCF-4FE4-981C-F33C9D500E95} = {5118991D-8BCF-4FE4-981C-F33C9D500E95} + {2794FD11-F9A6-4145-92DE-A05F5A2E6361} = {2794FD11-F9A6-4145-92DE-A05F5A2E6361} {EA0BB405-25E2-4B31-92D7-97316770F32B} = {EA0BB405-25E2-4B31-92D7-97316770F32B} - {2794FD11-F9A6-4145-92DE-A05F5A2E6361} = {2794FD11-F9A6-4145-92DE-A05F5A2E6361} - {5118991D-8BCF-4FE4-981C-F33C9D500E95} = {5118991D-8BCF-4FE4-981C-F33C9D500E95} - {333C38B9-BD2E-4D34-98DD-69E9B5E56ECB} = {333C38B9-BD2E-4D34-98DD-69E9B5E56ECB} - {D2A218BF-FAB3-4BEA-B288-E357FE003E29} = {D2A218BF-FAB3-4BEA-B288-E357FE003E29} - {14E44CF2-49E1-4D8E-B23B-28B7824ED6FB} = {14E44CF2-49E1-4D8E-B23B-28B7824ED6FB} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "g2iges", "..\g2iges\g2iges.vcproj", "{FCF25D1B-ED36-46B9-8DA8-2BF8F589C86B}" @@ -162,12 +162,12 @@ Release.AspNetCompiler.Debug = "False" EndProjectSection ProjectSection(ProjectDependencies) = postProject + {14E44CF2-49E1-4D8E-B23B-28B7824ED6FB} = {14E44CF2-49E1-4D8E-B23B-28B7824ED6FB} + {D2A218BF-FAB3-4BEA-B288-E357FE003E29} = {D2A218BF-FAB3-4BEA-B288-E357FE003E29} + {333C38B9-BD2E-4D34-98DD-69E9B5E56ECB} = {333C38B9-BD2E-4D34-98DD-69E9B5E56ECB} + {5118991D-8BCF-4FE4-981C-F33C9D500E95} = {5118991D-8BCF-4FE4-981C-F33C9D500E95} + {2794FD11-F9A6-4145-92DE-A05F5A2E6361} = {2794FD11-F9A6-4145-92DE-A05F5A2E6361} {EA0BB405-25E2-4B31-92D7-97316770F32B} = {EA0BB405-25E2-4B31-92D7-97316770F32B} - {2794FD11-F9A6-4145-92DE-A05F5A2E6361} = {2794FD11-F9A6-4145-92DE-A05F5A2E6361} - {5118991D-8BCF-4FE4-981C-F33C9D500E95} = {5118991D-8BCF-4FE4-981C-F33C9D500E95} - {333C38B9-BD2E-4D34-98DD-69E9B5E56ECB} = {333C38B9-BD2E-4D34-98DD-69E9B5E56ECB} - {D2A218BF-FAB3-4BEA-B288-E357FE003E29} = {D2A218BF-FAB3-4BEA-B288-E357FE003E29} - {14E44CF2-49E1-4D8E-B23B-28B7824ED6FB} = {14E44CF2-49E1-4D8E-B23B-28B7824ED6FB} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "g2stl", "..\g2stl\g2stl.vcproj", "{B8A3EACB-468E-4F28-BF95-77DD565DD3DC}" @@ -176,12 +176,12 @@ Release.AspNetCompiler.Debug = "False" EndProjectSection ProjectSection(ProjectDependencies) = postProject + {14E44CF2-49E1-4D8E-B23B-28B7824ED6FB} = {14E44CF2-49E1-4D8E-B23B-28B7824ED6FB} + {D2A218BF-FAB3-4BEA-B288-E357FE003E29} = {D2A218BF-FAB3-4BEA-B288-E357FE003E29} + {333C38B9-BD2E-4D34-98DD-69E9B5E56ECB} = {333C38B9-BD2E-4D34-98DD-69E9B5E56ECB} + {5118991D-8BCF-4FE4-981C-F33C9D500E95} = {5118991D-8BCF-4FE4-981C-F33C9D500E95} + {2794FD11-F9A6-4145-92DE-A05F5A2E6361} = {2794FD11-F9A6-4145-92DE-A05F5A2E6361} {EA0BB405-25E2-4B31-92D7-97316770F32B} = {EA0BB405-25E2-4B31-92D7-97316770F32B} - {2794FD11-F9A6-4145-92DE-A05F5A2E6361} = {2794FD11-F9A6-4145-92DE-A05F5A2E6361} - {5118991D-8BCF-4FE4-981C-F33C9D500E95} = {5118991D-8BCF-4FE4-981C-F33C9D500E95} - {333C38B9-BD2E-4D34-98DD-69E9B5E56ECB} = {333C38B9-BD2E-4D34-98DD-69E9B5E56ECB} - {D2A218BF-FAB3-4BEA-B288-E357FE003E29} = {D2A218BF-FAB3-4BEA-B288-E357FE003E29} - {14E44CF2-49E1-4D8E-B23B-28B7824ED6FB} = {14E44CF2-49E1-4D8E-B23B-28B7824ED6FB} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iges2g", "..\iges2g\iges2g.vcproj", "{1328A8EF-E103-4472-8A17-0AA93DC8042E}" @@ -190,12 +190,12 @@ Release.AspNetCompiler.Debug = "False" EndProjectSection ProjectSection(ProjectDependencies) = postProject + {14E44CF2-49E1-4D8E-B23B-28B7824ED6FB} = {14E44CF2-49E1-4D8E-B23B-28B7824ED6FB} + {D2A218BF-FAB3-4BEA-B288-E357FE003E29} = {D2A218BF-FAB3-4BEA-B288-E357FE003E29} + {333C38B9-BD2E-4D34-98DD-69E9B5E56ECB} = {333C38B9-BD2E-4D34-98DD-69E9B5E56ECB} + {5118991D-8BCF-4FE4-981C-F33C9D500E95} = {5118991D-8BCF-4FE4-981C-F33C9D500E95} + {2794FD11-F9A6-4145-92DE-A05F5A2E6361} = {2794FD11-F9A6-4145-92DE-A05F5A2E6361} {EA0BB405-25E2-4B31-92D7-97316770F32B} = {EA0BB405-25E2-4B31-92D7-97316770F32B} - {2794FD11-F9A6-4145-92DE-A05F5A2E6361} = {2794FD11-F9A6-4145-92DE-A05F5A2E6361} - {5118991D-8BCF-4FE4-981C-F33C9D500E95} = {5118991D-8BCF-4FE4-981C-F33C9D500E95} - {333C38B9-BD2E-4D34-98DD-69E9B5E56ECB} = {333C38B9-BD2E-4D34-98DD-69E9B5E56ECB} - {D2A218BF-FAB3-4BEA-B288-E357FE003E29} = {D2A218BF-FAB3-4BEA-B288-E357FE003E29} - {14E44CF2-49E1-4D8E-B23B-28B7824ED6FB} = {14E44CF2-49E1-4D8E-B23B-28B7824ED6FB} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "itclstub", "..\itclstub\itclstub.vcproj", "{9CC65742-70A4-49C6-AC96-6C4219F1AB25}" @@ -222,8 +222,8 @@ Release.AspNetCompiler.Debug = "False" EndProjectSection ProjectSection(ProjectDependencies) = postProject + {9C2287FD-4991-493F-81A4-41CAA48565CE} = {9C2287FD-4991-493F-81A4-41CAA48565CE} {5118991D-8BCF-4FE4-981C-F33C9D500E95} = {5118991D-8BCF-4FE4-981C-F33C9D500E95} - {9C2287FD-4991-493F-81A4-41CAA48565CE} = {9C2287FD-4991-493F-81A4-41CAA48565CE} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libItcl", "..\libItcl\libItcl.vcproj", "{39785814-94C1-4245-AA56-60ED2C0E1F41}" @@ -241,9 +241,9 @@ Release.AspNetCompiler.Debug = "False" EndProjectSection ProjectSection(ProjectDependencies) = postProject + {9C2287FD-4991-493F-81A4-41CAA48565CE} = {9C2287FD-4991-493F-81A4-41CAA48565CE} + {9CC65742-70A4-49C6-AC96-6C4219F1AB25} = {9CC65742-70A4-49C6-AC96-6C4219F1AB25} {97D16904-207B-4602-ADC5-4D4D34AA421D} = {97D16904-207B-4602-ADC5-4D4D34AA421D} - {9CC65742-70A4-49C6-AC96-6C4219F1AB25} = {9CC65742-70A4-49C6-AC96-6C4219F1AB25} - {9C2287FD-4991-493F-81A4-41CAA48565CE} = {9C2287FD-4991-493F-81A4-41CAA48565CE} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libbn", "..\libbn\libbn.vcproj", "{2794FD11-F9A6-4145-92DE-A05F5A2E6361}" @@ -252,8 +252,8 @@ Release.AspNetCompiler.Debug = "False" EndProjectSection ProjectSection(ProjectDependencies) = postProject + {D2A218BF-FAB3-4BEA-B288-E357FE003E29} = {D2A218BF-FAB3-4BEA-B288-E357FE003E29} {5118991D-8BCF-4FE4-981C-F33C9D500E95} = {5118991D-8BCF-4FE4-981C-F33C9D500E95} - {D2A218BF-FAB3-4BEA-B288-E357FE003E29} = {D2A218BF-FAB3-4BEA-B288-E357FE003E29} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libbu", "..\libbu\libbu.vcproj", "{D2A218BF-FAB3-4BEA-B288-E357FE003E29}" @@ -262,9 +262,9 @@ Release.AspNetCompiler.Debug = "False" EndProjectSection ProjectSection(ProjectDependencies) = postProject + {02BD806D-906C-4B4A-98CA-165337BCD533} = {02BD806D-906C-4B4A-98CA-165337BCD533} + {6C09EE6B-A1A2-4F0D-B7B0-32647987B49A} = {6C09EE6B-A1A2-4F0D-B7B0-32647987B49A} {5118991D-8BCF-4FE4-981C-F33C9D500E95} = {5118991D-8BCF-4FE4-981C-F33C9D500E95} - {6C09EE6B-A1A2-4F0D-B7B0-32647987B49A} = {6C09EE6B-A1A2-4F0D-B7B0-32647987B49A} - {02BD806D-906C-4B4A-98CA-165337BCD533} = {02BD806D-906C-4B4A-98CA-165337BCD533} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libdm", "..\libdm\libdm.vcproj", "{13D5E98A-50A1-40DF-A992-84CE4B60B16F}" @@ -273,14 +273,14 @@ Release.AspNetCompiler.Debug = "False" EndProjectSection ProjectSection(ProjectDependencies) = postProject + {9C2287FD-4991-493F-81A4-41CAA48565CE} = {9C2287FD-4991-493F-81A4-41CAA48565CE} + {14E44CF2-49E1-4D8E-B23B-28B7824ED6FB} = {14E44CF2-49E1-4D8E-B23B-28B7824ED6FB} + {D2A218BF-FAB3-4BEA-B288-E357FE003E29} = {D2A218BF-FAB3-4BEA-B288-E357FE003E29} + {5118991D-8BCF-4FE4-981C-F33C9D500E95} = {5118991D-8BCF-4FE4-981C-F33C9D500E95} + {A0C3B415-61DD-4E5A-B724-D13AA64DA645} = {A0C3B415-61DD-4E5A-B724-D13AA64DA645} + {2794FD11-F9A6-4145-92DE-A05F5A2E6361} = {2794FD11-F9A6-4145-92DE-A05F5A2E6361} + {EA0BB405-25E2-4B31-92D7-97316770F32B} = {EA0BB405-25E2-4B31-92D7-97316770F32B} {E1CBDBEE-887A-4CD8-9D3E-59A52CA2E45E} = {E1CBDBEE-887A-4CD8-9D3E-59A52CA2E45E} - {EA0BB405-25E2-4B31-92D7-97316770F32B} = {EA0BB405-25E2-4B31-92D7-97316770F32B} - {2794FD11-F9A6-4145-92DE-A05F5A2E6361} = {2794FD11-F9A6-4145-92DE-A05F5A2E6361} - {A0C3B415-61DD-4E5A-B724-D13AA64DA645} = {A0C3B415-61DD-4E5A-B724-D13AA64DA645} - {5118991D-8BCF-4FE4-981C-F33C9D500E95} = {5118991D-8BCF-4FE4-981C-F33C9D500E95} - {D2A218BF-FAB3-4BEA-B288-E357FE003E29} = {D2A218BF-FAB3-4BEA-B288-E357FE003E29} - {14E44CF2-49E1-4D8E-B23B-28B7824ED6FB} = {14E44CF2-49E1-4D8E-B23B-28B7824ED6FB} - {9C2287FD-4991-493F-81A4-41CAA48565CE} = {9C2287FD-4991-493F-81A4-41CAA48565CE} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libfb", "..\libfb\libfb.vcproj", "{A0C3B415-61DD-4E5A-B724-D13AA64DA645}" @@ -289,10 +289,10 @@ Release.AspNetCompiler.Debug = "False" EndProjectSection ProjectSection(ProjectDependencies) = postProject + {9C2287FD-4991-493F-81A4-41CAA48565CE} = {9C2287FD-4991-493F-81A4-41CAA48565CE} + {D2A218BF-FAB3-4BEA-B288-E357FE003E29} = {D2A218BF-FAB3-4BEA-B288-E357FE003E29} + {5118991D-8BCF-4FE4-981C-F33C9D500E95} = {5118991D-8BCF-4FE4-981C-F33C9D500E95} {DDD6E20A-8F64-443D-9428-AFB56715AA6E} = {DDD6E20A-8F64-443D-9428-AFB56715AA6E} - {5118991D-8BCF-4FE4-981C-F33C9D500E95} = {5118991D-8BCF-4FE4-981C-F33C9D500E95} - {D2A218BF-FAB3-4BEA-B288-E357FE003E29} = {D2A218BF-FAB3-4BEA-B288-E357FE003E29} - {9C2287FD-4991-493F-81A4-41CAA48565CE} = {9C2287FD-4991-493F-81A4-41CAA48565CE} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "liboptical", "..\liboptical\liboptical.vcproj", "{E017F898-A6B6-4ACC-8955-F7E98565E00D}" @@ -301,11 +301,11 @@ Release.AspNetCompiler.Debug = "False" EndProjectSection ProjectSection(ProjectDependencies) = postProject + {14E44CF2-49E1-4D8E-B23B-28B7824ED6FB} = {14E44CF2-49E1-4D8E-B23B-28B7824ED6FB} + {D2A218BF-FAB3-4BEA-B288-E357FE003E29} = {D2A218BF-FAB3-4BEA-B288-E357FE003E29} + {5118991D-8BCF-4FE4-981C-F33C9D500E95} = {5118991D-8BCF-4FE4-981C-F33C9D500E95} + {2794FD11-F9A6-4145-92DE-A05F5A2E6361} = {2794FD11-F9A6-4145-92DE-A05F5A2E6361} {EA0BB405-25E2-4B31-92D7-97316770F32B} = {EA0BB405-25E2-4B31-92D7-97316770F32B} - {2794FD11-F9A6-4145-92DE-A05F5A2E6361} = {2794FD11-F9A6-4145-92DE-A05F5A2E6361} - {5118991D-8BCF-4FE4-981C-F33C9D500E95} = {5118991D-8BCF-4FE4-981C-F33C9D500E95} - {D2A218BF-FAB3-4BEA-B288-E357FE003E29} = {D2A218BF-FAB3-4BEA-B288-E357FE003E29} - {14E44CF2-49E1-4D8E-B23B-28B7824ED6FB} = {14E44CF2-49E1-4D8E-B23B-28B7824ED6FB} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libpkg", "..\libpkg\libpkg.vcproj", "{DDD6E20A-8F64-443D-9428-AFB56715AA6E}" @@ -314,8 +314,8 @@ Release.AspNetCompiler.Debug = "False" EndProjectSection ProjectSection(ProjectDependencies) = postProject + {D2A218BF-FAB3-4BEA-B288-E357FE003E29} = {D2A218BF-FAB3-4BEA-B288-E357FE003E29} {5118991D-8BCF-4FE4-981C-F33C9D500E95} = {5118991D-8BCF-4FE4-981C-F33C9D500E95} - {D2A218BF-FAB3-4BEA-B288-E357FE003E29} = {D2A218BF-FAB3-4BEA-B288-E357FE003E29} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "librt", "..\librt\librt.vcproj", "{EA0BB405-25E2-4B31-92D7-97316770F32B}" @@ -324,12 +324,12 @@ Release.AspNetCompiler.Debug = "False" EndProjectSection ProjectSection(ProjectDependencies) = postProject + {14E44CF2-49E1-4D8E-B23B-28B7824ED6FB} = {14E44CF2-49E1-4D8E-B23B-28B7824ED6FB} + {D2A218BF-FAB3-4BEA-B288-E357FE003E29} = {D2A218BF-FAB3-4BEA-B288-E357FE003E29} + {5118991D-8BCF-4FE4-981C-F33C9D500E95} = {5118991D-8BCF-4FE4-981C-F33C9D500E95} + {2794FD11-F9A6-4145-92DE-A05F5A2E6361} = {2794FD11-F9A6-4145-92DE-A05F5A2E6361} + {DCF397A2-A67E-45CA-9087-840BC223C3DD} = {DCF397A2-A67E-45CA-9087-840BC223C3DD} {39172035-CC5F-4140-9118-E1A9AD311FC7} = {39172035-CC5F-4140-9118-E1A9AD311FC7} - {DCF397A2-A67E-45CA-9087-840BC223C3DD} = {DCF397A2-A67E-45CA-9087-840BC223C3DD} - {2794FD11-F9A6-4145-92DE-A05F5A2E6361} = {2794FD11-F9A6-4145-92DE-A05F5A2E6361} - {5118991D-8BCF-4FE4-981C-F33C9D500E95} = {5118991D-8BCF-4FE4-981C-F33C9D500E95} - {D2A218BF-FAB3-4BEA-B288-E357FE003E29} = {D2A218BF-FAB3-4BEA-B288-E357FE003E29} - {14E44CF2-49E1-4D8E-B23B-28B7824ED6FB} = {14E44CF2-49E1-4D8E-B23B-28B7824ED6FB} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libsysv", "..\libsysv\libsysv.vcproj", "{14E44CF2-49E1-4D8E-B23B-28B7824ED6FB}" @@ -338,8 +338,8 @@ Release.AspNetCompiler.Debug = "False" EndProjectSection ProjectSection(ProjectDependencies) = postProject + {D2A218BF-FAB3-4BEA-B288-E357FE003E29} = {D2A218BF-FAB3-4BEA-B288-E357FE003E29} {5118991D-8BCF-4FE4-981C-F33C9D500E95} = {5118991D-8BCF-4FE4-981C-F33C9D500E95} - {D2A218BF-FAB3-4BEA-B288-E357FE003E29} = {D2A218BF-FAB3-4BEA-B288-E357FE003E29} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libtcl", "..\libtcl\libtcl.vcproj", "{5118991D-8BCF-4FE4-981C-F33C9D500E95}" @@ -354,18 +354,18 @@ Release.AspNetCompiler.Debug = "False" EndProjectSection ProjectSection(ProjectDependencies) = postProject + {7A073879-92A6-4934-B386-37AF30F27B38} = {7A073879-92A6-4934-B386-37AF30F27B38} + {E1CBDBEE-887A-4CD8-9D3E-59A52CA2E45E} = {E1CBDBEE-887A-4CD8-9D3E-59A52CA2E45E} + {39785814-94C1-4245-AA56-60ED2C0E1F41} = {39785814-94C1-4245-AA56-60ED2C0E1F41} + {A0C3B415-61DD-4E5A-B724-D13AA64DA645} = {A0C3B415-61DD-4E5A-B724-D13AA64DA645} + {E0756E58-9FF9-489C-8264-F39BF1A621AC} = {E0756E58-9FF9-489C-8264-F39BF1A621AC} + {13D5E98A-50A1-40DF-A992-84CE4B60B16F} = {13D5E98A-50A1-40DF-A992-84CE4B60B16F} + {9C2287FD-4991-493F-81A4-41CAA48565CE} = {9C2287FD-4991-493F-81A4-41CAA48565CE} + {14E44CF2-49E1-4D8E-B23B-28B7824ED6FB} = {14E44CF2-49E1-4D8E-B23B-28B7824ED6FB} + {D2A218BF-FAB3-4BEA-B288-E357FE003E29} = {D2A218BF-FAB3-4BEA-B288-E357FE003E29} + {5118991D-8BCF-4FE4-981C-F33C9D500E95} = {5118991D-8BCF-4FE4-981C-F33C9D500E95} + {2794FD11-F9A6-4145-92DE-A05F5A2E6361} = {2794FD11-F9A6-4145-92DE-A05F5A2E6361} {EA0BB405-25E2-4B31-92D7-97316770F32B} = {EA0BB405-25E2-4B31-92D7-97316770F32B} - {2794FD11-F9A6-4145-92DE-A05F5A2E6361} = {2794FD11-F9A6-4145-92DE-A05F5A2E6361} - {5118991D-8BCF-4FE4-981C-F33C9D500E95} = {5118991D-8BCF-4FE4-981C-F33C9D500E95} - {D2A218BF-FAB3-4BEA-B288-E357FE003E29} = {D2A218BF-FAB3-4BEA-B288-E357FE003E29} - {14E44CF2-49E1-4D8E-B23B-28B7824ED6FB} = {14E44CF2-49E1-4D8E-B23B-28B7824ED6FB} - {9C2287FD-4991-493F-81A4-41CAA48565CE} = {9C2287FD-4991-493F-81A4-41CAA48565CE} - {13D5E98A-50A1-40DF-A992-84CE4B60B16F} = {13D5E98A-50A1-40DF-A992-84CE4B60B16F} - {E0756E58-9FF9-489C-8264-F39BF1A621AC} = {E0756E58-9FF9-489C-8264-F39BF1A621AC} - {A0C3B415-61DD-4E5A-B724-D13AA64DA645} = {A0C3B415-61DD-4E5A-B724-D13AA64DA645} - {39785814-94C1-4245-AA56-60ED2C0E1F41} = {39785814-94C1-4245-AA56-60ED2C0E1F41} - {E1CBDBEE-887A-4CD8-9D3E-59A52CA2E45E} = {E1CBDBEE-887A-4CD8-9D3E-59A52CA2E45E} - {7A073879-92A6-4934-B386-37AF30F27B38} = {7A073879-92A6-4934-B386-37AF30F27B38} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libtk", "..\libtk\libtk.vcproj", "{9C2287FD-4991-493F-81A4-41CAA48565CE}" @@ -383,10 +383,10 @@ Release.AspNetCompiler.Debug = "False" EndProjectSection ProjectSection(ProjectDependencies) = postProject + {D2A218BF-FAB3-4BEA-B288-E357FE003E29} = {D2A218BF-FAB3-4BEA-B288-E357FE003E29} + {5118991D-8BCF-4FE4-981C-F33C9D500E95} = {5118991D-8BCF-4FE4-981C-F33C9D500E95} + {2794FD11-F9A6-4145-92DE-A05F5A2E6361} = {2794FD11-F9A6-4145-92DE-A05F5A2E6361} {EA0BB405-25E2-4B31-92D7-97316770F32B} = {EA0BB405-25E2-4B31-92D7-97316770F32B} - {2794FD11-F9A6-4145-92DE-A05F5A2E6361} = {2794FD11-F9A6-4145-92DE-A05F5A2E6361} - {5118991D-8BCF-4FE4-981C-F33C9D500E95} = {5118991D-8BCF-4FE4-981C-F33C9D500E95} - {D2A218BF-FAB3-4BEA-B288-E357FE003E29} = {D2A218BF-FAB3-4BEA-B288-E357FE003E29} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libz", "..\libz\libz.vcproj", "{02BD806D-906C-4B4A-98CA-165337BCD533}" @@ -404,23 +404,23 @@ Release.AspNetCompiler.Debug = "False" EndProjectSection ProjectSection(ProjectDependencies) = postProject + {EA0BB405-25E2-4B31-92D7-97316770F32B} = {EA0BB405-25E2-4B31-92D7-97316770F32B} + {E1CBDBEE-887A-4CD8-9D3E-59A52CA2E45E} = {E1CBDBEE-887A-4CD8-9D3E-59A52CA2E45E} + {9C2287FD-4991-493F-81A4-41CAA48565CE} = {9C2287FD-4991-493F-81A4-41CAA48565CE} + {14E44CF2-49E1-4D8E-B23B-28B7824ED6FB} = {14E44CF2-49E1-4D8E-B23B-28B7824ED6FB} + {2E7781DC-C6A0-445B-A32E-3F18C42EDBFF} = {2E7781DC-C6A0-445B-A32E-3F18C42EDBFF} + {D2A218BF-FAB3-4BEA-B288-E357FE003E29} = {D2A218BF-FAB3-4BEA-B288-E357FE003E29} + {333C38B9-BD2E-4D34-98DD-69E9B5E56ECB} = {333C38B9-BD2E-4D34-98DD-69E9B5E56ECB} + {E017F898-A6B6-4ACC-8955-F7E98565E00D} = {E017F898-A6B6-4ACC-8955-F7E98565E00D} + {13D5E98A-50A1-40DF-A992-84CE4B60B16F} = {13D5E98A-50A1-40DF-A992-84CE4B60B16F} + {02BD806D-906C-4B4A-98CA-165337BCD533} = {02BD806D-906C-4B4A-98CA-165337BCD533} + {6C09EE6B-A1A2-4F0D-B7B0-32647987B49A} = {6C09EE6B-A1A2-4F0D-B7B0-32647987B49A} + {E0756E58-9FF9-489C-8264-F39BF1A621AC} = {E0756E58-9FF9-489C-8264-F39BF1A621AC} + {5118991D-8BCF-4FE4-981C-F33C9D500E95} = {5118991D-8BCF-4FE4-981C-F33C9D500E95} + {A0C3B415-61DD-4E5A-B724-D13AA64DA645} = {A0C3B415-61DD-4E5A-B724-D13AA64DA645} + {39785814-94C1-4245-AA56-60ED2C0E1F41} = {39785814-94C1-4245-AA56-60ED2C0E1F41} + {2794FD11-F9A6-4145-92DE-A05F5A2E6361} = {2794FD11-F9A6-4145-92DE-A05F5A2E6361} {DDD6E20A-8F64-443D-9428-AFB56715AA6E} = {DDD6E20A-8F64-443D-9428-AFB56715AA6E} - {2794FD11-F9A6-4145-92DE-A05F5A2E6361} = {2794FD11-F9A6-4145-92DE-A05F5A2E6361} - {39785814-94C1-4245-AA56-60ED2C0E1F41} = {39785814-94C1-4245-AA56-60ED2C0E1F41} - {A0C3B415-61DD-4E5A-B724-D13AA64DA645} = {A0C3B415-61DD-4E5A-B724-D13AA64DA645} - {5118991D-8BCF-4FE4-981C-F33C9D500E95} = {5118991D-8BCF-4FE4-981C-F33C9D500E95} - {E0756E58-9FF9-489C-8264-F39BF1A621AC} = {E0756E58-9FF9-489C-8264-F39BF1A621AC} - {6C09EE6B-A1A2-4F0D-B7B0-32647987B49A} = {6C09EE6B-A1A2-4F0D-B7B0-32647987B49A} - {02BD806D-906C-4B4A-98CA-165337BCD533} = {02BD806D-906C-4B4A-98CA-165337BCD533} - {13D5E98A-50A1-40DF-A992-84CE4B60B16F} = {13D5E98A-50A1-40DF-A992-84CE4B60B16F} - {E017F898-A6B6-4ACC-8955-F7E98565E00D} = {E017F898-A6B6-4ACC-8955-F7E98565E00D} - {333C38B9-BD2E-4D34-98DD-69E9B5E56ECB} = {333C38B9-BD2E-4D34-98DD-69E9B5E56ECB} - {D2A218BF-FAB3-4BEA-B288-E357FE003E29} = {D2A218BF-FAB3-4BEA-B288-E357FE003E29} - {2E7781DC-C6A0-445B-A32E-3F18C42EDBFF} = {2E7781DC-C6A0-445B-A32E-3F18C42EDBFF} - {14E44CF2-49E1-4D8E-B23B-28B7824ED6FB} = {14E44CF2-49E1-4D8E-B23B-28B7824ED6FB} - {9C2287FD-4991-493F-81A4-41CAA48565CE} = {9C2287FD-4991-493F-81A4-41CAA48565CE} - {E1CBDBEE-887A-4CD8-9D3E-59A52CA2E45E} = {E1CBDBEE-887A-4CD8-9D3E-59A52CA2E45E} - {EA0BB405-25E2-4B31-92D7-97316770F32B} = {EA0BB405-25E2-4B31-92D7-97316770F32B} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "nirt", "..\nirt\nirt.vcproj", "{D0C8AE72-6699-4198-93C3-FCA91A2B274F}" @@ -429,12 +429,12 @@ Release.AspNetCompiler.Debug = "False" EndProjectSection ProjectSection(ProjectDependencies) = postProject + {14E44CF2-49E1-4D8E-B23B-28B7824ED6FB} = {14E44CF2-49E1-4D8E-B23B-28B7824ED6FB} + {D2A218BF-FAB3-4BEA-B288-E357FE003E29} = {D2A218BF-FAB3-4BEA-B288-E357FE003E29} + {5118991D-8BCF-4FE4-981C-F33C9D500E95} = {5118991D-8BCF-4FE4-981C-F33C9D500E95} + {A0C3B415-61DD-4E5A-B724-D13AA64DA645} = {A0C3B415-61DD-4E5A-B724-D13AA64DA645} + {2794FD11-F9A6-4145-92DE-A05F5A2E6361} = {2794FD11-F9A6-4145-92DE-A05F5A2E6361} {EA0BB405-25E2-4B31-92D7-97316770F32B} = {EA0BB405-25E2-4B31-92D7-97316770F32B} - {2794FD11-F9A6-4145-92DE-A05F5A2E6361} = {2794FD11-F9A6-4145-92DE-A05F5A2E6361} - {A0C3B415-61DD-4E5A-B724-D13AA64DA645} = {A0C3B415-61DD-4E5A-B724-D13AA64DA645} - {5118991D-8BCF-4FE4-981C-F33C9D500E95} = {5118991D-8BCF-4FE4-981C-F33C9D500E95} - {D2A218BF-FAB3-4BEA-B288-E357FE003E29} = {D2A218BF-FAB3-4BEA-B288-E357FE003E29} - {14E44CF2-49E1-4D8E-B23B-28B7824ED6FB} = {14E44CF2-49E1-4D8E-B23B-28B7824ED6FB} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pix2fb", "..\pix2fb\pix2fb.vcproj", "{9F53E773-C457-4EB0-8228-5C13156127F4}" @@ -443,14 +443,14 @@ Release.AspNetCompiler.Debug = "False" EndProjectSection ProjectSection(ProjectDependencies) = postProject + {9C2287FD-4991-493F-81A4-41CAA48565CE} = {9C2287FD-4991-493F-81A4-41CAA48565CE} + {14E44CF2-49E1-4D8E-B23B-28B7824ED6FB} = {14E44CF2-49E1-4D8E-B23B-28B7824ED6FB} + {D2A218BF-FAB3-4BEA-B288-E357FE003E29} = {D2A218BF-FAB3-4BEA-B288-E357FE003E29} + {5118991D-8BCF-4FE4-981C-F33C9D500E95} = {5118991D-8BCF-4FE4-981C-F33C9D500E95} + {A0C3B415-61DD-4E5A-B724-D13AA64DA645} = {A0C3B415-61DD-4E5A-B724-D13AA64DA645} + {2794FD11-F9A6-4145-92DE-A05F5A2E6361} = {2794FD11-F9A6-4145-92DE-A05F5A2E6361} + {DDD6E20A-8F64-443D-9428-AFB56715AA6E} = {DDD6E20A-8F64-443D-9428-AFB56715AA6E} {EA0BB405-25E2-4B31-92D7-97316770F32B} = {EA0BB405-25E2-4B31-92D7-97316770F32B} - {DDD6E20A-8F64-443D-9428-AFB56715AA6E} = {DDD6E20A-8F64-443D-9428-AFB56715AA6E} - {2794FD11-F9A6-4145-92DE-A05F5A2E6361} = {2794FD11-F9A6-4145-92DE-A05F5A2E6361} - {A0C3B415-61DD-4E5A-B724-D13AA64DA645} = {A0C3B415-61DD-4E5A-B724-D13AA64DA645} - {5118991D-8BCF-4FE4-981C-F33C9D500E95} = {5118991D-8BCF-4FE4-981C-F33C9D500E95} - {D2A218BF-FAB3-4BEA-B288-E357FE003E29} = {D2A218BF-FAB3-4BEA-B288-E357FE003E29} - {14E44CF2-49E1-4D8E-B23B-28B7824ED6FB} = {14E44CF2-49E1-4D8E-B23B-28B7824ED6FB} - {9C2287FD-4991-493F-81A4-41CAA48565CE} = {9C2287FD-4991-493F-81A4-41CAA48565CE} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "png2fb", "..\png2fb\png2fb.vcproj", "{6EC2E706-4704-4F93-985D-DD0945411ABE}" @@ -459,16 +459,16 @@ Release.AspNetCompiler.Debug = "False" EndProjectSection ProjectSection(ProjectDependencies) = postProject + {9C2287FD-4991-493F-81A4-41CAA48565CE} = {9C2287FD-4991-493F-81A4-41CAA48565CE} + {14E44CF2-49E1-4D8E-B23B-28B7824ED6FB} = {14E44CF2-49E1-4D8E-B23B-28B7824ED6FB} + {D2A218BF-FAB3-4BEA-B288-E357FE003E29} = {D2A218BF-FAB3-4BEA-B288-E357FE003E29} + {02BD806D-906C-4B4A-98CA-165337BCD533} = {02BD806D-906C-4B4A-98CA-165337BCD533} + {6C09EE6B-A1A2-4F0D-B7B0-32647987B49A} = {6C09EE6B-A1A2-4F0D-B7B0-32647987B49A} + {5118991D-8BCF-4FE4-981C-F33C9D500E95} = {5118991D-8BCF-4FE4-981C-F33C9D500E95} + {A0C3B415-61DD-4E5A-B724-D13AA64DA645} = {A0C3B415-61DD-4E5A-B724-D13AA64DA645} + {2794FD11-F9A6-4145-92DE-A05F5A2E6361} = {2794FD11-F9A6-4145-92DE-A05F5A2E6361} + {DDD6E20A-8F64-443D-9428-AFB56715AA6E} = {DDD6E20A-8F64-443D-9428-AFB56715AA6E} {EA0BB405-25E2-4B31-92D7-97316770F32B} = {EA0BB405-25E2-4B31-92D7-97316770F32B} - {DDD6E20A-8F64-443D-9428-AFB56715AA6E} = {DDD6E20A-8F64-443D-9428-AFB56715AA6E} - {2794FD11-F9A6-4145-92DE-A05F5A2E6361} = {2794FD11-F9A6-4145-92DE-A05F5A2E6361} - {A0C3B415-61DD-4E5A-B724-D13AA64DA645} = {A0C3B415-61DD-4E5A-B724-D13AA64DA645} - {5118991D-8BCF-4FE4-981C-F33C9D500E95} = {5118991D-8BCF-4FE4-981C-F33C9D500E95} - {6C09EE6B-A1A2-4F0D-B7B0-32647987B49A} = {6C09EE6B-A1A2-4F0D-B7B0-32647987B49A} - {02BD806D-906C-4B4A-98CA-165337BCD533} = {02BD806D-906C-4B4A-98CA-165337BCD533} - {D2A218BF-FAB3-4BEA-B288-E357FE003E29} = {D2A218BF-FAB3-4BEA-B288-E357FE003E29} - {14E44CF2-49E1-4D8E-B23B-28B7824ED6FB} = {14E44CF2-49E1-4D8E-B23B-28B7824ED6FB} - {9C2287FD-4991-493F-81A4-41CAA48565CE} = {9C2287FD-4991-493F-81A4-41CAA48565CE} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "rt", "..\rt\rt.vcproj", "{8C0C9368-6222-4D60-BB8E-4BABE95F19CC}" @@ -477,14 +477,14 @@ Release.AspNetCompiler.Debug = "False" EndProjectSection ProjectSection(ProjectDependencies) = postProject + {E017F898-A6B6-4ACC-8955-F7E98565E00D} = {E017F898-A6B6-4ACC-8955-F7E98565E00D} + {D2A218BF-FAB3-4BEA-B288-E357FE003E29} = {D2A218BF-FAB3-4BEA-B288-E357FE003E29} + {EA0BB405-25E2-4B31-92D7-97316770F32B} = {EA0BB405-25E2-4B31-92D7-97316770F32B} + {14E44CF2-49E1-4D8E-B23B-28B7824ED6FB} = {14E44CF2-49E1-4D8E-B23B-28B7824ED6FB} + {5118991D-8BCF-4FE4-981C-F33C9D500E95} = {5118991D-8BCF-4FE4-981C-F33C9D500E95} + {A0C3B415-61DD-4E5A-B724-D13AA64DA645} = {A0C3B415-61DD-4E5A-B724-D13AA64DA645} + {2794FD11-F9A6-4145-92DE-A05F5A2E6361} = {2794FD11-F9A6-4145-92DE-A05F5A2E6361} {DDD6E20A-8F64-443D-9428-AFB56715AA6E} = {DDD6E20A-8F64-443D-9428-AFB56715AA6E} - {2794FD11-F9A6-4145-92DE-A05F5A2E6361} = {2794FD11-F9A6-4145-92DE-A05F5A2E6361} - {A0C3B415-61DD-4E5A-B724-D13AA64DA645} = {A0C3B415-61DD-4E5A-B724-D13AA64DA645} - {5118991D-8BCF-4FE4-981C-F33C9D500E95} = {5118991D-8BCF-4FE4-981C-F33C9D500E95} - {14E44CF2-49E1-4D8E-B23B-28B7824ED6FB} = {14E44CF2-49E1-4D8E-B23B-28B7824ED6FB} - {EA0BB405-25E2-4B31-92D7-97316770F32B} = {EA0BB405-25E2-4B31-92D7-97316770F32B} - {D2A218BF-FAB3-4BEA-B288-E357FE003E29} = {D2A218BF-FAB3-4BEA-B288-E357FE003E29} - {E017F898-A6B6-4ACC-8955-F7E98565E00D} = {E017F898-A6B6-4ACC-8955-F7E98565E00D} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "rtcheck", "..\rtcheck\rtcheck.vcproj", "{68B4F899-795B-4A71-84DE-ACACC49CC9EF}" @@ -493,14 +493,14 @@ Release.AspNetCompiler.Debug = "False" EndProjectSection ProjectSection(ProjectDependencies) = postProject + {14E44CF2-49E1-4D8E-B23B-28B7824ED6FB} = {14E44CF2-49E1-4D8E-B23B-28B7824ED6FB} + {D2A218BF-FAB3-4BEA-B288-E357FE003E29} = {D2A218BF-FAB3-4BEA-B288-E357FE003E29} + {E017F898-A6B6-4ACC-8955-F7E98565E00D} = {E017F898-A6B6-4ACC-8955-F7E98565E00D} + {5118991D-8BCF-4FE4-981C-F33C9D500E95} = {5118991D-... [truncated message content] |
From: <br...@us...> - 2008-08-06 04:33:47
|
Revision: 32275 http://brlcad.svn.sourceforge.net/brlcad/?rev=32275&view=rev Author: brlcad Date: 2008-08-06 04:33:50 +0000 (Wed, 06 Aug 2008) Log Message: ----------- after some discussions on the channel, rename the 'binary' command in mge to the 'bo' command (for binary object). this was done due to the fact that Tcl already has a 'binary' command and ours ends up masking it - a cnflict that mysteriously didn't surface during early 8.5 testing but is still there. this relates to tom browders sf bug 1532699 that prompted th initial change. other options considered: import/export, data, blob, borg, dbblob, adddata, ... Modified Paths: -------------- brlcad/trunk/NEWS brlcad/trunk/doc/deprecation.txt brlcad/trunk/doc/html/manuals/mged/mged_cmd_index.html brlcad/trunk/regress/gqa.sh brlcad/trunk/src/gtools/g_qa.1 brlcad/trunk/src/libged/wdb_obj.c brlcad/trunk/src/mged/chgmodel.c brlcad/trunk/src/mged/cmd.h brlcad/trunk/src/mged/setup.c brlcad/trunk/src/tclscripts/mged/help.tcl brlcad/trunk/src/tclscripts/mged/make_solid.tcl Modified: brlcad/trunk/NEWS =================================================================== --- brlcad/trunk/NEWS 2008-08-06 03:46:40 UTC (rev 32274) +++ brlcad/trunk/NEWS 2008-08-06 04:33:50 UTC (rev 32275) @@ -14,6 +14,7 @@ --- 2008-06-XX Release 7.13.0 --- ---------------------------------------------------------------------- +* renamed mged binary command to bo for binary objects - Sean Morrison * fixed bug that caused remote framebuffers to fail - Sean Morrison * integrated tgf-g with the default compile/install - Daniel Roßberg * add w option to tire to allow disabling wheel generation - C. Yapp Modified: brlcad/trunk/doc/deprecation.txt =================================================================== --- brlcad/trunk/doc/deprecation.txt 2008-08-06 03:46:40 UTC (rev 32274) +++ brlcad/trunk/doc/deprecation.txt 2008-08-06 04:33:50 UTC (rev 32275) @@ -47,9 +47,10 @@ ************** * DEPRECATED * ************** + 7.14 ---- -src/mged/mged.c +mged -n option -> -c option [deprecated 7.14] 7.12 @@ -98,6 +99,11 @@ PI -> M_PI M_SQRT2_DIV2 -> M_SQRT1_2 +7.12.6 +------ +mged + binary -> bo [rename] + 7.12.4 ------ include/raytrace.h @@ -141,6 +147,8 @@ removed [non-stdc] src/librt/wdb_obj.c -> src/librt/db_obj.c removed wdb_tree_cmd(), added dgo_tree_cmd() [rename] +mged + dbbinary -> binary [rename] 7.10.4 Modified: brlcad/trunk/doc/html/manuals/mged/mged_cmd_index.html =================================================================== --- brlcad/trunk/doc/html/manuals/mged/mged_cmd_index.html 2008-08-06 03:46:40 UTC (rev 32274) +++ brlcad/trunk/doc/html/manuals/mged/mged_cmd_index.html 2008-08-06 04:33:50 UTC (rev 32275) @@ -69,7 +69,7 @@ <TD WIDTH="22%" VALIGN="MIDDLE"> <FONT SIZE=2><P></FONT><A HREF="#bev"><FONT SIZE=2>bev</FONT></A></TD> <TD WIDTH="21%" VALIGN="MIDDLE"> -<FONT SIZE=2><P></FONT><A HREF="#binary"><FONT SIZE=2>binary</FONT></A></TD> +<FONT SIZE=2><P></FONT><A HREF="#bo"><FONT SIZE=2>bo</FONT></A></TD> </TR> <TR><TD WIDTH="18%" VALIGN="MIDDLE"> <FONT SIZE=2><P></FONT><A HREF="#bot_condense"><FONT SIZE=2>bot_condense</FONT></A></TD> @@ -890,8 +890,8 @@ </FONT> <DL> -<B><A NAME="binary"></A>binary </B><I>[-o|-i pattern type] dest source</I> </DT> -<DD>The "binary" command is used to create or retrieve binary opaque objects. One of <I>-i</I> or <I>-o</I> must be specified.</DD> +<B><A NAME="bo"></A>bo </B><I>[-o|-i pattern type] dest source</I> </DT> +<DD>The "bo" command is used to create or retrieve binary opaque objects. One of <I>-i</I> or <I>-o</I> must be specified.</DD> <dd>The <i>-o</i> option "outputs" or extracts a binary object from the database object <i>source</i> to a file called <i>dest</i>.</dd> <dd>The <i>-i</i> option "inputs" or imports a file called <i>source</i> into a binary object called <i>dest</i> in the database. There are two additional arguments that must be specified with the <i>-i</i> option: pattern and type. Currently, only uniform binary objects (arrays of values) are supported. As a result, the <i>pattern</i> is always <i>u</i> for "uniform" pattern. The <i>type</i> can be one of the following: <DD><i>f </I>-> float</DD> @@ -906,10 +906,10 @@ <DD><I>L </I>-> unsigned long (64 bit)</DD> <DD> </DD> <DT><FONT SIZE=4>Examples: </DT></FONT> -<DD> <TT>mged></TT> <B>binary -i -u c cmds /usr/brlcad/html/manuals/mged/mged_cmds.html</B></DD> +<DD> <TT>mged></TT> <B>bo -i -u c cmds /usr/brlcad/html/manuals/mged/mged_cmds.html</B></DD> <DD>-- Create an opaque uniform binary object of characters with the name <I>cmds</I> that contains the contents of the file <I>/usr/brlcad/html/manuals/mged/mged_cmds.html.</I></DD> <DD></DD> -<DD><TT>mged></TT> <B>binary -o /home/jim/cmds.html cmds</B></DD> +<DD><TT>mged></TT> <B>bo -o /home/jim/cmds.html cmds</B></DD> <DD>-- Copy the contents of the binary object named <I>cmds</I> into the file named <i>/home/jim/cmds.html.</i></DD> </dl> <DT><HR ALIGN="RIGHT"></DT> Modified: brlcad/trunk/regress/gqa.sh =================================================================== --- brlcad/trunk/regress/gqa.sh 2008-08-06 03:46:40 UTC (rev 32274) +++ brlcad/trunk/regress/gqa.sh 2008-08-06 04:33:50 UTC (rev 32275) @@ -29,7 +29,7 @@ cat > gqa.mged <<EOF units m -binary -i u c _DENSITIES density_table.txt +bo -i u c _DENSITIES density_table.txt in box1.s rpp 0 10 0 10 0 10 in box2.s rpp 1 9 1 9 1 9 Modified: brlcad/trunk/src/gtools/g_qa.1 =================================================================== --- brlcad/trunk/src/gtools/g_qa.1 2008-08-06 03:46:40 UTC (rev 32274) +++ brlcad/trunk/src/gtools/g_qa.1 2008-08-06 04:33:50 UTC (rev 32275) @@ -151,10 +151,10 @@ it is easier to rectify the situation using the external file. Once the table has been verified as correct and complete, it is imported to the database as the binary object \fB_DENSITIES\fR. -To import the text file into the database, the following comand is used: +To import the text file into the database, the following command is used: .IP mged> -.B binary \-i u c _DENSITIES +.B bo \-i u c _DENSITIES .I filename .SH GEOMETRY ERROR DETECTION Modified: brlcad/trunk/src/libged/wdb_obj.c =================================================================== --- brlcad/trunk/src/libged/wdb_obj.c 2008-08-06 03:46:40 UTC (rev 32274) +++ brlcad/trunk/src/libged/wdb_obj.c 2008-08-06 04:33:50 UTC (rev 32275) @@ -255,7 +255,7 @@ static int wdb_pathlist_tcl(ClientData clientData, Tcl_Interp *interp, int argc, char *argv[]); static int wdb_lt_tcl(ClientData clientData, Tcl_Interp *interp, int argc, char *argv[]); static int wdb_version_tcl(ClientData clientData, Tcl_Interp *interp, int argc, char *argv[]); -static int wdb_binary_tcl(ClientData clientData, Tcl_Interp *interp, int argc, char *argv[]); +static int wdb_bo_tcl(ClientData clientData, Tcl_Interp *interp, int argc, char *argv[]); static int wdb_bot_face_sort_tcl(ClientData clientData, Tcl_Interp *interp, int argc, char *argv[]); static int wdb_bot_decimate_tcl(ClientData clientData, Tcl_Interp *interp, int argc, char *argv[]); static int wdb_move_arb_edge_tcl(ClientData clientData, Tcl_Interp *interp, int argc, char *argv[]); @@ -316,7 +316,7 @@ {"adjust", wdb_adjust_tcl}, {"arced", wdb_newcmds_tcl}, {"attr", wdb_attr_tcl}, - {"binary", wdb_binary_tcl}, + {"bo", wdb_bo_tcl}, {"bot_face_sort", wdb_bot_face_sort_tcl}, {"bot_decimate", wdb_bot_decimate_tcl}, {"c", wdb_comb_std_tcl}, @@ -8622,7 +8622,7 @@ * */ int -wdb_binary_cmd(struct rt_wdb *wdbp, +wdb_bo_cmd(struct rt_wdb *wdbp, Tcl_Interp *interp, int argc, char *argv[]) @@ -8672,7 +8672,7 @@ if ( input_mode + output_mode != 1 ) { bu_vls_init(&vls); - bu_vls_printf(&vls, "helplib_alias binary %s", cname); + bu_vls_printf(&vls, "helplib_alias bo %s", cname); Tcl_Eval(interp, bu_vls_addr(&vls)); bu_vls_free(&vls); return TCL_ERROR; @@ -8683,7 +8683,7 @@ if ( (input_mode && argc != 4) || (output_mode && argc != 2) ) { bu_vls_init(&vls); - bu_vls_printf(&vls, "helplib_alias binary %s", cname); + bu_vls_printf(&vls, "helplib_alias bo %s", cname); Tcl_Eval(interp, bu_vls_addr(&vls)); bu_vls_free(&vls); return TCL_ERROR; @@ -8753,7 +8753,7 @@ if ( minor_type == 0 ) { bu_vls_init(&vls); - bu_vls_printf(&vls, "helplib_alias binary %s", cname); + bu_vls_printf(&vls, "helplib_alias bo %s", cname); Tcl_Eval(interp, bu_vls_addr(&vls)); bu_vls_free(&vls); return TCL_ERROR; @@ -8845,7 +8845,7 @@ return TCL_OK; } else { bu_vls_init(&vls); - bu_vls_printf(&vls, "helplib_alias binary %s", cname); + bu_vls_printf(&vls, "helplib_alias bo %s", cname); Tcl_Eval(interp, bu_vls_addr(&vls)); bu_vls_free(&vls); return TCL_ERROR; @@ -8857,17 +8857,17 @@ /** * Usage: - * procname binary args + * procname bo args */ static int -wdb_binary_tcl(ClientData clientData, +wdb_bo_tcl(ClientData clientData, Tcl_Interp *interp, int argc, char *argv[]) { struct rt_wdb *wdbp = (struct rt_wdb *)clientData; - return wdb_binary_cmd(wdbp, interp, argc-1, argv+1); + return wdb_bo_cmd(wdbp, interp, argc-1, argv+1); } /** @@ -9284,7 +9284,7 @@ len = 6; break; case DB5_MAJORTYPE_BINARY_MIME: - len = strlen( "binary (mime)" ); + len = strlen( "binary(mime)" ); break; case DB5_MAJORTYPE_BINARY_UNIF: len = strlen( binu_types[list_of_names[i]->d_minor_type] ); Modified: brlcad/trunk/src/mged/chgmodel.c =================================================================== --- brlcad/trunk/src/mged/chgmodel.c 2008-08-06 03:46:40 UTC (rev 32274) +++ brlcad/trunk/src/mged/chgmodel.c 2008-08-06 04:33:50 UTC (rev 32275) @@ -1239,14 +1239,14 @@ int -f_binary(ClientData clientData, +f_bo(ClientData clientData, Tcl_Interp *interp, int argc, char **argv) { CHECK_DBI_NULL; - return wdb_binary_cmd(wdbp, interp, argc, argv); + return wdb_bo_cmd(wdbp, interp, argc, argv); } int cmd_bot_smooth( ClientData clientData, Modified: brlcad/trunk/src/mged/cmd.h =================================================================== --- brlcad/trunk/src/mged/cmd.h 2008-08-06 03:46:40 UTC (rev 32274) +++ brlcad/trunk/src/mged/cmd.h 2008-08-06 04:33:50 UTC (rev 32275) @@ -155,7 +155,7 @@ MGED_EXTERN(int f_area, (ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); MGED_EXTERN(int f_attach, (ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); MGED_EXTERN(int f_bev, (ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); -MGED_EXTERN(int f_binary, (ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); +MGED_EXTERN(int f_bo, (ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); MGED_EXTERN(int f_bomb, (ClientData clientData, Tcl_Interp *interp, int argc, const char *argv[])); MGED_EXTERN(int f_bot_condense, (ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); MGED_EXTERN(int f_bot_face_fuse, (ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); Modified: brlcad/trunk/src/mged/setup.c =================================================================== --- brlcad/trunk/src/mged/setup.c 2008-08-06 03:46:40 UTC (rev 32274) +++ brlcad/trunk/src/mged/setup.c 2008-08-06 04:33:50 UTC (rev 32275) @@ -81,7 +81,7 @@ {"attr", cmd_attr}, {"autoview", cmd_autoview}, {"bev", f_bev}, - {"binary", f_binary}, + {"bo", f_bo}, #if 0 {"import_body", cmd_import_body}, {"export_body", cmd_export_body}, Modified: brlcad/trunk/src/tclscripts/mged/help.tcl =================================================================== --- brlcad/trunk/src/tclscripts/mged/help.tcl 2008-08-06 03:46:40 UTC (rev 32274) +++ brlcad/trunk/src/tclscripts/mged/help.tcl 2008-08-06 04:33:50 UTC (rev 32275) @@ -54,7 +54,7 @@ set mged_help_data(autoview) {{} {set view size and center so that all displayed solids are in view}} set mged_help_data(B) $helplib_data(dgo_blast) set mged_help_data(bev) {{"[-t] [-P#] new_obj obj1 op obj2 op obj3 op ..."} {boolean evaluation of objects via NMG's}} -set mged_help_data(binary) {{{-i major_type minor_type | -o} dest source} +set mged_help_data(bo) {{{-i major_type minor_type | -o} dest source} {manipulate opaque objects. Must specify one of -i (for creating or adjusting objects (input)) or -o for extracting objects (output). Modified: brlcad/trunk/src/tclscripts/mged/make_solid.tcl =================================================================== --- brlcad/trunk/src/tclscripts/mged/make_solid.tcl 2008-08-06 03:46:40 UTC (rev 32274) +++ brlcad/trunk/src/tclscripts/mged/make_solid.tcl 2008-08-06 04:33:50 UTC (rev 32275) @@ -100,7 +100,7 @@ return } - if { [catch {binary -i u $binunif_types($type) $name $fileName} ret] != 0 } { + if { [catch {bo -i u $binunif_types($type) $name $fileName} ret] != 0 } { cad_dialog $::tk::Priv(cad_dialog) $mged_gui($id,screen) "ERROR creating BINUNIF" $ret "" 0 OK return } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bo...@us...> - 2008-08-06 14:14:38
|
Revision: 32287 http://brlcad.svn.sourceforge.net/brlcad/?rev=32287&view=rev Author: bob1961 Date: 2008-08-06 14:14:44 +0000 (Wed, 06 Aug 2008) Log Message: ----------- Mods for automatically setting the version for asc2g.vcproj and brlcad.nsi Modified Paths: -------------- brlcad/trunk/misc/nsis/brlcad.nsi brlcad/trunk/misc/win32-msvc8/asc2g/asc2g.vcproj Added Paths: ----------- brlcad/trunk/misc/nsis/updateVersion.tcl brlcad/trunk/src/external/ProEngineer/win32-msvc8/ Modified: brlcad/trunk/misc/nsis/brlcad.nsi =================================================================== --- brlcad/trunk/misc/nsis/brlcad.nsi 2008-08-06 14:13:52 UTC (rev 32286) +++ brlcad/trunk/misc/nsis/brlcad.nsi 2008-08-06 14:14:44 UTC (rev 32287) @@ -3,57 +3,8 @@ ;-------------------------------- ;BRL-CAD Version Variables -Var MAJOR -Var MINOR -Var PATCH -Var VERSION +!include VERSION.txt -Section -ClearErrors -IfFileExists ..\..\..\include\conf\MAJOR major_found - Messagebox MB_OK "Unable to find MAJOR version file in ..\..\..\include\conf" - Abort -major_found: -FileOpen $0 ..\..\..\include\conf\MAJOR r -IfErrors major -FileRead $0 $MAJOR -FileClose $0 -Goto major_done -major: -StrCpy $MAJOR 'XX' -major_done: - -ClearErrors -IfFileExists ..\..\..\include\conf\MINOR minor_found - Messagebox MB_OK "Unable to find MINOR version file in ..\..\..\include\conf" - Abort -minor_found: -FileOpen $0 ..\..\..\include\conf\MINOR r -IfErrors minor -FileRead $0 $MINOR -FileClose $0 -Goto minor_done -minor: -StrCpy $MINOR 'XX' -minor_done: - -ClearErrors -IfFileExists ..\..\..\include\conf\PATCH patch_found - Messagebox MB_OK "Unable to find PATCH version file in ..\..\..\include\conf" - Abort -patch_found: -FileOpen $0 ..\..\..\include\conf\PATCH r -IfErrors patch -FileRead $0 $PATCH -FileClose $0 -Goto patch_done -patch: -StrCpy $PATCH 'XX' -patch_done: - -StrCpy $VERSION "$MAJOR.$MINOR.$PATCH" -SectionEnd - ;-------------------------------- ;Include Modern UI @@ -67,7 +18,7 @@ Var /GLOBAL PROG_FILES ReadEnvStr $PROG_FILES "PROGRAMFILES" - StrCpy $INSTDIR "$PROG_FILES\BRL-CAD\$VERSION" + StrCpy $INSTDIR "$PROG_FILES\BRL-CAD\${VERSION}" FunctionEnd ; Tack on BRL-CAD if it's not already there @@ -89,14 +40,14 @@ Name "BRL-CAD" ; The file to write - OutFile "BRL-CAD_$VERSION.exe" + OutFile "BRL-CAD_${VERSION}.exe" ; The default installation directory - InstallDir $PROGRAMFILES\BRL-CAD\$VERSION + InstallDir $PROGRAMFILES\BRL-CAD\${VERSION} ; Registry key to check for directory (so if you install again, it will ; overwrite the old one automatically) - InstallDirRegKey HKLM "Software\BRL-CAD $VERSION" "Install_Dir" + InstallDirRegKey HKLM "Software\BRL-CAD ${VERSION}" "Install_Dir" ; Make it look pretty in XP XPStyle on @@ -133,7 +84,7 @@ ; Pages ;Welcome page configuration - !define MUI_WELCOMEPAGE_TEXT "This wizard will guide you through the installation of BRL-CAD $VERSION.\r\n\r\nBRL-CAD is a powerful cross-platform open source solid modeling system.\r\n\r\nSelect Next to continue." + !define MUI_WELCOMEPAGE_TEXT "This wizard will guide you through the installation of BRL-CAD ${VERSION}.\r\n\r\nBRL-CAD is a powerful cross-platform open source solid modeling system.\r\n\r\nSelect Next to continue." !insertmacro MUI_PAGE_WELCOME !insertmacro MUI_PAGE_LICENSE "..\..\COPYING" @@ -142,7 +93,7 @@ ;Start Menu Folder Page Configuration !define MUI_STARTMENUPAGE_REGISTRY_ROOT "HKLM" - !define MUI_STARTMENUPAGE_REGISTRY_KEY "Software\BRL-CAD\$VERSION" + !define MUI_STARTMENUPAGE_REGISTRY_KEY "Software\BRL-CAD\${VERSION}" !define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "Start Menu Folder" !insertmacro MUI_PAGE_STARTMENU Application $STARTMENU_FOLDER @@ -199,24 +150,24 @@ File /r "..\..\brlcadInstall\share\*" ; Write the installation path into the registry - WriteRegStr HKLM "SOFTWARE\BRL-CAD $VERSION" "Install_Dir" "$INSTDIR" + WriteRegStr HKLM "SOFTWARE\BRL-CAD ${VERSION}" "Install_Dir" "$INSTDIR" ; Write the uninstall keys for Windows - WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\BRL-CAD $VERSION" "DisplayName" "BRL-CAD $VERSION" - WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\BRL-CAD $VERSION" "DisplayVersion" "$VERSION" - WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\BRL-CAD $VERSION" "VersionMajor" "$MAJOR" - WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\BRL-CAD $VERSION" "VersionMinor" "$MINOR" - WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\BRL-CAD $VERSION" "InstallLocation" '"$INSTDIR"' - WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\BRL-CAD $VERSION" "URLInfoAbout" "http://brlcad.org" - WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\BRL-CAD $VERSION" "URLUpdateInfo" "http://brlcad.org" - WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\BRL-CAD $VERSION" "HelpLink" "http://irc.brlcad.org" - WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\BRL-CAD $VERSION" "UninstallString" '"$INSTDIR\uninstall.exe"' + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\BRL-CAD ${VERSION}" "DisplayName" "BRL-CAD ${VERSION}" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\BRL-CAD ${VERSION}" "DisplayVersion" "${VERSION}" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\BRL-CAD ${VERSION}" "VersionMajor" "${MAJOR}" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\BRL-CAD ${VERSION}" "VersionMinor" "${MINOR}" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\BRL-CAD ${VERSION}" "InstallLocation" '"$INSTDIR"' + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\BRL-CAD ${VERSION}" "URLInfoAbout" "http://brlcad.org" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\BRL-CAD ${VERSION}" "URLUpdateInfo" "http://brlcad.org" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\BRL-CAD ${VERSION}" "HelpLink" "http://irc.brlcad.org" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\BRL-CAD ${VERSION}" "UninstallString" '"$INSTDIR\uninstall.exe"' ;Create uninstaller WriteUninstaller "uninstall.exe" - StrCpy $BRLCAD_DATA_DIR "$INSTDIR\share\brlcad\$VERSION" + StrCpy $BRLCAD_DATA_DIR "$INSTDIR\share\brlcad\${VERSION}" ; Create desktop icons SetOutPath $INSTDIR @@ -288,8 +239,8 @@ Section "Uninstall" ; Remove registry keys - DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\BRL-CAD $VERSION" - DeleteRegKey HKLM "SOFTWARE\BRL-CAD $VERSION" + DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\BRL-CAD ${VERSION}" + DeleteRegKey HKLM "SOFTWARE\BRL-CAD ${VERSION}" !insertmacro MUI_STARTMENU_GETFOLDER Application $MUI_TEMP Added: brlcad/trunk/misc/nsis/updateVersion.tcl =================================================================== --- brlcad/trunk/misc/nsis/updateVersion.tcl (rev 0) +++ brlcad/trunk/misc/nsis/updateVersion.tcl 2008-08-06 14:14:44 UTC (rev 32287) @@ -0,0 +1,93 @@ +# U P D A T E V E R S I O N . T C L +# BRL-CAD +# +# Copyright (c) 2002-2007 United States Government as represented by +# the U.S. Army Research Laboratory. +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public License +# version 2.1 as published by the Free Software Foundation. +# +# This library is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this file; see the file named COPYING for more +# information. +# +### +# +# Description: +# Script for creating VERSION.txt (used by brlcad.nsi) and +# VERSION.bat (used by asc2g.vcproj). +# + +set rootDir [file normalize ../../..] +if {![file exists $rootDir]} { + puts "$rootDir must exist and must be the root of the BRL-CAD source tree. " + return +} + +set missingFile 0 + +if {![file exists [file join $rootDir include conf MAJOR]]} { + puts "Missing [file join $rootDir include conf MAJOR]]" + set missingFile 1 +} + +if {![file exists [file join $rootDir include conf MINOR]]} { + puts "Missing [file join $rootDir include conf MINOR]]" + set missingFile 1 +} + +if {![file exists [file join $rootDir include conf PATCH]]} { + puts "Missing [file join $rootDir include conf PATCH]]" + set missingFile 1 +} + + +if {$missingFile} { + return +} + +set fd [open [file join $rootDir include conf MAJOR] "r"] +set major [read $fd] +close $fd + +set fd [open [file join $rootDir include conf MINOR] "r"] +set minor [read $fd] +close $fd + +set fd [open [file join $rootDir include conf PATCH] "r"] +set patch [read $fd] +close $fd + +set major [string trim $major] +set minor [string trim $minor] +set patch [string trim $patch] + +if {![string is int $major] || + ![string is int $minor] || + ![string is int $patch]} { + puts "Failed to acquire BRL-CAD's version." + puts "Bad value for one or more of the following:" + puts "major - $major, minor - $minor, patch - $patch" + return +} + +set version "$major.$minor.$patch" + +# Create VERSION.txt +set fd [open [file join $rootDir misc nsis VERSION.txt] "w"] +puts $fd "!define MAJOR '$major'" +puts $fd "!define MINOR '$minor'" +puts $fd "!define PATCH '$patch'" +puts $fd "!define VERSION '$version'" +close $fd + +# Create VERSION.bat +set fd [open [file join $rootDir misc nsis VERSION.bat] "w"] +puts $fd "set BrlcadVersion=$version" +close $fd Property changes on: brlcad/trunk/misc/nsis/updateVersion.tcl ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:eol-style + native Modified: brlcad/trunk/misc/win32-msvc8/asc2g/asc2g.vcproj =================================================================== --- brlcad/trunk/misc/win32-msvc8/asc2g/asc2g.vcproj 2008-08-06 14:13:52 UTC (rev 32286) +++ brlcad/trunk/misc/win32-msvc8/asc2g/asc2g.vcproj 2008-08-06 14:14:44 UTC (rev 32287) @@ -112,7 +112,7 @@ /> <Tool Name="VCPostBuildEventTool" - CommandLine="set BrlcadVersion=7.13.0
copy "$(TargetPath)" ..\..\..\brlcadInstall\bin
copy ..\..\..\db\terra.dsp ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db
echo "Creating ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\axis.g"
..\..\..\brlcadInstall\bin\asc2g ..\..\..\db\axis.asc "..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\axis.g"
echo "Creating ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\bldg391.g"
..\..\..\brlcadInstall\bin\asc2g ..\..\..\db\bldg391.asc ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\bldg391.g
echo "Creating ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\boolean-ops.g"
..\..\..\brlcadInstall\bin\asc2g ..\..\..\db\boolean-ops.asc ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\boolean-ops.g
echo "Creating ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\castle.g"
..\..\..\brlcadInstall\bin\asc2g ..\..\..\db\castle.asc ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\castle.g
echo "Creating ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\cornell.g"
..\..\..\brlcadInstall\bin\asc2g ..\..\..\db\cornell.asc ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\cornell.g
echo "Creating ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\cray.g"
..\..\..\brlcadInstall\bin\asc2g ..\..\..\db\cray.asc ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\cray.g
echo "Creating ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\crod.g"
..\..\..\brlcadInstall\bin\asc2g ..\..\..\db\crod.asc ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\crod.g
echo "Creating ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\cube.g"
..\..\..\brlcadInstall\bin\asc2g ..\..\..\db\cube.asc ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\cube.g
echo "Creating ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\demo.g"
..\..\..\brlcadInstall\bin\asc2g ..\..\..\db\demo.asc ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\demo.g
echo "Creating ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\galileo.g"
..\..\..\brlcadInstall\bin\asc2g ..\..\..\db\galileo.asc ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\galileo.g
echo "Creating ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\havog.g"
..\..\..\brlcadInstall\bin\asc2g ..\..\..\db\havoc.asc ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\havog.g
echo "Creating ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\kman.g"
..\..\..\brlcadInstall\bin\asc2g ..\..\..\db\kman.asc ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\kman.g
echo "Creating ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\ktank.g"
..\..\..\brlcadInstall\bin\asc2g ..\..\..\db\ktank.asc ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\ktank.g
echo "Creating ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\lgt-test.g"
..\..\..\brlcadInstall\bin\asc2g ..\..\..\db\lgt-test.asc ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\lgt-test.g
echo "Creating ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\m35.g"
..\..\..\brlcadInstall\bin\asc2g ..\..\..\db\m35.asc ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\m35.g
echo "Creating ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\moss.g
..\..\..\brlcadInstall\bin\asc2g ..\..\..\db\moss.asc ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\moss.g
echo "Creating ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\operators.g"
..\..\..\brlcadInstall\bin\asc2g ..\..\..\db\operators.asc ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\operators.g
echo "Creating ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\pic.g"
..\..\..\brlcadInstall\bin\asc2g ..\..\..\db\pic.asc ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\pic.g
echo "Creating ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\prim.g"
..\..\..\brlcadInstall\bin\asc2g ..\..\..\db\prim.asc ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\prim.g
echo "Creating ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\sphflake.g"
..\..\..\brlcadInstall\bin\asc2g ..\..\..\db\sphflake.asc ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\sphflake.g
echo "Creating ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\star.g"
..\..\..\brlcadInstall\bin\asc2g ..\..\..\db\star.asc ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\star.g
echo "Creating ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\tank_car.g"
..\..\..\brlcadInstall\bin\asc2g ..\..\..\db\tank_car.asc ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\tank_car.g
echo "Creating ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\terra.g"
..\..\..\brlcadInstall\bin\asc2g ..\..\..\db\terra.asc ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\terra.g
echo "Creating ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\toyjeep.g"
..\..\..\brlcadInstall\bin\asc2g ..\..\..\db\toyjeep.asc ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\toyjeep.g
echo "Creating ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\truck.g"
..\..\..\brlcadInstall\bin\asc2g ..\..\..\db\truck.asc ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\truck.g
echo "Creating ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\wave.g"
..\..\..\brlcadInstall\bin\asc2g ..\..\..\db\wave.asc ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\wave.g
echo "Creating ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\woodsman.g"
..\..\..\brlcadInstall\bin\asc2g ..\..\..\db\woodsman.asc ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\woodsman.g
echo "Creating ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\world.g"
..\..\..\brlcadInstall\bin\asc2g ..\..\..\db\world.asc ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\world.g
echo "Creating ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\xmp.g"
..\..\..\brlcadInstall\bin\asc2g ..\..\..\db\xmp.asc ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\xmp.g
echo "Creating installer "
"C:\Program Files\NSIS\makensis.exe" ..\..\..\misc\nsis\brlcad.nsi
" + CommandLine="echo "Update Version"
..\..\..\brlcadInstall\bin\tclsh ..\..\..\misc\nsis\updateVersion.tcl
call ..\..\..\misc\nsis\VERSION.bat
copy "$(TargetPath)" ..\..\..\brlcadInstall\bin
copy ..\..\..\db\terra.dsp ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db
echo "Creating ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\axis.g"
..\..\..\brlcadInstall\bin\asc2g ..\..\..\db\axis.asc "..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\axis.g"
echo "Creating ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\bldg391.g"
..\..\..\brlcadInstall\bin\asc2g ..\..\..\db\bldg391.asc ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\bldg391.g
echo "Creating ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\boolean-ops.g"
..\..\..\brlcadInstall\bin\asc2g ..\..\..\db\boolean-ops.asc ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\boolean-ops.g
echo "Creating ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\castle.g"
..\..\..\brlcadInstall\bin\asc2g ..\..\..\db\castle.asc ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\castle.g
echo "Creating ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\cornell.g"
..\..\..\brlcadInstall\bin\asc2g ..\..\..\db\cornell.asc ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\cornell.g
echo "Creating ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\cray.g"
..\..\..\brlcadInstall\bin\asc2g ..\..\..\db\cray.asc ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\cray.g
echo "Creating ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\crod.g"
..\..\..\brlcadInstall\bin\asc2g ..\..\..\db\crod.asc ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\crod.g
echo "Creating ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\cube.g"
..\..\..\brlcadInstall\bin\asc2g ..\..\..\db\cube.asc ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\cube.g
echo "Creating ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\demo.g"
..\..\..\brlcadInstall\bin\asc2g ..\..\..\db\demo.asc ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\demo.g
echo "Creating ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\galileo.g"
..\..\..\brlcadInstall\bin\asc2g ..\..\..\db\galileo.asc ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\galileo.g
echo "Creating ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\havog.g"
..\..\..\brlcadInstall\bin\asc2g ..\..\..\db\havoc.asc ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\havog.g
echo "Creating ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\kman.g"
..\..\..\brlcadInstall\bin\asc2g ..\..\..\db\kman.asc ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\kman.g
echo "Creating ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\ktank.g"
..\..\..\brlcadInstall\bin\asc2g ..\..\..\db\ktank.asc ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\ktank.g
echo "Creating ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\lgt-test.g"
..\..\..\brlcadInstall\bin\asc2g ..\..\..\db\lgt-test.asc ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\lgt-test.g
echo "Creating ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\m35.g"
..\..\..\brlcadInstall\bin\asc2g ..\..\..\db\m35.asc ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\m35.g
echo "Creating ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\moss.g
..\..\..\brlcadInstall\bin\asc2g ..\..\..\db\moss.asc ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\moss.g
echo "Creating ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\operators.g"
..\..\..\brlcadInstall\bin\asc2g ..\..\..\db\operators.asc ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\operators.g
echo "Creating ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\pic.g"
..\..\..\brlcadInstall\bin\asc2g ..\..\..\db\pic.asc ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\pic.g
echo "Creating ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\prim.g"
..\..\..\brlcadInstall\bin\asc2g ..\..\..\db\prim.asc ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\prim.g
echo "Creating ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\sphflake.g"
..\..\..\brlcadInstall\bin\asc2g ..\..\..\db\sphflake.asc ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\sphflake.g
echo "Creating ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\star.g"
..\..\..\brlcadInstall\bin\asc2g ..\..\..\db\star.asc ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\star.g
echo "Creating ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\tank_car.g"
..\..\..\brlcadInstall\bin\asc2g ..\..\..\db\tank_car.asc ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\tank_car.g
echo "Creating ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\terra.g"
..\..\..\brlcadInstall\bin\asc2g ..\..\..\db\terra.asc ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\terra.g
echo "Creating ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\toyjeep.g"
..\..\..\brlcadInstall\bin\asc2g ..\..\..\db\toyjeep.asc ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\toyjeep.g
echo "Creating ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\truck.g"
..\..\..\brlcadInstall\bin\asc2g ..\..\..\db\truck.asc ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\truck.g
echo "Creating ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\wave.g"
..\..\..\brlcadInstall\bin\asc2g ..\..\..\db\wave.asc ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\wave.g
echo "Creating ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\woodsman.g"
..\..\..\brlcadInstall\bin\asc2g ..\..\..\db\woodsman.asc ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\woodsman.g
echo "Creating ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\world.g"
..\..\..\brlcadInstall\bin\asc2g ..\..\..\db\world.asc ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\world.g
echo "Creating ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\xmp.g"
..\..\..\brlcadInstall\bin\asc2g ..\..\..\db\xmp.asc ..\..\..\brlcadInstall\share\brlcad\%BrlcadVersion%\db\xmp.g
echo "Creating installer "
"C:\Program Files\NSIS\makensis.exe" ..\..\..\misc\nsis\brlcad.nsi
" /> </Configuration> <Configuration This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bo...@us...> - 2008-08-06 20:06:40
|
Revision: 32311 http://brlcad.svn.sourceforge.net/brlcad/?rev=32311&view=rev Author: bob1961 Date: 2008-08-06 20:06:40 +0000 (Wed, 06 Aug 2008) Log Message: ----------- Added edcodes, rcodes, wcodes and which_shader to libged. Modified Paths: -------------- brlcad/trunk/include/ged.h brlcad/trunk/misc/win32-msvc8/libged/libged.vcproj brlcad/trunk/src/libged/Makefile.am brlcad/trunk/src/libtclcad/ged_obj.c Added Paths: ----------- brlcad/trunk/src/libged/edcodes.c brlcad/trunk/src/libged/rcodes.c brlcad/trunk/src/libged/wcodes.c brlcad/trunk/src/libged/which_shader.c Modified: brlcad/trunk/include/ged.h =================================================================== --- brlcad/trunk/include/ged.h 2008-08-06 19:43:45 UTC (rev 32310) +++ brlcad/trunk/include/ged.h 2008-08-06 20:06:40 UTC (rev 32311) @@ -1149,6 +1149,14 @@ GED_EXPORT BU_EXTERN(int ged_E, (struct ged *gedp, int argc, const char *argv[])); /** + * Edit region ident codes. + * + * Usage: + * edcodes object(s) + */ +GED_EXPORT BU_EXTERN(int ged_edcodes, (struct ged *gedp, int argc, const char *argv[])); + +/** * Edit combination. * * Usage: @@ -1719,6 +1727,14 @@ (struct ged_drawable *gdp)); /** + * Read region ident codes from filename. + * + * Usage: + * rcodes filename + */ +GED_EXPORT BU_EXTERN(int ged_rcodes, (struct ged *gedp, int argc, const char *argv[])); + +/** * Change the default region ident codes: item air los mat * * Usage: @@ -2048,9 +2064,17 @@ GED_EXPORT BU_EXTERN(int ged_viewdir, (struct ged *gedp, int argc, const char *argv[])); /** - * Return the specified region's id + * Write region ident codes to filename. * * Usage: + * wcodes filename object(s) + */ +GED_EXPORT BU_EXTERN(int ged_wcodes, (struct ged *gedp, int argc, const char *argv[])); + +/** + * Return the specified region's id. + * + * Usage: * whatid region */ GED_EXPORT BU_EXTERN(int ged_whatid, (struct ged *gedp, int argc, const char *argv[])); @@ -2058,13 +2082,13 @@ /** * The ged_which() function serves both whichair and whichid. * - * Find the regions with the specified air codes + * Find the regions with the specified air codes. * * Usage: * whichair codes(s) * * - * Find the regions with the specified region ids + * Find the regions with the specified region ids. * * Usage: * whichid [-s] id(s) @@ -2073,6 +2097,14 @@ GED_EXPORT BU_EXTERN(int ged_which, (struct ged *gedp, int argc, const char *argv[])); /** + * Return all combinations with the specified shaders. + * + * Usage: + * which_shader [-s] args + */ +GED_EXPORT BU_EXTERN(int ged_which_shader, (struct ged *gedp, int argc, const char *argv[])); + +/** * List the objects currently prepped for drawing * * Usage: Modified: brlcad/trunk/misc/win32-msvc8/libged/libged.vcproj =================================================================== --- brlcad/trunk/misc/win32-msvc8/libged/libged.vcproj 2008-08-06 19:43:45 UTC (rev 32310) +++ brlcad/trunk/misc/win32-msvc8/libged/libged.vcproj 2008-08-06 20:06:40 UTC (rev 32311) @@ -238,6 +238,10 @@ > </File> <File + RelativePath="..\..\..\src\libged\edcodes.c" + > + </File> + <File RelativePath="..\..\..\src\libged\edcomb.c" > </File> @@ -534,6 +538,10 @@ > </File> <File + RelativePath="..\..\..\src\libged\rcodes.c" + > + </File> + <File RelativePath="..\..\..\src\libged\regdef.c" > </File> @@ -710,6 +718,10 @@ > </File> <File + RelativePath="..\..\..\src\libged\wcodes.c" + > + </File> + <File RelativePath="..\..\..\src\libged\wdb_bigE.c" > </File> @@ -750,6 +762,10 @@ > </File> <File + RelativePath="..\..\..\src\libged\which_shader.c" + > + </File> + <File RelativePath="..\..\..\src\libged\who.c" > </File> Modified: brlcad/trunk/src/libged/Makefile.am =================================================================== --- brlcad/trunk/src/libged/Makefile.am 2008-08-06 19:43:45 UTC (rev 32310) +++ brlcad/trunk/src/libged/Makefile.am 2008-08-06 20:06:40 UTC (rev 32311) @@ -31,6 +31,7 @@ draw.c \ dump.c \ dup.c \ + edcodes.c \ edcomb.c \ editit.c \ edmater.c \ @@ -105,6 +106,7 @@ put.c \ qray.c \ quat.c \ + rcodes.c \ regdef.c \ region.c \ remove.c \ @@ -149,6 +151,7 @@ viewdir.c \ vrot.c \ vutil.c \ + wcodes.c \ wdb_bigE.c \ wdb_comb_std.c \ wdb_importFg4Section.c \ @@ -159,6 +162,7 @@ wdb_vdraw.c \ whatid.c \ which.c \ + which_shader.c \ who.c \ wmater.c \ xpush.c \ Added: brlcad/trunk/src/libged/edcodes.c =================================================================== --- brlcad/trunk/src/libged/edcodes.c (rev 0) +++ brlcad/trunk/src/libged/edcodes.c 2008-08-06 20:06:40 UTC (rev 32311) @@ -0,0 +1,207 @@ +/* E D C O D E S . C + * BRL-CAD + * + * Copyright (c) 2008 United States Government as represented by + * the U.S. Army Research Laboratory. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * version 2.1 as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this file; see the file named COPYING for more + * information. + */ +/** @file edcodes.c + * + * The edcodes command. + * + */ + +#include "common.h" + +#include <stdlib.h> +#include <ctype.h> +#include <string.h> + +#include "ged_private.h" + +#define ABORTED -99 + +static int ged_id_compare(const void *p1, const void *p2); +static int ged_reg_compare(const void *p1, const void *p2); + +static int regflag; +static int lastmemb; +static char tmpfil[MAXPATHLEN] = {0}; + +int +ged_edcodes(struct ged *gedp, int argc, const char *argv[]) +{ + int i; + int status; + int sort_by_ident=0; + int sort_by_region=0; + int c; + char **av; + FILE *fp = NULL; + + static const char *usage = "object(s)"; + + GED_CHECK_DATABASE_OPEN(gedp, BRLCAD_ERROR); + GED_CHECK_READ_ONLY(gedp, BRLCAD_ERROR); + + /* initialize result */ + bu_vls_trunc(&gedp->ged_result_str, 0); + gedp->ged_result = GED_RESULT_NULL; + gedp->ged_result_flags = 0; + + /* must be wanting help */ + if (argc == 1) { + gedp->ged_result_flags |= GED_RESULT_FLAGS_HELP_BIT; + bu_vls_printf(&gedp->ged_result_str, "Usage: %s %s", argv[0], usage); + return BRLCAD_OK; + } + + bu_optind = 1; + while ((c = bu_getopt(argc, (char * const *)argv, "ir")) != EOF) { + switch( c ) { + case 'i': + sort_by_ident = 1; + break; + case 'r': + sort_by_region = 1; + break; + } + } + + if ((sort_by_ident + sort_by_region) > 1) { + bu_vls_printf(&gedp->ged_result_str, "%s: can only sort by region or ident, not both\n", argv[0]); + return BRLCAD_ERROR; + } + + argc -= (bu_optind - 1); + argv += (bu_optind - 1); + + fp = bu_temp_file(tmpfil, MAXPATHLEN); + if (!fp) + return BRLCAD_ERROR; + + av = (char **)bu_malloc(sizeof(char *)*(argc + 2), "ged_edcodes: av"); + av[0] = "wcodes"; + av[1] = tmpfil; + for (i = 2; i < argc + 1; ++i) + av[i] = (char *)argv[i-1]; + + av[i] = NULL; + + if (ged_wcodes(gedp, argc + 1, (const char **)av) == BRLCAD_ERROR) { + (void)unlink(tmpfil); + bu_free((genptr_t)av, "ged_edcodes: av"); + return BRLCAD_ERROR; + } + + (void)fclose(fp); + + if (regflag == ABORTED) { + bu_vls_printf(&gedp->ged_result_str, "%s: nesting is too deep\n", argv[0]); + (void)unlink(tmpfil); + return BRLCAD_ERROR; + } + + if (sort_by_ident || sort_by_region) { + char **line_array; + char aline[256]; + FILE *f_srt; + int line_count=0; + int j; + + if ((f_srt=fopen(tmpfil, "r+" )) == NULL) { + bu_vls_printf(&gedp->ged_result_str, "%s: Failed to open temp file for sorting\n", argv[0]); + (void)unlink(tmpfil); + return BRLCAD_ERROR; + } + + /* count lines */ + while (bu_fgets(aline, 256, f_srt )) { + line_count++; + } + + /* build array of lines */ + line_array = (char **)bu_calloc(line_count, sizeof(char *), "edcodes line array"); + + /* read lines and save into the array */ + rewind(f_srt); + line_count = 0; + while (bu_fgets(aline, 256, f_srt)) { + line_array[line_count] = bu_strdup(aline); + line_count++; + } + + /* sort the array of lines */ + if (sort_by_ident) { + qsort(line_array, line_count, sizeof( char *), ged_id_compare); + } else { + qsort(line_array, line_count, sizeof( char *), ged_reg_compare); + } + + /* rewrite the temp file using the sorted lines */ + rewind(f_srt); + for (j=0; j<line_count; j++) { + fprintf(f_srt, "%s", line_array[j]); + bu_free(line_array[j], "ged_edcodes line array element"); + } + bu_free((char *)line_array, "ged_edcodes line array"); + fclose(f_srt); + } + + if (ged_editit(tmpfil)) { + regflag = lastmemb = 0; + av[0] = "rcodes"; + av[2] = NULL; + status = ged_rcodes(gedp, 2, (const char **)av); + } else + status = BRLCAD_ERROR; + + unlink(tmpfil); + bu_free((genptr_t)av, "ged_edcodes: av"); + return status; +} + +static int +ged_id_compare(const void *p1, const void *p2) +{ + int id1, id2; + + id1 = atoi(*(char **)p1); + id2 = atoi(*(char **)p2); + + return (id1 - id2); +} + +static int +ged_reg_compare(const void *p1, const void *p2) +{ + char *reg1, *reg2; + + reg1 = strchr(*(char **)p1, '/'); + reg2 = strchr(*(char **)p2, '/'); + + return strcmp(reg1, reg2); +} + + +/* + * Local Variables: + * tab-width: 8 + * mode: C + * indent-tabs-mode: t + * c-file-style: "stroustrup" + * End: + * ex: shiftwidth=4 tabstop=8 + */ Property changes on: brlcad/trunk/src/libged/edcodes.c ___________________________________________________________________ Added: svn:executable + * Added: svn:mime-type + text/plain Added: svn:eol-style + native Added: brlcad/trunk/src/libged/rcodes.c =================================================================== --- brlcad/trunk/src/libged/rcodes.c (rev 0) +++ brlcad/trunk/src/libged/rcodes.c 2008-08-06 20:06:40 UTC (rev 32311) @@ -0,0 +1,150 @@ +/* R C O D E S . C + * BRL-CAD + * + * Copyright (c) 2008 United States Government as represented by + * the U.S. Army Research Laboratory. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * version 2.1 as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this file; see the file named COPYING for more + * information. + */ +/** @file rcodes.c + * + * The rcodes command. + * + */ + +#include "common.h" + +#include <stdlib.h> +#include <ctype.h> +#include <string.h> + +#include "ged_private.h" + +#define LINELEN 256 + +int +ged_rcodes(struct ged *gedp, int argc, const char *argv[]) +{ + int item, air, mat, los; + char name[256]; + char line[LINELEN]; + char *cp; + FILE *fp; + register struct directory *dp; + struct rt_db_internal intern; + struct rt_comb_internal *comb; + static const char *usage = "filename"; + + GED_CHECK_DATABASE_OPEN(gedp, BRLCAD_ERROR); + GED_CHECK_READ_ONLY(gedp, BRLCAD_ERROR); + + /* initialize result */ + bu_vls_trunc(&gedp->ged_result_str, 0); + gedp->ged_result = GED_RESULT_NULL; + gedp->ged_result_flags = 0; + + /* must be wanting help */ + if (argc == 1) { + gedp->ged_result_flags |= GED_RESULT_FLAGS_HELP_BIT; + bu_vls_printf(&gedp->ged_result_str, "Usage: %s %s", argv[0], usage); + return BRLCAD_OK; + } + + if (argc != 2) { + bu_vls_printf(&gedp->ged_result_str, "Usage: %s %s", argv[0], usage); + return BRLCAD_ERROR; + } + + if ((fp = fopen(argv[1], "r")) == NULL) { + bu_vls_printf(&gedp->ged_result_str, "%s: Failed to read file - %s", argv[1]); + return BRLCAD_ERROR; + } + + while (bu_fgets(line, LINELEN, fp) != NULL) { + int changed; + + if (sscanf(line, "%d%d%d%d%256s", &item, &air, &mat, &los, name) != 5) + continue; /* not useful */ + + /* skip over the path */ + if ((cp = strrchr(name, (int)'/')) == NULL) + cp = name; + else + ++cp; + + if (*cp == '\0') + continue; + + if ((dp = db_lookup( gedp->ged_wdbp->dbip, cp, LOOKUP_NOISY )) == DIR_NULL) { + bu_vls_printf(&gedp->ged_result_str, "%s: Warning - %s not found in database.\n", argv[1], cp); + continue; + } + + if (!(dp->d_flags & DIR_REGION)) { + bu_vls_printf(&gedp->ged_result_str, "%s: Warning - %s not a region\n", argv[1], cp); + continue; + } + + if (rt_db_get_internal(&intern, dp, gedp->ged_wdbp->dbip, (matp_t)NULL, &rt_uniresource) != ID_COMBINATION) { + bu_vls_printf(&gedp->ged_result_str, "%s: Warning - %s not a region\n", argv[1], cp); + continue; + } + + comb = (struct rt_comb_internal *)intern.idb_ptr; + + /* make the changes */ + changed = 0; + if (comb->region_id != item) { + comb->region_id = item; + changed = 1; + } + if (comb->aircode != air) { + comb->aircode = air; + changed = 1; + } + if (comb->GIFTmater != mat) { + comb->GIFTmater = mat; + changed = 1; + } + if (comb->los != los) { + comb->los = los; + changed = 1; + } + + if (changed) { + /* write out all changes */ + if (rt_db_put_internal(dp, gedp->ged_wdbp->dbip, &intern, &rt_uniresource)) { + bu_vls_printf(&gedp->ged_result_str, "Database write error, aborting.\n"); + bu_vls_printf(&gedp->ged_result_str, + "The in-memory table of contents may not match the status of the on-disk\ndatabase. The on-disk database should still be intact. For safety,\nyou should exit now, and resolve the I/O problem, before continuing.\n"); + + rt_db_free_internal(&intern, &rt_uniresource); + return BRLCAD_ERROR; + } + } + + } + + return BRLCAD_OK; +} + +/* + * Local Variables: + * tab-width: 8 + * mode: C + * indent-tabs-mode: t + * c-file-style: "stroustrup" + * End: + * ex: shiftwidth=4 tabstop=8 + */ Property changes on: brlcad/trunk/src/libged/rcodes.c ___________________________________________________________________ Added: svn:executable + * Added: svn:mime-type + text/plain Added: svn:eol-style + native Added: brlcad/trunk/src/libged/wcodes.c =================================================================== --- brlcad/trunk/src/libged/wcodes.c (rev 0) +++ brlcad/trunk/src/libged/wcodes.c 2008-08-06 20:06:40 UTC (rev 32311) @@ -0,0 +1,181 @@ +/* W C O D E S . C + * BRL-CAD + * + * Copyright (c) 2008 United States Government as represented by + * the U.S. Army Research Laboratory. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * version 2.1 as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this file; see the file named COPYING for more + * information. + */ +/** @file wcodes.c + * + * The wcodes command. + * + */ + +#include "common.h" + +#include <stdlib.h> +#include <ctype.h> +#include <string.h> + +#include "ged_private.h" + +#define MAX_LEVELS 12 +#define ABORTED -99 +#define OLDSOLID 0 +#define NEWSOLID 1 +#define SOL_TABLE 1 +#define REG_TABLE 2 +#define ID_TABLE 3 + +static int regflag; +static int lastmemb; +static struct directory *path[MAX_LEVELS]; + +static void Do_printnode(struct db_i *dbip, struct rt_comb_internal *comb, union tree *comb_leaf, genptr_t user_ptr1, genptr_t user_ptr2, genptr_t user_ptr3); +static int printcodes(struct ged *gedp, FILE *fp, struct directory *dp, int pathpos); + +int +ged_wcodes(struct ged *gedp, int argc, const char *argv[]) +{ + register int i; + int status; + FILE *fp; + register struct directory *dp; + static const char *usage = "filename object(s)"; + + GED_CHECK_DATABASE_OPEN(gedp, BRLCAD_ERROR); + + /* initialize result */ + bu_vls_trunc(&gedp->ged_result_str, 0); + gedp->ged_result = GED_RESULT_NULL; + gedp->ged_result_flags = 0; + + /* must be wanting help */ + if (argc == 1) { + gedp->ged_result_flags |= GED_RESULT_FLAGS_HELP_BIT; + bu_vls_printf(&gedp->ged_result_str, "Usage: %s %s", argv[0], usage); + return BRLCAD_OK; + } + + if (argc == 2) { + bu_vls_printf(&gedp->ged_result_str, "Usage: %s %s", argv[0], usage); + return BRLCAD_ERROR; + } + + if ((fp = fopen(argv[1], "w")) == NULL) { + bu_vls_printf(&gedp->ged_result_str, "%s: Failed to open file - %s", + argv[0], argv[1]); + return BRLCAD_ERROR; + } + + regflag = lastmemb = 0; + for (i = 2; i < argc; ++i) { + if ( (dp = db_lookup(gedp->ged_wdbp->dbip, argv[i], LOOKUP_NOISY)) != DIR_NULL) { + status = printcodes(gedp, fp, dp, 0); + + if (status == BRLCAD_ERROR) { + (void)fclose(fp); + return BRLCAD_ERROR; + } + } + } + + (void)fclose(fp); + return BRLCAD_OK; +} + +static void +Do_printnode(struct db_i *dbip, struct rt_comb_internal *comb, union tree *comb_leaf, genptr_t user_ptr1, genptr_t user_ptr2, genptr_t user_ptr3) +{ + FILE *fp; + int *pathpos; + struct directory *nextdp; + struct ged *gedp; + + RT_CK_DBI(dbip); + RT_CK_TREE(comb_leaf); + + if ((nextdp=db_lookup(dbip, comb_leaf->tr_l.tl_name, LOOKUP_NOISY)) == DIR_NULL) + return; + + fp = (FILE *)user_ptr1; + pathpos = (int *)user_ptr2; + gedp = (struct ged *)user_ptr3; + + /* recurse on combinations */ + if (nextdp->d_flags & DIR_COMB) + (void)printcodes(gedp, fp, nextdp, (*pathpos)+1); +} + +static int +printcodes(struct ged *gedp, FILE *fp, struct directory *dp, int pathpos) +{ + int i; + struct rt_db_internal intern; + struct rt_comb_internal *comb; + int id; + + if (pathpos >= MAX_LEVELS) { + regflag = ABORTED; + return BRLCAD_ERROR; + } + + if (!(dp->d_flags & DIR_COMB)) + return BRLCAD_OK; + + if ((id=rt_db_get_internal( &intern, dp, gedp->ged_wdbp->dbip, (matp_t)NULL, &rt_uniresource)) < 0) { + bu_vls_printf(&gedp->ged_result_str, "printcodes: Cannot get records for %s\n", dp->d_namep); + return BRLCAD_ERROR; + } + + if (id != ID_COMBINATION) + return BRLCAD_OK; + + comb = (struct rt_comb_internal *)intern.idb_ptr; + RT_CK_COMB(comb); + + if (comb->region_flag) { + fprintf(fp, "%-6d %-3d %-3d %-4d ", + comb->region_id, + comb->aircode, + comb->GIFTmater, + comb->los); + for (i=0; i < pathpos; i++) + fprintf(fp, "/%s", path[i]->d_namep); + fprintf(fp, "/%s\n", dp->d_namep); + rt_comb_ifree(&intern, &rt_uniresource); + return BRLCAD_OK; + } + + if (comb->tree) { + path[pathpos] = dp; + db_tree_funcleaf(gedp->ged_wdbp->dbip, comb, comb->tree, Do_printnode, + (genptr_t)fp, (genptr_t)&pathpos, (genptr_t)gedp); + } + + rt_comb_ifree(&intern, &rt_uniresource); + return BRLCAD_OK; +} + + +/* + * Local Variables: + * tab-width: 8 + * mode: C + * indent-tabs-mode: t + * c-file-style: "stroustrup" + * End: + * ex: shiftwidth=4 tabstop=8 + */ Property changes on: brlcad/trunk/src/libged/wcodes.c ___________________________________________________________________ Added: svn:executable + * Added: svn:mime-type + text/plain Added: svn:eol-style + native Added: brlcad/trunk/src/libged/which_shader.c =================================================================== --- brlcad/trunk/src/libged/which_shader.c (rev 0) +++ brlcad/trunk/src/libged/which_shader.c 2008-08-06 20:06:40 UTC (rev 32311) @@ -0,0 +1,113 @@ +/* W H I C H _ S H A D E R . C + * BRL-CAD + * + * Copyright (c) 2008 United States Government as represented by + * the U.S. Army Research Laboratory. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * version 2.1 as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this file; see the file named COPYING for more + * information. + */ +/** @file which_shader.c + * + * The which_shader commands. + * + */ + +#include "common.h" + +#include <string.h> + +#include "bio.h" +#include "cmd.h" +#include "ged_private.h" + +int +ged_which_shader(struct ged *gedp, int argc, const char *argv[]) +{ + register int j; + register struct directory *dp; + struct rt_db_internal intern; + struct rt_comb_internal *comb; + int sflag; + int myArgc; + char **myArgv; + static const char *usage = "[-s] args"; + + GED_CHECK_DATABASE_OPEN(gedp, BRLCAD_ERROR); + + /* initialize result */ + bu_vls_trunc(&gedp->ged_result_str, 0); + gedp->ged_result = GED_RESULT_NULL; + gedp->ged_result_flags = 0; + + if (argc == 1) { + gedp->ged_result_flags |= GED_RESULT_FLAGS_HELP_BIT; + bu_vls_printf(&gedp->ged_result_str, "Usage: %s %s", argv[0], usage); + return BRLCAD_OK; + } + + myArgc = argc; + myArgv = (char **)argv; + sflag = 0; + + if (myArgc > 1 && strcmp(myArgv[1], "-s") == 0) { + --myArgc; + ++myArgv; + sflag = 1; + } + + if (myArgc < 2) { + bu_vls_printf(&gedp->ged_result_str, "Usage: %s %s", argv[0], usage); + return BRLCAD_ERROR; + } + + for ( j=1; j<myArgc; j++) { + + if (!sflag) + bu_vls_printf(&gedp->ged_result_str, "Combination[s] with shader %s:\n", myArgv[j]); + + /* Examine all COMB nodes */ + FOR_ALL_DIRECTORY_START(dp, gedp->ged_wdbp->dbip) { + if ( !(dp->d_flags & DIR_COMB) ) + continue; + + if ( rt_db_get_internal( &intern, dp, gedp->ged_wdbp->dbip, (fastf_t *)NULL, &rt_uniresource ) < 0 ) { + bu_vls_printf(&gedp->ged_result_str, "Database read error, aborting.\n"); + return BRLCAD_ERROR; + } + comb = (struct rt_comb_internal *)intern.idb_ptr; + + if ( !strstr( bu_vls_addr( &comb->shader ), myArgv[j] ) ) + continue; + + if (sflag) + bu_vls_printf(&gedp->ged_result_str, " %s", dp->d_namep); + else + bu_vls_printf(&gedp->ged_result_str, " %s\n", dp->d_namep); + rt_comb_ifree( &intern, &rt_uniresource ); + } FOR_ALL_DIRECTORY_END; + } + + return BRLCAD_OK; +} + + +/* + * Local Variables: + * tab-width: 8 + * mode: C + * indent-tabs-mode: t + * c-file-style: "stroustrup" + * End: + * ex: shiftwidth=4 tabstop=8 + */ Property changes on: brlcad/trunk/src/libged/which_shader.c ___________________________________________________________________ Added: svn:executable + * Added: svn:mime-type + text/plain Added: svn:eol-style + native Modified: brlcad/trunk/src/libtclcad/ged_obj.c =================================================================== --- brlcad/trunk/src/libtclcad/ged_obj.c 2008-08-06 19:43:45 UTC (rev 32310) +++ brlcad/trunk/src/libtclcad/ged_obj.c 2008-08-06 20:06:40 UTC (rev 32311) @@ -339,7 +339,7 @@ {"arot", "vname x y z angle", 6, go_view_func, ged_arot}, {"attr", (char *)0, MAXARGS, go_pass_through_func, ged_attr}, {"autoview", "vname", MAXARGS, go_autoview, GED_FUNC_PTR_NULL}, - {"binary", (char *)0, MAXARGS, go_pass_through_func, ged_binary}, + {"bo", (char *)0, MAXARGS, go_pass_through_func, ged_binary}, {"blast", (char *)0, MAXARGS, go_blast, GED_FUNC_PTR_NULL}, {"bot_decimate", (char *)0, MAXARGS, go_pass_through_func, ged_bot_decimate}, {"bot_face_sort", (char *)0, MAXARGS, go_pass_through_func, ged_bot_face_sort}, @@ -367,6 +367,7 @@ {"dup", (char *)0, MAXARGS, go_pass_through_func, ged_dup}, {"E", (char *)0, MAXARGS, go_autoview_func, ged_E}, {"e", (char *)0, MAXARGS, go_autoview_func, ged_draw}, + {"edcodes", (char *)0, MAXARGS, go_pass_through_func, ged_edcodes}, {"edcomb", (char *)0, MAXARGS, go_pass_through_func, ged_edcomb}, {"edmater", (char *)0, MAXARGS, go_pass_through_func, ged_edmater}, {"erase", (char *)0, MAXARGS, go_pass_through_and_refresh_func, ged_erase}, @@ -447,6 +448,7 @@ {"qray", (char *)0, MAXARGS, go_pass_through_func, ged_qray}, {"quat", "vname a b c d", 5, go_view_func, ged_quat}, {"r", (char *)0, MAXARGS, go_pass_through_func, ged_region}, + {"rcodes", (char *)0, MAXARGS, go_pass_through_func, ged_rcodes}, {"refresh", "vname", MAXARGS, go_refresh, GED_FUNC_PTR_NULL}, {"refresh_all", (char *)0, MAXARGS, go_refresh_all, GED_FUNC_PTR_NULL}, {"regdef", (char *)0, MAXARGS, go_pass_through_func, ged_regdef}, @@ -499,7 +501,9 @@ {"vmake", "vname pname ptype", MAXARGS, go_vmake, GED_FUNC_PTR_NULL}, {"vnirt", "vname [args]", GO_MAX_RT_ARGS, go_view_func, ged_vnirt}, {"vslew", "vname x y", MAXARGS, go_vslew, GED_FUNC_PTR_NULL}, + {"wcodes", (char *)0, MAXARGS, go_pass_through_func, ged_wcodes}, {"whatid", (char *)0, MAXARGS, go_pass_through_func, ged_whatid}, + {"which_shader", (char *)0, MAXARGS, go_pass_through_func, ged_which_shader}, {"whichair", (char *)0, MAXARGS, go_pass_through_func, ged_which}, {"whichid", (char *)0, MAXARGS, go_pass_through_func, ged_which}, {"who", (char *)0, MAXARGS, go_pass_through_func, ged_who}, This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |