Revision: 53051
          http://brlcad.svn.sourceforge.net/brlcad/?rev=53051&view=rev
Author:   bob1961
Date:     2012-10-15 22:16:19 +0000 (Mon, 15 Oct 2012)
Log Message:
-----------
Added rt_bot_get_edge_list() and ged_get_bot_edges(). Expose via libtclcad.

Modified Paths:
--------------
    brlcad/trunk/include/ged.h
    brlcad/trunk/include/raytrace.h
    brlcad/trunk/src/libged/edbot.c
    brlcad/trunk/src/libtclcad/tclcad_obj.c

Modified: brlcad/trunk/include/ged.h
===================================================================
--- brlcad/trunk/include/ged.h  2012-10-15 18:09:36 UTC (rev 53050)
+++ brlcad/trunk/include/ged.h  2012-10-15 22:16:19 UTC (rev 53051)
@@ -1124,6 +1124,11 @@
 GED_EXPORT extern int ged_get_autoview(struct ged *gedp, int argc, const char 
*argv[]);
 
 /**
+ * Get a bot's edges
+ */
+GED_EXPORT extern int ged_get_bot_edges(struct ged *gedp, int argc, const char 
*argv[]);
+
+/**
  * Get combination information
  */
 GED_EXPORT extern int ged_get_comb(struct ged *gedp, int argc, const char 
*argv[]);

Modified: brlcad/trunk/include/raytrace.h
===================================================================
--- brlcad/trunk/include/raytrace.h     2012-10-15 18:09:36 UTC (rev 53050)
+++ brlcad/trunk/include/raytrace.h     2012-10-15 22:16:19 UTC (rev 53051)
@@ -4362,9 +4362,11 @@
 RT_EXPORT extern struct model *nmg_clone_model(const struct model *original);
 
 /* bot.c */
-RT_EXPORT extern int rt_bot_edge_in_list(const int v1,
-                                        const int v2,
-                                        const int edge_list[],
+RT_EXPORT extern size_t rt_bot_get_edge_list(const struct rt_bot_internal *bot,
+                                            size_t **edge_list);
+RT_EXPORT extern int rt_bot_edge_in_list(const size_t v1,
+                                        const size_t v2,
+                                        const size_t edge_list[],
                                         const size_t edge_count0);
 RT_EXPORT extern int rt_bot_plot(struct bu_list                *vhead,
                                 struct rt_db_internal  *ip,

Modified: brlcad/trunk/src/libged/edbot.c
===================================================================
--- brlcad/trunk/src/libged/edbot.c     2012-10-15 18:09:36 UTC (rev 53050)
+++ brlcad/trunk/src/libged/edbot.c     2012-10-15 22:16:19 UTC (rev 53051)
@@ -425,6 +425,61 @@
 
 
 int
+ged_get_bot_edges(struct ged *gedp, int argc, const char *argv[])
+{
+    static const char *usage = "bot";
+    struct rt_db_internal intern;
+    struct rt_bot_internal *botip;
+    mat_t mat;
+    size_t edge_count;
+    size_t *edge_list;
+
+    GED_CHECK_DATABASE_OPEN(gedp, GED_ERROR);
+    GED_CHECK_ARGC_GT_0(gedp, argc, GED_ERROR);
+
+    /* initialize result */
+    bu_vls_trunc(gedp->ged_result_str, 0);
+
+    /* must be wanting help */
+    if (argc == 1) {
+       bu_vls_printf(gedp->ged_result_str, "Usage: %s %s", argv[0], usage);
+       return GED_HELP;
+    }
+
+    if (argc != 2) {
+       bu_vls_printf(gedp->ged_result_str, "Usage: %s %s", argv[0], usage);
+       return GED_ERROR;
+    }
+
+    if (wdb_import_from_path2(gedp->ged_result_str, &intern, argv[1], 
gedp->ged_wdbp, mat) == GED_ERROR) {
+       bu_vls_printf(gedp->ged_result_str, "%s: failed to find %s", argv[0], 
argv[1]);
+       return GED_ERROR;
+    }
+
+    if (intern.idb_major_type != DB5_MAJORTYPE_BRLCAD ||
+       intern.idb_minor_type != DB5_MINORTYPE_BRLCAD_BOT) {
+       bu_vls_printf(gedp->ged_result_str, "Object is not a BOT");
+       rt_db_free_internal(&intern);
+
+       return GED_ERROR;
+    }
+
+    botip = (struct rt_bot_internal *)intern.idb_ptr;
+    if ((edge_count = rt_bot_get_edge_list(botip, &edge_list)) > 0) {
+       size_t i;
+
+       for (i = 0; i < edge_count; i++)
+           bu_vls_printf(gedp->ged_result_str, "{%zu %zu} ", edge_list[i*2], 
edge_list[i*2+1]);
+
+       bu_free(edge_list, "bot edge list");
+    }
+
+    rt_db_free_internal(&intern);
+    return GED_OK;
+}
+
+
+int
 ged_move_botpt(struct ged *gedp, int argc, const char *argv[])
 {
     static const char *usage = "[-r] bot vertex_i pt";

Modified: brlcad/trunk/src/libtclcad/tclcad_obj.c
===================================================================
--- brlcad/trunk/src/libtclcad/tclcad_obj.c     2012-10-15 18:09:36 UTC (rev 
53050)
+++ brlcad/trunk/src/libtclcad/tclcad_obj.c     2012-10-15 22:16:19 UTC (rev 
53051)
@@ -978,6 +978,7 @@
     {"g",      (char *)0, TO_UNLIMITED, to_pass_through_func, ged_group},
     {"get",    (char *)0, TO_UNLIMITED, to_pass_through_func, ged_get},
     {"get_autoview",   (char *)0, TO_UNLIMITED, to_pass_through_func, 
ged_get_autoview},
+    {"get_bot_edges",  (char *)0, TO_UNLIMITED, to_pass_through_func, 
ged_get_bot_edges},
     {"get_comb",       (char *)0, TO_UNLIMITED, to_pass_through_func, 
ged_get_comb},
     {"get_eyemodel",   "vname", 2, to_view_func, ged_get_eyemodel},
     {"get_prev_mouse", "vname", TO_UNLIMITED, to_get_prev_mouse, 
GED_FUNC_PTR_NULL},

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.


------------------------------------------------------------------------------
Don't let slow site performance ruin your business. Deploy New Relic APM
Deploy New Relic app performance management and know exactly
what is happening inside your Ruby, Python, PHP, Java, and .NET app
Try New Relic at no cost today and get our sweet Data Nerd shirt too!
http://p.sf.net/sfu/newrelic-dev2dev
_______________________________________________
BRL-CAD Source Commits mailing list
brlcad-commits@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/brlcad-commits

Reply via email to