Revision: 76466
http://sourceforge.net/p/brlcad/code/76466
Author: starseeker
Date: 2020-07-24 14:39:33 +0000 (Fri, 24 Jul 2020)
Log Message:
-----------
Merge gedplugins branch into trunk.
Modified Paths:
--------------
brlcad/trunk/include/ged/commands.h
brlcad/trunk/include/ged/defines.h
brlcad/trunk/regress/CMakeLists.txt
brlcad/trunk/src/gtools/gsh.cpp
brlcad/trunk/src/libged/3ptarb/3ptarb.c
brlcad/trunk/src/libged/CMakeLists.txt
brlcad/trunk/src/libged/adc/adc.c
brlcad/trunk/src/libged/adjust/adjust.c
brlcad/trunk/src/libged/ae2dir/ae2dir.c
brlcad/trunk/src/libged/analyze/analyze.c
brlcad/trunk/src/libged/annotate/annotate.c
brlcad/trunk/src/libged/arb/arb.c
brlcad/trunk/src/libged/arced/arced.c
brlcad/trunk/src/libged/arot/arot.c
brlcad/trunk/src/libged/attr/attr.cpp
brlcad/trunk/src/libged/autoview/autoview.c
brlcad/trunk/src/libged/bb/bb.c
brlcad/trunk/src/libged/bev/bev.c
brlcad/trunk/src/libged/bigE/bigE.c
brlcad/trunk/src/libged/blast/blast.c
brlcad/trunk/src/libged/bo/bo.c
brlcad/trunk/src/libged/bot/bot.cpp
brlcad/trunk/src/libged/bot/check.cpp
brlcad/trunk/src/libged/bot/ged_bot.h
brlcad/trunk/src/libged/brep/brep.cpp
brlcad/trunk/src/libged/brep/csg.cpp
brlcad/trunk/src/libged/brep/ged_brep.h
brlcad/trunk/src/libged/brep/plot.cpp
brlcad/trunk/src/libged/cat/cat.c
brlcad/trunk/src/libged/cc/cc.c
brlcad/trunk/src/libged/check/check.c
brlcad/trunk/src/libged/check/check_private.h
brlcad/trunk/src/libged/clone/clone.c
brlcad/trunk/src/libged/coil/coil.c
brlcad/trunk/src/libged/color/color.c
brlcad/trunk/src/libged/comb/comb.c
brlcad/trunk/src/libged/comb_color/comb_color.c
brlcad/trunk/src/libged/comb_std/comb_std.c
brlcad/trunk/src/libged/combmem/combmem.c
brlcad/trunk/src/libged/concat/concat.cpp
brlcad/trunk/src/libged/constraint/constraint.c
brlcad/trunk/src/libged/copy/copy.c
brlcad/trunk/src/libged/copyeval/copyeval.c
brlcad/trunk/src/libged/copymat/copymat.c
brlcad/trunk/src/libged/cpi/cpi.c
brlcad/trunk/src/libged/dag/dag.cpp
brlcad/trunk/src/libged/dbip/dbip.c
brlcad/trunk/src/libged/debug/debug.cpp
brlcad/trunk/src/libged/debugbu/debugbu.c
brlcad/trunk/src/libged/debugdir/debugdir.c
brlcad/trunk/src/libged/debuglib/debuglib.c
brlcad/trunk/src/libged/debugnmg/debugnmg.c
brlcad/trunk/src/libged/decompose/decompose.c
brlcad/trunk/src/libged/delay/delay.c
brlcad/trunk/src/libged/dir2ae/dir2ae.c
brlcad/trunk/src/libged/draw/draw.c
brlcad/trunk/src/libged/dsp/dsp.c
brlcad/trunk/src/libged/dump/dump.c
brlcad/trunk/src/libged/dup/dup.c
brlcad/trunk/src/libged/eac/eac.c
brlcad/trunk/src/libged/echo/echo.c
brlcad/trunk/src/libged/edarb/edarb.c
brlcad/trunk/src/libged/edcodes/edcodes.c
brlcad/trunk/src/libged/edcomb/edcomb.c
brlcad/trunk/src/libged/edit/edit.c
brlcad/trunk/src/libged/editit/editit.c
brlcad/trunk/src/libged/edmater/edmater.c
brlcad/trunk/src/libged/env/env.c
brlcad/trunk/src/libged/erase/erase.c
brlcad/trunk/src/libged/exists/exists.c
brlcad/trunk/src/libged/expand/expand.c
brlcad/trunk/src/libged/eye_pos/eye_pos.c
brlcad/trunk/src/libged/facetize/facetize.cpp
brlcad/trunk/src/libged/fb2pix/fb2pix.c
brlcad/trunk/src/libged/fbclear/fbclear.c
brlcad/trunk/src/libged/find/find.c
brlcad/trunk/src/libged/form/form.c
brlcad/trunk/src/libged/fracture/fracture.c
brlcad/trunk/src/libged/gdiff/gdiff.c
brlcad/trunk/src/libged/ged.c
brlcad/trunk/src/libged/ged_private.h
brlcad/trunk/src/libged/get/get.c
brlcad/trunk/src/libged/get_autoview/get_autoview.c
brlcad/trunk/src/libged/get_comb/get_comb.c
brlcad/trunk/src/libged/get_eyemodel/get_eyemodel.c
brlcad/trunk/src/libged/get_type/get_type.c
brlcad/trunk/src/libged/glob/glob.c
brlcad/trunk/src/libged/gqa/gqa.c
brlcad/trunk/src/libged/grid/grid.c
brlcad/trunk/src/libged/grid2model_lu/grid2model_lu.c
brlcad/trunk/src/libged/grid2view_lu/grid2view_lu.c
brlcad/trunk/src/libged/group/group.c
brlcad/trunk/src/libged/heal/heal.c
brlcad/trunk/src/libged/help/help.cpp
brlcad/trunk/src/libged/hide/hide.c
brlcad/trunk/src/libged/how/how.c
brlcad/trunk/src/libged/human/human.c
brlcad/trunk/src/libged/illum/illum.c
brlcad/trunk/src/libged/importFg4Section/importFg4Section.c
brlcad/trunk/src/libged/inside/inside.c
brlcad/trunk/src/libged/instance/instance.c
brlcad/trunk/src/libged/isize/isize.c
brlcad/trunk/src/libged/item/item.c
brlcad/trunk/src/libged/joint/joint.c
brlcad/trunk/src/libged/joint/joint.h
brlcad/trunk/src/libged/joint2/joint2.c
brlcad/trunk/src/libged/keep/keep.c
brlcad/trunk/src/libged/keypoint/keypoint.c
brlcad/trunk/src/libged/kill/kill.c
brlcad/trunk/src/libged/killall/killall.c
brlcad/trunk/src/libged/killrefs/killrefs.c
brlcad/trunk/src/libged/killtree/killtree.c
brlcad/trunk/src/libged/label/label.c
brlcad/trunk/src/libged/lc/lc.c
brlcad/trunk/src/libged/libfuncs/libfuncs.c
brlcad/trunk/src/libged/lint/lint.cpp
brlcad/trunk/src/libged/list/list.c
brlcad/trunk/src/libged/lod/lod.c
brlcad/trunk/src/libged/log/log.c
brlcad/trunk/src/libged/lookat/lookat.c
brlcad/trunk/src/libged/ls/ls.c
brlcad/trunk/src/libged/lt/lt.c
brlcad/trunk/src/libged/m2v_point/m2v_point.c
brlcad/trunk/src/libged/make/make.c
brlcad/trunk/src/libged/make_name/make_name.c
brlcad/trunk/src/libged/match/match.c
brlcad/trunk/src/libged/mater/mater.cpp
brlcad/trunk/src/libged/mirror/mirror.c
brlcad/trunk/src/libged/model2grid_lu/model2grid_lu.c
brlcad/trunk/src/libged/model2view/model2view.c
brlcad/trunk/src/libged/model2view_lu/model2view_lu.c
brlcad/trunk/src/libged/move/move.c
brlcad/trunk/src/libged/move_all/move_all.c
brlcad/trunk/src/libged/move_arb_edge/move_arb_edge.c
brlcad/trunk/src/libged/move_arb_face/move_arb_face.c
brlcad/trunk/src/libged/mrot/mrot.c
brlcad/trunk/src/libged/nirt/nirt.c
brlcad/trunk/src/libged/nmg/nmg.c
brlcad/trunk/src/libged/ocenter/ocenter.c
brlcad/trunk/src/libged/open/open.c
brlcad/trunk/src/libged/orient/orient.c
brlcad/trunk/src/libged/orotate/orotate.c
brlcad/trunk/src/libged/oscale/oscale.c
brlcad/trunk/src/libged/otranslate/otranslate.c
brlcad/trunk/src/libged/overlay/overlay.c
brlcad/trunk/src/libged/pathlist/pathlist.c
brlcad/trunk/src/libged/pathsum/pathsum.c
brlcad/trunk/src/libged/perspective/perspective.c
brlcad/trunk/src/libged/pix2fb/pix2fb.c
brlcad/trunk/src/libged/plot/plot.c
brlcad/trunk/src/libged/pmat/pmat.c
brlcad/trunk/src/libged/pmodel2view/pmodel2view.c
brlcad/trunk/src/libged/png/png.c
brlcad/trunk/src/libged/png2fb/png2fb.c
brlcad/trunk/src/libged/pnts/pnts.cpp
brlcad/trunk/src/libged/pnts_util.h
brlcad/trunk/src/libged/prcolor/prcolor.c
brlcad/trunk/src/libged/prefix/prefix.c
brlcad/trunk/src/libged/process/process.c
brlcad/trunk/src/libged/protate/protate.c
brlcad/trunk/src/libged/ps/ps.c
brlcad/trunk/src/libged/pscale/pscale.c
brlcad/trunk/src/libged/pset/pset.c
brlcad/trunk/src/libged/ptranslate/ptranslate.c
brlcad/trunk/src/libged/pull/pull.c
brlcad/trunk/src/libged/push/push.c
brlcad/trunk/src/libged/put/put.c
brlcad/trunk/src/libged/put_comb/put_comb.c
brlcad/trunk/src/libged/putmat/putmat.c
brlcad/trunk/src/libged/qray/qray.c
brlcad/trunk/src/libged/qray.h
brlcad/trunk/src/libged/qvrot/qvrot.c
brlcad/trunk/src/libged/rcodes/rcodes.c
brlcad/trunk/src/libged/rect/rect.c
brlcad/trunk/src/libged/red/red.c
brlcad/trunk/src/libged/regdef/regdef.c
brlcad/trunk/src/libged/region/region.c
brlcad/trunk/src/libged/remove/remove.c
brlcad/trunk/src/libged/rfarb/rfarb.c
brlcad/trunk/src/libged/rmap/rmap.c
brlcad/trunk/src/libged/rmat/rmat.c
brlcad/trunk/src/libged/rmater/rmater.c
brlcad/trunk/src/libged/rot/rot.c
brlcad/trunk/src/libged/rot_point/rot_point.c
brlcad/trunk/src/libged/rrt/rrt.c
brlcad/trunk/src/libged/rt/rt.c
brlcad/trunk/src/libged/rtabort/rtabort.c
brlcad/trunk/src/libged/rtcheck/rtcheck.c
brlcad/trunk/src/libged/rtwizard/rtwizard.c
brlcad/trunk/src/libged/savekey/savekey.c
brlcad/trunk/src/libged/saveview/saveview.c
brlcad/trunk/src/libged/scale/scale.c
brlcad/trunk/src/libged/screengrab/screengrab.c
brlcad/trunk/src/libged/search/search.c
brlcad/trunk/src/libged/select/select.c
brlcad/trunk/src/libged/set_output_script/set_output_script.c
brlcad/trunk/src/libged/set_transparency/set_transparency.c
brlcad/trunk/src/libged/set_uplotOutputMode/set_uplotOutputMode.c
brlcad/trunk/src/libged/setview/setview.c
brlcad/trunk/src/libged/shaded_mode/shaded_mode.c
brlcad/trunk/src/libged/shader/shader.c
brlcad/trunk/src/libged/shells/shells.c
brlcad/trunk/src/libged/showmats/showmats.c
brlcad/trunk/src/libged/simulate/bullet/CMakeLists.txt
brlcad/trunk/src/libged/simulate/ged_command.cpp
brlcad/trunk/src/libged/simulate/utility.hpp
brlcad/trunk/src/libged/slew/slew.c
brlcad/trunk/src/libged/solid_report/solid_report.c
brlcad/trunk/src/libged/solids_on_ray/solids_on_ray.c
brlcad/trunk/src/libged/sphgroup/sphgroup.c
brlcad/trunk/src/libged/summary/summary.c
brlcad/trunk/src/libged/sync/sync.c
brlcad/trunk/src/libged/tables/tables.c
brlcad/trunk/src/libged/tests/CMakeLists.txt
brlcad/trunk/src/libged/tire/tire.c
brlcad/trunk/src/libged/title/title.c
brlcad/trunk/src/libged/tol/tol.c
brlcad/trunk/src/libged/tops/tops.c
brlcad/trunk/src/libged/tra/tra.c
brlcad/trunk/src/libged/track/track.c
brlcad/trunk/src/libged/tree/tree.c
brlcad/trunk/src/libged/typein/typein.c
brlcad/trunk/src/libged/unhide/unhide.c
brlcad/trunk/src/libged/units/units.c
brlcad/trunk/src/libged/v2m_point/v2m_point.c
brlcad/trunk/src/libged/vdraw/vdraw.c
brlcad/trunk/src/libged/version/version.c
brlcad/trunk/src/libged/view/aet.c
brlcad/trunk/src/libged/view/center.cpp
brlcad/trunk/src/libged/view/data_lines.c
brlcad/trunk/src/libged/view/eye.c
brlcad/trunk/src/libged/view/quat.c
brlcad/trunk/src/libged/view/size.c
brlcad/trunk/src/libged/view/snap.c
brlcad/trunk/src/libged/view/view.c
brlcad/trunk/src/libged/view/ypr.c
brlcad/trunk/src/libged/view2grid_lu/view2grid_lu.c
brlcad/trunk/src/libged/view2model/view2model.c
brlcad/trunk/src/libged/view2model_lu/view2model_lu.c
brlcad/trunk/src/libged/view2model_vec/view2model_vec.c
brlcad/trunk/src/libged/viewdir/viewdir.c
brlcad/trunk/src/libged/voxelize/voxelize.c
brlcad/trunk/src/libged/vrot/vrot.c
brlcad/trunk/src/libged/wcodes/wcodes.c
brlcad/trunk/src/libged/whatid/whatid.c
brlcad/trunk/src/libged/which/which.cpp
brlcad/trunk/src/libged/which_shader/which_shader.c
brlcad/trunk/src/libged/who/who.c
brlcad/trunk/src/libged/wmater/wmater.c
brlcad/trunk/src/libged/xpush/xpush.c
brlcad/trunk/src/libged/zap/zap.c
brlcad/trunk/src/libged/zoom/zoom.c
brlcad/trunk/src/libtclcad/CMakeLists.txt
Added Paths:
-----------
brlcad/trunk/src/libged/3ptarb/CMakeLists.txt
brlcad/trunk/src/libged/adc/CMakeLists.txt
brlcad/trunk/src/libged/adjust/CMakeLists.txt
brlcad/trunk/src/libged/ae2dir/CMakeLists.txt
brlcad/trunk/src/libged/analyze/CMakeLists.txt
brlcad/trunk/src/libged/annotate/CMakeLists.txt
brlcad/trunk/src/libged/arb/CMakeLists.txt
brlcad/trunk/src/libged/arb/rotate_arb_face.c
brlcad/trunk/src/libged/arced/CMakeLists.txt
brlcad/trunk/src/libged/arot/CMakeLists.txt
brlcad/trunk/src/libged/attr/CMakeLists.txt
brlcad/trunk/src/libged/autoview/CMakeLists.txt
brlcad/trunk/src/libged/bb/CMakeLists.txt
brlcad/trunk/src/libged/bev/CMakeLists.txt
brlcad/trunk/src/libged/bigE/CMakeLists.txt
brlcad/trunk/src/libged/blast/CMakeLists.txt
brlcad/trunk/src/libged/bo/CMakeLists.txt
brlcad/trunk/src/libged/bot/CMakeLists.txt
brlcad/trunk/src/libged/bot/bot_condense.c
brlcad/trunk/src/libged/bot/bot_decimate.c
brlcad/trunk/src/libged/bot/bot_dump.c
brlcad/trunk/src/libged/bot/bot_face_fuse.c
brlcad/trunk/src/libged/bot/bot_face_sort.c
brlcad/trunk/src/libged/bot/bot_flip.c
brlcad/trunk/src/libged/bot/bot_fuse.c
brlcad/trunk/src/libged/bot/bot_merge.c
brlcad/trunk/src/libged/bot/bot_smooth.c
brlcad/trunk/src/libged/bot/bot_split.c
brlcad/trunk/src/libged/bot/bot_sync.c
brlcad/trunk/src/libged/bot/bot_vertex_fuse.c
brlcad/trunk/src/libged/bot/edbot.c
brlcad/trunk/src/libged/brep/CMakeLists.txt
brlcad/trunk/src/libged/cat/CMakeLists.txt
brlcad/trunk/src/libged/cc/CMakeLists.txt
brlcad/trunk/src/libged/check/CMakeLists.txt
brlcad/trunk/src/libged/clone/CMakeLists.txt
brlcad/trunk/src/libged/coil/CMakeLists.txt
brlcad/trunk/src/libged/color/CMakeLists.txt
brlcad/trunk/src/libged/columns.c
brlcad/trunk/src/libged/comb/CMakeLists.txt
brlcad/trunk/src/libged/comb_color/CMakeLists.txt
brlcad/trunk/src/libged/comb_std/CMakeLists.txt
brlcad/trunk/src/libged/combmem/CMakeLists.txt
brlcad/trunk/src/libged/concat/CMakeLists.txt
brlcad/trunk/src/libged/constraint/CMakeLists.txt
brlcad/trunk/src/libged/copy/CMakeLists.txt
brlcad/trunk/src/libged/copyeval/CMakeLists.txt
brlcad/trunk/src/libged/copymat/CMakeLists.txt
brlcad/trunk/src/libged/cpi/CMakeLists.txt
brlcad/trunk/src/libged/dag/CMakeLists.txt
brlcad/trunk/src/libged/dbip/CMakeLists.txt
brlcad/trunk/src/libged/debug/CMakeLists.txt
brlcad/trunk/src/libged/debugbu/CMakeLists.txt
brlcad/trunk/src/libged/debugdir/CMakeLists.txt
brlcad/trunk/src/libged/debuglib/CMakeLists.txt
brlcad/trunk/src/libged/debugnmg/CMakeLists.txt
brlcad/trunk/src/libged/decompose/CMakeLists.txt
brlcad/trunk/src/libged/delay/CMakeLists.txt
brlcad/trunk/src/libged/dir2ae/CMakeLists.txt
brlcad/trunk/src/libged/display_list.c
brlcad/trunk/src/libged/draw/CMakeLists.txt
brlcad/trunk/src/libged/draw/loadview.c
brlcad/trunk/src/libged/draw/preview.c
brlcad/trunk/src/libged/draw_calc.cpp
brlcad/trunk/src/libged/dsp/CMakeLists.txt
brlcad/trunk/src/libged/dump/CMakeLists.txt
brlcad/trunk/src/libged/dup/CMakeLists.txt
brlcad/trunk/src/libged/eac/CMakeLists.txt
brlcad/trunk/src/libged/echo/CMakeLists.txt
brlcad/trunk/src/libged/edarb/CMakeLists.txt
brlcad/trunk/src/libged/edcodes/CMakeLists.txt
brlcad/trunk/src/libged/edcomb/CMakeLists.txt
brlcad/trunk/src/libged/edit/CMakeLists.txt
brlcad/trunk/src/libged/editit/CMakeLists.txt
brlcad/trunk/src/libged/edmater/CMakeLists.txt
brlcad/trunk/src/libged/env/CMakeLists.txt
brlcad/trunk/src/libged/erase/CMakeLists.txt
brlcad/trunk/src/libged/exec.cpp
brlcad/trunk/src/libged/exec_mapping.cpp
brlcad/trunk/src/libged/exists/CMakeLists.txt
brlcad/trunk/src/libged/expand/CMakeLists.txt
brlcad/trunk/src/libged/eye_pos/CMakeLists.txt
brlcad/trunk/src/libged/facedef.c
brlcad/trunk/src/libged/facetize/CMakeLists.txt
brlcad/trunk/src/libged/facetize/facetize_log.c
brlcad/trunk/src/libged/fb2pix/CMakeLists.txt
brlcad/trunk/src/libged/fbclear/CMakeLists.txt
brlcad/trunk/src/libged/find/CMakeLists.txt
brlcad/trunk/src/libged/form/CMakeLists.txt
brlcad/trunk/src/libged/fracture/CMakeLists.txt
brlcad/trunk/src/libged/gdiff/CMakeLists.txt
brlcad/trunk/src/libged/ged_init.cpp
brlcad/trunk/src/libged/ged_util.c
brlcad/trunk/src/libged/get/CMakeLists.txt
brlcad/trunk/src/libged/get_autoview/CMakeLists.txt
brlcad/trunk/src/libged/get_comb/CMakeLists.txt
brlcad/trunk/src/libged/get_eyemodel/CMakeLists.txt
brlcad/trunk/src/libged/get_obj_bounds.c
brlcad/trunk/src/libged/get_solid_kp.c
brlcad/trunk/src/libged/get_type/CMakeLists.txt
brlcad/trunk/src/libged/glob/CMakeLists.txt
brlcad/trunk/src/libged/gqa/CMakeLists.txt
brlcad/trunk/src/libged/grid/CMakeLists.txt
brlcad/trunk/src/libged/grid2model_lu/CMakeLists.txt
brlcad/trunk/src/libged/grid2view_lu/CMakeLists.txt
brlcad/trunk/src/libged/group/CMakeLists.txt
brlcad/trunk/src/libged/heal/CMakeLists.txt
brlcad/trunk/src/libged/help/CMakeLists.txt
brlcad/trunk/src/libged/hide/CMakeLists.txt
brlcad/trunk/src/libged/how/CMakeLists.txt
brlcad/trunk/src/libged/human/CMakeLists.txt
brlcad/trunk/src/libged/illum/CMakeLists.txt
brlcad/trunk/src/libged/importFg4Section/CMakeLists.txt
brlcad/trunk/src/libged/include/
brlcad/trunk/src/libged/inside/CMakeLists.txt
brlcad/trunk/src/libged/inside.c
brlcad/trunk/src/libged/instance/CMakeLists.txt
brlcad/trunk/src/libged/isize/CMakeLists.txt
brlcad/trunk/src/libged/item/CMakeLists.txt
brlcad/trunk/src/libged/joint/CMakeLists.txt
brlcad/trunk/src/libged/joint2/CMakeLists.txt
brlcad/trunk/src/libged/keep/CMakeLists.txt
brlcad/trunk/src/libged/keypoint/CMakeLists.txt
brlcad/trunk/src/libged/kill/CMakeLists.txt
brlcad/trunk/src/libged/killall/CMakeLists.txt
brlcad/trunk/src/libged/killrefs/CMakeLists.txt
brlcad/trunk/src/libged/killtree/CMakeLists.txt
brlcad/trunk/src/libged/label/CMakeLists.txt
brlcad/trunk/src/libged/lc/CMakeLists.txt
brlcad/trunk/src/libged/libfuncs/CMakeLists.txt
brlcad/trunk/src/libged/lint/CMakeLists.txt
brlcad/trunk/src/libged/list/CMakeLists.txt
brlcad/trunk/src/libged/lod/CMakeLists.txt
brlcad/trunk/src/libged/log/CMakeLists.txt
brlcad/trunk/src/libged/lookat/CMakeLists.txt
brlcad/trunk/src/libged/ls/CMakeLists.txt
brlcad/trunk/src/libged/lt/CMakeLists.txt
brlcad/trunk/src/libged/m2v_point/CMakeLists.txt
brlcad/trunk/src/libged/make/CMakeLists.txt
brlcad/trunk/src/libged/make_name/CMakeLists.txt
brlcad/trunk/src/libged/match/CMakeLists.txt
brlcad/trunk/src/libged/mater/CMakeLists.txt
brlcad/trunk/src/libged/metaball/
brlcad/trunk/src/libged/mirror/CMakeLists.txt
brlcad/trunk/src/libged/model2grid_lu/CMakeLists.txt
brlcad/trunk/src/libged/model2view/CMakeLists.txt
brlcad/trunk/src/libged/model2view_lu/CMakeLists.txt
brlcad/trunk/src/libged/move/CMakeLists.txt
brlcad/trunk/src/libged/move_all/CMakeLists.txt
brlcad/trunk/src/libged/move_arb_edge/CMakeLists.txt
brlcad/trunk/src/libged/move_arb_face/CMakeLists.txt
brlcad/trunk/src/libged/mrot/CMakeLists.txt
brlcad/trunk/src/libged/nirt/CMakeLists.txt
brlcad/trunk/src/libged/nmg/CMakeLists.txt
brlcad/trunk/src/libged/nmg/nmg_cmface.c
brlcad/trunk/src/libged/nmg/nmg_collapse.c
brlcad/trunk/src/libged/nmg/nmg_fix_normals.c
brlcad/trunk/src/libged/nmg/nmg_kill_f.c
brlcad/trunk/src/libged/nmg/nmg_kill_v.c
brlcad/trunk/src/libged/nmg/nmg_make_v.c
brlcad/trunk/src/libged/nmg/nmg_mm.c
brlcad/trunk/src/libged/nmg/nmg_move_v.c
brlcad/trunk/src/libged/nmg/nmg_simplify.c
brlcad/trunk/src/libged/ocenter/CMakeLists.txt
brlcad/trunk/src/libged/open/CMakeLists.txt
brlcad/trunk/src/libged/orient/CMakeLists.txt
brlcad/trunk/src/libged/orotate/CMakeLists.txt
brlcad/trunk/src/libged/oscale/CMakeLists.txt
brlcad/trunk/src/libged/otranslate/CMakeLists.txt
brlcad/trunk/src/libged/overlay/CMakeLists.txt
brlcad/trunk/src/libged/path.c
brlcad/trunk/src/libged/pathlist/CMakeLists.txt
brlcad/trunk/src/libged/pathsum/CMakeLists.txt
brlcad/trunk/src/libged/perspective/CMakeLists.txt
brlcad/trunk/src/libged/pipe/
brlcad/trunk/src/libged/pipe.c
brlcad/trunk/src/libged/pix2fb/CMakeLists.txt
brlcad/trunk/src/libged/plot/CMakeLists.txt
brlcad/trunk/src/libged/pmat/CMakeLists.txt
brlcad/trunk/src/libged/pmodel2view/CMakeLists.txt
brlcad/trunk/src/libged/png/CMakeLists.txt
brlcad/trunk/src/libged/png2fb/CMakeLists.txt
brlcad/trunk/src/libged/pnts/CMakeLists.txt
brlcad/trunk/src/libged/polyclip.cpp
brlcad/trunk/src/libged/prcolor/CMakeLists.txt
brlcad/trunk/src/libged/prefix/CMakeLists.txt
brlcad/trunk/src/libged/process/CMakeLists.txt
brlcad/trunk/src/libged/protate/CMakeLists.txt
brlcad/trunk/src/libged/ps/CMakeLists.txt
brlcad/trunk/src/libged/pscale/CMakeLists.txt
brlcad/trunk/src/libged/pscale/pscale.h
brlcad/trunk/src/libged/pscale/scale_ehy.c
brlcad/trunk/src/libged/pscale/scale_ell.c
brlcad/trunk/src/libged/pscale/scale_epa.c
brlcad/trunk/src/libged/pscale/scale_eto.c
brlcad/trunk/src/libged/pscale/scale_extrude.c
brlcad/trunk/src/libged/pscale/scale_hyp.c
brlcad/trunk/src/libged/pscale/scale_part.c
brlcad/trunk/src/libged/pscale/scale_rhc.c
brlcad/trunk/src/libged/pscale/scale_rpc.c
brlcad/trunk/src/libged/pscale/scale_superell.c
brlcad/trunk/src/libged/pscale/scale_tgc.c
brlcad/trunk/src/libged/pscale/scale_tor.c
brlcad/trunk/src/libged/pset/CMakeLists.txt
brlcad/trunk/src/libged/ptranslate/CMakeLists.txt
brlcad/trunk/src/libged/pull/CMakeLists.txt
brlcad/trunk/src/libged/push/CMakeLists.txt
brlcad/trunk/src/libged/put/CMakeLists.txt
brlcad/trunk/src/libged/put_comb/CMakeLists.txt
brlcad/trunk/src/libged/putmat/CMakeLists.txt
brlcad/trunk/src/libged/qray/CMakeLists.txt
brlcad/trunk/src/libged/qray.c
brlcad/trunk/src/libged/qvrot/CMakeLists.txt
brlcad/trunk/src/libged/rcodes/CMakeLists.txt
brlcad/trunk/src/libged/rect/CMakeLists.txt
brlcad/trunk/src/libged/red/CMakeLists.txt
brlcad/trunk/src/libged/regdef/CMakeLists.txt
brlcad/trunk/src/libged/region/CMakeLists.txt
brlcad/trunk/src/libged/remove/CMakeLists.txt
brlcad/trunk/src/libged/rfarb/CMakeLists.txt
brlcad/trunk/src/libged/rmap/CMakeLists.txt
brlcad/trunk/src/libged/rmat/CMakeLists.txt
brlcad/trunk/src/libged/rmater/CMakeLists.txt
brlcad/trunk/src/libged/rot/CMakeLists.txt
brlcad/trunk/src/libged/rot/rotate_about.c
brlcad/trunk/src/libged/rot_point/CMakeLists.txt
brlcad/trunk/src/libged/rotate_eto.c
brlcad/trunk/src/libged/rotate_extrude.c
brlcad/trunk/src/libged/rotate_hyp.c
brlcad/trunk/src/libged/rotate_tgc.c
brlcad/trunk/src/libged/rrt/CMakeLists.txt
brlcad/trunk/src/libged/rt/CMakeLists.txt
brlcad/trunk/src/libged/rtabort/CMakeLists.txt
brlcad/trunk/src/libged/rtcheck/CMakeLists.txt
brlcad/trunk/src/libged/rtwizard/CMakeLists.txt
brlcad/trunk/src/libged/savekey/CMakeLists.txt
brlcad/trunk/src/libged/saveview/CMakeLists.txt
brlcad/trunk/src/libged/scale/CMakeLists.txt
brlcad/trunk/src/libged/screengrab/CMakeLists.txt
brlcad/trunk/src/libged/search/CMakeLists.txt
brlcad/trunk/src/libged/select/CMakeLists.txt
brlcad/trunk/src/libged/set_output_script/CMakeLists.txt
brlcad/trunk/src/libged/set_transparency/CMakeLists.txt
brlcad/trunk/src/libged/set_uplotOutputMode/CMakeLists.txt
brlcad/trunk/src/libged/setview/CMakeLists.txt
brlcad/trunk/src/libged/shaded_mode/CMakeLists.txt
brlcad/trunk/src/libged/shader/CMakeLists.txt
brlcad/trunk/src/libged/shells/CMakeLists.txt
brlcad/trunk/src/libged/showmats/CMakeLists.txt
brlcad/trunk/src/libged/simulate/CMakeLists.txt
brlcad/trunk/src/libged/slew/CMakeLists.txt
brlcad/trunk/src/libged/snap.c
brlcad/trunk/src/libged/solid_report/CMakeLists.txt
brlcad/trunk/src/libged/solids_on_ray/CMakeLists.txt
brlcad/trunk/src/libged/sphgroup/CMakeLists.txt
brlcad/trunk/src/libged/summary/CMakeLists.txt
brlcad/trunk/src/libged/sync/CMakeLists.txt
brlcad/trunk/src/libged/tables/CMakeLists.txt
brlcad/trunk/src/libged/tests/plugins.cpp
brlcad/trunk/src/libged/tire/CMakeLists.txt
brlcad/trunk/src/libged/title/CMakeLists.txt
brlcad/trunk/src/libged/tol/CMakeLists.txt
brlcad/trunk/src/libged/tops/CMakeLists.txt
brlcad/trunk/src/libged/tra/CMakeLists.txt
brlcad/trunk/src/libged/trace.c
brlcad/trunk/src/libged/track/CMakeLists.txt
brlcad/trunk/src/libged/track.c
brlcad/trunk/src/libged/translate_extrude.c
brlcad/trunk/src/libged/translate_tgc.c
brlcad/trunk/src/libged/tree/CMakeLists.txt
brlcad/trunk/src/libged/typein/CMakeLists.txt
brlcad/trunk/src/libged/unhide/CMakeLists.txt
brlcad/trunk/src/libged/units/CMakeLists.txt
brlcad/trunk/src/libged/v2m_point/CMakeLists.txt
brlcad/trunk/src/libged/vdraw/CMakeLists.txt
brlcad/trunk/src/libged/version/CMakeLists.txt
brlcad/trunk/src/libged/view/CMakeLists.txt
brlcad/trunk/src/libged/view/ged_view.h
brlcad/trunk/src/libged/view2grid_lu/CMakeLists.txt
brlcad/trunk/src/libged/view2model/CMakeLists.txt
brlcad/trunk/src/libged/view2model_lu/CMakeLists.txt
brlcad/trunk/src/libged/view2model_vec/CMakeLists.txt
brlcad/trunk/src/libged/viewdir/CMakeLists.txt
brlcad/trunk/src/libged/voxelize/CMakeLists.txt
brlcad/trunk/src/libged/vrot/CMakeLists.txt
brlcad/trunk/src/libged/vutil.c
brlcad/trunk/src/libged/wcodes/CMakeLists.txt
brlcad/trunk/src/libged/wdb_importFg4Section.c
brlcad/trunk/src/libged/whatid/CMakeLists.txt
brlcad/trunk/src/libged/which/CMakeLists.txt
brlcad/trunk/src/libged/which_shader/CMakeLists.txt
brlcad/trunk/src/libged/who/CMakeLists.txt
brlcad/trunk/src/libged/wmater/CMakeLists.txt
brlcad/trunk/src/libged/xpush/CMakeLists.txt
brlcad/trunk/src/libged/zap/CMakeLists.txt
brlcad/trunk/src/libged/zoom/CMakeLists.txt
Removed Paths:
-------------
brlcad/trunk/src/libged/bot_condense/
brlcad/trunk/src/libged/bot_decimate/
brlcad/trunk/src/libged/bot_dump/
brlcad/trunk/src/libged/bot_face_fuse/
brlcad/trunk/src/libged/bot_face_sort/
brlcad/trunk/src/libged/bot_flip/
brlcad/trunk/src/libged/bot_fuse/
brlcad/trunk/src/libged/bot_merge/
brlcad/trunk/src/libged/bot_smooth/
brlcad/trunk/src/libged/bot_split/
brlcad/trunk/src/libged/bot_sync/
brlcad/trunk/src/libged/bot_vertex_fuse/
brlcad/trunk/src/libged/columns/
brlcad/trunk/src/libged/display_list/
brlcad/trunk/src/libged/draw_calc/
brlcad/trunk/src/libged/edbot/
brlcad/trunk/src/libged/edit_metaball/
brlcad/trunk/src/libged/edpipe/
brlcad/trunk/src/libged/facedef/
brlcad/trunk/src/libged/facetize_log/
brlcad/trunk/src/libged/ged_util/
brlcad/trunk/src/libged/get_obj_bounds/
brlcad/trunk/src/libged/get_solid_kp/
brlcad/trunk/src/libged/loadview/
brlcad/trunk/src/libged/nmg_cmface/
brlcad/trunk/src/libged/nmg_collapse/
brlcad/trunk/src/libged/nmg_fix_normals/
brlcad/trunk/src/libged/nmg_kill_f/
brlcad/trunk/src/libged/nmg_kill_v/
brlcad/trunk/src/libged/nmg_make_v/
brlcad/trunk/src/libged/nmg_mm/
brlcad/trunk/src/libged/nmg_move_v/
brlcad/trunk/src/libged/nmg_simplify/
brlcad/trunk/src/libged/path/
brlcad/trunk/src/libged/polyclip/
brlcad/trunk/src/libged/preview/
brlcad/trunk/src/libged/rotate_about/
brlcad/trunk/src/libged/rotate_arb_face/
brlcad/trunk/src/libged/rotate_eto/
brlcad/trunk/src/libged/rotate_extrude/
brlcad/trunk/src/libged/rotate_hyp/
brlcad/trunk/src/libged/rotate_tgc/
brlcad/trunk/src/libged/scale_ehy/
brlcad/trunk/src/libged/scale_ell/
brlcad/trunk/src/libged/scale_epa/
brlcad/trunk/src/libged/scale_eto/
brlcad/trunk/src/libged/scale_extrude/
brlcad/trunk/src/libged/scale_hyp/
brlcad/trunk/src/libged/scale_part/
brlcad/trunk/src/libged/scale_rhc/
brlcad/trunk/src/libged/scale_rpc/
brlcad/trunk/src/libged/scale_superell/
brlcad/trunk/src/libged/scale_tgc/
brlcad/trunk/src/libged/scale_tor/
brlcad/trunk/src/libged/trace/
brlcad/trunk/src/libged/translate_extrude/
brlcad/trunk/src/libged/translate_tgc/
brlcad/trunk/src/libged/vutil/
brlcad/trunk/src/libged/wdb_importFg4Section/
Property Changed:
----------------
brlcad/trunk/
brlcad/trunk/include/
brlcad/trunk/regress/
Index: brlcad/trunk
===================================================================
--- brlcad/trunk 2020-07-24 13:46:02 UTC (rev 76465)
+++ brlcad/trunk 2020-07-24 14:39:33 UTC (rev 76466)
Property changes on: brlcad/trunk
___________________________________________________________________
Modified: svn:mergeinfo
## -5,6 +5,7 ##
/brlcad/branches/cmake:43219
/brlcad/branches/dm-fb-merge:75426-76198
/brlcad/branches/gct:62423-62425
+/brlcad/branches/gedplugins:76384-76465
/brlcad/branches/opencl:65867-66137
/brlcad/branches/osg:62110-62113
/brlcad/branches/prep-cache:68236-68933
Index: brlcad/trunk/include
===================================================================
--- brlcad/trunk/include 2020-07-24 13:46:02 UTC (rev 76465)
+++ brlcad/trunk/include 2020-07-24 14:39:33 UTC (rev 76466)
Property changes on: brlcad/trunk/include
___________________________________________________________________
Modified: svn:mergeinfo
## -5,6 +5,7 ##
/brlcad/branches/cmake/include:43219
/brlcad/branches/dm-fb-merge/include:75426-76198
/brlcad/branches/gct/include:62423-62425
+/brlcad/branches/gedplugins/include:76384-76465
/brlcad/branches/opencl/include:65867-66137
/brlcad/branches/osg/include:62110-62113
/brlcad/branches/prep-cache/include:68236-68933
Modified: brlcad/trunk/include/ged/commands.h
===================================================================
--- brlcad/trunk/include/ged/commands.h 2020-07-24 13:46:02 UTC (rev 76465)
+++ brlcad/trunk/include/ged/commands.h 2020-07-24 14:39:33 UTC (rev 76466)
@@ -34,6 +34,8 @@
__BEGIN_DECLS
+/* Execute plugin based command */
+GED_EXPORT extern int ged_exec(struct ged *gedp, int argc, const char *argv[]);
/**
* Adjust object's attribute(s)
Modified: brlcad/trunk/include/ged/defines.h
===================================================================
--- brlcad/trunk/include/ged/defines.h 2020-07-24 13:46:02 UTC (rev 76465)
+++ brlcad/trunk/include/ged/defines.h 2020-07-24 14:39:33 UTC (rev 76466)
@@ -61,6 +61,7 @@
#define GED_HELP 0x0002 /**< invalid specification, result contains usage */
#define GED_MORE 0x0004 /**< incomplete specification, can specify again
interactively */
#define GED_QUIET 0x0008 /**< don't set or modify the result string */
+#define GED_UNKNOWN 0x0010 /**< argv[0] was not a known command */
#define GED_VMIN -2048.0
#define GED_VMAX 2047.0
@@ -241,22 +242,6 @@
typedef void (*ged_create_vlist_callback_ptr)(struct display_list *);
typedef void (*ged_free_vlist_callback_ptr)(unsigned int, int);
-
-/**
- * describes a command plugin
- */
-struct ged_cmd {
- struct bu_list l;
-
- const char *name;
- const char description[80];
- const char *manpage;
-
- int (*load)(struct ged *);
- void (*unload)(struct ged *);
- int (*exec)(struct ged *, int, const char *[]);
-};
-
/* accessor functions for ged_results - calling
* applications should not work directly with the
* internals of ged_results, which are not guaranteed
@@ -294,7 +279,41 @@
}
+struct ged_cmd_impl;
+struct ged_cmd {
+ struct ged_cmd_impl *i;
+};
+struct ged_plugin {
+ const struct ged_cmd ** const cmds;
+ int cmd_cnt;
+};
+
+/* Report any messages from libged when plugins were initially loaded.
+ * Can be important when diagnosing command errors. */
+GED_EXPORT const char * ged_init_msgs();
+
+/* LIBGED maintains this list - callers should regard it as read only. This
+ * list will change (size and pointers to individual command strings if
+ * commands are added or removed - caller is responsible for performing a new
+ * call to get an updated list and size if commands are altered. */
+GED_EXPORT size_t ged_cmd_list(const char * const **cmd_list);
+
+/* Report whether a string identifies a valid LIBGED command. If func is
+ * non-NULL, check that cmd and func both refer to the same function pointer
+ * (i.e., they are aliases for the same command.)
+ *
+ * If func is NULL, a 0 return indicates an valid GED command and non-zero
+ * indicates a valid command.
+ *
+ * If func is non-null:
+ * 0 indicates both cmd and func strings invoke the same LIBGED function
+ * 1 indicates that either or both of cmd and func were invalid GED commands
+ * 2 indicates that both were valid commands, but they did not match.
+ */
+GED_EXPORT int ged_cmd_valid(const char *cmd, const char *func);
+
+
__END_DECLS
#endif /* GED_DEFINES_H */
Index: brlcad/trunk/regress
===================================================================
--- brlcad/trunk/regress 2020-07-24 13:46:02 UTC (rev 76465)
+++ brlcad/trunk/regress 2020-07-24 14:39:33 UTC (rev 76466)
Property changes on: brlcad/trunk/regress
___________________________________________________________________
Modified: svn:mergeinfo
## -5,6 +5,7 ##
/brlcad/branches/cmake/regress:43219
/brlcad/branches/dm-fb-merge/regress:75426-76198
/brlcad/branches/gct/regress:62423-62425
+/brlcad/branches/gedplugins/regress:76384-76465
/brlcad/branches/opencl/regress:65867-66137
/brlcad/branches/osg/regress:62110-62113
/brlcad/branches/prep-cache/regress:68236-68933
Modified: brlcad/trunk/regress/CMakeLists.txt
===================================================================
--- brlcad/trunk/regress/CMakeLists.txt 2020-07-24 13:46:02 UTC (rev 76465)
+++ brlcad/trunk/regress/CMakeLists.txt 2020-07-24 14:39:33 UTC (rev 76466)
@@ -91,6 +91,9 @@
# solids Regression Tests
add_subdirectory(solids)
+# spdi Regression Tests
+add_subdirectory(spdi)
+
# shaders Regression Tests
add_subdirectory(shaders)
Modified: brlcad/trunk/src/gtools/gsh.cpp
===================================================================
--- brlcad/trunk/src/gtools/gsh.cpp 2020-07-24 13:46:02 UTC (rev 76465)
+++ brlcad/trunk/src/gtools/gsh.cpp 2020-07-24 14:39:33 UTC (rev 76466)
@@ -80,7 +80,6 @@
bu_exit(EXIT_SUCCESS, NULL);
}
-
/* If we can't load libged there's not point in continuing */
if (!libged) {
bu_vls_free(&msg);
@@ -87,6 +86,11 @@
bu_exit(EXIT_FAILURE, "ERROR, could not load libged: %s\n",
bu_dlerror());
}
+ const char *ged_init_str = ged_init_msgs();
+ if (strlen(ged_init_str)) {
+ fprintf(stderr, "%s", ged_init_str);
+ }
+
/* FIXME: To draw, we need to init this LIBRT global */
BU_LIST_INIT(&RTG.rtg_vlfree);
@@ -169,7 +173,6 @@
/* Start the interactive loop */
while ((line = linenoise(gpmpt)) != NULL) {
- int (*func)(struct ged *, int, char *[]);
bu_vls_sprintf(&iline, "%s", line);
free(line);
@@ -192,7 +195,8 @@
/* OK, try a GED command - make an argv array from the input line */
struct bu_vls ged_prefixed = BU_VLS_INIT_ZERO;
- bu_vls_sprintf(&ged_prefixed, "ged_%s", bu_vls_addr(&iline));
+ //bu_vls_sprintf(&ged_prefixed, "ged_%s", bu_vls_addr(&iline));
+ bu_vls_sprintf(&ged_prefixed, "%s", bu_vls_addr(&iline));
char *input = bu_strdup(bu_vls_addr(&ged_prefixed));
bu_vls_free(&ged_prefixed);
char **av = (char **)bu_calloc(strlen(input) + 1, sizeof(char *), "argv
array");
@@ -201,7 +205,7 @@
/* The "open" and close commands require a bit of
* awareness at this level, since the gedp pointer
* must respond to them. */
- if (BU_STR_EQUAL(av[0], "ged_open")) {
+ if (BU_STR_EQUAL(av[0], "open")) {
if (ac > 1) {
if (gedp) ged_close(gedp);
gedp = ged_open("db", av[1], 0);
@@ -232,7 +236,7 @@
}
- if (BU_STR_EQUAL(av[0], "ged_close")) {
+ if (BU_STR_EQUAL(av[0], "close")) {
ged_close(gedp);
gedp = NULL;
printf("closed database %s\n", bu_vls_addr(&open_gfile));
@@ -245,6 +249,11 @@
/* If we're not opening or closing, and we have an active gedp,
* make a standard libged call */
+ ged_exec(gedp, ac, (const char **)av);
+ printf("%s\n", bu_vls_cstr(gedp->ged_result_str));
+ bu_vls_trunc(gedp->ged_result_str, 0);
+#if 0
+ int (*func)(struct ged *, int, char *[]);
*(void **)(&func) = bu_dlsym(libged, av[0]);
if (!func) {
printf("unrecognzied command: %s\n", av[0]);
@@ -252,6 +261,7 @@
(void)func(gedp, ac, av);
printf("%s\n", bu_vls_addr(gedp->ged_result_str));
}
+#endif
bu_free(input, "input copy");
bu_free(av, "input argv");
Modified: brlcad/trunk/src/libged/3ptarb/3ptarb.c
===================================================================
--- brlcad/trunk/src/libged/3ptarb/3ptarb.c 2020-07-24 13:46:02 UTC (rev
76465)
+++ brlcad/trunk/src/libged/3ptarb/3ptarb.c 2020-07-24 14:39:33 UTC (rev
76466)
@@ -49,7 +49,7 @@
int
-ged_3ptarb(struct ged *gedp, int argc, const char *argv[])
+ged_3ptarb_core(struct ged *gedp, int argc, const char *argv[])
{
int i, solve;
vect_t vec1;
@@ -255,7 +255,27 @@
return GED_OK;
}
+#ifdef GED_PLUGIN
+#include "../include/plugin.h"
+struct ged_cmd_impl threeptarb_cmd_impl = {
+ "3ptarb",
+ ged_3ptarb_core,
+ GED_CMD_DEFAULT
+};
+const struct ged_cmd threeptarb_cmd = { &threeptarb_cmd_impl };
+const struct ged_cmd *threeptarb_cmds[] = { &threeptarb_cmd, NULL };
+
+static const struct ged_plugin pinfo = { threeptarb_cmds, 1 };
+
+COMPILER_DLLEXPORT const struct ged_plugin *ged_plugin_info()
+{
+ return &pinfo;
+}
+#endif /* GED_PLUGIN */
+
+
+
/*
* Local Variables:
* tab-width: 8
Copied: brlcad/trunk/src/libged/3ptarb/CMakeLists.txt (from rev 76465,
brlcad/branches/gedplugins/src/libged/3ptarb/CMakeLists.txt)
===================================================================
--- brlcad/trunk/src/libged/3ptarb/CMakeLists.txt
(rev 0)
+++ brlcad/trunk/src/libged/3ptarb/CMakeLists.txt 2020-07-24 14:39:33 UTC
(rev 76466)
@@ -0,0 +1,26 @@
+include_directories(
+ ${CMAKE_CURRENT_SOURCE_DIR}
+ ${BRLCAD_BINARY_DIR}/include
+ ${BRLCAD_SOURCE_DIR}/include
+ ${BU_INCLUDE_DIRS}
+ ${GED_INCLUDE_DIRS}
+ )
+
+add_definitions(-DGED_PLUGIN)
+ged_plugin_library(ged-3ptarb SHARED 3ptarb.c)
+target_link_libraries(ged-3ptarb libged libbu)
+set_property(TARGET ged-3ptarb APPEND PROPERTY COMPILE_DEFINITIONS BRLCADBUILD
HAVE_CONFIG_H)
+VALIDATE_STYLE(ged-3ptarb 3ptarb.c)
+PLUGIN_SETUP(ged-3ptarb ged)
+
+CMAKEFILES(
+ CMakeLists.txt
+ 3ptarb.c
+ )
+
+# Local Variables:
+# tab-width: 8
+# mode: cmake
+# indent-tabs-mode: t
+# End:
+# ex: shiftwidth=2 tabstop=8
Modified: brlcad/trunk/src/libged/CMakeLists.txt
===================================================================
--- brlcad/trunk/src/libged/CMakeLists.txt 2020-07-24 13:46:02 UTC (rev
76465)
+++ brlcad/trunk/src/libged/CMakeLists.txt 2020-07-24 14:39:33 UTC (rev
76466)
@@ -1,378 +1,58 @@
+# LIBGED is set up based on a plugin architecture, with common functionality
+# defined in a core library.
-# if GED command stuff is pushed into the actual subdirs, the autoconf vs cmake
-# verification (sh/cmakecheck.sh) will fail on dist-hook. For now, just
-# handle it as part of libged
-if(BRLCAD_ENABLE_BULLET)
- add_definitions(-DHAVE_BULLET=1)
- set(LIBGED_CMD_INCLUDE_DIRS
- ${LIBGED_CMD_INCLUDE_DIRS}
- ${CMAKE_CURRENT_SOURCE_DIR}/simulate
- )
- include_directories(SYSTEM
- ${CMAKE_CURRENT_SOURCE_DIR}/simulate/bullet
- ${CMAKE_CURRENT_SOURCE_DIR}/simulate/LinearMath
- ${CMAKE_CURRENT_SOURCE_DIR}/simulate/BulletCollision
- ${CMAKE_CURRENT_SOURCE_DIR}/simulate/BulletDynamics
- ${CMAKE_CURRENT_SOURCE_DIR}/simulate/BulletSoftBody
- )
-endif(BRLCAD_ENABLE_BULLET)
-include(simulate/bullet/CMakeLists.txt)
-
-if(ADAPTAGRAMS_FOUND)
- set(LIBGED_CMD_LIBS_LIST ${LIBGED_CMD_LIBS_LIST} ${ADAPTAGRAMS_LIBRARIES})
- set(LIBGED_CMD_INCLUDE_DIRS ${LIBGED_CMD_INCLUDE_DIRS} ${AVOID_INCLUDE_DIR})
-endif(ADAPTAGRAMS_FOUND)
-
-file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/debug")
-set(DEBUG_CMD_CPP "${CMAKE_CURRENT_BINARY_DIR}/debug_cmd.cpp")
-
-add_custom_command(OUTPUT ${DEBUG_CMD_CPP}
- COMMAND debug2c ${CMAKE_BINARY_DIR}/cmakefiles.cmake ${DEBUG_CMD_CPP}
- DEPENDS debug2c
- COMMENT "[DEBUG2C] Scanning for debugging variables"
+add_custom_command(
+ OUTPUT "${CMAKE_BINARY_DIR}/ged_plugins.sentinel"
+ COMMAND ${CMAKE_COMMAND} -E touch "${CMAKE_BINARY_DIR}/ged_plugins.sentinel"
)
-DISTCLEAN(${DEBUG_CMD_CPP})
-set_source_files_properties(debug/debug.cpp PROPERTIES OBJECT_DEPENDS
${DEBUG_CMD_CPP})
+add_custom_target(ged_plugins_sentinel
+ DEPENDS ${CMAKE_BINARY_DIR}/ged_plugins.sentinel
+ )
+function(ged_plugin_library name)
+ add_library(${name} ${ARGN})
+ add_dependencies(ged_plugins_sentinel ${name})
+endfunction(ged_plugin_library name)
-file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/env")
-set(ENV_CMD_C "${CMAKE_CURRENT_BINARY_DIR}/env_cmd.c")
+# This target is supplied so applications wanting to run libged
+# commands at build time can depend on the plugins being built as well as
+# libged itself (otherwise LIBGED commands might fail due to their plugins not
+# yet having been built.)
+add_custom_target(ged_plugins ALL DEPENDS ged_plugins_sentinel)
-add_custom_command(OUTPUT ${ENV_CMD_C}
- COMMAND env2c ${CMAKE_BINARY_DIR}/cmakefiles.cmake ${ENV_CMD_C}
- DEPENDS env2c
- COMMENT "[ENV2C] Scanning for environment variable usage"
- )
-DISTCLEAN(${ENV_CMD_C})
-set_source_files_properties(env/env.c PROPERTIES OBJECT_DEPENDS ${ENV_CMD_C})
-
set(LIBGED_SOURCES
- ${LIBGED_SOURCES}
- 3ptarb/3ptarb.c
- adc/adc.c
- adjust/adjust.c
- ae2dir/ae2dir.c
- analyze/analyze.c
- annotate/annotate.c
- arb/arb.c
- arced/arced.c
- arot/arot.c
- attr/attr.cpp
- autoview/autoview.c
- bb/bb.c
- bev/bev.c
- bigE/bigE.c
- blast/blast.c
- bo/bo.c
- bot/bot.cpp
- bot/check.cpp
- bot/extrude.cpp
- bot/remesh.cpp
- bot_condense/bot_condense.c
- bot_decimate/bot_decimate.c
- bot_dump/bot_dump.c
- bot_face_fuse/bot_face_fuse.c
- bot_face_sort/bot_face_sort.c
- bot_flip/bot_flip.c
- bot_fuse/bot_fuse.c
- bot_merge/bot_merge.c
- bot_smooth/bot_smooth.c
- bot_split/bot_split.c
- bot_sync/bot_sync.c
- bot_vertex_fuse/bot_vertex_fuse.c
- brep/brep.cpp
- brep/conversion.cpp
- brep/csg.cpp
- brep/info.cpp
- brep/intersect.cpp
- brep/pick.cpp
- brep/plot.cpp
- brep/tikz.cpp
- brep/valid.cpp
- cat/cat.c
- cc/cc.c
- check/check.c
- check/check_adj_air.c
- check/check_centroid.c
- check/check_exp_air.c
- check/check_gap.c
- check/check_mass.c
- check/check_moments.c
- check/check_overlaps.c
- check/check_surf_area.c
- check/check_unconf_air.c
- check/check_volume.c
- constraint/constraint.c
- clone/clone.c
- coil/coil.c
- color/color.c
- columns/columns.c
- comb/comb.c
- comb_color/comb_color.c
- comb_std/comb_std.c
- combmem/combmem.c
- concat/concat.cpp
- copy/copy.c
- copyeval/copyeval.c
- copymat/copymat.c
- cpi/cpi.c
- dag/dag.cpp
- dbip/dbip.c
- debug/debug.cpp
- debugbu/debugbu.c
- debugdir/debugdir.c
- debuglib/debuglib.c
- debugnmg/debugnmg.c
- decompose/decompose.c
- delay/delay.c
- dir2ae/dir2ae.c
- display_list/display_list.c
- draw/draw.c
- draw_calc/draw_calc.cpp
- dsp/dsp.c
- dump/dump.c
- dup/dup.c
- eac/eac.c
- echo/echo.c
- edarb/edarb.c
- edbot/edbot.c
- edcodes/edcodes.c
- edcomb/edcomb.c
- edit/edit.c
- edit_metaball/edit_metaball.c
- editit/editit.c
- edmater/edmater.c
- edpipe/edpipe.c
- env/env.c
- erase/erase.c
- exists/exists.c
- expand/expand.c
- eye_pos/eye_pos.c
- facedef/facedef.c
- facetize/facetize.cpp
- facetize_log/facetize_log.c
- fb2pix/fb2pix.c
- fbclear/fbclear.c
- find/find.c
- form/form.c
- fracture/fracture.c
- gdiff/gdiff.c
- gdiff/gdiff.c
+ exec.cpp
+ exec_mapping.cpp
+ ged_init.cpp
+ columns.c
+ display_list.c
+ draw_calc.cpp
+ facedef.c
ged.c
- ged_util/ged_util.c
- get/get.c
- get_autoview/get_autoview.c
- get_comb/get_comb.c
- get_eyemodel/get_eyemodel.c
- get_obj_bounds/get_obj_bounds.c
- get_solid_kp/get_solid_kp.c
- get_type/get_type.c
- glob/glob.c
- gqa/gqa.c
- grid/grid.c
- grid2model_lu/grid2model_lu.c
- grid2view_lu/grid2view_lu.c
- group/group.c
- heal/heal.c
- help/help.cpp
- hide/hide.c
- how/how.c
- human/human.c
- illum/illum.c
- importFg4Section/importFg4Section.c
- inside/inside.c
- instance/instance.c
- isize/isize.c
- item/item.c
- joint/joint.c
- joint2/joint2.c
- keep/keep.c
- keypoint/keypoint.c
- kill/kill.c
- killall/killall.c
- killrefs/killrefs.c
- killtree/killtree.c
- label/label.c
- lc/lc.c
- libfuncs/libfuncs.c
- lint/lint.cpp
- list/list.c
- loadview/loadview.c
- lod/lod.c
- log/log.c
- lookat/lookat.c
- ls/ls.c
- lt/lt.c
- m2v_point/m2v_point.c
- make/make.c
- make_name/make_name.c
- match/match.c
- mater/mater.cpp
- mirror/mirror.c
- model2grid_lu/model2grid_lu.c
- model2view/model2view.c
- model2view_lu/model2view_lu.c
- move/move.c
- move_all/move_all.c
- move_arb_edge/move_arb_edge.c
- move_arb_face/move_arb_face.c
- mrot/mrot.c
- nirt/nirt.c
- nmg/nmg.c
- nmg_cmface/nmg_cmface.c
- nmg_collapse/nmg_collapse.c
- nmg_fix_normals/nmg_fix_normals.c
- nmg_kill_f/nmg_kill_f.c
- nmg_kill_v/nmg_kill_v.c
- nmg_make_v/nmg_make_v.c
- nmg_mm/nmg_mm.c
- nmg_move_v/nmg_move_v.c
- nmg_simplify/nmg_simplify.c
- ocenter/ocenter.c
- open/open.c
- orient/orient.c
- orotate/orotate.c
- oscale/oscale.c
- otranslate/otranslate.c
- overlay/overlay.c
- path/path.c
- pathlist/pathlist.c
- pathsum/pathsum.c
- perspective/perspective.c
- pix2fb/pix2fb.c
- plot/plot.c
- pmat/pmat.c
- pmodel2view/pmodel2view.c
- png/png.c
- png2fb/png2fb.c
- pnts/pnts.cpp
+ ged_util.c
+ get_obj_bounds.c
+ get_solid_kp.c
+ inside.c
+ path.c
+ pipe.c
pnts_util.c
- polyclip/polyclip.cpp
- prcolor/prcolor.c
- prefix/prefix.c
- preview/preview.c
- process/process.c
- protate/protate.c
- ps/ps.c
- pscale/pscale.c
- pset/pset.c
- ptranslate/ptranslate.c
- pull/pull.c
- push/push.c
- put/put.c
- put_comb/put_comb.c
- putmat/putmat.c
- qray/qray.c
- qvrot/qvrot.c
- rcodes/rcodes.c
- rect/rect.c
- red/red.c
- regdef/regdef.c
- region/region.c
- remove/remove.c
- rfarb/rfarb.c
- rmap/rmap.c
- rmat/rmat.c
- rmater/rmater.c
- rot/rot.c
- rot_point/rot_point.c
- rotate_about/rotate_about.c
- rotate_arb_face/rotate_arb_face.c
- rotate_eto/rotate_eto.c
- rotate_extrude/rotate_extrude.c
- rotate_hyp/rotate_hyp.c
- rotate_tgc/rotate_tgc.c
- rrt/rrt.c
- rt/rt.c
- rtabort/rtabort.c
- rtcheck/rtcheck.c
- rtwizard/rtwizard.c
- savekey/savekey.c
- saveview/saveview.c
- scale/scale.c
- scale_ehy/scale_ehy.c
- scale_ell/scale_ell.c
- scale_epa/scale_epa.c
- scale_eto/scale_eto.c
- scale_extrude/scale_extrude.c
- scale_hyp/scale_hyp.c
- scale_part/scale_part.c
- scale_rhc/scale_rhc.c
- scale_rpc/scale_rpc.c
- scale_superell/scale_superell.c
- scale_tgc/scale_tgc.c
- scale_tor/scale_tor.c
- screengrab/screengrab.c
- search/search.c
- select/select.c
- set_output_script/set_output_script.c
- set_transparency/set_transparency.c
- set_uplotOutputMode/set_uplotOutputMode.c
- setview/setview.c
- shaded_mode/shaded_mode.c
- shader/shader.c
- shells/shells.c
- showmats/showmats.c
- simulate/ged_command.cpp
- simulate/rt_collision_algorithm.cpp
- simulate/rt_collision_shape.cpp
- simulate/rt_debug_draw.cpp
- simulate/rt_instance.cpp
- simulate/rt_motion_state.cpp
- simulate/simulation.cpp
- simulate/utility.cpp
- slew/slew.c
- solid_report/solid_report.c
- solids_on_ray/solids_on_ray.c
- sphgroup/sphgroup.c
- summary/summary.c
- sync/sync.c
- tables/tables.c
- tire/tire.c
- title/title.c
- tol/tol.c
- tops/tops.c
- tra/tra.c
- trace/trace.c
- track/track.c
- translate_extrude/translate_extrude.c
- translate_tgc/translate_tgc.c
- tree/tree.c
- typein/typein.c
- unhide/unhide.c
- units/units.c
- v2m_point/v2m_point.c
- vdraw/vdraw.c
- version/version.c
- view/aet.c
- view/center.cpp
+ polyclip.cpp
+ qray.c
+ rotate_eto.c
+ rotate_extrude.c
+ rotate_hyp.c
+ rotate_tgc.c
+ snap.c
+ trace.c
+ track.c
+ translate_extrude.c
+ translate_tgc.c
+ vutil.c
view/data_lines.c
- view/eye.c
- view/quat.c
- view/size.c
- view/snap.c
- view/ypr.c
- view/view.c
- view2grid_lu/view2grid_lu.c
- view2model/view2model.c
- view2model_lu/view2model_lu.c
- view2model_vec/view2model_vec.c
- viewdir/viewdir.c
- voxelize/voxelize.c
- vrot/vrot.c
- vutil/vutil.c
- wcodes/wcodes.c
- wdb_importFg4Section/wdb_importFg4Section.c
- whatid/whatid.c
- which/which.cpp
- which_shader/which_shader.c
- who/who.c
- wmater/wmater.c
- xpush/xpush.c
- zap/zap.c
- zoom/zoom.c
- ${LIBGED_CMD_SRCS}
+ wdb_importFg4Section.c
)
+set_property(SOURCE ged_init.cpp APPEND PROPERTY COMPILE_DEFINITIONS
"GED_PLUGIN_SUFFIX=\"${CMAKE_SHARED_LIBRARY_SUFFIX}\"")
+
# Include directories needed by libged users
set(GED_INCLUDE_DIRS
${BRLCAD_BINARY_DIR}/include
@@ -431,6 +111,7 @@
ged_private.h
joint/joint.h
osg.cpp
+ pscale/pscale.h
pnts_util.h
qray.h
simulate/NOTES
@@ -441,9 +122,239 @@
simulate/rt_motion_state.hpp
simulate/simulation.hpp
simulate/utility.hpp
+ include/plugin.h
)
CMAKEFILES(${ged_ignore_files})
+# Plugins
+add_subdirectory(3ptarb)
+add_subdirectory(adc)
+add_subdirectory(adjust)
+add_subdirectory(ae2dir)
+add_subdirectory(analyze)
+add_subdirectory(annotate)
+add_subdirectory(arb)
+add_subdirectory(arced)
+add_subdirectory(arot)
+add_subdirectory(attr)
+add_subdirectory(autoview)
+add_subdirectory(bb)
+add_subdirectory(bev)
+add_subdirectory(bigE)
+add_subdirectory(blast)
+add_subdirectory(bo)
+add_subdirectory(bot)
+add_subdirectory(brep)
+add_subdirectory(cat)
+add_subdirectory(cc)
+add_subdirectory(check)
+add_subdirectory(clone)
+add_subdirectory(coil)
+add_subdirectory(color)
+add_subdirectory(comb)
+add_subdirectory(comb_color)
+add_subdirectory(comb_std)
+add_subdirectory(combmem)
+add_subdirectory(concat)
+add_subdirectory(constraint)
+add_subdirectory(copy)
+add_subdirectory(copyeval)
+add_subdirectory(copymat)
+add_subdirectory(cpi)
+add_subdirectory(dag)
+add_subdirectory(dbip)
+add_subdirectory(debug)
+add_subdirectory(debugbu)
+add_subdirectory(debugdir)
+add_subdirectory(debuglib)
+add_subdirectory(debugnmg)
+add_subdirectory(decompose)
+add_subdirectory(delay)
+add_subdirectory(dir2ae)
+add_subdirectory(draw)
+add_subdirectory(dsp)
+add_subdirectory(dump)
+add_subdirectory(dup)
+add_subdirectory(eac)
+add_subdirectory(echo)
+add_subdirectory(edarb)
+add_subdirectory(edcodes)
+add_subdirectory(edcomb)
+add_subdirectory(edit)
+add_subdirectory(editit)
+add_subdirectory(edmater)
+add_subdirectory(env)
+add_subdirectory(erase)
+add_subdirectory(exists)
+add_subdirectory(expand)
+add_subdirectory(eye_pos)
+add_subdirectory(facetize)
+add_subdirectory(fb2pix)
+add_subdirectory(fbclear)
+add_subdirectory(find)
+add_subdirectory(form)
+add_subdirectory(fracture)
+add_subdirectory(gdiff)
+add_subdirectory(get)
+add_subdirectory(get_autoview)
+add_subdirectory(get_comb)
+add_subdirectory(get_eyemodel)
+add_subdirectory(get_type)
+add_subdirectory(glob)
+add_subdirectory(gqa)
+add_subdirectory(grid)
+add_subdirectory(grid2model_lu)
+add_subdirectory(grid2view_lu)
+add_subdirectory(group)
+add_subdirectory(heal)
+add_subdirectory(help)
+add_subdirectory(hide)
+add_subdirectory(how)
+add_subdirectory(human)
+add_subdirectory(illum)
+add_subdirectory(importFg4Section)
+add_subdirectory(inside)
+add_subdirectory(instance)
+add_subdirectory(isize)
+add_subdirectory(item)
+add_subdirectory(joint)
+add_subdirectory(joint2)
+add_subdirectory(keep)
+add_subdirectory(keypoint)
+add_subdirectory(kill)
+add_subdirectory(killall)
+add_subdirectory(killrefs)
+add_subdirectory(killtree)
+add_subdirectory(label)
+add_subdirectory(lc)
+add_subdirectory(libfuncs)
+add_subdirectory(lint)
+add_subdirectory(list)
+add_subdirectory(lod)
+add_subdirectory(log)
+add_subdirectory(lookat)
+add_subdirectory(ls)
+add_subdirectory(lt)
+add_subdirectory(m2v_point)
+add_subdirectory(make)
+add_subdirectory(make_name)
+add_subdirectory(match)
+add_subdirectory(mater)
+add_subdirectory(metaball)
+add_subdirectory(mirror)
+add_subdirectory(model2grid_lu)
+add_subdirectory(model2view)
+add_subdirectory(model2view_lu)
+add_subdirectory(move)
+add_subdirectory(move_all)
+add_subdirectory(move_arb_edge)
+add_subdirectory(move_arb_face)
+add_subdirectory(mrot)
+add_subdirectory(nirt)
+add_subdirectory(nmg)
+add_subdirectory(ocenter)
+add_subdirectory(open)
+add_subdirectory(orient)
+add_subdirectory(orotate)
+add_subdirectory(oscale)
+add_subdirectory(otranslate)
+add_subdirectory(overlay)
+add_subdirectory(pathlist)
+add_subdirectory(pathsum)
+add_subdirectory(perspective)
+add_subdirectory(pipe)
+add_subdirectory(pix2fb)
+add_subdirectory(plot)
+add_subdirectory(pmat)
+add_subdirectory(pmodel2view)
+add_subdirectory(png)
+add_subdirectory(png2fb)
+add_subdirectory(pnts)
+add_subdirectory(prcolor)
+add_subdirectory(prefix)
+add_subdirectory(process)
+add_subdirectory(protate)
+add_subdirectory(ps)
+add_subdirectory(pscale)
+add_subdirectory(pset)
+add_subdirectory(ptranslate)
+add_subdirectory(pull)
+add_subdirectory(push)
+add_subdirectory(put)
+add_subdirectory(put_comb)
+add_subdirectory(putmat)
+add_subdirectory(qray)
+add_subdirectory(qvrot)
+add_subdirectory(rcodes)
+add_subdirectory(rect)
+add_subdirectory(red)
+add_subdirectory(regdef)
+add_subdirectory(region)
+add_subdirectory(remove)
+add_subdirectory(rfarb)
+add_subdirectory(rmap)
+add_subdirectory(rmat)
+add_subdirectory(rmater)
+add_subdirectory(rot)
+add_subdirectory(rot_point)
+add_subdirectory(rrt)
+add_subdirectory(rt)
+add_subdirectory(rtabort)
+add_subdirectory(rtcheck)
+add_subdirectory(rtwizard)
+add_subdirectory(savekey)
+add_subdirectory(saveview)
+add_subdirectory(scale)
+add_subdirectory(screengrab)
+add_subdirectory(search)
+add_subdirectory(select)
+add_subdirectory(set_output_script)
+add_subdirectory(set_transparency)
+add_subdirectory(set_uplotOutputMode)
+add_subdirectory(setview)
+add_subdirectory(shaded_mode)
+add_subdirectory(shader)
+add_subdirectory(shells)
+add_subdirectory(showmats)
+add_subdirectory(simulate)
+add_subdirectory(slew)
+add_subdirectory(solid_report)
+add_subdirectory(solids_on_ray)
+add_subdirectory(sphgroup)
+add_subdirectory(summary)
+add_subdirectory(sync)
+add_subdirectory(tables)
+add_subdirectory(tire)
+add_subdirectory(title)
+add_subdirectory(tol)
+add_subdirectory(tops)
+add_subdirectory(tra)
+add_subdirectory(track)
+add_subdirectory(tree)
+add_subdirectory(typein)
+add_subdirectory(unhide)
+add_subdirectory(units)
+add_subdirectory(v2m_point)
+add_subdirectory(vdraw)
+add_subdirectory(version)
+add_subdirectory(view)
+add_subdirectory(view2grid_lu)
+add_subdirectory(view2model)
+add_subdirectory(view2model_lu)
+add_subdirectory(view2model_vec)
+add_subdirectory(viewdir)
+add_subdirectory(voxelize)
+add_subdirectory(vrot)
+add_subdirectory(wcodes)
+add_subdirectory(whatid)
+add_subdirectory(which)
+add_subdirectory(which_shader)
+add_subdirectory(who)
+add_subdirectory(wmater)
+add_subdirectory(xpush)
+add_subdirectory(zap)
+add_subdirectory(zoom)
+
# Local Variables:
# tab-width: 8
# mode: cmake
@@ -450,3 +361,4 @@
# indent-tabs-mode: t
# End:
# ex: shiftwidth=2 tabstop=8
+
Copied: brlcad/trunk/src/libged/adc/CMakeLists.txt (from rev 76465,
brlcad/branches/gedplugins/src/libged/adc/CMakeLists.txt)
===================================================================
--- brlcad/trunk/src/libged/adc/CMakeLists.txt (rev 0)
+++ brlcad/trunk/src/libged/adc/CMakeLists.txt 2020-07-24 14:39:33 UTC (rev
76466)
@@ -0,0 +1,26 @@
+include_directories(
+ ${CMAKE_CURRENT_SOURCE_DIR}
+ ${BRLCAD_BINARY_DIR}/include
+ ${BRLCAD_SOURCE_DIR}/include
+ ${BU_INCLUDE_DIRS}
+ ${GED_INCLUDE_DIRS}
+ )
+
+add_definitions(-DGED_PLUGIN)
+ged_plugin_library(ged-adc SHARED adc.c)
+target_link_libraries(ged-adc libged libbu)
+set_property(TARGET ged-adc APPEND PROPERTY COMPILE_DEFINITIONS BRLCADBUILD
HAVE_CONFIG_H)
+VALIDATE_STYLE(ged-adc adc.c)
+PLUGIN_SETUP(ged-adc ged)
+
+CMAKEFILES(
+ CMakeLists.txt
+ adc.c
+ )
+
+# Local Variables:
+# tab-width: 8
+# mode: cmake
+# indent-tabs-mode: t
+# End:
+# ex: shiftwidth=2 tabstop=8
Modified: brlcad/trunk/src/libged/adc/adc.c
===================================================================
--- brlcad/trunk/src/libged/adc/adc.c 2020-07-24 13:46:02 UTC (rev 76465)
+++ brlcad/trunk/src/libged/adc/adc.c 2020-07-24 14:39:33 UTC (rev 76466)
@@ -105,7 +105,7 @@
* that multiple attributes can be set with a single command call.
*/
int
-ged_adc(struct ged *gedp,
+ged_adc_core(struct ged *gedp,
int argc,
const char *argv[])
{
@@ -698,7 +698,25 @@
gvp->gv_adc.dst = (gvp->gv_adc.dv_dist * INV_GED + 1.0) * M_SQRT1_2;
}
+#ifdef GED_PLUGIN
+#include "../include/plugin.h"
+struct ged_cmd_impl adc_cmd_impl = {
+ "adc",
+ ged_adc_core,
+ GED_CMD_DEFAULT
+};
+const struct ged_cmd adc_cmd = { &adc_cmd_impl };
+const struct ged_cmd *adc_cmds[] = { &adc_cmd, NULL };
+
+static const struct ged_plugin pinfo = { adc_cmds, 1 };
+
+COMPILER_DLLEXPORT const struct ged_plugin *ged_plugin_info()
+{
+ return &pinfo;
+}
+#endif /* GED_PLUGIN */
+
/*
* Local Variables:
* mode: C
Copied: brlcad/trunk/src/libged/adjust/CMakeLists.txt (from rev 76465,
brlcad/branches/gedplugins/src/libged/adjust/CMakeLists.txt)
===================================================================
--- brlcad/trunk/src/libged/adjust/CMakeLists.txt
(rev 0)
+++ brlcad/trunk/src/libged/adjust/CMakeLists.txt 2020-07-24 14:39:33 UTC
(rev 76466)
@@ -0,0 +1,26 @@
+include_directories(
+ ${CMAKE_CURRENT_SOURCE_DIR}
+ ${BRLCAD_BINARY_DIR}/include
+ ${BRLCAD_SOURCE_DIR}/include
+ ${BU_INCLUDE_DIRS}
+ ${GED_INCLUDE_DIRS}
+ )
+
+add_definitions(-DGED_PLUGIN)
+ged_plugin_library(ged-adjust SHARED adjust.c)
+target_link_libraries(ged-adjust libged libbu)
+set_property(TARGET ged-adjust APPEND PROPERTY COMPILE_DEFINITIONS BRLCADBUILD
HAVE_CONFIG_H)
+VALIDATE_STYLE(ged-adjust adjust.c)
+PLUGIN_SETUP(ged-adjust ged)
+
+CMAKEFILES(
+ CMakeLists.txt
+ adjust.c
+ )
+
+# Local Variables:
+# tab-width: 8
+# mode: cmake
+# indent-tabs-mode: t
+# End:
+# ex: shiftwidth=2 tabstop=8
Modified: brlcad/trunk/src/libged/adjust/adjust.c
===================================================================
--- brlcad/trunk/src/libged/adjust/adjust.c 2020-07-24 13:46:02 UTC (rev
76465)
+++ brlcad/trunk/src/libged/adjust/adjust.c 2020-07-24 14:39:33 UTC (rev
76466)
@@ -33,7 +33,7 @@
int
-ged_adjust(struct ged *gedp, int argc, const char *argv[])
+ged_adjust_core(struct ged *gedp, int argc, const char *argv[])
{
int status;
struct directory *dp;
@@ -85,10 +85,29 @@
}
+#ifdef GED_PLUGIN
+#include "../include/plugin.h"
+struct ged_cmd_impl adjust_cmd_impl = {
+ "adjust",
+ ged_adjust_core,
+ GED_CMD_DEFAULT
+};
+
+const struct ged_cmd adjust_cmd = { &adjust_cmd_impl };
+const struct ged_cmd *adjust_cmds[] = { &adjust_cmd, NULL };
+
+static const struct ged_plugin pinfo = { adjust_cmds, 1 };
+
+COMPILER_DLLEXPORT const struct ged_plugin *ged_plugin_info()
+{
+ return &pinfo;
+}
+#endif /* GED_PLUGIN */
+
/*
* Local Variables:
+ * mode: C
* tab-width: 8
- * mode: C
* indent-tabs-mode: t
* c-file-style: "stroustrup"
* End:
Copied: brlcad/trunk/src/libged/ae2dir/CMakeLists.txt (from rev 76465,
brlcad/branches/gedplugins/src/libged/ae2dir/CMakeLists.txt)
===================================================================
--- brlcad/trunk/src/libged/ae2dir/CMakeLists.txt
(rev 0)
+++ brlcad/trunk/src/libged/ae2dir/CMakeLists.txt 2020-07-24 14:39:33 UTC
(rev 76466)
@@ -0,0 +1,26 @@
+include_directories(
+ ${CMAKE_CURRENT_SOURCE_DIR}
+ ${BRLCAD_BINARY_DIR}/include
+ ${BRLCAD_SOURCE_DIR}/include
+ ${BU_INCLUDE_DIRS}
+ ${GED_INCLUDE_DIRS}
+ )
+
+add_definitions(-DGED_PLUGIN)
+ged_plugin_library(ged-ae2dir SHARED ae2dir.c)
+target_link_libraries(ged-ae2dir libged libbu)
+set_property(TARGET ged-ae2dir APPEND PROPERTY COMPILE_DEFINITIONS BRLCADBUILD
HAVE_CONFIG_H)
+VALIDATE_STYLE(ged-ae2dir ae2dir.c)
+PLUGIN_SETUP(ged-ae2dir ged)
+
+CMAKEFILES(
+ CMakeLists.txt
+ ae2dir.c
+ )
+
+# Local Variables:
+# tab-width: 8
+# mode: cmake
+# indent-tabs-mode: t
+# End:
+# ex: shiftwidth=2 tabstop=8
Modified: brlcad/trunk/src/libged/ae2dir/ae2dir.c
===================================================================
--- brlcad/trunk/src/libged/ae2dir/ae2dir.c 2020-07-24 13:46:02 UTC (rev
76465)
+++ brlcad/trunk/src/libged/ae2dir/ae2dir.c 2020-07-24 14:39:33 UTC (rev
76466)
@@ -33,7 +33,7 @@
int
-ged_ae2dir(struct ged *gedp, int argc, const char *argv[])
+ged_ae2dir_core(struct ged *gedp, int argc, const char *argv[])
{
double az, el;
vect_t dir;
@@ -83,10 +83,29 @@
}
+#ifdef GED_PLUGIN
+#include "../include/plugin.h"
+struct ged_cmd_impl ae2dir_cmd_impl = {
+ "ae2dir",
+ ged_ae2dir_core,
+ GED_CMD_DEFAULT
+};
+
+const struct ged_cmd ae2dir_cmd = { &ae2dir_cmd_impl };
+const struct ged_cmd *ae2dir_cmds[] = { &ae2dir_cmd, NULL };
+
+static const struct ged_plugin pinfo = { ae2dir_cmds, 1 };
+
+COMPILER_DLLEXPORT const struct ged_plugin *ged_plugin_info()
+{
+ return &pinfo;
+}
+#endif /* GED_PLUGIN */
+
/*
* Local Variables:
+ * mode: C
* tab-width: 8
- * mode: C
* indent-tabs-mode: t
* c-file-style: "stroustrup"
* End:
Copied: brlcad/trunk/src/libged/analyze/CMakeLists.txt (from rev 76465,
brlcad/branches/gedplugins/src/libged/analyze/CMakeLists.txt)
===================================================================
--- brlcad/trunk/src/libged/analyze/CMakeLists.txt
(rev 0)
+++ brlcad/trunk/src/libged/analyze/CMakeLists.txt 2020-07-24 14:39:33 UTC
(rev 76466)
@@ -0,0 +1,26 @@
+include_directories(
+ ${CMAKE_CURRENT_SOURCE_DIR}
+ ${BRLCAD_BINARY_DIR}/include
+ ${BRLCAD_SOURCE_DIR}/include
+ ${BU_INCLUDE_DIRS}
+ ${GED_INCLUDE_DIRS}
+ )
+
+add_definitions(-DGED_PLUGIN)
+ged_plugin_library(ged-analyze SHARED analyze.c)
+target_link_libraries(ged-analyze libged libbu)
+set_property(TARGET ged-analyze APPEND PROPERTY COMPILE_DEFINITIONS
BRLCADBUILD HAVE_CONFIG_H)
+VALIDATE_STYLE(ged-analyze analyze.c)
+PLUGIN_SETUP(ged-analyze ged)
+
+CMAKEFILES(
+ CMakeLists.txt
+ analyze.c
+ )
+
+# Local Variables:
+# tab-width: 8
+# mode: cmake
+# indent-tabs-mode: t
+# End:
+# ex: shiftwidth=2 tabstop=8
Modified: brlcad/trunk/src/libged/analyze/analyze.c
===================================================================
--- brlcad/trunk/src/libged/analyze/analyze.c 2020-07-24 13:46:02 UTC (rev
76465)
+++ brlcad/trunk/src/libged/analyze/analyze.c 2020-07-24 14:39:33 UTC (rev
76466)
@@ -29,8 +29,6 @@
#include <string.h>
#include <assert.h>
-
-
#include "vmath.h"
#include "bn.h"
#include "bg/polygon.h"
@@ -1278,7 +1276,7 @@
int
-ged_analyze(struct ged *gedp, int argc, const char *argv[])
+ged_analyze_core(struct ged *gedp, int argc, const char *argv[])
{
struct directory *ndp;
int i;
@@ -1313,6 +1311,25 @@
}
+#ifdef GED_PLUGIN
+#include "../include/plugin.h"
+struct ged_cmd_impl analyze_cmd_impl = {
+ "analyze",
+ ged_analyze_core,
+ GED_CMD_DEFAULT
+};
+
+const struct ged_cmd analyze_cmd = { &analyze_cmd_impl };
+const struct ged_cmd *analyze_cmds[] = { &analyze_cmd, NULL };
+
+static const struct ged_plugin pinfo = { analyze_cmds, 1 };
+
+COMPILER_DLLEXPORT const struct ged_plugin *ged_plugin_info()
+{
+ return &pinfo;
+}
+#endif /* GED_PLUGIN */
+
/*
* Local Variables:
* mode: C
Copied: brlcad/trunk/src/libged/annotate/CMakeLists.txt (from rev 76465,
brlcad/branches/gedplugins/src/libged/annotate/CMakeLists.txt)
===================================================================
--- brlcad/trunk/src/libged/annotate/CMakeLists.txt
(rev 0)
+++ brlcad/trunk/src/libged/annotate/CMakeLists.txt 2020-07-24 14:39:33 UTC
(rev 76466)
@@ -0,0 +1,26 @@
+include_directories(
+ ${CMAKE_CURRENT_SOURCE_DIR}
+ ${BRLCAD_BINARY_DIR}/include
+ ${BRLCAD_SOURCE_DIR}/include
+ ${BU_INCLUDE_DIRS}
+ ${GED_INCLUDE_DIRS}
+ )
+
+add_definitions(-DGED_PLUGIN)
+ged_plugin_library(ged-annotate SHARED annotate.c)
+target_link_libraries(ged-annotate libged libbu)
+set_property(TARGET ged-annotate APPEND PROPERTY COMPILE_DEFINITIONS
BRLCADBUILD HAVE_CONFIG_H)
+VALIDATE_STYLE(ged-annotate annotate.c)
+PLUGIN_SETUP(ged-annotate ged)
+
+CMAKEFILES(
+ CMakeLists.txt
+ annotate.c
+ )
+
+# Local Variables:
+# tab-width: 8
+# mode: cmake
+# indent-tabs-mode: t
+# End:
+# ex: shiftwidth=2 tabstop=8
Modified: brlcad/trunk/src/libged/annotate/annotate.c
===================================================================
--- brlcad/trunk/src/libged/annotate/annotate.c 2020-07-24 13:46:02 UTC (rev
76465)
+++ brlcad/trunk/src/libged/annotate/annotate.c 2020-07-24 14:39:33 UTC (rev
76466)
@@ -119,7 +119,7 @@
int
-ged_annotate(struct ged *gedp, int argc, const char *argv[])
+ged_annotate_core(struct ged *gedp, int argc, const char *argv[])
{
char **object_argv;
const char *argv0 = argv[0];
@@ -163,16 +163,35 @@
}
bu_vls_free(&objects);
- bu_free((void *)object_argv, "ged_annotate");
+ bu_free((void *)object_argv, "ged_annotate_core");
return GED_OK;
}
+#ifdef GED_PLUGIN
+#include "../include/plugin.h"
+struct ged_cmd_impl annotate_cmd_impl = {
+ "annotate",
+ ged_annotate_core,
+ GED_CMD_DEFAULT
+};
+
+const struct ged_cmd annotate_cmd = { &annotate_cmd_impl };
+const struct ged_cmd *annotate_cmds[] = { &annotate_cmd, NULL };
+
+static const struct ged_plugin pinfo = { annotate_cmds, 1 };
+
+COMPILER_DLLEXPORT const struct ged_plugin *ged_plugin_info()
+{
+ return &pinfo;
+}
+#endif /* GED_PLUGIN */
+
/*
* Local Variables:
+ * mode: C
* tab-width: 8
- * mode: C
* indent-tabs-mode: t
* c-file-style: "stroustrup"
* End:
Copied: brlcad/trunk/src/libged/arb/CMakeLists.txt (from rev 76465,
brlcad/branches/gedplugins/src/libged/arb/CMakeLists.txt)
===================================================================
--- brlcad/trunk/src/libged/arb/CMakeLists.txt (rev 0)
+++ brlcad/trunk/src/libged/arb/CMakeLists.txt 2020-07-24 14:39:33 UTC (rev
76466)
@@ -0,0 +1,31 @@
+include_directories(
+ ${CMAKE_CURRENT_SOURCE_DIR}
+ ${BRLCAD_BINARY_DIR}/include
+ ${BRLCAD_SOURCE_DIR}/include
+ ${BU_INCLUDE_DIRS}
+ ${GED_INCLUDE_DIRS}
+ )
+
+set(arb_srcs
+ arb.c
+ rotate_arb_face.c
+ )
+
+add_definitions(-DGED_PLUGIN)
+ged_plugin_library(ged-arb SHARED ${arb_srcs})
+target_link_libraries(ged-arb libged libbu)
+set_property(TARGET ged-arb APPEND PROPERTY COMPILE_DEFINITIONS BRLCADBUILD
HAVE_CONFIG_H)
+VALIDATE_STYLE(ged-arb ${arb_srcs})
+PLUGIN_SETUP(ged-arb ged)
+
+CMAKEFILES(
+ CMakeLists.txt
+ ${arb_srcs}
+ )
+
+# Local Variables:
+# tab-width: 8
+# mode: cmake
+# indent-tabs-mode: t
+# End:
+# ex: shiftwidth=2 tabstop=8
Modified: brlcad/trunk/src/libged/arb/arb.c
===================================================================
--- brlcad/trunk/src/libged/arb/arb.c 2020-07-24 13:46:02 UTC (rev 76465)
+++ brlcad/trunk/src/libged/arb/arb.c 2020-07-24 14:39:33 UTC (rev 76466)
@@ -35,7 +35,7 @@
int
-ged_arb(struct ged *gedp, int argc, const char *argv[])
+ged_arb_core(struct ged *gedp, int argc, const char *argv[])
{
struct directory *dp;
struct rt_db_internal internal;
@@ -129,10 +129,29 @@
}
+#ifdef GED_PLUGIN
+#include "../include/plugin.h"
+struct ged_cmd_impl arb_cmd_impl = {"arb", ged_arb_core, GED_CMD_DEFAULT};
+const struct ged_cmd arb_cmd = { &arb_cmd_impl };
+
+extern int ged_rotate_arb_face_core(struct ged *gedp, int argc, const char
*argv[]);
+struct ged_cmd_impl rotate_arb_face_cmd_impl = {"rotate_arb_face",
ged_rotate_arb_face_core, GED_CMD_DEFAULT};
+const struct ged_cmd rotate_arb_face_cmd = { &rotate_arb_face_cmd_impl };
+
+const struct ged_cmd *arb_cmds[] = { &arb_cmd, &rotate_arb_face_cmd, NULL };
+
+static const struct ged_plugin pinfo = { arb_cmds, 2 };
+
+COMPILER_DLLEXPORT const struct ged_plugin *ged_plugin_info()
+{
+ return &pinfo;
+}
+#endif /* GED_PLUGIN */
+
/*
* Local Variables:
+ * mode: C
* tab-width: 8
- * mode: C
* indent-tabs-mode: t
* c-file-style: "stroustrup"
* End:
Copied: brlcad/trunk/src/libged/arb/rotate_arb_face.c (from rev 76465,
brlcad/branches/gedplugins/src/libged/arb/rotate_arb_face.c)
===================================================================
--- brlcad/trunk/src/libged/arb/rotate_arb_face.c
(rev 0)
+++ brlcad/trunk/src/libged/arb/rotate_arb_face.c 2020-07-24 14:39:33 UTC
(rev 76466)
@@ -0,0 +1,232 @@
+/* R O T A T E _ A R B _ F A C E . C
+ * BRL-CAD
+ *
+ * Copyright (c) 2008-2020 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 libged/rotate_arb_face.c
+ *
+ * The rotate_arb_face command.
+ *
+ */
+
+#include "common.h"
+
+#include <string.h>
+
+#include "bu/cmd.h"
+#include "rt/geom.h"
+
+#include "../ged_private.h"
+
+
+static const short int arb_vertices[5][24] = {
+ { 1, 2, 3, 0, 1, 2, 4, 0, 2, 3, 4, 0, 1, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0
}, /* arb4 */
+ { 1, 2, 3, 4, 1, 2, 5, 0, 2, 3, 5, 0, 3, 4, 5, 0, 1, 4, 5, 0, 0, 0, 0, 0
}, /* arb5 */
+ { 1, 2, 3, 4, 2, 3, 6, 5, 1, 5, 6, 4, 1, 2, 5, 0, 3, 4, 6, 0, 0, 0, 0, 0
}, /* arb6 */
+ { 1, 2, 3, 4, 5, 6, 7, 0, 1, 4, 5, 0, 2, 3, 7, 6, 1, 2, 6, 5, 4, 3, 7, 5
}, /* arb7 */
+ { 1, 2, 3, 4, 5, 6, 7, 8, 1, 5, 8, 4, 2, 3, 7, 6, 1, 2, 6, 5, 4, 3, 7, 8 }
/* arb8 */
+};
+
+
+int
+ged_rotate_arb_face_core(struct ged *gedp, int argc, const char *argv[])
+{
+ struct rt_db_internal intern;
+ struct rt_arb_internal *arb;
+ struct directory *dp;
+ fastf_t planes[7][4]; /* ARBs defining plane equations */
+ int arb_type;
+ int face;
+ int vi;
+ mat_t mat;
+ int i;
+ int pnt5; /* special arb7 case */
+ char *last;
+
+ /* intentionally double for scan */
+ double pt[3];
+
+ static const char *usage = "arb face pt rvec";
+
+ GED_CHECK_DATABASE_OPEN(gedp, GED_ERROR);
+ GED_CHECK_READ_ONLY(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 != 5) {
+ bu_vls_printf(gedp->ged_result_str, "Usage: %s %s", argv[0], usage);
+ return GED_ERROR;
+ }
+
+ if ((last = strrchr(argv[1], '/')) == NULL)
+ last = (char *)argv[1];
+ else
+ ++last;
+
+ if (last[0] == '\0') {
+ bu_vls_printf(gedp->ged_result_str, "illegal input - %s", argv[1]);
+ return GED_ERROR;
+ }
+
+ if ((dp = db_lookup(gedp->ged_wdbp->dbip, last, LOOKUP_QUIET)) ==
RT_DIR_NULL) {
+ bu_vls_printf(gedp->ged_result_str, "%s not found", argv[1]);
+ return GED_ERROR;
+ }
+
+ if (wdb_import_from_path2(gedp->ged_result_str, &intern, argv[1],
gedp->ged_wdbp, mat) == GED_ERROR)
+ return GED_ERROR;
+
+ if (intern.idb_major_type != DB5_MAJORTYPE_BRLCAD ||
+ intern.idb_minor_type != DB5_MINORTYPE_BRLCAD_ARB8) {
+ bu_vls_printf(gedp->ged_result_str, "Object not an ARB");
+ rt_db_free_internal(&intern);
+
+ return GED_OK;
+ }
+
+ if (sscanf(argv[2], "%d", &face) != 1) {
+ bu_vls_printf(gedp->ged_result_str, "bad face - %s", argv[2]);
+ rt_db_free_internal(&intern);
+
+ return GED_ERROR;
+ }
+
+ /*XXX need better checking of the face */
+ face -= 1;
+ if (face < 0 || 5 < face) {
+ bu_vls_printf(gedp->ged_result_str, "bad face - %s", argv[2]);
+ rt_db_free_internal(&intern);
+
+ return GED_ERROR;
+ }
+
+ if (sscanf(argv[3], "%d", &vi) != 1) {
+ bu_vls_printf(gedp->ged_result_str, "bad vertex index - %s", argv[2]);
+ rt_db_free_internal(&intern);
+
+ return GED_ERROR;
+ }
+
+
+ /*XXX need better checking of the vertex index */
+ vi -= 1;
+ if (vi < 0 || 7 < vi) {
+ bu_vls_printf(gedp->ged_result_str, "bad vertex - %s", argv[2]);
+ rt_db_free_internal(&intern);
+
+ return GED_ERROR;
+ }
+
+ if (sscanf(argv[4], "%lf %lf %lf", &pt[X], &pt[Y], &pt[Z]) != 3) {
+ bu_vls_printf(gedp->ged_result_str, "bad point - %s", argv[3]);
+ rt_db_free_internal(&intern);
+
+ return GED_ERROR;
+ }
+
+ arb = (struct rt_arb_internal *)intern.idb_ptr;
+ RT_ARB_CK_MAGIC(arb);
+
+ arb_type = rt_arb_std_type(&intern, &gedp->ged_wdbp->wdb_tol);
+
+ if (rt_arb_calc_planes(gedp->ged_result_str, arb, arb_type, planes,
&gedp->ged_wdbp->wdb_tol)) {
+ rt_db_free_internal(&intern);
+
+ return GED_ERROR;
+ }
+
+ /* special case for arb4 */
+ if (arb_type == ARB4 && vi >= 3)
+ vi = 4;
+
+ /* special case for arb6 */
+ if (arb_type == ARB6 && vi >= 5)
+ vi = 6;
+
+ /* special case for arb7 */
+ if (arb_type == ARB7) {
+ /* check if point 5 is in the face */
+ pnt5 = 0;
+ for (i = 0; i < 4; i++) {
+ if (arb_vertices[arb_type-4][face*4+i]==5)
+ pnt5=1;
+ }
+
+ if (pnt5)
+ vi = 4;
+ }
+
+ {
+ /* Apply incremental changes */
+ vect_t tempvec;
+ vect_t work;
+ fastf_t *plane;
+ mat_t rmat;
+
+ bn_mat_angles(rmat, pt[X], pt[Y], pt[Z]);
+
+ plane = &planes[face][0];
+ VMOVE(work, plane);
+ MAT4X3VEC(plane, rmat, work);
+
+ /* point notation of fixed vertex */
+ VMOVE(tempvec, arb->pt[vi]);
+
+ /* set D of planar equation to anchor at fixed vertex */
+ planes[face][3]=VDOT(plane, tempvec);
+ }
+
+ /* calculate new points for the arb */
+ (void)rt_arb_calc_points(arb, arb_type, (const plane_t *)planes,
&gedp->ged_wdbp->wdb_tol);
+
+ {
+ mat_t invmat;
+
+ bn_mat_inv(invmat, mat);
+
+ for (i = 0; i < 8; ++i) {
+ point_t arb_pt;
+
+ MAT4X3PNT(arb_pt, invmat, arb->pt[i]);
+ VMOVE(arb->pt[i], arb_pt);
+ }
+
+ GED_DB_PUT_INTERNAL(gedp, dp, &intern, &rt_uniresource, GED_ERROR);
+ }
+
+ rt_db_free_internal(&intern);
+ return GED_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/arced/CMakeLists.txt (from rev 76465,
brlcad/branches/gedplugins/src/libged/arced/CMakeLists.txt)
===================================================================
--- brlcad/trunk/src/libged/arced/CMakeLists.txt
(rev 0)
+++ brlcad/trunk/src/libged/arced/CMakeLists.txt 2020-07-24 14:39:33 UTC
(rev 76466)
@@ -0,0 +1,26 @@
+include_directories(
+ ${CMAKE_CURRENT_SOURCE_DIR}
+ ${BRLCAD_BINARY_DIR}/include
+ ${BRLCAD_SOURCE_DIR}/include
+ ${BU_INCLUDE_DIRS}
+ ${GED_INCLUDE_DIRS}
+ )
+
+add_definitions(-DGED_PLUGIN)
+ged_plugin_library(ged-arced SHARED arced.c)
+target_link_libraries(ged-arced libged libbu)
+set_property(TARGET ged-arced APPEND PROPERTY COMPILE_DEFINITIONS BRLCADBUILD
HAVE_CONFIG_H)
+VALIDATE_STYLE(ged-arced arced.c)
+PLUGIN_SETUP(ged-arced ged)
+
+CMAKEFILES(
+ CMakeLists.txt
+ arced.c
+ )
+
+# Local Variables:
+# tab-width: 8
+# mode: cmake
+# indent-tabs-mode: t
+# End:
+# ex: shiftwidth=2 tabstop=8
Modified: brlcad/trunk/src/libged/arced/arced.c
===================================================================
--- brlcad/trunk/src/libged/arced/arced.c 2020-07-24 13:46:02 UTC (rev
76465)
+++ brlcad/trunk/src/libged/arced/arced.c 2020-07-24 14:39:33 UTC (rev
76466)
@@ -31,7 +31,7 @@
int
-ged_arced(struct ged *gedp, int argc, const char *argv[])
+ged_arced_core(struct ged *gedp, int argc, const char *argv[])
{
struct animate *anp;
struct directory *dp;
@@ -133,10 +133,29 @@
}
+#ifdef GED_PLUGIN
+#include "../include/plugin.h"
+struct ged_cmd_impl arced_cmd_impl = {
+ "arced",
+ ged_arced_core,
+ GED_CMD_DEFAULT
+};
+
+const struct ged_cmd arced_cmd = { &arced_cmd_impl };
+const struct ged_cmd *arced_cmds[] = { &arced_cmd, NULL };
+
+static const struct ged_plugin pinfo = { arced_cmds, 1 };
+
+COMPILER_DLLEXPORT const struct ged_plugin *ged_plugin_info()
+{
+ return &pinfo;
+}
+#endif /* GED_PLUGIN */
+
/*
* Local Variables:
+ * mode: C
* tab-width: 8
- * mode: C
* indent-tabs-mode: t
* c-file-style: "stroustrup"
* End:
Copied: brlcad/trunk/src/libged/arot/CMakeLists.txt (from rev 76465,
brlcad/branches/gedplugins/src/libged/arot/CMakeLists.txt)
===================================================================
--- brlcad/trunk/src/libged/arot/CMakeLists.txt (rev 0)
+++ brlcad/trunk/src/libged/arot/CMakeLists.txt 2020-07-24 14:39:33 UTC (rev
76466)
@@ -0,0 +1,26 @@
+include_directories(
+ ${CMAKE_CURRENT_SOURCE_DIR}
+ ${BRLCAD_BINARY_DIR}/include
+ ${BRLCAD_SOURCE_DIR}/include
+ ${BU_INCLUDE_DIRS}
+ ${GED_INCLUDE_DIRS}
+ )
+
+add_definitions(-DGED_PLUGIN)
+ged_plugin_library(ged-arot SHARED arot.c)
+target_link_libraries(ged-arot libged libbu)
+set_property(TARGET ged-arot APPEND PROPERTY COMPILE_DEFINITIONS BRLCADBUILD
HAVE_CONFIG_H)
+VALIDATE_STYLE(ged-arot arot.c)
+PLUGIN_SETUP(ged-arot ged)
+
+CMAKEFILES(
+ CMakeLists.txt
+ arot.c
+ )
+
+# Local Variables:
+# tab-width: 8
+# mode: cmake
+# indent-tabs-mode: t
+# End:
+# ex: shiftwidth=2 tabstop=8
Modified: brlcad/trunk/src/libged/arot/arot.c
===================================================================
--- brlcad/trunk/src/libged/arot/arot.c 2020-07-24 13:46:02 UTC (rev 76465)
+++ brlcad/trunk/src/libged/arot/arot.c 2020-07-24 14:39:33 UTC (rev 76466)
@@ -31,63 +31,9 @@
#include "../ged_private.h"
-int
-ged_arot_args(struct ged *gedp, int argc, const char *argv[], mat_t rmat)
-{
- point_t pt = VINIT_ZERO;
- vect_t axisv;
- double axis[3]; /* not fastf_t due to sscanf */
- double angle; /* not fastf_t due to sscanf */
- static const char *usage = "x y z angle";
- GED_CHECK_DATABASE_OPEN(gedp, GED_ERROR);
- GED_CHECK_VIEW(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 != 5) {
- bu_vls_printf(gedp->ged_result_str, "Usage: %s %s", argv[0], usage);
- return GED_ERROR;
- }
-
- if (sscanf(argv[1], "%lf", &axis[X]) != 1) {
- bu_vls_printf(gedp->ged_result_str, "%s: bad X value - %s\n", argv[0],
argv[1]);
- return GED_ERROR;
- }
-
- if (sscanf(argv[2], "%lf", &axis[Y]) != 1) {
- bu_vls_printf(gedp->ged_result_str, "%s: bad Y value - %s\n", argv[0],
argv[2]);
- return GED_ERROR;
- }
-
- if (sscanf(argv[3], "%lf", &axis[Z]) != 1) {
- bu_vls_printf(gedp->ged_result_str, "%s: bad Z value - %s\n", argv[0],
argv[3]);
- return GED_ERROR;
- }
-
- if (sscanf(argv[4], "%lf", &angle) != 1) {
- bu_vls_printf(gedp->ged_result_str, "%s: bad angle - %s\n", argv[0],
argv[4]);
- return GED_ERROR;
- }
-
- VUNITIZE(axis);
- VMOVE(axisv, axis);
- bn_mat_arb_rot(rmat, pt, axisv, angle*DEG2RAD);
-
- return GED_OK;
-}
-
-
int
-ged_arot(struct ged *gedp, int argc, const char *argv[])
+ged_arot_core(struct ged *gedp, int argc, const char *argv[])
{
int ret;
mat_t rmat;
@@ -99,10 +45,29 @@
}
+#ifdef GED_PLUGIN
+#include "../include/plugin.h"
+struct ged_cmd_impl arot_cmd_impl = {
+ "arot",
+ ged_arot_core,
+ GED_CMD_DEFAULT
+};
+
+const struct ged_cmd arot_cmd = { &arot_cmd_impl };
+const struct ged_cmd *arot_cmds[] = { &arot_cmd, NULL };
+
+static const struct ged_plugin pinfo = { arot_cmds, 1 };
+
+COMPILER_DLLEXPORT const struct ged_plugin *ged_plugin_info()
+{
+ return &pinfo;
+}
+#endif /* GED_PLUGIN */
+
/*
* Local Variables:
+ * mode: C
* tab-width: 8
- * mode: C
* indent-tabs-mode: t
* c-file-style: "stroustrup"
* End:
Copied: brlcad/trunk/src/libged/attr/CMakeLists.txt (from rev 76465,
brlcad/branches/gedplugins/src/libged/attr/CMakeLists.txt)
===================================================================
--- brlcad/trunk/src/libged/attr/CMakeLists.txt (rev 0)
+++ brlcad/trunk/src/libged/attr/CMakeLists.txt 2020-07-24 14:39:33 UTC (rev
76466)
@@ -0,0 +1,26 @@
+include_directories(
+ ${CMAKE_CURRENT_SOURCE_DIR}
+ ${BRLCAD_BINARY_DIR}/include
+ ${BRLCAD_SOURCE_DIR}/include
+ ${BU_INCLUDE_DIRS}
+ ${GED_INCLUDE_DIRS}
+ )
+
+add_definitions(-DGED_PLUGIN)
+ged_plugin_library(ged-attr SHARED attr.cpp)
+target_link_libraries(ged-attr libged libbu)
+set_property(TARGET ged-attr APPEND PROPERTY COMPILE_DEFINITIONS BRLCADBUILD
HAVE_CONFIG_H)
+VALIDATE_STYLE(ged-attr attr.cpp)
+PLUGIN_SETUP(ged-attr ged)
+
+CMAKEFILES(
+ CMakeLists.txt
+ attr.cpp
+ )
+
+# Local Variables:
+# tab-width: 8
+# mode: cmake
+# indent-tabs-mode: t
+# End:
+# ex: shiftwidth=2 tabstop=8
Modified: brlcad/trunk/src/libged/attr/attr.cpp
===================================================================
--- brlcad/trunk/src/libged/attr/attr.cpp 2020-07-24 13:46:02 UTC (rev
76465)
+++ brlcad/trunk/src/libged/attr/attr.cpp 2020-07-24 14:39:33 UTC (rev
76466)
@@ -288,8 +288,8 @@
}
-int
-ged_attr(struct ged *gedp, int argc, const char *argv[])
+extern "C" int
+ged_attr_core(struct ged *gedp, int argc, const char *argv[])
{
int ret = GED_OK;
size_t i;
@@ -357,7 +357,7 @@
if (path_cnt == 0) {
bu_vls_printf(gedp->ged_result_str, "Cannot locate objects matching
%s\n", argv[2]);
ret = GED_ERROR;
- goto ged_attr_memfree;
+ goto ged_attr_core_memfree;
}
if (scmd == ATTR_SORT) {
@@ -374,7 +374,7 @@
if (db5_get_attributes(gedp->ged_wdbp->dbip, &avs, dp)) {
bu_vls_printf(gedp->ged_result_str, "Cannot get attributes for
object %s\n", dp->d_namep);
ret = GED_ERROR;
- goto ged_attr_memfree;
+ goto ged_attr_core_memfree;
}
bu_sort(&avs.avp[0], avs.count, sizeof(struct
bu_attribute_value_pair), attr_cmp, NULL);
/* get a jump on calculating name and value lengths */
@@ -389,7 +389,7 @@
/* pretty print */
if ((attr_pretty_print(gedp, dp, argv[2])) != GED_OK) {
ret = GED_ERROR;
- goto ged_attr_memfree;
+ goto ged_attr_core_memfree;
}
if (argc == 3) {
/* just list the already sorted attribute-value pairs */
@@ -420,7 +420,7 @@
if (db5_get_attributes(gedp->ged_wdbp->dbip, &avs, dp)) {
bu_vls_printf(gedp->ged_result_str, "Cannot get attributes for
object %s\n", dp->d_namep);
ret = GED_ERROR;
- goto ged_attr_memfree;
+ goto ged_attr_core_memfree;
}
bu_sort(&avs.avp[0], avs.count, sizeof(struct
bu_attribute_value_pair), attr_cmp, NULL);
@@ -449,7 +449,7 @@
argv[i]);
bu_avs_free(&avs);
ret = GED_ERROR;
- goto ged_attr_memfree;
+ goto ged_attr_core_memfree;
}
if (do_separators) {
if (c_sep == -1)
@@ -477,7 +477,7 @@
if (db5_get_attributes(gedp->ged_wdbp->dbip, &avs, dp)) {
bu_vls_printf(gedp->ged_result_str, "Cannot get attributes
for object %s\n", dp->d_namep);
ret = GED_ERROR;
- goto ged_attr_memfree;
+ goto ged_attr_core_memfree;
}
bu_sort(&avs.avp[0], avs.count, sizeof(struct
bu_attribute_value_pair), attr_cmp, NULL);
@@ -550,7 +550,7 @@
if (db5_get_attributes(gedp->ged_wdbp->dbip, &lavs, dp)) {
bu_vls_printf(gedp->ged_result_str, "Cannot get attributes for
object %s\n", dp->d_namep);
ret = GED_ERROR;
- goto ged_attr_memfree;
+ goto ged_attr_core_memfree;
}
val = bu_avs_get(&lavs, oattr);
if (val) {
@@ -561,7 +561,7 @@
"Error: failed to update attributes\n");
bu_avs_free(&lavs);
ret = GED_ERROR;
- goto ged_attr_memfree;
+ goto ged_attr_core_memfree;
}
/* lavs is freed by db5_update_attributes() */
} else {
@@ -576,7 +576,7 @@
bu_vls_printf(gedp->ged_result_str,
"Error: attribute names and values must be in pairs!!!\n");
ret = GED_ERROR;
- goto ged_attr_memfree;
+ goto ged_attr_core_memfree;
}
for (i = 0; i < path_cnt; i++) {
size_t j = 3;
@@ -587,7 +587,7 @@
if (db5_get_attributes(gedp->ged_wdbp->dbip, &avs, dp)) {
bu_vls_printf(gedp->ged_result_str, "Cannot get attributes for
object %s\n", dp->d_namep);
ret = GED_ERROR;
- goto ged_attr_memfree;
+ goto ged_attr_core_memfree;
}
bu_sort(&avs.avp[0], avs.count, sizeof(struct
bu_attribute_value_pair), attr_cmp, NULL);
while (j < (size_t)argc) {
@@ -603,7 +603,7 @@
"Error: failed to update attributes\n");
bu_avs_free(&avs);
ret = GED_ERROR;
- goto ged_attr_memfree;
+ goto ged_attr_core_memfree;
}
/* avs is freed by db5_update_attributes() */
}
@@ -619,7 +619,7 @@
if (db5_get_attributes(gedp->ged_wdbp->dbip, &avs, dp)) {
bu_vls_printf(gedp->ged_result_str, "Cannot get attributes for
object %s\n", dp->d_namep);
ret = GED_ERROR;
- goto ged_attr_memfree;
+ goto ged_attr_core_memfree;
}
bu_sort(&avs.avp[0], avs.count, sizeof(struct
bu_attribute_value_pair), attr_cmp, NULL);
@@ -635,7 +635,7 @@
"Error: failed to update attributes\n");
bu_avs_free(&avs);
ret = GED_ERROR;
- goto ged_attr_memfree;
+ goto ged_attr_core_memfree;
}
/* avs is freed by db5_replace_attributes() */
}
@@ -646,7 +646,7 @@
bu_vls_printf(gedp->ged_result_str,
"Error: attribute names and values must be in
pairs!!!\n");
ret = GED_ERROR;
- goto ged_attr_memfree;
+ goto ged_attr_core_memfree;
}
for (i = 0; i < path_cnt; i++) {
size_t j = 3;
@@ -657,7 +657,7 @@
if (db5_get_attributes(gedp->ged_wdbp->dbip, &avs, dp)) {
bu_vls_printf(gedp->ged_result_str, "Cannot get attributes for
object %s\n", dp->d_namep);
ret = GED_ERROR;
- goto ged_attr_memfree;
+ goto ged_attr_core_memfree;
}
bu_sort(&avs.avp[0], avs.count, sizeof(struct
bu_attribute_value_pair), attr_cmp, NULL);
@@ -685,7 +685,7 @@
"Error: failed to update attributes\n");
bu_avs_free(&avs);
ret = GED_ERROR;
- goto ged_attr_memfree;
+ goto ged_attr_core_memfree;
}
/* avs is freed by db5_replace_attributes() */
@@ -703,7 +703,7 @@
if (db5_get_attributes(gedp->ged_wdbp->dbip, &avs, dp)) {
bu_vls_printf(gedp->ged_result_str, "Cannot get attributes for
object %s\n", dp->d_namep);
ret = GED_ERROR;
- goto ged_attr_memfree;
+ goto ged_attr_core_memfree;
}
/* get a jump on calculating name and value lengths */
@@ -718,7 +718,7 @@
/* pretty print */
if ((attr_pretty_print(gedp, dp, dp->d_namep)) != GED_OK) {
ret = GED_ERROR;
- goto ged_attr_memfree;
+ goto ged_attr_core_memfree;
}
if (argc == 3) {
@@ -734,10 +734,10 @@
bu_vls_printf(gedp->ged_result_str, "Usage: %s %s", cmd_name, usage);
ret = GED_ERROR;
- goto ged_attr_memfree;
+ goto ged_attr_core_memfree;
}
-ged_attr_memfree:
+ged_attr_core_memfree:
bu_free(paths, "db_ls paths");
@@ -745,11 +745,29 @@
}
-// Local Variables:
-// tab-width: 8
-// mode: C++
-// c-basic-offset: 4
-// indent-tabs-mode: t
-// c-file-style: "stroustrup"
-// End:
-// ex: shiftwidth=4 tabstop=8
+
+#ifdef GED_PLUGIN
+#include "../include/plugin.h"
+extern "C" {
+ struct ged_cmd_impl attr_cmd_impl = { "attr", ged_attr_core,
GED_CMD_DEFAULT };
+ const struct ged_cmd attr_pcmd = { &attr_cmd_impl };
+ const struct ged_cmd *attr_cmds[] = { &attr_pcmd, NULL };
+
+ static const struct ged_plugin pinfo = { attr_cmds, 1 };
+
+ COMPILER_DLLEXPORT const struct ged_plugin *ged_plugin_info()
+ {
+ return &pinfo;
+ }
+}
+#endif
+
+/*
+ * 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/autoview/CMakeLists.txt (from rev 76465,
brlcad/branches/gedplugins/src/libged/autoview/CMakeLists.txt)
===================================================================
--- brlcad/trunk/src/libged/autoview/CMakeLists.txt
(rev 0)
+++ brlcad/trunk/src/libged/autoview/CMakeLists.txt 2020-07-24 14:39:33 UTC
(rev 76466)
@@ -0,0 +1,26 @@
+include_directories(
+ ${CMAKE_CURRENT_SOURCE_DIR}
+ ${BRLCAD_BINARY_DIR}/include
+ ${BRLCAD_SOURCE_DIR}/include
+ ${BU_INCLUDE_DIRS}
+ ${GED_INCLUDE_DIRS}
+ )
+
+add_definitions(-DGED_PLUGIN)
+ged_plugin_library(ged-autoview SHARED autoview.c)
+target_link_libraries(ged-autoview libged libbu)
+set_property(TARGET ged-autoview APPEND PROPERTY COMPILE_DEFINITIONS
BRLCADBUILD HAVE_CONFIG_H)
+VALIDATE_STYLE(ged-autoview autoview.c)
+PLUGIN_SETUP(ged-autoview ged)
+
+CMAKEFILES(
+ CMakeLists.txt
+ autoview.c
+ )
+
+# Local Variables:
+# tab-width: 8
+# mode: cmake
+# indent-tabs-mode: t
+# End:
+# ex: shiftwidth=2 tabstop=8
Modified: brlcad/trunk/src/libged/autoview/autoview.c
===================================================================
--- brlcad/trunk/src/libged/autoview/autoview.c 2020-07-24 13:46:02 UTC (rev
76465)
+++ brlcad/trunk/src/libged/autoview/autoview.c 2020-07-24 14:39:33 UTC (rev
76466)
@@ -24,8 +24,7 @@
*/
#include "common.h"
-
-
+#include "dm.h"
#include "../ged_private.h"
/*
@@ -36,7 +35,7 @@
*
*/
int
-ged_autoview(struct ged *gedp, int argc, const char *argv[])
+ged_autoview_core(struct ged *gedp, int argc, const char *argv[])
{
int is_empty = 1;
vect_t min, max;
@@ -111,10 +110,29 @@
}
+#ifdef GED_PLUGIN
+#include "../include/plugin.h"
+struct ged_cmd_impl autoview_cmd_impl = {
+ "autoview",
+ ged_autoview_core,
+ GED_CMD_DEFAULT
+};
+
+const struct ged_cmd autoview_cmd = { &autoview_cmd_impl };
+const struct ged_cmd *autoview_cmds[] = { &autoview_cmd, NULL };
+
+static const struct ged_plugin pinfo = { autoview_cmds, 1 };
+
+COMPILER_DLLEXPORT const struct ged_plugin *ged_plugin_info()
+{
+ return &pinfo;
+}
+#endif /* GED_PLUGIN */
+
/*
* Local Variables:
+ * mode: C
* tab-width: 8
- * mode: C
* indent-tabs-mode: t
* c-file-style: "stroustrup"
* End:
Copied: brlcad/trunk/src/libged/bb/CMakeLists.txt (from rev 76465,
brlcad/branches/gedplugins/src/libged/bb/CMakeLists.txt)
===================================================================
--- brlcad/trunk/src/libged/bb/CMakeLists.txt (rev 0)
+++ brlcad/trunk/src/libged/bb/CMakeLists.txt 2020-07-24 14:39:33 UTC (rev
76466)
@@ -0,0 +1,26 @@
+include_directories(
+ ${CMAKE_CURRENT_SOURCE_DIR}
+ ${BRLCAD_BINARY_DIR}/include
+ ${BRLCAD_SOURCE_DIR}/include
+ ${BU_INCLUDE_DIRS}
+ ${GED_INCLUDE_DIRS}
+ )
+
+add_definitions(-DGED_PLUGIN)
+ged_plugin_library(ged-bb SHARED bb.c)
+target_link_libraries(ged-bb libged libbu)
+set_property(TARGET ged-bb APPEND PROPERTY COMPILE_DEFINITIONS BRLCADBUILD
HAVE_CONFIG_H)
+VALIDATE_STYLE(ged-bb bb.c)
+PLUGIN_SETUP(ged-bb ged)
+
+CMAKEFILES(
+ CMakeLists.txt
+ bb.c
+ )
+
+# Local Variables:
+# tab-width: 8
+# mode: cmake
+# indent-tabs-mode: t
+# End:
+# ex: shiftwidth=2 tabstop=8
Modified: brlcad/trunk/src/libged/bb/bb.c
===================================================================
--- brlcad/trunk/src/libged/bb/bb.c 2020-07-24 13:46:02 UTC (rev 76465)
+++ brlcad/trunk/src/libged/bb/bb.c 2020-07-24 14:39:33 UTC (rev 76466)
@@ -38,7 +38,7 @@
int
-ged_bb(struct ged *gedp, int argc, const char *argv[])
+ged_bb_core(struct ged *gedp, int argc, const char *argv[])
{
point_t rpp_min, rpp_max;
point_t obj_min, obj_max;
@@ -308,10 +308,29 @@
}
+#ifdef GED_PLUGIN
+#include "../include/plugin.h"
+struct ged_cmd_impl bb_cmd_impl = {
+ "bb",
+ ged_bb_core,
+ GED_CMD_DEFAULT
+};
+
+const struct ged_cmd bb_cmd = { &bb_cmd_impl };
+const struct ged_cmd *bb_cmds[] = { &bb_cmd, NULL };
+
+static const struct ged_plugin pinfo = { bb_cmds, 1 };
+
+COMPILER_DLLEXPORT const struct ged_plugin *ged_plugin_info()
+{
+ return &pinfo;
+}
+#endif /* GED_PLUGIN */
+
/*
* Local Variables:
+ * mode: C
* tab-width: 8
- * mode: C
* indent-tabs-mode: t
* c-file-style: "stroustrup"
* End:
Copied: brlcad/trunk/src/libged/bev/CMakeLists.txt (from rev 76465,
brlcad/branches/gedplugins/src/libged/bev/CMakeLists.txt)
===================================================================
--- brlcad/trunk/src/libged/bev/CMakeLists.txt (rev 0)
+++ brlcad/trunk/src/libged/bev/CMakeLists.txt 2020-07-24 14:39:33 UTC (rev
76466)
@@ -0,0 +1,26 @@
+include_directories(
+ ${CMAKE_CURRENT_SOURCE_DIR}
+ ${BRLCAD_BINARY_DIR}/include
+ ${BRLCAD_SOURCE_DIR}/include
+ ${BU_INCLUDE_DIRS}
+ ${GED_INCLUDE_DIRS}
+ )
+
+add_definitions(-DGED_PLUGIN)
+ged_plugin_library(ged-bev SHARED bev.c)
+target_link_libraries(ged-bev libged libbu)
+set_property(TARGET ged-bev APPEND PROPERTY COMPILE_DEFINITIONS BRLCADBUILD
HAVE_CONFIG_H)
+VALIDATE_STYLE(ged-bev bev.c)
+PLUGIN_SETUP(ged-bev ged)
+
+CMAKEFILES(
+ CMakeLists.txt
+ bev.c
+ )
+
+# Local Variables:
+# tab-width: 8
+# mode: cmake
+# indent-tabs-mode: t
+# End:
+# ex: shiftwidth=2 tabstop=8
Modified: brlcad/trunk/src/libged/bev/bev.c
===================================================================
--- brlcad/trunk/src/libged/bev/bev.c 2020-07-24 13:46:02 UTC (rev 76465)
+++ brlcad/trunk/src/libged/bev/bev.c 2020-07-24 14:39:33 UTC (rev 76466)
@@ -78,7 +78,7 @@
int
-ged_bev(struct ged *gedp, int argc, const char *argv[])
+ged_bev_core(struct ged *gedp, int argc, const char *argv[])
{
static const char *usage = "[-t] new_obj obj1 op obj2 op obj3 ...";
@@ -308,10 +308,29 @@
}
+#ifdef GED_PLUGIN
+#include "../include/plugin.h"
+struct ged_cmd_impl bev_cmd_impl = {
+ "bev",
+ ged_bev_core,
+ GED_CMD_DEFAULT
+};
+
+const struct ged_cmd bev_cmd = { &bev_cmd_impl };
+const struct ged_cmd *bev_cmds[] = { &bev_cmd, NULL };
+
+static const struct ged_plugin pinfo = { bev_cmds, 1 };
+
+COMPILER_DLLEXPORT const struct ged_plugin *ged_plugin_info()
+{
+ return &pinfo;
+}
+#endif /* GED_PLUGIN */
+
/*
* Local Variables:
+ * mode: C
* tab-width: 8
- * mode: C
* indent-tabs-mode: t
* c-file-style: "stroustrup"
* End:
Copied: brlcad/trunk/src/libged/bigE/CMakeLists.txt (from rev 76465,
brlcad/branches/gedplugins/src/libged/bigE/CMakeLists.txt)
===================================================================
--- brlcad/trunk/src/libged/bigE/CMakeLists.txt (rev 0)
+++ brlcad/trunk/src/libged/bigE/CMakeLists.txt 2020-07-24 14:39:33 UTC (rev
76466)
@@ -0,0 +1,26 @@
+include_directories(
+ ${CMAKE_CURRENT_SOURCE_DIR}
+ ${BRLCAD_BINARY_DIR}/include
+ ${BRLCAD_SOURCE_DIR}/include
+ ${BU_INCLUDE_DIRS}
+ ${GED_INCLUDE_DIRS}
+ )
+
+add_definitions(-DGED_PLUGIN)
+ged_plugin_library(ged-bigE SHARED bigE.c)
+target_link_libraries(ged-bigE libged libbu)
+set_property(TARGET ged-bigE APPEND PROPERTY COMPILE_DEFINITIONS BRLCADBUILD
HAVE_CONFIG_H)
+VALIDATE_STYLE(ged-bigE bigE.c)
+PLUGIN_SETUP(ged-bigE ged)
+
+CMAKEFILES(
+ CMakeLists.txt
+ bigE.c
+ )
+
+# Local Variables:
+# tab-width: 8
+# mode: cmake
+# indent-tabs-mode: t
+# End:
+# ex: shiftwidth=2 tabstop=8
Modified: brlcad/trunk/src/libged/bigE/bigE.c
===================================================================
--- brlcad/trunk/src/libged/bigE/bigE.c 2020-07-24 13:46:02 UTC (rev 76465)
+++ brlcad/trunk/src/libged/bigE/bigE.c 2020-07-24 14:39:33 UTC (rev 76466)
@@ -1979,7 +1979,7 @@
int
-ged_E(struct ged *gedp, int argc, const char *argv[])
+ged_E_core(struct ged *gedp, int argc, const char *argv[])
{
int i;
int c;
@@ -2128,6 +2128,25 @@
}
+#ifdef GED_PLUGIN
+#include "../include/plugin.h"
+struct ged_cmd_impl bigE_cmd_impl = {
+ "E",
+ ged_E_core,
+ GED_CMD_DEFAULT
+};
+
+const struct ged_cmd bigE_cmd = { &bigE_cmd_impl };
+const struct ged_cmd *bigE_cmds[] = { &bigE_cmd, NULL };
+
+static const struct ged_plugin pinfo = { bigE_cmds, 1 };
+
+COMPILER_DLLEXPORT const struct ged_plugin *ged_plugin_info()
+{
+ return &pinfo;
+}
+#endif /* GED_PLUGIN */
+
/*
* Local Variables:
* mode: C
Copied: brlcad/trunk/src/libged/blast/CMakeLists.txt (from rev 76465,
brlcad/branches/gedplugins/src/libged/blast/CMakeLists.txt)
===================================================================
--- brlcad/trunk/src/libged/blast/CMakeLists.txt
(rev 0)
+++ brlcad/trunk/src/libged/blast/CMakeLists.txt 2020-07-24 14:39:33 UTC
(rev 76466)
@@ -0,0 +1,26 @@
+include_directories(
+ ${CMAKE_CURRENT_SOURCE_DIR}
+ ${BRLCAD_BINARY_DIR}/include
+ ${BRLCAD_SOURCE_DIR}/include
+ ${BU_INCLUDE_DIRS}
+ ${GED_INCLUDE_DIRS}
+ )
+
+add_definitions(-DGED_PLUGIN)
+ged_plugin_library(ged-blast SHARED blast.c)
+target_link_libraries(ged-blast libged libbu)
+set_property(TARGET ged-blast APPEND PROPERTY COMPILE_DEFINITIONS BRLCADBUILD
HAVE_CONFIG_H)
+VALIDATE_STYLE(ged-blast blast.c)
+PLUGIN_SETUP(ged-blast ged)
+
+CMAKEFILES(
+ CMakeLists.txt
+ blast.c
+ )
+
+# Local Variables:
+# tab-width: 8
+# mode: cmake
+# indent-tabs-mode: t
+# End:
+# ex: shiftwidth=2 tabstop=8
Modified: brlcad/trunk/src/libged/blast/blast.c
===================================================================
--- brlcad/trunk/src/libged/blast/blast.c 2020-07-24 13:46:02 UTC (rev
76465)
+++ brlcad/trunk/src/libged/blast/blast.c 2020-07-24 14:39:33 UTC (rev
76466)
@@ -33,7 +33,7 @@
*
*/
int
-ged_blast(struct ged *gedp, int argc, const char *argv[])
+ged_blast_core(struct ged *gedp, int argc, const char *argv[])
{
static const char *usage = "object(s)";
@@ -64,10 +64,29 @@
}
+#ifdef GED_PLUGIN
+#include "../include/plugin.h"
+struct ged_cmd_impl blast_cmd_impl = {
+ "blast",
+ ged_blast_core,
+ GED_CMD_DEFAULT
+};
+
+const struct ged_cmd blast_cmd = { &blast_cmd_impl };
+const struct ged_cmd *blast_cmds[] = { &blast_cmd, NULL };
+
+static const struct ged_plugin pinfo = { blast_cmds, 1 };
+
+COMPILER_DLLEXPORT const struct ged_plugin *ged_plugin_info()
+{
+ return &pinfo;
+}
+#endif /* GED_PLUGIN */
+
/*
* Local Variables:
+ * mode: C
* tab-width: 8
- * mode: C
* indent-tabs-mode: t
* c-file-style: "stroustrup"
* End:
Copied: brlcad/trunk/src/libged/bo/CMakeLists.txt (from rev 76465,
brlcad/branches/gedplugins/src/libged/bo/CMakeLists.txt)
===================================================================
--- brlcad/trunk/src/libged/bo/CMakeLists.txt (rev 0)
+++ brlcad/trunk/src/libged/bo/CMakeLists.txt 2020-07-24 14:39:33 UTC (rev
76466)
@@ -0,0 +1,26 @@
+include_directories(
+ ${CMAKE_CURRENT_SOURCE_DIR}
+ ${BRLCAD_BINARY_DIR}/include
+ ${BRLCAD_SOURCE_DIR}/include
+ ${BU_INCLUDE_DIRS}
+ ${GED_INCLUDE_DIRS}
+ )
+
+add_definitions(-DGED_PLUGIN)
+ged_plugin_library(ged-bo SHARED bo.c)
+target_link_libraries(ged-bo libged libbu)
+set_property(TARGET ged-bo APPEND PROPERTY COMPILE_DEFINITIONS BRLCADBUILD
HAVE_CONFIG_H)
+VALIDATE_STYLE(ged-bo bo.c)
+PLUGIN_SETUP(ged-bo ged)
+
+CMAKEFILES(
+ CMakeLists.txt
+ bo.c
+ )
+
+# Local Variables:
+# tab-width: 8
+# mode: cmake
+# indent-tabs-mode: t
+# End:
+# ex: shiftwidth=2 tabstop=8
Modified: brlcad/trunk/src/libged/bo/bo.c
===================================================================
--- brlcad/trunk/src/libged/bo/bo.c 2020-07-24 13:46:02 UTC (rev 76465)
+++ brlcad/trunk/src/libged/bo/bo.c 2020-07-24 14:39:33 UTC (rev 76466)
@@ -35,7 +35,7 @@
int
-ged_bo(struct ged *gedp, int argc, const char *argv[])
+ged_bo_core(struct ged *gedp, int argc, const char *argv[])
{
int c;
unsigned int minor_type=0;
@@ -238,10 +238,29 @@
}
+#ifdef GED_PLUGIN
+#include "../include/plugin.h"
+struct ged_cmd_impl bo_cmd_impl = {
+ "bo",
+ ged_bo_core,
+ GED_CMD_DEFAULT
+};
+
+const struct ged_cmd bo_cmd = { &bo_cmd_impl };
+const struct ged_cmd *bo_cmds[] = { &bo_cmd, NULL };
+
+static const struct ged_plugin pinfo = { bo_cmds, 1 };
+
+COMPILER_DLLEXPORT const struct ged_plugin *ged_plugin_info()
+{
+ return &pinfo;
+}
+#endif /* GED_PLUGIN */
+
/*
* Local Variables:
+ * mode: C
* tab-width: 8
- * mode: C
* indent-tabs-mode: t
* c-file-style: "stroustrup"
* End:
Copied: brlcad/trunk/src/libged/bot/CMakeLists.txt (from rev 76465,
brlcad/branches/gedplugins/src/libged/bot/CMakeLists.txt)
===================================================================
--- brlcad/trunk/src/libged/bot/CMakeLists.txt (rev 0)
+++ brlcad/trunk/src/libged/bot/CMakeLists.txt 2020-07-24 14:39:33 UTC (rev
76466)
@@ -0,0 +1,47 @@
+include_directories(
+ ${CMAKE_CURRENT_SOURCE_DIR}
+ ${BRLCAD_BINARY_DIR}/include
+ ${BRLCAD_SOURCE_DIR}/include
+ ${BU_INCLUDE_DIRS}
+ ${GED_INCLUDE_DIRS}
+ )
+
+set(BOT_SRCS
+ bot_condense.c
+ bot.cpp
+ bot_decimate.c
+ bot_dump.c
+ bot_face_fuse.c
+ bot_face_sort.c
+ bot_flip.c
+ bot_fuse.c
+ bot_merge.c
+ bot_smooth.c
+ bot_split.c
+ bot_sync.c
+ bot_vertex_fuse.c
+ edbot.c
+ check.cpp
+ extrude.cpp
+ remesh.cpp
+ )
+
+add_definitions(-DGED_PLUGIN)
+ged_plugin_library(ged-bot SHARED ${BOT_SRCS})
+target_link_libraries(ged-bot libged libbu)
+set_property(TARGET ged-bot APPEND PROPERTY COMPILE_DEFINITIONS BRLCADBUILD
HAVE_CONFIG_H)
+VALIDATE_STYLE(ged-bot ${BOT_SRCS})
+PLUGIN_SETUP(ged-bot ged)
+
+CMAKEFILES(
+ CMakeLists.txt
+ ${BOT_SRCS}
+ )
+
+# Local Variables:
+# tab-width: 8
+# mode: cmake
+# indent-tabs-mode: t
+# End:
+# ex: shiftwidth=2 tabstop=8
+
Modified: brlcad/trunk/src/libged/bot/bot.cpp
===================================================================
--- brlcad/trunk/src/libged/bot/bot.cpp 2020-07-24 13:46:02 UTC (rev 76465)
+++ brlcad/trunk/src/libged/bot/bot.cpp 2020-07-24 14:39:33 UTC (rev 76466)
@@ -326,7 +326,7 @@
}
extern "C" int
-ged_bot(struct ged *gedp, int argc, const char *argv[])
+ged_bot_core(struct ged *gedp, int argc, const char *argv[])
{
int help = 0;
struct _ged_bot_info gb;
@@ -434,11 +434,103 @@
return ret;
}
-// Local Variables:
-// tab-width: 8
-// mode: C++
-// c-basic-offset: 4
-// indent-tabs-mode: t
-// c-file-style: "stroustrup"
-// End:
-// ex: shiftwidth=4 tabstop=8
+
+#ifdef GED_PLUGIN
+#include "../include/plugin.h"
+extern "C" {
+ struct ged_cmd_impl bot_cmd_impl = { "bot", ged_bot_core, GED_CMD_DEFAULT
};
+ const struct ged_cmd bot_cmd = { &bot_cmd_impl };
+
+ struct ged_cmd_impl bot_condense_cmd_impl = {"bot_condense",
ged_bot_condense_core, GED_CMD_DEFAULT};
+ const struct ged_cmd bot_condense_cmd = { &bot_condense_cmd_impl };
+
+ struct ged_cmd_impl bot_decimate_cmd_impl = {"bot_decimate",
ged_bot_decimate_core, GED_CMD_DEFAULT};
+ const struct ged_cmd bot_decimate_cmd = { &bot_decimate_cmd_impl };
+
+ struct ged_cmd_impl bot_dump_cmd_impl = {"bot_dump", ged_bot_dump_core,
GED_CMD_DEFAULT};
+ const struct ged_cmd bot_dump_cmd = { &bot_dump_cmd_impl };
+
+ struct ged_cmd_impl bot_face_fuse_cmd_impl = {"bot_face_fuse",
ged_bot_face_fuse_core, GED_CMD_DEFAULT};
+ const struct ged_cmd bot_face_fuse_cmd = { &bot_face_fuse_cmd_impl };
+
+ struct ged_cmd_impl bot_face_sort_cmd_impl = {"bot_face_sort",
ged_bot_face_sort_core, GED_CMD_DEFAULT};
+ const struct ged_cmd bot_face_sort_cmd = { &bot_face_sort_cmd_impl };
+
+ struct ged_cmd_impl bot_flip_cmd_impl = {"bot_flip", ged_bot_flip_core,
GED_CMD_DEFAULT};
+ const struct ged_cmd bot_flip_cmd = { &bot_flip_cmd_impl };
+
+ struct ged_cmd_impl bot_fuse_cmd_impl = {"bot_fuse", ged_bot_fuse_core,
GED_CMD_DEFAULT};
+ const struct ged_cmd bot_fuse_cmd = { &bot_fuse_cmd_impl };
+
+ struct ged_cmd_impl bot_merge_cmd_impl = {"bot_merge", ged_bot_merge_core,
GED_CMD_DEFAULT};
+ const struct ged_cmd bot_merge_cmd = { &bot_merge_cmd_impl };
+
+ struct ged_cmd_impl bot_smooth_cmd_impl = {"bot_smooth",
ged_bot_smooth_core, GED_CMD_DEFAULT};
+ const struct ged_cmd bot_smooth_cmd = { &bot_smooth_cmd_impl };
+
+ struct ged_cmd_impl bot_split_cmd_impl = {"bot_split", ged_bot_split_core,
GED_CMD_DEFAULT};
+ const struct ged_cmd bot_split_cmd = { &bot_split_cmd_impl };
+
+ struct ged_cmd_impl bot_sync_cmd_impl = {"bot_sync", ged_bot_sync_core,
GED_CMD_DEFAULT};
+ const struct ged_cmd bot_sync_cmd = { &bot_sync_cmd_impl };
+
+ struct ged_cmd_impl bot_vertex_fuse_cmd_impl = {"bot_vertex_fuse",
ged_bot_vertex_fuse_core, GED_CMD_DEFAULT};
+ const struct ged_cmd bot_vertex_fuse_cmd = { &bot_vertex_fuse_cmd_impl };
+
+ struct ged_cmd_impl dbot_dump_cmd_impl = {"dbot_dump", ged_dbot_dump_core,
GED_CMD_DEFAULT};
+ const struct ged_cmd dbot_dump_cmd = { &dbot_dump_cmd_impl };
+
+ struct ged_cmd_impl find_bot_edge_cmd_impl = {"find_bot_edge",
ged_find_bot_edge_nearest_pnt_core, GED_CMD_DEFAULT};
+ const struct ged_cmd find_bot_edge_cmd = { &find_bot_edge_cmd_impl };
+
+ struct ged_cmd_impl find_bot_pnt_cmd_impl = {"find_bot_pnt",
ged_find_bot_pnt_nearest_pnt_core, GED_CMD_DEFAULT};
+ const struct ged_cmd find_bot_pnt_cmd = { &find_bot_pnt_cmd_impl };
+
+ struct ged_cmd_impl get_bot_edges_cmd_impl = {"get_bot_edges",
ged_get_bot_edges_core, GED_CMD_DEFAULT};
+ const struct ged_cmd get_bot_edges_cmd = { &get_bot_edges_cmd_impl };
+
+ /*
+ struct ged_cmd_impl _cmd_impl = {"", , GED_CMD_DEFAULT};
+ const struct ged_cmd _cmd = { &_cmd_impl };
+ */
+
+
+ const struct ged_cmd *bot_cmds[] = {
+ &bot_cmd,
+ &bot_condense_cmd,
+ &bot_decimate_cmd,
+ &bot_dump_cmd,
+ &bot_face_fuse_cmd,
+ &bot_face_sort_cmd,
+ &bot_flip_cmd,
+ &bot_fuse_cmd,
+ &bot_merge_cmd,
+ &bot_smooth_cmd,
+ &bot_split_cmd,
+ &bot_sync_cmd,
+ &bot_vertex_fuse_cmd,
+ &dbot_dump_cmd,
+ &find_bot_edge_cmd,
+ &find_bot_pnt_cmd,
+ &get_bot_edges_cmd,
+ NULL
+ };
+
+ static const struct ged_plugin pinfo = { bot_cmds, 17 };
+
+ COMPILER_DLLEXPORT const struct ged_plugin *ged_plugin_info()
+ {
+ return &pinfo;
+ }
+}
+#endif
+
+/*
+ * 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/bot/bot_condense.c (from rev 76465,
brlcad/branches/gedplugins/src/libged/bot/bot_condense.c)
===================================================================
--- brlcad/trunk/src/libged/bot/bot_condense.c (rev 0)
+++ brlcad/trunk/src/libged/bot/bot_condense.c 2020-07-24 14:39:33 UTC (rev
76466)
@@ -0,0 +1,92 @@
+/* B O T _ C O N D E N S E . C
+ * BRL-CAD
+ *
+ * Copyright (c) 2008-2020 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 libged/bot_condense.c
+ *
+ * The bot_condense command.
+ *
+ */
+
+#include "common.h"
+
+#include <stdlib.h>
+#include <ctype.h>
+#include <string.h>
+
+#include "rt/geom.h"
+
+#include "../ged_private.h"
+
+
+int
+ged_bot_condense_core(struct ged *gedp, int argc, const char *argv[])
+{
+ struct directory *old_dp, *new_dp;
+ struct rt_db_internal intern;
+ struct rt_bot_internal *bot;
+ int count2=0;
+ static const char *usage = "new_bot old_bot";
+
+ GED_CHECK_DATABASE_OPEN(gedp, GED_ERROR);
+ GED_CHECK_READ_ONLY(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 != 3) {
+ bu_vls_printf(gedp->ged_result_str, "Usage: %s %s", argv[0], usage);
+ return GED_ERROR;
+ }
+
+ GED_DB_LOOKUP(gedp, old_dp, argv[2], LOOKUP_NOISY, GED_ERROR & GED_QUIET);
+ GED_DB_GET_INTERNAL(gedp, &intern, old_dp, bn_mat_identity,
&rt_uniresource, 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, "%s: %s is not a BOT solid!\n",
argv[0], argv[2]);
+ return GED_ERROR;
+ }
+
+ bot = (struct rt_bot_internal *)intern.idb_ptr;
+ RT_BOT_CK_MAGIC(bot);
+
+ count2 = rt_bot_condense(bot);
+ bu_vls_printf(gedp->ged_result_str, "%s: %d dead vertices eliminated\n",
argv[0], count2);
+
+ GED_DB_DIRADD(gedp, new_dp, argv[1], RT_DIR_PHONY_ADDR, 0, RT_DIR_SOLID,
(void *)&intern.idb_type, GED_ERROR);
+ GED_DB_PUT_INTERNAL(gedp, new_dp, &intern, &rt_uniresource, GED_ERROR);
+
+ return GED_OK;
+}
+
+/*
+ * Local Variables:
+ * mode: C
+ * tab-width: 8
+ * indent-tabs-mode: t
+ * c-file-style: "stroustrup"
+ * End:
+ * ex: shiftwidth=4 tabstop=8
+ */
Copied: brlcad/trunk/src/libged/bot/bot_decimate.c (from rev 76465,
brlcad/branches/gedplugins/src/libged/bot/bot_decimate.c)
===================================================================
--- brlcad/trunk/src/libged/bot/bot_decimate.c (rev 0)
+++ brlcad/trunk/src/libged/bot/bot_decimate.c 2020-07-24 14:39:33 UTC (rev
76466)
@@ -0,0 +1,201 @@
+/* B O T _ D E C I M A T E . C
+ * BRL-CAD
+ *
+ * Copyright (c) 2008-2020 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 libged/bot_decimate.c
+ *
+ * The bot_decimate command.
+ *
+ */
+
+#include "common.h"
+
+#include <stdlib.h>
+#include <ctype.h>
+#include <string.h>
+
+#include "bu/getopt.h"
+#include "rt/geom.h"
+#include "ged.h"
+
+
+int
+ged_bot_decimate_core(struct ged *gedp, int argc, const char *argv[])
+{
+ int c;
+ struct rt_db_internal intern;
+ struct rt_bot_internal *bot;
+ struct directory *dp;
+ fastf_t max_chord_error = -1.0;
+ fastf_t max_normal_error = -1.0;
+ fastf_t min_edge_length = -1.0;
+ fastf_t feature_size = -1.0;
+ static const char *usage = "-f feature_size (to use the newer GCT
decimator)"
+ "\nOR: -c maximum_chord_error -n
maximum_normal_error -e minimum_edge_length new_bot_name current_bot_name";
+
+ GED_CHECK_DATABASE_OPEN(gedp, GED_ERROR);
+ GED_CHECK_READ_ONLY(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 < 5 || argc > 9) {
+ bu_vls_printf(gedp->ged_result_str, "Usage: %s %s", argv[0], usage);
+ return GED_ERROR;
+ }
+
+ /* process args */
+ bu_optind = 1;
+ bu_opterr = 0;
+
+ while ((c = bu_getopt(argc, (char * const *)argv, "c:n:e:f:")) != -1) {
+ switch (c) {
+ case 'c':
+ max_chord_error = atof(bu_optarg);
+
+ if (max_chord_error < 0.0) {
+ bu_vls_printf(gedp->ged_result_str,
+ "Maximum chord error cannot be less than
zero");
+ return GED_ERROR;
+ }
+
+ break;
+
+ case 'n':
+ max_normal_error = atof(bu_optarg);
+
+ if (max_normal_error < 0.0) {
+ bu_vls_printf(gedp->ged_result_str,
+ "Maximum normal error cannot be less than
zero");
+ return GED_ERROR;
+ }
+
+ break;
+
+ case 'e':
+ min_edge_length = atof(bu_optarg);
+
+ if (min_edge_length < 0.0) {
+ bu_vls_printf(gedp->ged_result_str,
+ "minimum edge length cannot be less than
zero");
+ return GED_ERROR;
+ }
+
+ break;
+
+ case 'f':
+ feature_size = atof(bu_optarg);
+
+ if (feature_size < 0.0) {
+ bu_vls_printf(gedp->ged_result_str,
+ "minimum feature size cannot be less than
zero");
+ return GED_ERROR;
+ }
+
+ break;
+
+ default: {
+ bu_vls_printf(gedp->ged_result_str, "Usage: %s %s", argv[0],
usage);
+ return GED_ERROR;
+ }
+ }
+ }
+
+ if (feature_size >= 0.0 && (max_chord_error >= 0.0 || max_normal_error >=
0.0 || min_edge_length >= 0.0)) {
+ bu_vls_printf(gedp->ged_result_str, "-f may not be used with -c, -n, or
-e");
+ return GED_ERROR;
+ }
+
+ argc -= bu_optind;
+ argv += bu_optind;
+
+ /* make sure new solid does not already exist */
+ GED_CHECK_EXISTS(gedp, argv[0], LOOKUP_QUIET, GED_ERROR);
+
+ /* make sure current solid does exist */
+ GED_DB_LOOKUP(gedp, dp, argv[1], LOOKUP_QUIET, GED_ERROR);
+
+ /* import the current solid */
+ RT_DB_INTERNAL_INIT(&intern);
+ GED_DB_GET_INTERNAL(gedp, &intern, dp, NULL, gedp->ged_wdbp->wdb_resp,
GED_ERROR);
+
+ /* make sure this is a BOT solid */
+ if (intern.idb_major_type != DB5_MAJORTYPE_BRLCAD || intern.idb_minor_type
!= DB5_MINORTYPE_BRLCAD_BOT) {
+ bu_vls_printf(gedp->ged_result_str, "%s is not a BOT solid\n", argv[1]);
+ rt_db_free_internal(&intern);
+ return GED_ERROR;
+ }
+
+ bot = (struct rt_bot_internal *)intern.idb_ptr;
+
+ RT_BOT_CK_MAGIC(bot);
+
+ /* convert maximum error, edge length, and feature size to mm */
+ if (max_chord_error > 0.0) {
+ max_chord_error = max_chord_error *
gedp->ged_wdbp->dbip->dbi_local2base;
+ }
+
+ if (min_edge_length > 0.0) {
+ min_edge_length = min_edge_length *
gedp->ged_wdbp->dbip->dbi_local2base;
+ }
+
+ if (feature_size >= 0.0) {
+ /* use the new GCT decimator */
+ const size_t orig_num_faces = bot->num_faces;
+ size_t edges_removed;
+ feature_size *= gedp->ged_wdbp->dbip->dbi_local2base;
+ edges_removed = rt_bot_decimate_gct(bot, feature_size);
+ bu_log("original face count = %zu\n", orig_num_faces);
+ bu_log("\tedges removed = %zu\n", edges_removed);
+ bu_log("\tnew face count = %zu\n", bot->num_faces);
+ } else {
+ /* use the old decimator */
+ if (rt_bot_decimate(bot, max_chord_error, max_normal_error,
min_edge_length) < 0) {
+ bu_vls_printf(gedp->ged_result_str, "Decimation Error\n");
+ rt_db_free_internal(&intern);
+ return GED_ERROR;
+ }
+ }
+
+ /* save the result to the database */
+ /* XXX - should this be rt_db_put_internal() instead? */
+ if (wdb_put_internal(gedp->ged_wdbp, argv[0], &intern, 1.0) < 0) {
+ bu_vls_printf(gedp->ged_result_str,
+ "Failed to write decimated BOT back to database\n");
+ return GED_ERROR;
+ }
+
+ return GED_OK;
+}
+
+/*
+ * Local Variables:
+ * mode: C
+ * tab-width: 8
+ * indent-tabs-mode: t
+ * c-file-style: "stroustrup"
+ * End:
+ * ex: shiftwidth=4 tabstop=8
+ */
Copied: brlcad/trunk/src/libged/bot/bot_dump.c (from rev 76465,
brlcad/branches/gedplugins/src/libged/bot/bot_dump.c)
===================================================================
--- brlcad/trunk/src/libged/bot/bot_dump.c (rev 0)
+++ brlcad/trunk/src/libged/bot/bot_dump.c 2020-07-24 14:39:33 UTC (rev
76466)
@@ -0,0 +1,1623 @@
+/* B O T _ D U M P . C
+ * BRL-CAD
+ *
+ * Copyright (c) 2008-2020 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 libged/bot_dump.c
+ *
+ * The bot_dump command.
+ *
+ */
+
+#include "common.h"
+
+#include <stdlib.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <string.h>
+#include <ctype.h>
+#include "bio.h"
+#include "bnetwork.h"
+
+#include "bu/cv.h"
+#include "bu/getopt.h"
+#include "bu/units.h"
+#include "vmath.h"
+#include "nmg.h"
+#include "rt/geom.h"
+
+#include "raytrace.h"
+#include "wdb.h"
+
+#include "brlcad_version.h"
+
+#include "raytrace.h"
+
+#include "dm/bview.h"
+#include "dm.h"
+
+#include "../ged_private.h"
+
+
+#define V3ARGS_SCALE(_a) (_a)[X]*cfactor, (_a)[Y]*cfactor, (_a)[Z]*cfactor
+
+static char usage[] = "[-b] [-n] [-m directory] [-o file] [-t dxf|obj|sat|stl]
[-u units] [bot1 bot2 ...]";
+
+
+struct _ged_bot_dump_client_data {
+ struct ged *gedp;
+ FILE *fp;
+ int fd;
+ char *file_ext;
+};
+
+
+struct _ged_obj_material {
+ struct bu_list l;
+ struct bu_vls name;
+ unsigned char r;
+ unsigned char g;
+ unsigned char b;
+ fastf_t a;
+};
+
+
+static int using_dbot_dump;
+struct bu_list HeadObjMaterials = BU_LIST_INIT_ZERO;
+struct bu_vls obj_materials_file = BU_VLS_INIT_ZERO;
+FILE *obj_materials_fp;
+int num_obj_materials;
+int curr_obj_red;
+int curr_obj_green;
+int curr_obj_blue;
+fastf_t curr_obj_alpha;
+
+enum otype {
+ OTYPE_DXF = 1,
+ OTYPE_OBJ,
+ OTYPE_SAT,
+ OTYPE_STL
+};
+
+static enum otype output_type;
+static int binary;
+static int normals;
+static fastf_t cfactor;
+static char *output_file; /* output filename */
+static char *output_directory; /* directory name to hold output files */
+static unsigned int total_faces;
+static int v_offset;
+static int curr_line_num;
+
+static int curr_body_id;
+static int curr_lump_id;
+static int curr_shell_id;
+static int curr_face_id;
+static int curr_loop_id;
+static int curr_edge_id;
+
+/* Byte swaps a four byte value */
+static void
+lswap(unsigned int *v)
+{
+ unsigned int r;
+
+ r =*v;
+ *v = ((r & 0xff) << 24) | ((r & 0xff00) << 8) | ((r & 0xff0000) >> 8)
+ | ((r & 0xff000000) >> 24);
+}
+
+
+static struct _ged_obj_material *
+obj_get_material(int red, int green, int blue, fastf_t transparency)
+{
+ struct _ged_obj_material *gomp;
+
+ for (BU_LIST_FOR(gomp, _ged_obj_material, &HeadObjMaterials)) {
+ if (gomp->r == red &&
+ gomp->g == green &&
+ gomp->b == blue &&
+ ZERO(gomp->a - transparency)) {
+ return gomp;
+ }
+ }
+
+ BU_GET(gomp, struct _ged_obj_material);
+ BU_LIST_APPEND(&HeadObjMaterials, &gomp->l);
+ gomp->r = red;
+ gomp->g = green;
+ gomp->b = blue;
+ gomp->a = transparency;
+ bu_vls_init(&gomp->name);
+ bu_vls_printf(&gomp->name, "matl_%d", ++num_obj_materials);
+
+ /* Write out newmtl to mtl file */
+ fprintf(obj_materials_fp, "newmtl %s\n", bu_vls_addr(&gomp->name));
+ fprintf(obj_materials_fp, "Kd %f %f %f\n",
+ (fastf_t)gomp->r / 255.0,
+ (fastf_t)gomp->g / 255.0,
+ (fastf_t)gomp->b / 255.0);
+ fprintf(obj_materials_fp, "d %f\n", gomp->a);
+ fprintf(obj_materials_fp, "illum 1\n");
+
+ return gomp;
+}
+
+
+static void
+obj_free_materials() {
+ struct _ged_obj_material *gomp;
+
+ while (BU_LIST_WHILE(gomp, _ged_obj_material, &HeadObjMaterials)) {
+ BU_LIST_DEQUEUE(&gomp->l);
+ bu_vls_free(&gomp->name);
+ BU_PUT(gomp, struct _ged_obj_material);
+ }
+}
+
+
+static void
+sat_write_header(FILE *fp)
+{
+ time_t now;
+
+ /* SAT header consists of three lines:
+ *
+ * 1: SAT_version num_records num_objects history_boolean
+ * 2: strlen product_id_str strlen version_str strlen date_str
+ * 3: cnv_to_mm resabs_value resnor_value
+ *
+ * When num_records is zero, it looks for an end marker.
+ */
+ fprintf(fp, "400 0 1 0\n");
+
+ time(&now);
+ fprintf(fp, "%ld BRL-CAD(%s)-bot_dump 16 ACIS 8.0 Unknown %ld %s",
+ (long)strlen(brlcad_version())+18, brlcad_version(),
(long)strlen(ctime(&now)) - 1, ctime(&now));
+
+ /* FIXME: this includes abs tolerance info, should probably output ours */
+ fprintf(fp, "1 9.9999999999999995e-007 1e-010\n");
+}
+
+
+static void
+sat_write_bot(struct rt_bot_internal *bot, FILE *fp, char *UNUSED(name))
+{
+ int i, j;
+ fastf_t *vertices;
+ int *faces;
+ int first_vertex;
+ int first_coedge;
+ int first_face;
+ int num_vertices = bot->num_vertices;
+ int num_faces = bot->num_faces;
+
+ vertices = bot->vertices;
+ faces = bot->faces;
+
+ curr_body_id = curr_line_num;
+ curr_lump_id = curr_body_id + 1;
+ curr_shell_id = curr_lump_id + 1;
+ curr_face_id = curr_shell_id + 1 + num_vertices*2 + num_faces*6;
+
+ fprintf(fp, "-%d body $-1 $%d $-1 $-1 #\n", curr_body_id, curr_lump_id);
+ fprintf(fp, "-%d lump $-1 $-1 $%d $%d #\n", curr_lump_id, curr_shell_id,
curr_body_id);
+ fprintf(fp, "-%d shell $-1 $-1 $-1 $%d $-1 $%d #\n", curr_shell_id,
curr_face_id, curr_lump_id);
+
+ curr_line_num += 3;
+
+ /* Dump out vertices */
+ first_vertex = curr_line_num;
+ for (i = 0; i < num_vertices; i++) {
+ curr_edge_id = -1;
+ for (j = 0; j < num_faces; j++) {
+ if (faces[3*j]+first_vertex == curr_line_num) {
+ curr_edge_id = first_vertex + num_vertices*2 + num_faces*3 +
j*3;
+ break;
+ } else if (faces[3*j+1]+first_vertex == curr_line_num) {
+ curr_edge_id = first_vertex + num_vertices*2 + num_faces*3 +
j*3 + 1;
+ break;
+ } else if (faces[3*j+2]+first_vertex == curr_line_num) {
+ curr_edge_id = first_vertex + num_vertices*2 + num_faces*3 +
j*3 + 2;
+ break;
+ }
+ }
+
+ fprintf(fp, "-%d vertex $-1 $%d $%d #\n", curr_line_num, curr_edge_id,
curr_line_num+num_vertices);
+ ++curr_line_num;
+ }
+
+ /* Dump out points */
+ for (i = 0; i < num_vertices; i++) {
+ fprintf(fp, "-%d point $-1 %f %f %f #\n", curr_line_num,
V3ARGS_SCALE(&vertices[3*i]));
+ ++curr_line_num;
+ }
+
+ /* Dump out coedges */
+ first_coedge = curr_line_num;
+ curr_loop_id = first_coedge+num_faces*7;
+ for (i = 0; i < num_faces; i++) {
+ fprintf(fp, "-%d coedge $-1 $%d $%d $%d $%d forward $%d $-1 #\n",
+ curr_line_num, curr_line_num+1, curr_line_num+2, curr_line_num,
+ curr_line_num+num_faces*3, curr_loop_id);
+ ++curr_line_num;
+ fprintf(fp, "-%d coedge $-1 $%d $%d $%d $%d forward $%d $-1 #\n",
+ curr_line_num, curr_line_num+1, curr_line_num-1, curr_line_num,
+ curr_line_num+num_faces*3, curr_loop_id);
+ ++curr_line_num;
+ fprintf(fp, "-%d coedge $-1 $%d $%d $%d $%d forward $%d $-1 #\n",
+ curr_line_num, curr_line_num-2, curr_line_num-1, curr_line_num,
+ curr_line_num+num_faces*3, curr_loop_id);
+ ++curr_line_num;
+ ++curr_loop_id;
+ }
+
+ /* Dump out edges */
+ for (i = 0; i < num_faces; i++) {
+ fprintf(fp, "-%d edge $-1 $%d $%d $%d $%d forward #\n", curr_line_num,
+ faces[3*i]+first_vertex, faces[3*i+1]+first_vertex,
+ first_coedge + i*3, curr_line_num + num_faces*5);
+ ++curr_line_num;
+ fprintf(fp, "-%d edge $-1 $%d $%d $%d $%d forward #\n", curr_line_num,
+ faces[3*i+1]+first_vertex, faces[3*i+2]+first_vertex,
+ first_coedge + i*3 + 1, curr_line_num + num_faces*5);
+ ++curr_line_num;
+ fprintf(fp, "-%d edge $-1 $%d $%d $%d $%d forward #\n", curr_line_num,
+ faces[3*i+2]+first_vertex, faces[3*i]+first_vertex,
+ first_coedge + i*3 + 2, curr_line_num + num_faces*5);
+ ++curr_line_num;
+ }
+
+ /* Dump out faces */
+ first_face = curr_line_num;
+ for (i = 0; i < num_faces-1; i++) {
+ fprintf(fp, "-%d face $-1 $%d $%d $%d $-1 $%d forward single #\n",
+ curr_line_num, curr_line_num+1, curr_line_num+num_faces,
+ curr_shell_id, curr_line_num + num_faces*5);
+ ++curr_line_num;
+ }
+ fprintf(fp, "-%d face $-1 $-1 $%d $%d $-1 $%d forward single #\n",
+ curr_line_num, curr_line_num+num_faces, curr_shell_id,
+ curr_line_num + num_faces*5);
+ ++curr_line_num;
+
+ /* Dump out loops */
+ for (i = 0; i < num_faces; i++) {
+ fprintf(fp, "-%d loop $-1 $-1 $%d $%d #\n",
+ curr_line_num, first_coedge+i*3, first_face+i);
+ ++curr_line_num;
+ }
+
+ /* Dump out straight-curves for each edge */
+ for (i = 0; i < num_faces; i++) {
+ point_t A;
+ point_t B;
+ point_t C;
+ vect_t BmA;
+ vect_t CmB;
+ vect_t AmC;
+ int vi;
+
+ vi = 3*faces[3*i];
+ VSET(A, vertices[vi], vertices[vi+1], vertices[vi+2]);
+ vi = 3*faces[3*i+1];
+ VSET(B, vertices[vi], vertices[vi+1], vertices[vi+2]);
+ vi = 3*faces[3*i+2];
+ VSET(C, vertices[vi], vertices[vi+1], vertices[vi+2]);
+ VSUB2(BmA, B, A);
+ VSUB2(CmB, C, B);
+ VSUB2(AmC, A, C);
+ VUNITIZE(BmA);
+ VUNITIZE(CmB);
+ VUNITIZE(AmC);
+
+ fprintf(fp, "-%d straight-curve $-1 %f %f %f %f %f %f I I #\n",
curr_line_num, V3ARGS_SCALE(A), V3ARGS(BmA));
+ ++curr_line_num;
+ fprintf(fp, "-%d straight-curve $-1 %f %f %f %f %f %f I I #\n",
curr_line_num, V3ARGS_SCALE(B), V3ARGS(CmB));
+ ++curr_line_num;
+ fprintf(fp, "-%d straight-curve $-1 %f %f %f %f %f %f I I #\n",
curr_line_num, V3ARGS_SCALE(C), V3ARGS(AmC));
+ ++curr_line_num;
+ }
+
+ /* Dump out plane-surfaces for each face */
+ for (i = 0; i < num_faces; i++) {
+ point_t A;
+ point_t B;
+ point_t C;
+ point_t center;
+ vect_t BmA;
+ vect_t CmA;
+ vect_t norm;
+ int vi;
+ fastf_t sf = 1.0/3.0;
+
+ vi = 3*faces[3*i];
+ VSET(A, vertices[vi], vertices[vi+1], vertices[vi+2]);
+ vi = 3*faces[3*i+1];
+ VSET(B, vertices[vi], vertices[vi+1], vertices[vi+2]);
+ vi = 3*faces[3*i+2];
+ VSET(C, vertices[vi], vertices[vi+1], vertices[vi+2]);
+
+ VADD3(center, A, B, C);
+ VSCALE(center, center, sf);
+
+ VSUB2(BmA, B, A);
+ VSUB2(CmA, C, A);
+ if (bot->orientation != RT_BOT_CW) {
+ VCROSS(norm, BmA, CmA);
+ } else {
+ VCROSS(norm, CmA, BmA);
+ }
+ VUNITIZE(norm);
+
+ VUNITIZE(BmA);
+
+ fprintf(fp, "-%d plane-surface $-1 %f %f %f %f %f %f %f %f %f forward_v
I I I I #\n",
+ curr_line_num, V3ARGS_SCALE(A), V3ARGS(norm), V3ARGS(BmA));
+
+ ++curr_line_num;
+ }
+}
+
+
+static void
+dxf_write_bot(struct rt_bot_internal *bot, FILE *fp, char *name)
+{
+ fastf_t *vertices;
+ int num_faces, *faces;
+ point_t A;
+ point_t B;
+ point_t C;
+ int i, vi;
+
+ vertices = bot->vertices;
+ num_faces = bot->num_faces;
+ faces = bot->faces;
+
+ for (i = 0; i < num_faces; i++) {
+ vi = 3*faces[3*i];
+ VSET(A, vertices[vi], vertices[vi+1], vertices[vi+2]);
+ vi = 3*faces[3*i+1];
+ VSET(B, vertices[vi], vertices[vi+1], vertices[vi+2]);
+ vi = 3*faces[3*i+2];
+ VSET(C, vertices[vi], vertices[vi+1], vertices[vi+2]);
+
+ VSCALE(A, A, cfactor);
+ VSCALE(B, B, cfactor);
+ VSCALE(C, C, cfactor);
+
+ fprintf(fp, "0\n3DFACE\n8\n%s\n62\n7\n", name);
+ fprintf(fp, "%d\n%f\n%d\n%f\n%d\n%f\n",
+ 10, A[X], 20, A[Y], 30, A[Z]);
+ fprintf(fp, "%d\n%f\n%d\n%f\n%d\n%f\n",
+ 11, B[X], 21, B[Y], 31, B[Z]);
+ fprintf(fp, "%d\n%f\n%d\n%f\n%d\n%f\n",
+ 12, C[X], 22, C[Y], 32, C[Z]);
+ fprintf(fp, "%d\n%f\n%d\n%f\n%d\n%f\n",
+ 12, C[X], 22, C[Y], 32, C[Z]);
+ }
+
+}
+
+
+static void
+obj_write_bot(struct rt_bot_internal *bot, FILE *fp, char *name)
+{
+ int num_vertices;
+ fastf_t *vertices;
+ int num_faces, *faces;
+ point_t A;
+ point_t B;
+ point_t C;
+ vect_t BmA;
+ vect_t CmA;
+ vect_t norm;
+ int i, vi;
+ struct _ged_obj_material *gomp;
+
+ if (using_dbot_dump) {
+ gomp = obj_get_material(curr_obj_red,
+ curr_obj_green,
+ curr_obj_blue,
+ curr_obj_alpha);
+ fprintf(fp, "usemtl %s\n", bu_vls_addr(&gomp->name));
+ }
+
+ num_vertices = bot->num_vertices;
+ vertices = bot->vertices;
+ num_faces = bot->num_faces;
+ faces = bot->faces;
+
+ fprintf(fp, "g %s\n", name);
+
+ for (i = 0; i < num_vertices; i++) {
+ fprintf(fp, "v %f %f %f\n", V3ARGS_SCALE(&vertices[3*i]));
+ }
+
+ if (normals) {
+ for (i = 0; i < num_faces; i++) {
+ vi = 3*faces[3*i];
+ VSET(A, vertices[vi], vertices[vi+1], vertices[vi+2]);
+ vi = 3*faces[3*i+1];
+ VSET(B, vertices[vi], vertices[vi+1], vertices[vi+2]);
+ vi = 3*faces[3*i+2];
+ VSET(C, vertices[vi], vertices[vi+1], vertices[vi+2]);
+
+ VSUB2(BmA, B, A);
+ VSUB2(CmA, C, A);
+ if (bot->orientation != RT_BOT_CW) {
+ VCROSS(norm, BmA, CmA);
+ } else {
+ VCROSS(norm, CmA, BmA);
+ }
+ VUNITIZE(norm);
+
+ fprintf(fp, "vn %f %f %f\n", V3ARGS(norm));
+ }
+ }
+
+ if (normals) {
+ for (i = 0; i < num_faces; i++) {
+ fprintf(fp, "f %d//%d %d//%d %d//%d\n", faces[3*i]+v_offset, i+1,
faces[3*i+1]+v_offset, i+1, faces[3*i+2]+v_offset, i+1);
+ }
+ } else {
+ for (i = 0; i < num_faces; i++) {
+ fprintf(fp, "f %d %d %d\n", faces[3*i]+v_offset,
faces[3*i+1]+v_offset, faces[3*i+2]+v_offset);
+ }
+ }
+
+ v_offset += num_vertices;
+}
+
+
+static void
+stl_write_bot(struct rt_bot_internal *bot, FILE *fp, char *name)
+{
+ fastf_t *vertices;
+ int num_faces, *faces;
+ point_t A;
+ point_t B;
+ point_t C;
+ vect_t BmA;
+ vect_t CmA;
+ vect_t norm;
+ int i, vi;
+
+ vertices = bot->vertices;
+ num_faces = bot->num_faces;
+ faces = bot->faces;
+
+ fprintf(fp, "solid %s\n", name);
+ for (i = 0; i < num_faces; i++) {
+ vi = 3*faces[3*i];
+ VSET(A, vertices[vi], vertices[vi+1], vertices[vi+2]);
+ vi = 3*faces[3*i+1];
+ VSET(B, vertices[vi], vertices[vi+1], vertices[vi+2]);
+ vi = 3*faces[3*i+2];
+ VSET(C, vertices[vi], vertices[vi+1], vertices[vi+2]);
+
+ VSUB2(BmA, B, A);
+ VSUB2(CmA, C, A);
+ if (bot->orientation != RT_BOT_CW) {
+ VCROSS(norm, BmA, CmA);
+ } else {
+ VCROSS(norm, CmA, BmA);
+ }
+ VUNITIZE(norm);
+
+ fprintf(fp, " facet normal %f %f %f\n", V3ARGS(norm));
+ fprintf(fp, " outer loop\n");
+ fprintf(fp, " vertex %f %f %f\n", V3ARGS_SCALE(A));
+ fprintf(fp, " vertex %f %f %f\n", V3ARGS_SCALE(B));
+ fprintf(fp, " vertex %f %f %f\n", V3ARGS_SCALE(C));
+ fprintf(fp, " endloop\n");
+ fprintf(fp, " endfacet\n");
+ }
+ fprintf(fp, "endsolid %s\n", name);
+}
+
+
+static void
+stl_write_bot_binary(struct rt_bot_internal *bot, int fd, char *UNUSED(name))
+{
+ fastf_t *vertices;
+ size_t num_faces;
+ int *faces;
+ point_t A;
+ point_t B;
+ point_t C;
+ vect_t BmA;
+ vect_t CmA;
+ vect_t norm;
+ unsigned long i, j, vi;
+
+ vertices = bot->vertices;
+ num_faces = bot->num_faces;
+ faces = bot->faces;
+
+ /* Write out the vertex data for each triangle */
+ for (i = 0; (size_t)i < num_faces; i++) {
+ float flts[12];
+ float *flt_ptr;
+ unsigned char vert_buffer[50];
+ int ret;
+
+ vi = 3*faces[3*i];
+ VSET(A, vertices[vi], vertices[vi+1], vertices[vi+2]);
+ vi = 3*faces[3*i+1];
+ VSET(B, vertices[vi], vertices[vi+1], vertices[vi+2]);
+ vi = 3*faces[3*i+2];
+ VSET(C, vertices[vi], vertices[vi+1], vertices[vi+2]);
+
+ VSUB2(BmA, B, A);
+ VSUB2(CmA, C, A);
+ if (bot->orientation != RT_BOT_CW) {
+ VCROSS(norm, BmA, CmA);
+ } else {
+ VCROSS(norm, CmA, BmA);
+ }
+ VUNITIZE(norm);
+
+ VSCALE(A, A, cfactor);
+ VSCALE(B, B, cfactor);
+ VSCALE(C, C, cfactor);
+
@@ Diff output truncated at 100000 characters. @@
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
_______________________________________________
BRL-CAD Source Commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/brlcad-commits