Revision: 76360
          http://sourceforge.net/p/brlcad/code/76360
Author:   starseeker
Date:     2020-07-17 16:44:16 +0000 (Fri, 17 Jul 2020)
Log Message:
-----------
Move GED command files into subdirectories, to match zoom pattern. (This will 
be disruptive to the build, so doing the work in a branch)

Modified Paths:
--------------
    brlcad/branches/bioh/src/libged/CMakeLists.txt

Added Paths:
-----------
    brlcad/branches/bioh/src/libged/3ptarb/
    brlcad/branches/bioh/src/libged/3ptarb/3ptarb.c
    brlcad/branches/bioh/src/libged/adc/
    brlcad/branches/bioh/src/libged/adc/adc.c
    brlcad/branches/bioh/src/libged/adjust/
    brlcad/branches/bioh/src/libged/adjust/adjust.c
    brlcad/branches/bioh/src/libged/ae2dir/
    brlcad/branches/bioh/src/libged/ae2dir/ae2dir.c
    brlcad/branches/bioh/src/libged/analyze/
    brlcad/branches/bioh/src/libged/analyze/analyze.c
    brlcad/branches/bioh/src/libged/annotate/
    brlcad/branches/bioh/src/libged/annotate/annotate.c
    brlcad/branches/bioh/src/libged/arb/
    brlcad/branches/bioh/src/libged/arb/arb.c
    brlcad/branches/bioh/src/libged/arced/
    brlcad/branches/bioh/src/libged/arced/arced.c
    brlcad/branches/bioh/src/libged/arot/
    brlcad/branches/bioh/src/libged/arot/arot.c
    brlcad/branches/bioh/src/libged/attr/
    brlcad/branches/bioh/src/libged/attr/attr.cpp
    brlcad/branches/bioh/src/libged/autoview/
    brlcad/branches/bioh/src/libged/autoview/autoview.c
    brlcad/branches/bioh/src/libged/bb/
    brlcad/branches/bioh/src/libged/bb/bb.c
    brlcad/branches/bioh/src/libged/bev/
    brlcad/branches/bioh/src/libged/bev/bev.c
    brlcad/branches/bioh/src/libged/bigE/
    brlcad/branches/bioh/src/libged/bigE/bigE.c
    brlcad/branches/bioh/src/libged/blast/
    brlcad/branches/bioh/src/libged/blast/blast.c
    brlcad/branches/bioh/src/libged/bo/
    brlcad/branches/bioh/src/libged/bo/bo.c
    brlcad/branches/bioh/src/libged/bot_condense/
    brlcad/branches/bioh/src/libged/bot_condense/bot_condense.c
    brlcad/branches/bioh/src/libged/bot_decimate/
    brlcad/branches/bioh/src/libged/bot_decimate/bot_decimate.c
    brlcad/branches/bioh/src/libged/bot_dump/
    brlcad/branches/bioh/src/libged/bot_dump/bot_dump.c
    brlcad/branches/bioh/src/libged/bot_face_fuse/
    brlcad/branches/bioh/src/libged/bot_face_fuse/bot_face_fuse.c
    brlcad/branches/bioh/src/libged/bot_face_sort/
    brlcad/branches/bioh/src/libged/bot_face_sort/bot_face_sort.c
    brlcad/branches/bioh/src/libged/bot_flip/
    brlcad/branches/bioh/src/libged/bot_flip/bot_flip.c
    brlcad/branches/bioh/src/libged/bot_fuse/
    brlcad/branches/bioh/src/libged/bot_fuse/bot_fuse.c
    brlcad/branches/bioh/src/libged/bot_merge/
    brlcad/branches/bioh/src/libged/bot_merge/bot_merge.c
    brlcad/branches/bioh/src/libged/bot_smooth/
    brlcad/branches/bioh/src/libged/bot_smooth/bot_smooth.c
    brlcad/branches/bioh/src/libged/bot_split/
    brlcad/branches/bioh/src/libged/bot_split/bot_split.c
    brlcad/branches/bioh/src/libged/bot_sync/
    brlcad/branches/bioh/src/libged/bot_sync/bot_sync.c
    brlcad/branches/bioh/src/libged/bot_vertex_fuse/
    brlcad/branches/bioh/src/libged/bot_vertex_fuse/bot_vertex_fuse.c
    brlcad/branches/bioh/src/libged/cat/
    brlcad/branches/bioh/src/libged/cat/cat.c
    brlcad/branches/bioh/src/libged/cc/
    brlcad/branches/bioh/src/libged/cc/cc.c
    brlcad/branches/bioh/src/libged/clone/
    brlcad/branches/bioh/src/libged/clone/clone.c
    brlcad/branches/bioh/src/libged/coil/
    brlcad/branches/bioh/src/libged/coil/coil.c
    brlcad/branches/bioh/src/libged/color/
    brlcad/branches/bioh/src/libged/color/color.c
    brlcad/branches/bioh/src/libged/columns/
    brlcad/branches/bioh/src/libged/columns/columns.c
    brlcad/branches/bioh/src/libged/comb/
    brlcad/branches/bioh/src/libged/comb/comb.c
    brlcad/branches/bioh/src/libged/comb_color/
    brlcad/branches/bioh/src/libged/comb_color/comb_color.c
    brlcad/branches/bioh/src/libged/comb_std/
    brlcad/branches/bioh/src/libged/comb_std/comb_std.c
    brlcad/branches/bioh/src/libged/combmem/
    brlcad/branches/bioh/src/libged/combmem/combmem.c
    brlcad/branches/bioh/src/libged/concat/
    brlcad/branches/bioh/src/libged/concat/concat.cpp
    brlcad/branches/bioh/src/libged/copy/
    brlcad/branches/bioh/src/libged/copy/copy.c
    brlcad/branches/bioh/src/libged/copyeval/
    brlcad/branches/bioh/src/libged/copyeval/copyeval.c
    brlcad/branches/bioh/src/libged/copymat/
    brlcad/branches/bioh/src/libged/copymat/copymat.c
    brlcad/branches/bioh/src/libged/cpi/
    brlcad/branches/bioh/src/libged/cpi/cpi.c
    brlcad/branches/bioh/src/libged/dag/
    brlcad/branches/bioh/src/libged/dag/dag.cpp
    brlcad/branches/bioh/src/libged/dbip/
    brlcad/branches/bioh/src/libged/dbip/dbip.c
    brlcad/branches/bioh/src/libged/debug/
    brlcad/branches/bioh/src/libged/debug/debug.cpp
    brlcad/branches/bioh/src/libged/debugbu/
    brlcad/branches/bioh/src/libged/debugbu/debugbu.c
    brlcad/branches/bioh/src/libged/debugdir/
    brlcad/branches/bioh/src/libged/debugdir/debugdir.c
    brlcad/branches/bioh/src/libged/debuglib/
    brlcad/branches/bioh/src/libged/debuglib/debuglib.c
    brlcad/branches/bioh/src/libged/debugnmg/
    brlcad/branches/bioh/src/libged/debugnmg/debugnmg.c
    brlcad/branches/bioh/src/libged/decompose/
    brlcad/branches/bioh/src/libged/decompose/decompose.c
    brlcad/branches/bioh/src/libged/delay/
    brlcad/branches/bioh/src/libged/delay/delay.c
    brlcad/branches/bioh/src/libged/dir2ae/
    brlcad/branches/bioh/src/libged/dir2ae/dir2ae.c
    brlcad/branches/bioh/src/libged/display_list/
    brlcad/branches/bioh/src/libged/display_list/display_list.c
    brlcad/branches/bioh/src/libged/draw/
    brlcad/branches/bioh/src/libged/draw/draw.c
    brlcad/branches/bioh/src/libged/draw_calc/
    brlcad/branches/bioh/src/libged/draw_calc/draw_calc.cpp
    brlcad/branches/bioh/src/libged/dsp/
    brlcad/branches/bioh/src/libged/dsp/dsp.c
    brlcad/branches/bioh/src/libged/dump/
    brlcad/branches/bioh/src/libged/dump/dump.c
    brlcad/branches/bioh/src/libged/dup/
    brlcad/branches/bioh/src/libged/dup/dup.c
    brlcad/branches/bioh/src/libged/eac/
    brlcad/branches/bioh/src/libged/eac/eac.c
    brlcad/branches/bioh/src/libged/echo/
    brlcad/branches/bioh/src/libged/echo/echo.c
    brlcad/branches/bioh/src/libged/edarb/
    brlcad/branches/bioh/src/libged/edarb/edarb.c
    brlcad/branches/bioh/src/libged/edbot/
    brlcad/branches/bioh/src/libged/edbot/edbot.c
    brlcad/branches/bioh/src/libged/edcodes/
    brlcad/branches/bioh/src/libged/edcodes/edcodes.c
    brlcad/branches/bioh/src/libged/edcomb/
    brlcad/branches/bioh/src/libged/edcomb/edcomb.c
    brlcad/branches/bioh/src/libged/edit/
    brlcad/branches/bioh/src/libged/edit/edit.c
    brlcad/branches/bioh/src/libged/edit_metaball/
    brlcad/branches/bioh/src/libged/edit_metaball/edit_metaball.c
    brlcad/branches/bioh/src/libged/editit/
    brlcad/branches/bioh/src/libged/editit/editit.c
    brlcad/branches/bioh/src/libged/edmater/
    brlcad/branches/bioh/src/libged/edmater/edmater.c
    brlcad/branches/bioh/src/libged/edpipe/
    brlcad/branches/bioh/src/libged/edpipe/edpipe.c
    brlcad/branches/bioh/src/libged/env/
    brlcad/branches/bioh/src/libged/env/env.c
    brlcad/branches/bioh/src/libged/erase/
    brlcad/branches/bioh/src/libged/erase/erase.c
    brlcad/branches/bioh/src/libged/exists/
    brlcad/branches/bioh/src/libged/exists/exists.c
    brlcad/branches/bioh/src/libged/expand/
    brlcad/branches/bioh/src/libged/expand/expand.c
    brlcad/branches/bioh/src/libged/eye_pos/
    brlcad/branches/bioh/src/libged/eye_pos/eye_pos.c
    brlcad/branches/bioh/src/libged/facedef/
    brlcad/branches/bioh/src/libged/facedef/facedef.c
    brlcad/branches/bioh/src/libged/facetize/
    brlcad/branches/bioh/src/libged/facetize/facetize.cpp
    brlcad/branches/bioh/src/libged/facetize_log/
    brlcad/branches/bioh/src/libged/facetize_log/facetize_log.c
    brlcad/branches/bioh/src/libged/fb2pix/
    brlcad/branches/bioh/src/libged/fb2pix/fb2pix.c
    brlcad/branches/bioh/src/libged/fbclear/
    brlcad/branches/bioh/src/libged/fbclear/fbclear.c
    brlcad/branches/bioh/src/libged/find/
    brlcad/branches/bioh/src/libged/find/find.c
    brlcad/branches/bioh/src/libged/form/
    brlcad/branches/bioh/src/libged/form/form.c
    brlcad/branches/bioh/src/libged/fracture/
    brlcad/branches/bioh/src/libged/fracture/fracture.c
    brlcad/branches/bioh/src/libged/gdiff/
    brlcad/branches/bioh/src/libged/gdiff/gdiff.c
    brlcad/branches/bioh/src/libged/ged/
    brlcad/branches/bioh/src/libged/ged/ged.c
    brlcad/branches/bioh/src/libged/ged_util/
    brlcad/branches/bioh/src/libged/ged_util/ged_util.c
    brlcad/branches/bioh/src/libged/get/
    brlcad/branches/bioh/src/libged/get/get.c
    brlcad/branches/bioh/src/libged/get_autoview/
    brlcad/branches/bioh/src/libged/get_autoview/get_autoview.c
    brlcad/branches/bioh/src/libged/get_comb/
    brlcad/branches/bioh/src/libged/get_comb/get_comb.c
    brlcad/branches/bioh/src/libged/get_eyemodel/
    brlcad/branches/bioh/src/libged/get_eyemodel/get_eyemodel.c
    brlcad/branches/bioh/src/libged/get_obj_bounds/
    brlcad/branches/bioh/src/libged/get_obj_bounds/get_obj_bounds.c
    brlcad/branches/bioh/src/libged/get_solid_kp/
    brlcad/branches/bioh/src/libged/get_solid_kp/get_solid_kp.c
    brlcad/branches/bioh/src/libged/get_type/
    brlcad/branches/bioh/src/libged/get_type/get_type.c
    brlcad/branches/bioh/src/libged/glob/
    brlcad/branches/bioh/src/libged/glob/glob.c
    brlcad/branches/bioh/src/libged/gqa/
    brlcad/branches/bioh/src/libged/gqa/gqa.c
    brlcad/branches/bioh/src/libged/grid/
    brlcad/branches/bioh/src/libged/grid/grid.c
    brlcad/branches/bioh/src/libged/grid2model_lu/
    brlcad/branches/bioh/src/libged/grid2model_lu/grid2model_lu.c
    brlcad/branches/bioh/src/libged/grid2view_lu/
    brlcad/branches/bioh/src/libged/grid2view_lu/grid2view_lu.c
    brlcad/branches/bioh/src/libged/group/
    brlcad/branches/bioh/src/libged/group/group.c
    brlcad/branches/bioh/src/libged/heal/
    brlcad/branches/bioh/src/libged/heal/heal.c
    brlcad/branches/bioh/src/libged/hide/
    brlcad/branches/bioh/src/libged/hide/hide.c
    brlcad/branches/bioh/src/libged/how/
    brlcad/branches/bioh/src/libged/how/how.c
    brlcad/branches/bioh/src/libged/human/
    brlcad/branches/bioh/src/libged/human/human.c
    brlcad/branches/bioh/src/libged/illum/
    brlcad/branches/bioh/src/libged/illum/illum.c
    brlcad/branches/bioh/src/libged/importFg4Section/
    brlcad/branches/bioh/src/libged/importFg4Section/importFg4Section.c
    brlcad/branches/bioh/src/libged/inside/
    brlcad/branches/bioh/src/libged/inside/inside.c
    brlcad/branches/bioh/src/libged/instance/
    brlcad/branches/bioh/src/libged/instance/instance.c
    brlcad/branches/bioh/src/libged/isize/
    brlcad/branches/bioh/src/libged/isize/isize.c
    brlcad/branches/bioh/src/libged/item/
    brlcad/branches/bioh/src/libged/item/item.c
    brlcad/branches/bioh/src/libged/joint/
    brlcad/branches/bioh/src/libged/joint/joint.c
    brlcad/branches/bioh/src/libged/joint2/
    brlcad/branches/bioh/src/libged/joint2/joint2.c
    brlcad/branches/bioh/src/libged/keep/
    brlcad/branches/bioh/src/libged/keep/keep.c
    brlcad/branches/bioh/src/libged/keypoint/
    brlcad/branches/bioh/src/libged/keypoint/keypoint.c
    brlcad/branches/bioh/src/libged/kill/
    brlcad/branches/bioh/src/libged/kill/kill.c
    brlcad/branches/bioh/src/libged/killall/
    brlcad/branches/bioh/src/libged/killall/killall.c
    brlcad/branches/bioh/src/libged/killrefs/
    brlcad/branches/bioh/src/libged/killrefs/killrefs.c
    brlcad/branches/bioh/src/libged/killtree/
    brlcad/branches/bioh/src/libged/killtree/killtree.c
    brlcad/branches/bioh/src/libged/label/
    brlcad/branches/bioh/src/libged/label/label.c
    brlcad/branches/bioh/src/libged/lc/
    brlcad/branches/bioh/src/libged/lc/lc.c
    brlcad/branches/bioh/src/libged/libfuncs/
    brlcad/branches/bioh/src/libged/libfuncs/libfuncs.c
    brlcad/branches/bioh/src/libged/lint/
    brlcad/branches/bioh/src/libged/lint/lint.cpp
    brlcad/branches/bioh/src/libged/list/
    brlcad/branches/bioh/src/libged/list/list.c
    brlcad/branches/bioh/src/libged/loadview/
    brlcad/branches/bioh/src/libged/loadview/loadview.c
    brlcad/branches/bioh/src/libged/lod/
    brlcad/branches/bioh/src/libged/lod/lod.c
    brlcad/branches/bioh/src/libged/log/
    brlcad/branches/bioh/src/libged/log/log.c
    brlcad/branches/bioh/src/libged/lookat/
    brlcad/branches/bioh/src/libged/lookat/lookat.c
    brlcad/branches/bioh/src/libged/ls/
    brlcad/branches/bioh/src/libged/ls/ls.c
    brlcad/branches/bioh/src/libged/lt/
    brlcad/branches/bioh/src/libged/lt/lt.c
    brlcad/branches/bioh/src/libged/m2v_point/
    brlcad/branches/bioh/src/libged/m2v_point/m2v_point.c
    brlcad/branches/bioh/src/libged/make/
    brlcad/branches/bioh/src/libged/make/make.c
    brlcad/branches/bioh/src/libged/make_name/
    brlcad/branches/bioh/src/libged/make_name/make_name.c
    brlcad/branches/bioh/src/libged/match/
    brlcad/branches/bioh/src/libged/match/match.c
    brlcad/branches/bioh/src/libged/mater/
    brlcad/branches/bioh/src/libged/mater/mater.cpp
    brlcad/branches/bioh/src/libged/mirror/
    brlcad/branches/bioh/src/libged/mirror/mirror.c
    brlcad/branches/bioh/src/libged/model2grid_lu/
    brlcad/branches/bioh/src/libged/model2grid_lu/model2grid_lu.c
    brlcad/branches/bioh/src/libged/model2view/
    brlcad/branches/bioh/src/libged/model2view/model2view.c
    brlcad/branches/bioh/src/libged/model2view_lu/
    brlcad/branches/bioh/src/libged/model2view_lu/model2view_lu.c
    brlcad/branches/bioh/src/libged/move/
    brlcad/branches/bioh/src/libged/move/move.c
    brlcad/branches/bioh/src/libged/move_all/
    brlcad/branches/bioh/src/libged/move_all/move_all.c
    brlcad/branches/bioh/src/libged/move_arb_edge/
    brlcad/branches/bioh/src/libged/move_arb_edge/move_arb_edge.c
    brlcad/branches/bioh/src/libged/move_arb_face/
    brlcad/branches/bioh/src/libged/move_arb_face/move_arb_face.c
    brlcad/branches/bioh/src/libged/mrot/
    brlcad/branches/bioh/src/libged/mrot/mrot.c
    brlcad/branches/bioh/src/libged/nirt/
    brlcad/branches/bioh/src/libged/nirt/nirt.c
    brlcad/branches/bioh/src/libged/nmg/
    brlcad/branches/bioh/src/libged/nmg/nmg.c
    brlcad/branches/bioh/src/libged/nmg_cmface/
    brlcad/branches/bioh/src/libged/nmg_cmface/nmg_cmface.c
    brlcad/branches/bioh/src/libged/nmg_collapse/
    brlcad/branches/bioh/src/libged/nmg_collapse/nmg_collapse.c
    brlcad/branches/bioh/src/libged/nmg_fix_normals/
    brlcad/branches/bioh/src/libged/nmg_fix_normals/nmg_fix_normals.c
    brlcad/branches/bioh/src/libged/nmg_kill_f/
    brlcad/branches/bioh/src/libged/nmg_kill_f/nmg_kill_f.c
    brlcad/branches/bioh/src/libged/nmg_kill_v/
    brlcad/branches/bioh/src/libged/nmg_kill_v/nmg_kill_v.c
    brlcad/branches/bioh/src/libged/nmg_make_v/
    brlcad/branches/bioh/src/libged/nmg_make_v/nmg_make_v.c
    brlcad/branches/bioh/src/libged/nmg_mm/
    brlcad/branches/bioh/src/libged/nmg_mm/nmg_mm.c
    brlcad/branches/bioh/src/libged/nmg_move_v/
    brlcad/branches/bioh/src/libged/nmg_move_v/nmg_move_v.c
    brlcad/branches/bioh/src/libged/nmg_simplify/
    brlcad/branches/bioh/src/libged/nmg_simplify/nmg_simplify.c
    brlcad/branches/bioh/src/libged/ocenter/
    brlcad/branches/bioh/src/libged/ocenter/ocenter.c
    brlcad/branches/bioh/src/libged/open/
    brlcad/branches/bioh/src/libged/open/open.c
    brlcad/branches/bioh/src/libged/orient/
    brlcad/branches/bioh/src/libged/orient/orient.c
    brlcad/branches/bioh/src/libged/orotate/
    brlcad/branches/bioh/src/libged/orotate/orotate.c
    brlcad/branches/bioh/src/libged/oscale/
    brlcad/branches/bioh/src/libged/oscale/oscale.c
    brlcad/branches/bioh/src/libged/otranslate/
    brlcad/branches/bioh/src/libged/otranslate/otranslate.c
    brlcad/branches/bioh/src/libged/overlay/
    brlcad/branches/bioh/src/libged/overlay/overlay.c
    brlcad/branches/bioh/src/libged/path/
    brlcad/branches/bioh/src/libged/path/path.c
    brlcad/branches/bioh/src/libged/pathlist/
    brlcad/branches/bioh/src/libged/pathlist/pathlist.c
    brlcad/branches/bioh/src/libged/pathsum/
    brlcad/branches/bioh/src/libged/pathsum/pathsum.c
    brlcad/branches/bioh/src/libged/perspective/
    brlcad/branches/bioh/src/libged/perspective/perspective.c
    brlcad/branches/bioh/src/libged/pix2fb/
    brlcad/branches/bioh/src/libged/pix2fb/pix2fb.c
    brlcad/branches/bioh/src/libged/plot/
    brlcad/branches/bioh/src/libged/plot/plot.c
    brlcad/branches/bioh/src/libged/pmat/
    brlcad/branches/bioh/src/libged/pmat/pmat.c
    brlcad/branches/bioh/src/libged/pmodel2view/
    brlcad/branches/bioh/src/libged/pmodel2view/pmodel2view.c
    brlcad/branches/bioh/src/libged/png/
    brlcad/branches/bioh/src/libged/png/png.c
    brlcad/branches/bioh/src/libged/png2fb/
    brlcad/branches/bioh/src/libged/png2fb/png2fb.c
    brlcad/branches/bioh/src/libged/pnts/
    brlcad/branches/bioh/src/libged/pnts/pnts.cpp
    brlcad/branches/bioh/src/libged/pnts_util/
    brlcad/branches/bioh/src/libged/pnts_util/pnts_util.c
    brlcad/branches/bioh/src/libged/polyclip/
    brlcad/branches/bioh/src/libged/polyclip/polyclip.cpp
    brlcad/branches/bioh/src/libged/prcolor/
    brlcad/branches/bioh/src/libged/prcolor/prcolor.c
    brlcad/branches/bioh/src/libged/prefix/
    brlcad/branches/bioh/src/libged/prefix/prefix.c
    brlcad/branches/bioh/src/libged/preview/
    brlcad/branches/bioh/src/libged/preview/preview.c
    brlcad/branches/bioh/src/libged/process/
    brlcad/branches/bioh/src/libged/process/process.c
    brlcad/branches/bioh/src/libged/protate/
    brlcad/branches/bioh/src/libged/protate/protate.c
    brlcad/branches/bioh/src/libged/ps/
    brlcad/branches/bioh/src/libged/ps/ps.c
    brlcad/branches/bioh/src/libged/pscale/
    brlcad/branches/bioh/src/libged/pscale/pscale.c
    brlcad/branches/bioh/src/libged/pset/
    brlcad/branches/bioh/src/libged/pset/pset.c
    brlcad/branches/bioh/src/libged/ptranslate/
    brlcad/branches/bioh/src/libged/ptranslate/ptranslate.c
    brlcad/branches/bioh/src/libged/pull/
    brlcad/branches/bioh/src/libged/pull/pull.c
    brlcad/branches/bioh/src/libged/push/
    brlcad/branches/bioh/src/libged/push/push.c
    brlcad/branches/bioh/src/libged/put/
    brlcad/branches/bioh/src/libged/put/put.c
    brlcad/branches/bioh/src/libged/put_comb/
    brlcad/branches/bioh/src/libged/put_comb/put_comb.c
    brlcad/branches/bioh/src/libged/putmat/
    brlcad/branches/bioh/src/libged/putmat/putmat.c
    brlcad/branches/bioh/src/libged/qray/
    brlcad/branches/bioh/src/libged/qray/qray.c
    brlcad/branches/bioh/src/libged/qvrot/
    brlcad/branches/bioh/src/libged/qvrot/qvrot.c
    brlcad/branches/bioh/src/libged/rcodes/
    brlcad/branches/bioh/src/libged/rcodes/rcodes.c
    brlcad/branches/bioh/src/libged/rect/
    brlcad/branches/bioh/src/libged/rect/rect.c
    brlcad/branches/bioh/src/libged/red/
    brlcad/branches/bioh/src/libged/red/red.c
    brlcad/branches/bioh/src/libged/regdef/
    brlcad/branches/bioh/src/libged/regdef/regdef.c
    brlcad/branches/bioh/src/libged/region/
    brlcad/branches/bioh/src/libged/region/region.c
    brlcad/branches/bioh/src/libged/remove/
    brlcad/branches/bioh/src/libged/remove/remove.c
    brlcad/branches/bioh/src/libged/rfarb/
    brlcad/branches/bioh/src/libged/rfarb/rfarb.c
    brlcad/branches/bioh/src/libged/rmap/
    brlcad/branches/bioh/src/libged/rmap/rmap.c
    brlcad/branches/bioh/src/libged/rmat/
    brlcad/branches/bioh/src/libged/rmat/rmat.c
    brlcad/branches/bioh/src/libged/rmater/
    brlcad/branches/bioh/src/libged/rmater/rmater.c
    brlcad/branches/bioh/src/libged/rot/
    brlcad/branches/bioh/src/libged/rot/rot.c
    brlcad/branches/bioh/src/libged/rot_point/
    brlcad/branches/bioh/src/libged/rot_point/rot_point.c
    brlcad/branches/bioh/src/libged/rotate_about/
    brlcad/branches/bioh/src/libged/rotate_about/rotate_about.c
    brlcad/branches/bioh/src/libged/rotate_arb_face/
    brlcad/branches/bioh/src/libged/rotate_arb_face/rotate_arb_face.c
    brlcad/branches/bioh/src/libged/rotate_eto/
    brlcad/branches/bioh/src/libged/rotate_eto/rotate_eto.c
    brlcad/branches/bioh/src/libged/rotate_extrude/
    brlcad/branches/bioh/src/libged/rotate_extrude/rotate_extrude.c
    brlcad/branches/bioh/src/libged/rotate_hyp/
    brlcad/branches/bioh/src/libged/rotate_hyp/rotate_hyp.c
    brlcad/branches/bioh/src/libged/rotate_tgc/
    brlcad/branches/bioh/src/libged/rotate_tgc/rotate_tgc.c
    brlcad/branches/bioh/src/libged/rrt/
    brlcad/branches/bioh/src/libged/rrt/rrt.c
    brlcad/branches/bioh/src/libged/rt/
    brlcad/branches/bioh/src/libged/rt/rt.c
    brlcad/branches/bioh/src/libged/rtabort/
    brlcad/branches/bioh/src/libged/rtabort/rtabort.c
    brlcad/branches/bioh/src/libged/rtcheck/
    brlcad/branches/bioh/src/libged/rtcheck/rtcheck.c
    brlcad/branches/bioh/src/libged/rtwizard/
    brlcad/branches/bioh/src/libged/rtwizard/rtwizard.c
    brlcad/branches/bioh/src/libged/savekey/
    brlcad/branches/bioh/src/libged/savekey/savekey.c
    brlcad/branches/bioh/src/libged/saveview/
    brlcad/branches/bioh/src/libged/saveview/saveview.c
    brlcad/branches/bioh/src/libged/scale/
    brlcad/branches/bioh/src/libged/scale/scale.c
    brlcad/branches/bioh/src/libged/scale_ehy/
    brlcad/branches/bioh/src/libged/scale_ehy/scale_ehy.c
    brlcad/branches/bioh/src/libged/scale_ell/
    brlcad/branches/bioh/src/libged/scale_ell/scale_ell.c
    brlcad/branches/bioh/src/libged/scale_epa/
    brlcad/branches/bioh/src/libged/scale_epa/scale_epa.c
    brlcad/branches/bioh/src/libged/scale_eto/
    brlcad/branches/bioh/src/libged/scale_eto/scale_eto.c
    brlcad/branches/bioh/src/libged/scale_extrude/
    brlcad/branches/bioh/src/libged/scale_extrude/scale_extrude.c
    brlcad/branches/bioh/src/libged/scale_hyp/
    brlcad/branches/bioh/src/libged/scale_hyp/scale_hyp.c
    brlcad/branches/bioh/src/libged/scale_part/
    brlcad/branches/bioh/src/libged/scale_part/scale_part.c
    brlcad/branches/bioh/src/libged/scale_rhc/
    brlcad/branches/bioh/src/libged/scale_rhc/scale_rhc.c
    brlcad/branches/bioh/src/libged/scale_rpc/
    brlcad/branches/bioh/src/libged/scale_rpc/scale_rpc.c
    brlcad/branches/bioh/src/libged/scale_superell/
    brlcad/branches/bioh/src/libged/scale_superell/scale_superell.c
    brlcad/branches/bioh/src/libged/scale_tgc/
    brlcad/branches/bioh/src/libged/scale_tgc/scale_tgc.c
    brlcad/branches/bioh/src/libged/scale_tor/
    brlcad/branches/bioh/src/libged/scale_tor/scale_tor.c
    brlcad/branches/bioh/src/libged/screengrab/
    brlcad/branches/bioh/src/libged/screengrab/screengrab.c
    brlcad/branches/bioh/src/libged/search/
    brlcad/branches/bioh/src/libged/search/search.c
    brlcad/branches/bioh/src/libged/select/
    brlcad/branches/bioh/src/libged/select/select.c
    brlcad/branches/bioh/src/libged/set_output_script/
    brlcad/branches/bioh/src/libged/set_output_script/set_output_script.c
    brlcad/branches/bioh/src/libged/set_transparency/
    brlcad/branches/bioh/src/libged/set_transparency/set_transparency.c
    brlcad/branches/bioh/src/libged/set_uplotOutputMode/
    brlcad/branches/bioh/src/libged/set_uplotOutputMode/set_uplotOutputMode.c
    brlcad/branches/bioh/src/libged/setview/
    brlcad/branches/bioh/src/libged/setview/setview.c
    brlcad/branches/bioh/src/libged/shaded_mode/
    brlcad/branches/bioh/src/libged/shaded_mode/shaded_mode.c
    brlcad/branches/bioh/src/libged/shader/
    brlcad/branches/bioh/src/libged/shader/shader.c
    brlcad/branches/bioh/src/libged/shells/
    brlcad/branches/bioh/src/libged/shells/shells.c
    brlcad/branches/bioh/src/libged/showmats/
    brlcad/branches/bioh/src/libged/showmats/showmats.c
    brlcad/branches/bioh/src/libged/slew/
    brlcad/branches/bioh/src/libged/slew/slew.c
    brlcad/branches/bioh/src/libged/solid_report/
    brlcad/branches/bioh/src/libged/solid_report/solid_report.c
    brlcad/branches/bioh/src/libged/solids_on_ray/
    brlcad/branches/bioh/src/libged/solids_on_ray/solids_on_ray.c
    brlcad/branches/bioh/src/libged/sphgroup/
    brlcad/branches/bioh/src/libged/sphgroup/sphgroup.c
    brlcad/branches/bioh/src/libged/summary/
    brlcad/branches/bioh/src/libged/summary/summary.c
    brlcad/branches/bioh/src/libged/sync/
    brlcad/branches/bioh/src/libged/sync/sync.c
    brlcad/branches/bioh/src/libged/tables/
    brlcad/branches/bioh/src/libged/tables/tables.c
    brlcad/branches/bioh/src/libged/tire/
    brlcad/branches/bioh/src/libged/tire/tire.c
    brlcad/branches/bioh/src/libged/title/
    brlcad/branches/bioh/src/libged/title/title.c
    brlcad/branches/bioh/src/libged/tol/
    brlcad/branches/bioh/src/libged/tol/tol.c
    brlcad/branches/bioh/src/libged/tops/
    brlcad/branches/bioh/src/libged/tops/tops.c
    brlcad/branches/bioh/src/libged/tra/
    brlcad/branches/bioh/src/libged/tra/tra.c
    brlcad/branches/bioh/src/libged/trace/
    brlcad/branches/bioh/src/libged/trace/trace.c
    brlcad/branches/bioh/src/libged/track/
    brlcad/branches/bioh/src/libged/track/track.c
    brlcad/branches/bioh/src/libged/translate_extrude/
    brlcad/branches/bioh/src/libged/translate_extrude/translate_extrude.c
    brlcad/branches/bioh/src/libged/translate_tgc/
    brlcad/branches/bioh/src/libged/translate_tgc/translate_tgc.c
    brlcad/branches/bioh/src/libged/tree/
    brlcad/branches/bioh/src/libged/tree/tree.c
    brlcad/branches/bioh/src/libged/typein/
    brlcad/branches/bioh/src/libged/typein/typein.c
    brlcad/branches/bioh/src/libged/unhide/
    brlcad/branches/bioh/src/libged/unhide/unhide.c
    brlcad/branches/bioh/src/libged/units/
    brlcad/branches/bioh/src/libged/units/units.c
    brlcad/branches/bioh/src/libged/v2m_point/
    brlcad/branches/bioh/src/libged/v2m_point/v2m_point.c
    brlcad/branches/bioh/src/libged/vdraw/
    brlcad/branches/bioh/src/libged/vdraw/vdraw.c
    brlcad/branches/bioh/src/libged/version/
    brlcad/branches/bioh/src/libged/version/version.c
    brlcad/branches/bioh/src/libged/view2grid_lu/
    brlcad/branches/bioh/src/libged/view2grid_lu/view2grid_lu.c
    brlcad/branches/bioh/src/libged/view2model/
    brlcad/branches/bioh/src/libged/view2model/view2model.c
    brlcad/branches/bioh/src/libged/view2model_lu/
    brlcad/branches/bioh/src/libged/view2model_lu/view2model_lu.c
    brlcad/branches/bioh/src/libged/view2model_vec/
    brlcad/branches/bioh/src/libged/view2model_vec/view2model_vec.c
    brlcad/branches/bioh/src/libged/viewdir/
    brlcad/branches/bioh/src/libged/viewdir/viewdir.c
    brlcad/branches/bioh/src/libged/voxelize/
    brlcad/branches/bioh/src/libged/voxelize/voxelize.c
    brlcad/branches/bioh/src/libged/vrot/
    brlcad/branches/bioh/src/libged/vrot/vrot.c
    brlcad/branches/bioh/src/libged/vutil/
    brlcad/branches/bioh/src/libged/vutil/vutil.c
    brlcad/branches/bioh/src/libged/wcodes/
    brlcad/branches/bioh/src/libged/wcodes/wcodes.c
    brlcad/branches/bioh/src/libged/wdb_importFg4Section/
    brlcad/branches/bioh/src/libged/wdb_importFg4Section/wdb_importFg4Section.c
    brlcad/branches/bioh/src/libged/whatid/
    brlcad/branches/bioh/src/libged/whatid/whatid.c
    brlcad/branches/bioh/src/libged/which/
    brlcad/branches/bioh/src/libged/which/which.cpp
    brlcad/branches/bioh/src/libged/which_shader/
    brlcad/branches/bioh/src/libged/which_shader/which_shader.c
    brlcad/branches/bioh/src/libged/who/
    brlcad/branches/bioh/src/libged/who/who.c
    brlcad/branches/bioh/src/libged/wmater/
    brlcad/branches/bioh/src/libged/wmater/wmater.c
    brlcad/branches/bioh/src/libged/xpush/
    brlcad/branches/bioh/src/libged/xpush/xpush.c
    brlcad/branches/bioh/src/libged/zap/
    brlcad/branches/bioh/src/libged/zap/zap.c

Removed Paths:
-------------
    brlcad/branches/bioh/src/libged/3ptarb.c
    brlcad/branches/bioh/src/libged/adc.c
    brlcad/branches/bioh/src/libged/adjust.c
    brlcad/branches/bioh/src/libged/ae2dir.c
    brlcad/branches/bioh/src/libged/analyze.c
    brlcad/branches/bioh/src/libged/annotate.c
    brlcad/branches/bioh/src/libged/arb.c
    brlcad/branches/bioh/src/libged/arced.c
    brlcad/branches/bioh/src/libged/arot.c
    brlcad/branches/bioh/src/libged/attr.cpp
    brlcad/branches/bioh/src/libged/autoview.c
    brlcad/branches/bioh/src/libged/bb.c
    brlcad/branches/bioh/src/libged/bev.c
    brlcad/branches/bioh/src/libged/bigE.c
    brlcad/branches/bioh/src/libged/blast.c
    brlcad/branches/bioh/src/libged/bo.c
    brlcad/branches/bioh/src/libged/bot_condense.c
    brlcad/branches/bioh/src/libged/bot_decimate.c
    brlcad/branches/bioh/src/libged/bot_dump.c
    brlcad/branches/bioh/src/libged/bot_face_fuse.c
    brlcad/branches/bioh/src/libged/bot_face_sort.c
    brlcad/branches/bioh/src/libged/bot_flip.c
    brlcad/branches/bioh/src/libged/bot_fuse.c
    brlcad/branches/bioh/src/libged/bot_merge.c
    brlcad/branches/bioh/src/libged/bot_smooth.c
    brlcad/branches/bioh/src/libged/bot_split.c
    brlcad/branches/bioh/src/libged/bot_sync.c
    brlcad/branches/bioh/src/libged/bot_vertex_fuse.c
    brlcad/branches/bioh/src/libged/cat.c
    brlcad/branches/bioh/src/libged/cc.c
    brlcad/branches/bioh/src/libged/clone.c
    brlcad/branches/bioh/src/libged/coil.c
    brlcad/branches/bioh/src/libged/color.c
    brlcad/branches/bioh/src/libged/columns.c
    brlcad/branches/bioh/src/libged/comb.c
    brlcad/branches/bioh/src/libged/comb_color.c
    brlcad/branches/bioh/src/libged/comb_std.c
    brlcad/branches/bioh/src/libged/combmem.c
    brlcad/branches/bioh/src/libged/concat.cpp
    brlcad/branches/bioh/src/libged/copy.c
    brlcad/branches/bioh/src/libged/copyeval.c
    brlcad/branches/bioh/src/libged/copymat.c
    brlcad/branches/bioh/src/libged/cpi.c
    brlcad/branches/bioh/src/libged/dag.cpp
    brlcad/branches/bioh/src/libged/dbip.c
    brlcad/branches/bioh/src/libged/debug.cpp
    brlcad/branches/bioh/src/libged/debugbu.c
    brlcad/branches/bioh/src/libged/debugdir.c
    brlcad/branches/bioh/src/libged/debuglib.c
    brlcad/branches/bioh/src/libged/debugnmg.c
    brlcad/branches/bioh/src/libged/decompose.c
    brlcad/branches/bioh/src/libged/delay.c
    brlcad/branches/bioh/src/libged/dir2ae.c
    brlcad/branches/bioh/src/libged/display_list.c
    brlcad/branches/bioh/src/libged/draw.c
    brlcad/branches/bioh/src/libged/draw_calc.cpp
    brlcad/branches/bioh/src/libged/dsp.c
    brlcad/branches/bioh/src/libged/dump.c
    brlcad/branches/bioh/src/libged/dup.c
    brlcad/branches/bioh/src/libged/eac.c
    brlcad/branches/bioh/src/libged/echo.c
    brlcad/branches/bioh/src/libged/edarb.c
    brlcad/branches/bioh/src/libged/edbot.c
    brlcad/branches/bioh/src/libged/edcodes.c
    brlcad/branches/bioh/src/libged/edcomb.c
    brlcad/branches/bioh/src/libged/edit.c
    brlcad/branches/bioh/src/libged/edit_metaball.c
    brlcad/branches/bioh/src/libged/editit.c
    brlcad/branches/bioh/src/libged/edmater.c
    brlcad/branches/bioh/src/libged/edpipe.c
    brlcad/branches/bioh/src/libged/env.c
    brlcad/branches/bioh/src/libged/erase.c
    brlcad/branches/bioh/src/libged/exists.c
    brlcad/branches/bioh/src/libged/expand.c
    brlcad/branches/bioh/src/libged/eye_pos.c
    brlcad/branches/bioh/src/libged/facedef.c
    brlcad/branches/bioh/src/libged/facetize.cpp
    brlcad/branches/bioh/src/libged/facetize_log.c
    brlcad/branches/bioh/src/libged/fb2pix.c
    brlcad/branches/bioh/src/libged/fbclear.c
    brlcad/branches/bioh/src/libged/find.c
    brlcad/branches/bioh/src/libged/form.c
    brlcad/branches/bioh/src/libged/fracture.c
    brlcad/branches/bioh/src/libged/gdiff.c
    brlcad/branches/bioh/src/libged/ged.c
    brlcad/branches/bioh/src/libged/ged_util.c
    brlcad/branches/bioh/src/libged/get.c
    brlcad/branches/bioh/src/libged/get_autoview.c
    brlcad/branches/bioh/src/libged/get_comb.c
    brlcad/branches/bioh/src/libged/get_eyemodel.c
    brlcad/branches/bioh/src/libged/get_obj_bounds.c
    brlcad/branches/bioh/src/libged/get_solid_kp.c
    brlcad/branches/bioh/src/libged/get_type.c
    brlcad/branches/bioh/src/libged/glob.c
    brlcad/branches/bioh/src/libged/gqa.c
    brlcad/branches/bioh/src/libged/grid.c
    brlcad/branches/bioh/src/libged/grid2model_lu.c
    brlcad/branches/bioh/src/libged/grid2view_lu.c
    brlcad/branches/bioh/src/libged/group.c
    brlcad/branches/bioh/src/libged/heal.c
    brlcad/branches/bioh/src/libged/hide.c
    brlcad/branches/bioh/src/libged/how.c
    brlcad/branches/bioh/src/libged/human.c
    brlcad/branches/bioh/src/libged/illum.c
    brlcad/branches/bioh/src/libged/importFg4Section.c
    brlcad/branches/bioh/src/libged/inside.c
    brlcad/branches/bioh/src/libged/instance.c
    brlcad/branches/bioh/src/libged/isize.c
    brlcad/branches/bioh/src/libged/item.c
    brlcad/branches/bioh/src/libged/joint.c
    brlcad/branches/bioh/src/libged/joint2.c
    brlcad/branches/bioh/src/libged/keep.c
    brlcad/branches/bioh/src/libged/keypoint.c
    brlcad/branches/bioh/src/libged/kill.c
    brlcad/branches/bioh/src/libged/killall.c
    brlcad/branches/bioh/src/libged/killrefs.c
    brlcad/branches/bioh/src/libged/killtree.c
    brlcad/branches/bioh/src/libged/label.c
    brlcad/branches/bioh/src/libged/lc.c
    brlcad/branches/bioh/src/libged/libfuncs.c
    brlcad/branches/bioh/src/libged/lint.cpp
    brlcad/branches/bioh/src/libged/list.c
    brlcad/branches/bioh/src/libged/loadview.c
    brlcad/branches/bioh/src/libged/lod.c
    brlcad/branches/bioh/src/libged/log.c
    brlcad/branches/bioh/src/libged/lookat.c
    brlcad/branches/bioh/src/libged/ls.c
    brlcad/branches/bioh/src/libged/lt.c
    brlcad/branches/bioh/src/libged/m2v_point.c
    brlcad/branches/bioh/src/libged/make.c
    brlcad/branches/bioh/src/libged/make_name.c
    brlcad/branches/bioh/src/libged/match.c
    brlcad/branches/bioh/src/libged/mater.cpp
    brlcad/branches/bioh/src/libged/mirror.c
    brlcad/branches/bioh/src/libged/model2grid_lu.c
    brlcad/branches/bioh/src/libged/model2view.c
    brlcad/branches/bioh/src/libged/model2view_lu.c
    brlcad/branches/bioh/src/libged/move.c
    brlcad/branches/bioh/src/libged/move_all.c
    brlcad/branches/bioh/src/libged/move_arb_edge.c
    brlcad/branches/bioh/src/libged/move_arb_face.c
    brlcad/branches/bioh/src/libged/mrot.c
    brlcad/branches/bioh/src/libged/nirt.c
    brlcad/branches/bioh/src/libged/nmg.c
    brlcad/branches/bioh/src/libged/nmg_cmface.c
    brlcad/branches/bioh/src/libged/nmg_collapse.c
    brlcad/branches/bioh/src/libged/nmg_fix_normals.c
    brlcad/branches/bioh/src/libged/nmg_kill_f.c
    brlcad/branches/bioh/src/libged/nmg_kill_v.c
    brlcad/branches/bioh/src/libged/nmg_make_v.c
    brlcad/branches/bioh/src/libged/nmg_mm.c
    brlcad/branches/bioh/src/libged/nmg_move_v.c
    brlcad/branches/bioh/src/libged/nmg_simplify.c
    brlcad/branches/bioh/src/libged/ocenter.c
    brlcad/branches/bioh/src/libged/open.c
    brlcad/branches/bioh/src/libged/orient.c
    brlcad/branches/bioh/src/libged/orotate.c
    brlcad/branches/bioh/src/libged/oscale.c
    brlcad/branches/bioh/src/libged/otranslate.c
    brlcad/branches/bioh/src/libged/overlay.c
    brlcad/branches/bioh/src/libged/path.c
    brlcad/branches/bioh/src/libged/pathlist.c
    brlcad/branches/bioh/src/libged/pathsum.c
    brlcad/branches/bioh/src/libged/perspective.c
    brlcad/branches/bioh/src/libged/pix2fb.c
    brlcad/branches/bioh/src/libged/plot.c
    brlcad/branches/bioh/src/libged/pmat.c
    brlcad/branches/bioh/src/libged/pmodel2view.c
    brlcad/branches/bioh/src/libged/png.c
    brlcad/branches/bioh/src/libged/png2fb.c
    brlcad/branches/bioh/src/libged/pnts.cpp
    brlcad/branches/bioh/src/libged/pnts_util.c
    brlcad/branches/bioh/src/libged/polyclip.cpp
    brlcad/branches/bioh/src/libged/prcolor.c
    brlcad/branches/bioh/src/libged/prefix.c
    brlcad/branches/bioh/src/libged/preview.c
    brlcad/branches/bioh/src/libged/process.c
    brlcad/branches/bioh/src/libged/protate.c
    brlcad/branches/bioh/src/libged/ps.c
    brlcad/branches/bioh/src/libged/pscale.c
    brlcad/branches/bioh/src/libged/pset.c
    brlcad/branches/bioh/src/libged/ptranslate.c
    brlcad/branches/bioh/src/libged/pull.c
    brlcad/branches/bioh/src/libged/push.c
    brlcad/branches/bioh/src/libged/put.c
    brlcad/branches/bioh/src/libged/put_comb.c
    brlcad/branches/bioh/src/libged/putmat.c
    brlcad/branches/bioh/src/libged/qray.c
    brlcad/branches/bioh/src/libged/qvrot.c
    brlcad/branches/bioh/src/libged/rcodes.c
    brlcad/branches/bioh/src/libged/rect.c
    brlcad/branches/bioh/src/libged/red.c
    brlcad/branches/bioh/src/libged/regdef.c
    brlcad/branches/bioh/src/libged/region.c
    brlcad/branches/bioh/src/libged/remove.c
    brlcad/branches/bioh/src/libged/rfarb.c
    brlcad/branches/bioh/src/libged/rmap.c
    brlcad/branches/bioh/src/libged/rmat.c
    brlcad/branches/bioh/src/libged/rmater.c
    brlcad/branches/bioh/src/libged/rot.c
    brlcad/branches/bioh/src/libged/rot_point.c
    brlcad/branches/bioh/src/libged/rotate_about.c
    brlcad/branches/bioh/src/libged/rotate_arb_face.c
    brlcad/branches/bioh/src/libged/rotate_eto.c
    brlcad/branches/bioh/src/libged/rotate_extrude.c
    brlcad/branches/bioh/src/libged/rotate_hyp.c
    brlcad/branches/bioh/src/libged/rotate_tgc.c
    brlcad/branches/bioh/src/libged/rrt.c
    brlcad/branches/bioh/src/libged/rt.c
    brlcad/branches/bioh/src/libged/rtabort.c
    brlcad/branches/bioh/src/libged/rtcheck.c
    brlcad/branches/bioh/src/libged/rtwizard.c
    brlcad/branches/bioh/src/libged/savekey.c
    brlcad/branches/bioh/src/libged/saveview.c
    brlcad/branches/bioh/src/libged/scale.c
    brlcad/branches/bioh/src/libged/scale_ehy.c
    brlcad/branches/bioh/src/libged/scale_ell.c
    brlcad/branches/bioh/src/libged/scale_epa.c
    brlcad/branches/bioh/src/libged/scale_eto.c
    brlcad/branches/bioh/src/libged/scale_extrude.c
    brlcad/branches/bioh/src/libged/scale_hyp.c
    brlcad/branches/bioh/src/libged/scale_part.c
    brlcad/branches/bioh/src/libged/scale_rhc.c
    brlcad/branches/bioh/src/libged/scale_rpc.c
    brlcad/branches/bioh/src/libged/scale_superell.c
    brlcad/branches/bioh/src/libged/scale_tgc.c
    brlcad/branches/bioh/src/libged/scale_tor.c
    brlcad/branches/bioh/src/libged/screengrab.c
    brlcad/branches/bioh/src/libged/search.c
    brlcad/branches/bioh/src/libged/select.c
    brlcad/branches/bioh/src/libged/set_output_script.c
    brlcad/branches/bioh/src/libged/set_transparency.c
    brlcad/branches/bioh/src/libged/set_uplotOutputMode.c
    brlcad/branches/bioh/src/libged/setview.c
    brlcad/branches/bioh/src/libged/shaded_mode.c
    brlcad/branches/bioh/src/libged/shader.c
    brlcad/branches/bioh/src/libged/shells.c
    brlcad/branches/bioh/src/libged/showmats.c
    brlcad/branches/bioh/src/libged/slew.c
    brlcad/branches/bioh/src/libged/solid_report.c
    brlcad/branches/bioh/src/libged/solids_on_ray.c
    brlcad/branches/bioh/src/libged/sphgroup.c
    brlcad/branches/bioh/src/libged/summary.c
    brlcad/branches/bioh/src/libged/sync.c
    brlcad/branches/bioh/src/libged/tables.c
    brlcad/branches/bioh/src/libged/tire.c
    brlcad/branches/bioh/src/libged/title.c
    brlcad/branches/bioh/src/libged/tol.c
    brlcad/branches/bioh/src/libged/tops.c
    brlcad/branches/bioh/src/libged/tra.c
    brlcad/branches/bioh/src/libged/trace.c
    brlcad/branches/bioh/src/libged/track.c
    brlcad/branches/bioh/src/libged/translate_extrude.c
    brlcad/branches/bioh/src/libged/translate_tgc.c
    brlcad/branches/bioh/src/libged/tree.c
    brlcad/branches/bioh/src/libged/typein.c
    brlcad/branches/bioh/src/libged/unhide.c
    brlcad/branches/bioh/src/libged/units.c
    brlcad/branches/bioh/src/libged/v2m_point.c
    brlcad/branches/bioh/src/libged/vdraw.c
    brlcad/branches/bioh/src/libged/version.c
    brlcad/branches/bioh/src/libged/view2grid_lu.c
    brlcad/branches/bioh/src/libged/view2model.c
    brlcad/branches/bioh/src/libged/view2model_lu.c
    brlcad/branches/bioh/src/libged/view2model_vec.c
    brlcad/branches/bioh/src/libged/viewdir.c
    brlcad/branches/bioh/src/libged/voxelize.c
    brlcad/branches/bioh/src/libged/vrot.c
    brlcad/branches/bioh/src/libged/vutil.c
    brlcad/branches/bioh/src/libged/wcodes.c
    brlcad/branches/bioh/src/libged/wdb_importFg4Section.c
    brlcad/branches/bioh/src/libged/whatid.c
    brlcad/branches/bioh/src/libged/which.cpp
    brlcad/branches/bioh/src/libged/which_shader.c
    brlcad/branches/bioh/src/libged/who.c
    brlcad/branches/bioh/src/libged/wmater.c
    brlcad/branches/bioh/src/libged/xpush.c
    brlcad/branches/bioh/src/libged/zap.c

Copied: brlcad/branches/bioh/src/libged/3ptarb/3ptarb.c (from rev 76359, 
brlcad/branches/bioh/src/libged/3ptarb.c)
===================================================================
--- brlcad/branches/bioh/src/libged/3ptarb/3ptarb.c                             
(rev 0)
+++ brlcad/branches/bioh/src/libged/3ptarb/3ptarb.c     2020-07-17 16:44:16 UTC 
(rev 76360)
@@ -0,0 +1,267 @@
+/*                         3 P T A R B . 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/3ptarb.c
+ *
+ * The 3ptarb command.
+ *
+ */
+
+#include "common.h"
+
+#include <stdlib.h>
+#include <ctype.h>
+#include <string.h>
+
+#include "rt/geom.h"
+#include "ged/objects.h"
+
+#include "./ged_private.h"
+
+
+static char *p_arb3pt[] = {
+    "Enter X, Y, Z for point 1: ",
+    "Enter Y, Z: ",
+    "Enter Z: ",
+    "Enter X, Y, Z for point 2: ",
+    "Enter Y, Z: ",
+    "Enter Z: ",
+    "Enter X, Y, Z for point 3: ",
+    "Enter Y, Z: ",
+    "Enter Z: "
+};
+
+
+int
+ged_3ptarb(struct ged *gedp, int argc, const char *argv[])
+{
+    int i, solve;
+    vect_t vec1;
+    vect_t vec2;
+    fastf_t pt4[2], length, thick;
+    vect_t norm;
+    fastf_t ndotv;
+    char **prompts;
+    struct directory *dp;
+    struct rt_db_internal internal;
+    struct rt_arb_internal *aip;
+    static const char *usage = "name x1 y1 z1 x2 y2 z2 x3 y3 z3 coord c1 c2 
th";
+
+    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);
+
+    if (argc > 15) {
+       bu_vls_printf(gedp->ged_result_str, "Usage: %s %s", argv[0], usage);
+       return GED_ERROR;
+    }
+
+    if (argc < 2) {
+       bu_vls_printf(gedp->ged_result_str, "Enter name for this arb: ");
+       return GED_MORE;
+    }
+
+    GED_CHECK_EXISTS(gedp, argv[1], LOOKUP_QUIET, GED_ERROR);
+
+    /* read the three points */
+    prompts = &p_arb3pt[0];
+    if (argc < 11) {
+       bu_vls_printf(gedp->ged_result_str, "%s", prompts[argc-2]);
+       return GED_MORE;
+    }
+
+    /* preliminary calculations to check input so far */
+    for (i = 0; i < 3; i++) {
+       vec1[i] = atof(argv[i+2]) - atof(argv[i+5]);
+       vec2[i] = atof(argv[i+2]) - atof(argv[i+8]);
+    }
+    VCROSS(norm, vec1, vec2);
+    length = MAGNITUDE(norm);
+    if (ZERO(length)) {
+       bu_vls_printf(gedp->ged_result_str, "%s: points are collinear\n", 
argv[0]);
+       return GED_ERROR;
+    }
+    VSCALE(norm, norm, 1.0/length);
+
+    if (argc < 12) {
+       bu_vls_printf(gedp->ged_result_str, "Enter coordinate to solve for (x, 
y, or z): ");
+       return GED_MORE;
+    }
+
+    switch (argv[11][0]) {
+       case 'x':
+           if (ZERO(norm[0])) {
+               bu_vls_printf(gedp->ged_result_str, "%s: X not unique in this 
face\n", argv[0]);
+               return GED_ERROR;
+           }
+           solve = X;
+
+           if (argc < 13) {
+               bu_vls_printf(gedp->ged_result_str, "Enter the Y, Z coordinate 
values: ");
+               return GED_MORE;
+           }
+           if (argc < 14) {
+               bu_vls_printf(gedp->ged_result_str, "Enter the Z coordinate 
value: ");
+               return GED_MORE;
+           }
+
+           pt4[0] = atof(argv[12]) * gedp->ged_wdbp->dbip->dbi_local2base;
+           pt4[1] = atof(argv[13]) * gedp->ged_wdbp->dbip->dbi_local2base;
+           break;
+
+       case 'y':
+           if (ZERO(norm[1])) {
+               bu_vls_printf(gedp->ged_result_str, "%s: Y not unique in this 
face\n", argv[0]);
+               return GED_ERROR;
+           }
+           solve = Y;
+
+           if (argc < 13) {
+               bu_vls_printf(gedp->ged_result_str, "Enter the X, Z coordinate 
values: ");
+               return GED_MORE;
+           }
+           if (argc < 14) {
+               bu_vls_printf(gedp->ged_result_str, "Enter the Z coordinate 
value: ");
+               return GED_MORE;
+           }
+
+           pt4[0] = atof(argv[12]) * gedp->ged_wdbp->dbip->dbi_local2base;
+           pt4[1] = atof(argv[13]) * gedp->ged_wdbp->dbip->dbi_local2base;
+           break;
+
+       case 'z':
+           if (ZERO(norm[2])) {
+               bu_vls_printf(gedp->ged_result_str, "%s: Z not unique in this 
face\n", argv[0]);
+               return GED_ERROR;
+           }
+           solve = Z;
+
+           if (argc < 13) {
+               bu_vls_printf(gedp->ged_result_str, "Enter the X, Y coordinate 
values: ");
+               return GED_MORE;
+           }
+           if (argc < 14) {
+               bu_vls_printf(gedp->ged_result_str, "Enter the Y coordinate 
value: ");
+               return GED_MORE;
+           }
+
+           pt4[0] = atof(argv[12]) * gedp->ged_wdbp->dbip->dbi_local2base;
+           pt4[1] = atof(argv[13]) * gedp->ged_wdbp->dbip->dbi_local2base;
+           break;
+
+       default:
+           bu_vls_printf(gedp->ged_result_str, "%s: coordinate must be x, y, 
or z\n", argv[0]);
+           return GED_ERROR;
+    }
+
+    if (argc < 15) {
+       bu_vls_printf(gedp->ged_result_str, "Enter thickness for this arb: ");
+       return GED_MORE;
+    }
+
+    thick = atof(argv[14]);
+    if (ZERO(thick)) {
+       bu_vls_printf(gedp->ged_result_str, "%s: thickness = 0.0\n", argv[0]);
+       return GED_ERROR;
+    }
+
+    RT_DB_INTERNAL_INIT(&internal);
+    internal.idb_major_type = DB5_MAJORTYPE_BRLCAD;
+    internal.idb_type = ID_ARB8;
+    internal.idb_meth = &OBJ[ID_ARB8];
+    BU_ALLOC(internal.idb_ptr, struct rt_arb_internal);
+    aip = (struct rt_arb_internal *)internal.idb_ptr;
+    aip->magic = RT_ARB_INTERNAL_MAGIC;
+
+    for (i = 0; i < 8; i++) {
+       VSET(aip->pt[i], 0.0, 0.0, 0.0);
+    }
+
+    for (i = 0; i < 3; i++) {
+       /* the three given vertices */
+       VSET(aip->pt[i], 
atof(argv[i*3+2])*gedp->ged_wdbp->dbip->dbi_local2base, 
atof(argv[i*3+3])*gedp->ged_wdbp->dbip->dbi_local2base, 
atof(argv[i*3+4])*gedp->ged_wdbp->dbip->dbi_local2base);
+    }
+
+    thick *= gedp->ged_wdbp->dbip->dbi_local2base;
+
+    ndotv = VDOT(aip->pt[0], norm);
+
+    switch (solve) {
+
+       case X:
+           /* solve for x-coord of 4th point */
+           aip->pt[3][Y] = pt4[0]; /* y-coord */
+           aip->pt[3][Z] = pt4[1]; /* z-coord */
+           aip->pt[3][X] =  (ndotv
+                             - norm[Y] * aip->pt[3][Y]
+                             - norm[Z] * aip->pt[3][Z])
+               / norm[X];      /* x-coord */
+           break;
+
+       case Y:
+           /* solve for y-coord of 4th point */
+           aip->pt[3][X] = pt4[0]; /* x-coord */
+           aip->pt[3][Z] = pt4[1]; /* z-coord */
+           aip->pt[3][Y] =  (ndotv
+                             - norm[X] * aip->pt[3][X]
+                             - norm[Z] * aip->pt[3][Z])
+               / norm[Y];      /* y-coord */
+           break;
+
+       case Z:
+           /* solve for z-coord of 4th point */
+           aip->pt[3][X] = pt4[0]; /* x-coord */
+           aip->pt[3][Y] = pt4[1]; /* y-coord */
+           aip->pt[3][Z] =  (ndotv
+                             - norm[X] * aip->pt[3][X]
+                             - norm[Y] * aip->pt[3][Y])
+               / norm[Z];      /* z-coord */
+           break;
+
+       default:
+           bu_free((void *)internal.idb_ptr, "rt_arb_internal");
+           bu_vls_printf(gedp->ged_result_str, "%s: bad coordinate to solve 
for\n", argv[0]);
+           return GED_ERROR;
+    }
+
+    /* calculate the remaining 4 vertices */
+    for (i = 0; i < 4; i++) {
+       VJOIN1(aip->pt[i+4], aip->pt[i], thick, norm);
+    }
+
+    GED_DB_DIRADD(gedp, dp, argv[1], RT_DIR_PHONY_ADDR, 0, RT_DIR_SOLID, (void 
*)&internal.idb_type, GED_ERROR);
+
+    GED_DB_PUT_INTERNAL(gedp, dp, &internal, &rt_uniresource, GED_ERROR);
+
+    return GED_OK;
+}
+
+
+/*
+ * Local Variables:
+ * tab-width: 8
+ * mode: C
+ * indent-tabs-mode: t
+ * c-file-style: "stroustrup"
+ * End:
+ * ex: shiftwidth=4 tabstop=8
+ */

Deleted: brlcad/branches/bioh/src/libged/3ptarb.c
===================================================================
--- brlcad/branches/bioh/src/libged/3ptarb.c    2020-07-17 13:38:57 UTC (rev 
76359)
+++ brlcad/branches/bioh/src/libged/3ptarb.c    2020-07-17 16:44:16 UTC (rev 
76360)
@@ -1,267 +0,0 @@
-/*                         3 P T A R B . 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/3ptarb.c
- *
- * The 3ptarb command.
- *
- */
-
-#include "common.h"
-
-#include <stdlib.h>
-#include <ctype.h>
-#include <string.h>
-
-#include "rt/geom.h"
-#include "ged/objects.h"
-
-#include "./ged_private.h"
-
-
-static char *p_arb3pt[] = {
-    "Enter X, Y, Z for point 1: ",
-    "Enter Y, Z: ",
-    "Enter Z: ",
-    "Enter X, Y, Z for point 2: ",
-    "Enter Y, Z: ",
-    "Enter Z: ",
-    "Enter X, Y, Z for point 3: ",
-    "Enter Y, Z: ",
-    "Enter Z: "
-};
-
-
-int
-ged_3ptarb(struct ged *gedp, int argc, const char *argv[])
-{
-    int i, solve;
-    vect_t vec1;
-    vect_t vec2;
-    fastf_t pt4[2], length, thick;
-    vect_t norm;
-    fastf_t ndotv;
-    char **prompts;
-    struct directory *dp;
-    struct rt_db_internal internal;
-    struct rt_arb_internal *aip;
-    static const char *usage = "name x1 y1 z1 x2 y2 z2 x3 y3 z3 coord c1 c2 
th";
-
-    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);
-
-    if (argc > 15) {
-       bu_vls_printf(gedp->ged_result_str, "Usage: %s %s", argv[0], usage);
-       return GED_ERROR;
-    }
-
-    if (argc < 2) {
-       bu_vls_printf(gedp->ged_result_str, "Enter name for this arb: ");
-       return GED_MORE;
-    }
-
-    GED_CHECK_EXISTS(gedp, argv[1], LOOKUP_QUIET, GED_ERROR);
-
-    /* read the three points */
-    prompts = &p_arb3pt[0];
-    if (argc < 11) {
-       bu_vls_printf(gedp->ged_result_str, "%s", prompts[argc-2]);
-       return GED_MORE;
-    }
-
-    /* preliminary calculations to check input so far */
-    for (i = 0; i < 3; i++) {
-       vec1[i] = atof(argv[i+2]) - atof(argv[i+5]);
-       vec2[i] = atof(argv[i+2]) - atof(argv[i+8]);
-    }
-    VCROSS(norm, vec1, vec2);
-    length = MAGNITUDE(norm);
-    if (ZERO(length)) {
-       bu_vls_printf(gedp->ged_result_str, "%s: points are collinear\n", 
argv[0]);
-       return GED_ERROR;
-    }
-    VSCALE(norm, norm, 1.0/length);
-
-    if (argc < 12) {
-       bu_vls_printf(gedp->ged_result_str, "Enter coordinate to solve for (x, 
y, or z): ");
-       return GED_MORE;
-    }
-
-    switch (argv[11][0]) {
-       case 'x':
-           if (ZERO(norm[0])) {
-               bu_vls_printf(gedp->ged_result_str, "%s: X not unique in this 
face\n", argv[0]);
-               return GED_ERROR;
-           }
-           solve = X;
-
-           if (argc < 13) {
-               bu_vls_printf(gedp->ged_result_str, "Enter the Y, Z coordinate 
values: ");
-               return GED_MORE;
-           }
-           if (argc < 14) {
-               bu_vls_printf(gedp->ged_result_str, "Enter the Z coordinate 
value: ");
-               return GED_MORE;
-           }
-
-           pt4[0] = atof(argv[12]) * gedp->ged_wdbp->dbip->dbi_local2base;
-           pt4[1] = atof(argv[13]) * gedp->ged_wdbp->dbip->dbi_local2base;
-           break;
-
-       case 'y':
-           if (ZERO(norm[1])) {
-               bu_vls_printf(gedp->ged_result_str, "%s: Y not unique in this 
face\n", argv[0]);
-               return GED_ERROR;
-           }
-           solve = Y;
-
-           if (argc < 13) {
-               bu_vls_printf(gedp->ged_result_str, "Enter the X, Z coordinate 
values: ");
-               return GED_MORE;
-           }
-           if (argc < 14) {
-               bu_vls_printf(gedp->ged_result_str, "Enter the Z coordinate 
value: ");
-               return GED_MORE;
-           }
-
-           pt4[0] = atof(argv[12]) * gedp->ged_wdbp->dbip->dbi_local2base;
-           pt4[1] = atof(argv[13]) * gedp->ged_wdbp->dbip->dbi_local2base;
-           break;
-
-       case 'z':
-           if (ZERO(norm[2])) {
-               bu_vls_printf(gedp->ged_result_str, "%s: Z not unique in this 
face\n", argv[0]);
-               return GED_ERROR;
-           }
-           solve = Z;
-
-           if (argc < 13) {
-               bu_vls_printf(gedp->ged_result_str, "Enter the X, Y coordinate 
values: ");
-               return GED_MORE;
-           }
-           if (argc < 14) {
-               bu_vls_printf(gedp->ged_result_str, "Enter the Y coordinate 
value: ");
-               return GED_MORE;
-           }
-
-           pt4[0] = atof(argv[12]) * gedp->ged_wdbp->dbip->dbi_local2base;
-           pt4[1] = atof(argv[13]) * gedp->ged_wdbp->dbip->dbi_local2base;
-           break;
-
-       default:
-           bu_vls_printf(gedp->ged_result_str, "%s: coordinate must be x, y, 
or z\n", argv[0]);
-           return GED_ERROR;
-    }
-
-    if (argc < 15) {
-       bu_vls_printf(gedp->ged_result_str, "Enter thickness for this arb: ");
-       return GED_MORE;
-    }
-
-    thick = atof(argv[14]);
-    if (ZERO(thick)) {
-       bu_vls_printf(gedp->ged_result_str, "%s: thickness = 0.0\n", argv[0]);
-       return GED_ERROR;
-    }
-
-    RT_DB_INTERNAL_INIT(&internal);
-    internal.idb_major_type = DB5_MAJORTYPE_BRLCAD;
-    internal.idb_type = ID_ARB8;
-    internal.idb_meth = &OBJ[ID_ARB8];
-    BU_ALLOC(internal.idb_ptr, struct rt_arb_internal);
-    aip = (struct rt_arb_internal *)internal.idb_ptr;
-    aip->magic = RT_ARB_INTERNAL_MAGIC;
-
-    for (i = 0; i < 8; i++) {
-       VSET(aip->pt[i], 0.0, 0.0, 0.0);
-    }
-
-    for (i = 0; i < 3; i++) {
-       /* the three given vertices */
-       VSET(aip->pt[i], 
atof(argv[i*3+2])*gedp->ged_wdbp->dbip->dbi_local2base, 
atof(argv[i*3+3])*gedp->ged_wdbp->dbip->dbi_local2base, 
atof(argv[i*3+4])*gedp->ged_wdbp->dbip->dbi_local2base);
-    }
-
-    thick *= gedp->ged_wdbp->dbip->dbi_local2base;
-
-    ndotv = VDOT(aip->pt[0], norm);
-
-    switch (solve) {
-
-       case X:
-           /* solve for x-coord of 4th point */
-           aip->pt[3][Y] = pt4[0]; /* y-coord */
-           aip->pt[3][Z] = pt4[1]; /* z-coord */
-           aip->pt[3][X] =  (ndotv
-                             - norm[Y] * aip->pt[3][Y]
-                             - norm[Z] * aip->pt[3][Z])
-               / norm[X];      /* x-coord */
-           break;
-
-       case Y:
-           /* solve for y-coord of 4th point */
-           aip->pt[3][X] = pt4[0]; /* x-coord */
-           aip->pt[3][Z] = pt4[1]; /* z-coord */
-           aip->pt[3][Y] =  (ndotv
-                             - norm[X] * aip->pt[3][X]
-                             - norm[Z] * aip->pt[3][Z])
-               / norm[Y];      /* y-coord */
-           break;
-
-       case Z:
-           /* solve for z-coord of 4th point */
-           aip->pt[3][X] = pt4[0]; /* x-coord */
-           aip->pt[3][Y] = pt4[1]; /* y-coord */
-           aip->pt[3][Z] =  (ndotv
-                             - norm[X] * aip->pt[3][X]
-                             - norm[Y] * aip->pt[3][Y])
-               / norm[Z];      /* z-coord */
-           break;
-
-       default:
-           bu_free((void *)internal.idb_ptr, "rt_arb_internal");
-           bu_vls_printf(gedp->ged_result_str, "%s: bad coordinate to solve 
for\n", argv[0]);
-           return GED_ERROR;
-    }
-
-    /* calculate the remaining 4 vertices */
-    for (i = 0; i < 4; i++) {
-       VJOIN1(aip->pt[i+4], aip->pt[i], thick, norm);
-    }
-
-    GED_DB_DIRADD(gedp, dp, argv[1], RT_DIR_PHONY_ADDR, 0, RT_DIR_SOLID, (void 
*)&internal.idb_type, GED_ERROR);
-
-    GED_DB_PUT_INTERNAL(gedp, dp, &internal, &rt_uniresource, GED_ERROR);
-
-    return GED_OK;
-}
-
-
-/*
- * Local Variables:
- * tab-width: 8
- * mode: C
- * indent-tabs-mode: t
- * c-file-style: "stroustrup"
- * End:
- * ex: shiftwidth=4 tabstop=8
- */

Modified: brlcad/branches/bioh/src/libged/CMakeLists.txt
===================================================================
--- brlcad/branches/bioh/src/libged/CMakeLists.txt      2020-07-17 13:38:57 UTC 
(rev 76359)
+++ brlcad/branches/bioh/src/libged/CMakeLists.txt      2020-07-17 16:44:16 UTC 
(rev 76360)
@@ -45,38 +45,38 @@
 
 set(LIBGED_SOURCES
   ${LIBGED_SOURCES}
-  3ptarb.c
-  adc.c
-  adjust.c
-  ae2dir.c
-  analyze.c
-  annotate.c
-  arb.c
-  arced.c
-  arot.c
-  attr.cpp
-  autoview.c
-  bb.c
-  bev.c
-  bigE.c
-  blast.c
-  bo.c
+  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.c
-  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
+  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
@@ -86,8 +86,8 @@
   brep/plot.cpp
   brep/tikz.cpp
   brep/valid.cpp
-  cat.c
-  cc.c
+  cat/cat.c
+  cc/cc.c
   check/check.c
   check/check_adj_air.c
   check/check_centroid.c
@@ -99,217 +99,217 @@
   check/check_surf_area.c
   check/check_unconf_air.c
   check/check_volume.c
-  clone.c
-  coil.c
-  color.c
-  columns.c
-  comb.c
-  comb_color.c
-  comb_std.c
-  combmem.c
-  concat.cpp
   constraint/constraint.c
-  copy.c
-  copyeval.c
-  copymat.c
-  cpi.c
-  dag.cpp
-  dbip.c
-  debug.cpp
-  debugbu.c
-  debugdir.c
-  debuglib.c
-  debugnmg.c
-  decompose.c
-  delay.c
-  dir2ae.c
-  display_list.c
-  draw.c
-  draw_calc.cpp
-  dsp.c
-  dump.c
-  dup.c
-  eac.c
-  echo.c
-  edarb.c
-  edbot.c
-  edcodes.c
-  edcomb.c
-  edit.c
-  edit_metaball.c
-  editit.c
-  edmater.c
-  edpipe.c
-  env.c
-  erase.c
-  exists.c
-  expand.c
-  eye_pos.c
-  facedef.c
-  facetize.cpp
-  facetize_log.c
-  fb2pix.c
-  fbclear.c
-  find.c
-  form.c
-  fracture.c
-  gdiff.c
-  gdiff.c
-  ged.c
-  ged_util.c
-  get.c
-  get_autoview.c
-  get_comb.c
-  get_eyemodel.c
-  get_obj_bounds.c
-  get_solid_kp.c
-  get_type.c
-  glob.c
-  gqa.c
-  grid.c
-  grid2model_lu.c
-  grid2view_lu.c
-  group.c
-  heal.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
+  ged/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.c
-  how.c
-  human.c
-  illum.c
-  importFg4Section.c
-  inside.c
-  instance.c
-  isize.c
-  item.c
-  joint.c
-  joint2.c
-  keep.c
-  keypoint.c
-  kill.c
-  killall.c
-  killrefs.c
-  killtree.c
-  label.c
-  lc.c
-  libfuncs.c
-  lint.cpp
-  list.c
-  loadview.c
-  lod.c
-  log.c
-  lookat.c
-  ls.c
-  lt.c
-  m2v_point.c
-  make.c
-  make_name.c
-  match.c
-  mater.cpp
-  mirror.c
-  model2grid_lu.c
-  model2view.c
-  model2view_lu.c
-  move.c
-  move_all.c
-  move_arb_edge.c
-  move_arb_face.c
-  mrot.c
-  nirt.c
-  nmg.c
-  nmg_cmface.c
-  nmg_collapse.c
-  nmg_fix_normals.c
-  nmg_kill_f.c
-  nmg_kill_v.c
-  nmg_make_v.c
-  nmg_mm.c
-  nmg_move_v.c
-  nmg_simplify.c
-  ocenter.c
-  open.c
-  orient.c
-  orotate.c
-  oscale.c
-  otranslate.c
-  overlay.c
-  path.c
-  pathlist.c
-  pathsum.c
-  perspective.c
-  pix2fb.c
-  plot.c
-  pmat.c
-  pmodel2view.c
-  png.c
-  png2fb.c
-  pnts.cpp
-  pnts_util.c
-  polyclip.cpp
-  prcolor.c
-  prefix.c
-  preview.c
-  process.c
-  protate.c
-  ps.c
-  pscale.c
-  pset.c
-  ptranslate.c
-  pull.c
-  push.c
-  put.c
-  put_comb.c
-  putmat.c
-  qray.c
-  qvrot.c
-  rcodes.c
-  rect.c
-  red.c
-  regdef.c
-  region.c
-  remove.c
-  rfarb.c
-  rmap.c
-  rmat.c
-  rmater.c
-  rot.c
-  rot_point.c
-  rotate_about.c
-  rotate_arb_face.c
-  rotate_eto.c
-  rotate_extrude.c
-  rotate_hyp.c
-  rotate_tgc.c
-  rrt.c
-  rt.c
-  rtabort.c
-  rtcheck.c
-  rtwizard.c
-  savekey.c
-  saveview.c
-  scale.c
-  scale_ehy.c
-  scale_ell.c
-  scale_epa.c
-  scale_eto.c
-  scale_extrude.c
-  scale_hyp.c
-  scale_part.c
-  scale_rhc.c
-  scale_rpc.c
-  scale_superell.c
-  scale_tgc.c
-  scale_tor.c
-  screengrab.c
-  search.c
-  select.c
-  set_output_script.c
-  set_transparency.c
-  set_uplotOutputMode.c
-  setview.c
-  shaded_mode.c
-  shader.c
-  shells.c
-  showmats.c
+  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
+  pnts_util/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
@@ -318,29 +318,29 @@
   simulate/rt_motion_state.cpp
   simulate/simulation.cpp
   simulate/utility.cpp
-  slew.c
-  solid_report.c
-  solids_on_ray.c
-  sphgroup.c
-  summary.c
-  sync.c
-  tables.c
-  tire.c
-  title.c
-  tol.c
-  tops.c
-  tra.c
-  trace.c
-  track.c
-  translate_extrude.c
-  translate_tgc.c
-  tree.c
-  typein.c
-  unhide.c
-  units.c
-  v2m_point.c
-  vdraw.c
-  version.c
+  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
   view/data_lines.c
@@ -350,23 +350,23 @@
   view/snap.c
   view/ypr.c
   view/view.c
-  view2grid_lu.c
-  view2model.c
-  view2model_lu.c
-  view2model_vec.c
-  viewdir.c
-  voxelize.c
-  vrot.c
-  vutil.c
-  wcodes.c
-  wdb_importFg4Section.c
-  whatid.c
-  which.cpp
-  which_shader.c
-  who.c
-  wmater.c
-  xpush.c
-  zap.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}
   )

Copied: brlcad/branches/bioh/src/libged/adc/adc.c (from rev 76359, 
brlcad/branches/bioh/src/libged/adc.c)
===================================================================
--- brlcad/branches/bioh/src/libged/adc/adc.c                           (rev 0)
+++ brlcad/branches/bioh/src/libged/adc/adc.c   2020-07-17 16:44:16 UTC (rev 
76360)
@@ -0,0 +1,710 @@
+/*                           A D C . C
+ * BRL-CAD
+ *
+ * Copyright (c) 1985-2020 United States Government as represented by
+ * the U.S. Army Research Laboratory.
+ *
+ * This program 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 program 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/adc.c
+ *
+ */
+
+#include "common.h"
+
+#include <stdlib.h>
+#include <math.h>
+#include <string.h>
+
+
+#include "vmath.h"
+#include "ged.h"
+
+static void
+adc_vls_print(struct bview *gvp, fastf_t base2local, struct bu_vls *out_vp)
+{
+    bu_vls_printf(out_vp, "draw = %d\n", gvp->gv_adc.draw);
+    bu_vls_printf(out_vp, "a1 = %.15e\n", gvp->gv_adc.a1);
+    bu_vls_printf(out_vp, "a2 = %.15e\n", gvp->gv_adc.a2);
+    bu_vls_printf(out_vp, "dst = %.15e\n", gvp->gv_adc.dst * gvp->gv_scale * 
base2local);
+    bu_vls_printf(out_vp, "odst = %d\n", gvp->gv_adc.dv_dist);
+    bu_vls_printf(out_vp, "hv = %.15e %.15e\n",
+                 gvp->gv_adc.pos_grid[X] * gvp->gv_scale * base2local,
+                 gvp->gv_adc.pos_grid[Y] * gvp->gv_scale * base2local);
+    bu_vls_printf(out_vp, "xyz = %.15e %.15e %.15e\n",
+                 gvp->gv_adc.pos_model[X] * base2local,
+                 gvp->gv_adc.pos_model[Y] * base2local,
+                 gvp->gv_adc.pos_model[Z] * base2local);
+    bu_vls_printf(out_vp, "x = %d\n", gvp->gv_adc.dv_x);
+    bu_vls_printf(out_vp, "y = %d\n", gvp->gv_adc.dv_y);
+    bu_vls_printf(out_vp, "anchor_pos = %d\n", gvp->gv_adc.anchor_pos);
+    bu_vls_printf(out_vp, "anchor_a1 = %d\n", gvp->gv_adc.anchor_a1);
+    bu_vls_printf(out_vp, "anchor_a2 = %d\n", gvp->gv_adc.anchor_a2);
+    bu_vls_printf(out_vp, "anchor_dst = %d\n", gvp->gv_adc.anchor_dst);
+    bu_vls_printf(out_vp, "anchorpoint_a1 = %.15e %.15e %.15e\n",
+                 gvp->gv_adc.anchor_pt_a1[X] * base2local,
+                 gvp->gv_adc.anchor_pt_a1[Y] * base2local,
+                 gvp->gv_adc.anchor_pt_a1[Z] * base2local);
+    bu_vls_printf(out_vp, "anchorpoint_a2 = %.15e %.15e %.15e\n",
+                 gvp->gv_adc.anchor_pt_a2[X] * base2local,
+                 gvp->gv_adc.anchor_pt_a2[Y] * base2local,
+                 gvp->gv_adc.anchor_pt_a2[Z] * base2local);
+    bu_vls_printf(out_vp, "anchorpoint_dst = %.15e %.15e %.15e\n",
+                 gvp->gv_adc.anchor_pt_dst[X] * base2local,
+                 gvp->gv_adc.anchor_pt_dst[Y] * base2local,
+                 gvp->gv_adc.anchor_pt_dst[Z] * base2local);
+}
+
+
+HIDDEN void
+adc_usage(struct bu_vls *vp, const char *name)
+{
+    bu_vls_printf(vp, "Usage: %s \n", name);
+    bu_vls_printf(vp, "%s", " adc vname                           toggle 
display of angle/distance cursor\n");
+    bu_vls_printf(vp, "%s", " adc vname vars                      print a list 
of all variables (i.e. var = val)\n");
+    bu_vls_printf(vp, "%s", " adc vname draw [0|1]                set or get 
the draw parameter\n");
+    bu_vls_printf(vp, "%s", " adc vname a1   [#]                  set or get 
angle1\n");
+    bu_vls_printf(vp, "%s", " adc vname a2   [#]                  set or get 
angle2\n");
+    bu_vls_printf(vp, "%s", " adc vname dst  [#]                  set or get 
radius (distance) of tick\n");
+    bu_vls_printf(vp, "%s", " adc vname odst [#]                  set or get 
radius (distance) of tick (+-2047)\n");
+    bu_vls_printf(vp, "%s", " adc vname hv   [# #]                set or get 
position (grid coordinates)\n");
+    bu_vls_printf(vp, "%s", " adc vname xyz  [# # #]              set or get 
position (model coordinates)\n");
+    bu_vls_printf(vp, "%s", " adc vname x [#]                     set or get 
horizontal position (+-2047)\n");
+    bu_vls_printf(vp, "%s", " adc vname y [#]                     set or get 
vertical position (+-2047)\n");
+    bu_vls_printf(vp, "%s", " adc vname dh #                      add to 
horizontal position (grid coordinates)\n");
+    bu_vls_printf(vp, "%s", " adc vname dv #                      add to 
vertical position (grid coordinates)\n");
+    bu_vls_printf(vp, "%s", " adc vname dx #                      add to X 
position (model coordinates)\n");
+    bu_vls_printf(vp, "%s", " adc vname dy #                      add to Y 
position (model coordinates)\n");
+    bu_vls_printf(vp, "%s", " adc vname dz #                      add to Z 
position (model coordinates)\n");
+    bu_vls_printf(vp, "%s", " adc vname anchor_pos [0|1]          anchor ADC 
to current position in model coordinates\n");
+    bu_vls_printf(vp, "%s", " adc vname anchor_a1  [0|1]          anchor 
angle1 to go through anchorpoint_a1\n");
+    bu_vls_printf(vp, "%s", " adc vname anchor_a2  [0|1]          anchor 
angle2 to go through anchorpoint_a2\n");
+    bu_vls_printf(vp, "%s", " adc vname anchor_dst [0|1]          anchor tick 
distance to go through anchorpoint_dst\n");
+    bu_vls_printf(vp, "%s", " adc vname anchorpoint_a1  [# # #]   set or get 
anchor point for angle1\n");
+    bu_vls_printf(vp, "%s", " adc vname anchorpoint_a2  [# # #]   set or get 
anchor point for angle2\n");
+    bu_vls_printf(vp, "%s", " adc vname anchorpoint_dst [# # #]   set or get 
anchor point for tick distance\n");
+    bu_vls_printf(vp, "%s", " adc vname -i                        any of the 
above appropriate commands will interpret parameters as increments\n");
+    bu_vls_printf(vp, "%s", " adc vname reset                     reset 
angles, location, and tick distance\n");
+    bu_vls_printf(vp, "%s", " adc vname help                      prints this 
help message\n");
+}
+
+
+/*
+ * Note - this needs to be rewritten to accept keyword/value pairs so
+ * that multiple attributes can be set with a single command call.
+ */
+int
+ged_adc(struct ged *gedp,
+       int argc,
+       const char *argv[])
+{
+    char *command;
+    char *parameter;
+    char **argp = (char **)argv;
+    double scanval;
+    point_t user_pt;           /* Value(s) provided by user */
+    point_t scaled_pos;
+    int incr_flag;
+    int i;
+
+    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);
+
+    if (argc < 2 || 6 < argc) {
+       adc_usage(gedp->ged_result_str, argv[0]);
+       return GED_ERROR;
+    }
+
+    command = (char *)argv[0];
+
+    if (BU_STR_EQUAL(argv[1], "-i")) {
+       if (argc < 5) {
+           bu_vls_printf(gedp->ged_result_str, "%s: -i option specified 
without an op-val pair", command);
+           return GED_ERROR;
+       }
+
+       incr_flag = 1;
+       parameter = (char *)argv[2];
+       argc -= 3;
+       argp += 3;
+    } else {
+       incr_flag = 0;
+       parameter = (char *)argv[1];
+       argc -= 2;
+       argp += 2;
+    }
+
+    for (i = 0; i < argc; ++i) {
+       if (sscanf(argp[i], "%lf", &scanval) != 1) {
+           adc_usage(gedp->ged_result_str, command);
+           return GED_ERROR;
+       }
+       user_pt[i] = scanval;
+    }
+
+    if (BU_STR_EQUAL(parameter, "draw")) {
+       if (argc == 0) {
+           bu_vls_printf(gedp->ged_result_str, "%d", 
gedp->ged_gvp->gv_adc.draw);
+           return GED_OK;
+       } else if (argc == 1) {
+           i = (int)user_pt[X];
+
+           if (i)
+               gedp->ged_gvp->gv_adc.draw = 1;
+           else
+               gedp->ged_gvp->gv_adc.draw = 0;
+
+           return GED_OK;
+       }
+
+       bu_vls_printf(gedp->ged_result_str, "The '%s draw' command accepts 0 or 
1 argument\n", command);
+       return GED_ERROR;
+    }
+
+    if (BU_STR_EQUAL(parameter, "a1")) {
+       if (argc == 0) {
+           bu_vls_printf(gedp->ged_result_str, "%g", gedp->ged_gvp->gv_adc.a1);
+           return GED_OK;
+       } else if (argc == 1) {
+           if (!gedp->ged_gvp->gv_adc.anchor_a1) {
+               if (incr_flag)
+                   gedp->ged_gvp->gv_adc.a1 += user_pt[0];
+               else
+                   gedp->ged_gvp->gv_adc.a1 = user_pt[0];
+
+               gedp->ged_gvp->gv_adc.dv_a1 = (1.0 - (gedp->ged_gvp->gv_adc.a1 
/ 45.0)) * GED_MAX;
+           }
+
+           return GED_OK;
+       }
+
+       bu_vls_printf(gedp->ged_result_str, "The '%s a1' command accepts only 1 
argument\n", command);
+       return GED_ERROR;
+    }
+
+    if (BU_STR_EQUAL(parameter, "a2")) {
+       if (argc == 0) {
+           bu_vls_printf(gedp->ged_result_str, "%g", gedp->ged_gvp->gv_adc.a2);
+           return GED_OK;
+       } else if (argc == 1) {
+           if (!gedp->ged_gvp->gv_adc.anchor_a2) {
+               if (incr_flag)
+                   gedp->ged_gvp->gv_adc.a2 += user_pt[0];
+               else
+                   gedp->ged_gvp->gv_adc.a2 = user_pt[0];
+
+               gedp->ged_gvp->gv_adc.dv_a2 = (1.0 - (gedp->ged_gvp->gv_adc.a2 
/ 45.0)) * GED_MAX;
+           }
+
+           return GED_OK;
+       }
+
+       bu_vls_printf(gedp->ged_result_str, "The '%s a2' command accepts only 1 
argument\n", command);
+       return GED_ERROR;
+    }
+
+    if (BU_STR_EQUAL(parameter, "dst")) {
+       if (argc == 0) {
+           bu_vls_printf(gedp->ged_result_str, "%g", gedp->ged_gvp->gv_adc.dst 
* gedp->ged_gvp->gv_scale * gedp->ged_wdbp->dbip->dbi_base2local);
+           return GED_OK;
+       } else if (argc == 1) {
+           if (!gedp->ged_gvp->gv_adc.anchor_dst) {
+               if (incr_flag)
+                   gedp->ged_gvp->gv_adc.dst += user_pt[0] / 
(gedp->ged_gvp->gv_scale * gedp->ged_wdbp->dbip->dbi_base2local);
+               else
+                   gedp->ged_gvp->gv_adc.dst = user_pt[0] / 
(gedp->ged_gvp->gv_scale * gedp->ged_wdbp->dbip->dbi_base2local);
+
+               gedp->ged_gvp->gv_adc.dv_dist = (gedp->ged_gvp->gv_adc.dst / 
M_SQRT1_2 - 1.0) * GED_MAX;
+           }
+
+           return GED_OK;
+       }
+
+       bu_vls_printf(gedp->ged_result_str, "The '%s dst' command accepts 0 or 
1 argument\n", command);
+       return GED_ERROR;
+    }
+
+    if (BU_STR_EQUAL(parameter, "odst")) {
+       if (argc == 0) {
+           bu_vls_printf(gedp->ged_result_str, "%d", 
gedp->ged_gvp->gv_adc.dv_dist);
+           return GED_OK;
+       } else if (argc == 1) {
+           if (!gedp->ged_gvp->gv_adc.anchor_dst) {
+               if (incr_flag)
+                   gedp->ged_gvp->gv_adc.dv_dist += user_pt[0];
+               else
+                   gedp->ged_gvp->gv_adc.dv_dist = user_pt[0];
+
+               gedp->ged_gvp->gv_adc.dst = (gedp->ged_gvp->gv_adc.dv_dist * 
INV_GED + 1.0) * M_SQRT1_2;
+           }
+
+           return GED_OK;
+       }
+
+       bu_vls_printf(gedp->ged_result_str, "The '%s odst' command accepts 0 or 
1 argument\n", command);
+       return GED_ERROR;
+    }
+
+    if (BU_STR_EQUAL(parameter, "dh")) {
+       if (argc == 1) {
+           if (!gedp->ged_gvp->gv_adc.anchor_pos) {
+               gedp->ged_gvp->gv_adc.pos_grid[X] += user_pt[0] / 
(gedp->ged_gvp->gv_scale * gedp->ged_wdbp->dbip->dbi_base2local);
+               adc_grid_to_adc_view(&(gedp->ged_gvp->gv_adc), 
gedp->ged_gvp->gv_view2model, GED_MAX);
+               MAT4X3PNT(gedp->ged_gvp->gv_adc.pos_model, 
gedp->ged_gvp->gv_view2model, gedp->ged_gvp->gv_adc.pos_view);
+           }
+
+           return GED_OK;
+       }
+
+       bu_vls_printf(gedp->ged_result_str, "The '%s dh' command requires 1 
argument\n", command);
+       return GED_ERROR;
+    }
+
+    if (BU_STR_EQUAL(parameter, "dv")) {
+       if (argc == 1) {
+           if (!gedp->ged_gvp->gv_adc.anchor_pos) {
+               gedp->ged_gvp->gv_adc.pos_grid[Y] += user_pt[0] / 
(gedp->ged_gvp->gv_scale * gedp->ged_wdbp->dbip->dbi_base2local);
+               adc_grid_to_adc_view(&(gedp->ged_gvp->gv_adc), 
gedp->ged_gvp->gv_view2model, GED_MAX);
+               MAT4X3PNT(gedp->ged_gvp->gv_adc.pos_model, 
gedp->ged_gvp->gv_view2model, gedp->ged_gvp->gv_adc.pos_view);
+           }
+
+           return GED_OK;
+       }
+
+       bu_vls_printf(gedp->ged_result_str, "The '%s dv' command requires 1 
argument\n", command);
+       return GED_ERROR;
+    }
+
+    if (BU_STR_EQUAL(parameter, "hv")) {
+       if (argc == 0) {
+           bu_vls_printf(gedp->ged_result_str, "%g %g",
+                         gedp->ged_gvp->gv_adc.pos_grid[X] * 
gedp->ged_gvp->gv_scale * gedp->ged_wdbp->dbip->dbi_base2local,
+                         gedp->ged_gvp->gv_adc.pos_grid[Y] * 
gedp->ged_gvp->gv_scale * gedp->ged_wdbp->dbip->dbi_base2local);
+           return GED_OK;
+       } else if (argc == 2) {
+           if (!gedp->ged_gvp->gv_adc.anchor_pos) {
+               if (incr_flag) {
+                   gedp->ged_gvp->gv_adc.pos_grid[X] += user_pt[X] / 
(gedp->ged_gvp->gv_scale * gedp->ged_wdbp->dbip->dbi_base2local);
+                   gedp->ged_gvp->gv_adc.pos_grid[Y] += user_pt[Y] / 
(gedp->ged_gvp->gv_scale * gedp->ged_wdbp->dbip->dbi_base2local);
+               } else {
+                   gedp->ged_gvp->gv_adc.pos_grid[X] = user_pt[X] / 
(gedp->ged_gvp->gv_scale * gedp->ged_wdbp->dbip->dbi_base2local);
+                   gedp->ged_gvp->gv_adc.pos_grid[Y] = user_pt[Y] / 
(gedp->ged_gvp->gv_scale * gedp->ged_wdbp->dbip->dbi_base2local);
+               }
+
+               gedp->ged_gvp->gv_adc.pos_grid[Z] = 0.0;
+               adc_grid_to_adc_view(&(gedp->ged_gvp->gv_adc), 
gedp->ged_gvp->gv_view2model, GED_MAX);
+               MAT4X3PNT(gedp->ged_gvp->gv_adc.pos_model, 
gedp->ged_gvp->gv_view2model, gedp->ged_gvp->gv_adc.pos_model);
+           }
+
+           return GED_OK;
+       }
+
+       bu_vls_printf(gedp->ged_result_str, "The '%s hv' command requires 0 or 
2 arguments\n", command);
+       return GED_ERROR;
+    }
+
+    if (BU_STR_EQUAL(parameter, "dx")) {
+       if (argc == 1) {
+           if (!gedp->ged_gvp->gv_adc.anchor_pos) {
+               gedp->ged_gvp->gv_adc.pos_model[X] += user_pt[0] * 
gedp->ged_wdbp->dbip->dbi_local2base;
+               adc_model_to_adc_view(&(gedp->ged_gvp->gv_adc), 
gedp->ged_gvp->gv_model2view, GED_MAX);
+               adc_view_to_adc_grid(&(gedp->ged_gvp->gv_adc), 
gedp->ged_gvp->gv_model2view);
+           }
+
+           return GED_OK;
+       }
+
+       bu_vls_printf(gedp->ged_result_str, "The '%s dx' command requires 1 
argument\n", command);
+       return GED_ERROR;
+    }
+
+    if (BU_STR_EQUAL(parameter, "dy")) {
+       if (argc == 1) {
+           if (!gedp->ged_gvp->gv_adc.anchor_pos) {
+               gedp->ged_gvp->gv_adc.pos_model[Y] += user_pt[0] * 
gedp->ged_wdbp->dbip->dbi_local2base;
+               adc_model_to_adc_view(&(gedp->ged_gvp->gv_adc), 
gedp->ged_gvp->gv_model2view, GED_MAX);
+               adc_view_to_adc_grid(&(gedp->ged_gvp->gv_adc), 
gedp->ged_gvp->gv_model2view);
+           }
+
+           return GED_OK;
+       }
+
+       bu_vls_printf(gedp->ged_result_str, "The '%s dy' command requires 1 
argument\n", command);
+       return GED_ERROR;
+    }
+
+    if (BU_STR_EQUAL(parameter, "dz")) {
+       if (argc == 1) {
+           if (!gedp->ged_gvp->gv_adc.anchor_pos) {
+               gedp->ged_gvp->gv_adc.pos_model[Z] += user_pt[0] * 
gedp->ged_wdbp->dbip->dbi_local2base;
+               adc_model_to_adc_view(&(gedp->ged_gvp->gv_adc), 
gedp->ged_gvp->gv_model2view, GED_MAX);
+               adc_view_to_adc_grid(&(gedp->ged_gvp->gv_adc), 
gedp->ged_gvp->gv_model2view);
+           }
+
+           return GED_OK;
+       }
+
+       bu_vls_printf(gedp->ged_result_str, "The '%s dz' command requires 1 
argument\n", command);
+       return GED_ERROR;
+    }
+
+    if (BU_STR_EQUAL(parameter, "xyz")) {
+       if (argc == 0) {
+           VSCALE(scaled_pos, gedp->ged_gvp->gv_adc.pos_model, 
gedp->ged_wdbp->dbip->dbi_base2local);
+           bu_vls_printf(gedp->ged_result_str, "%g %g %g", V3ARGS(scaled_pos));
+           return GED_OK;
+       } else if (argc == 3) {
+           VSCALE(user_pt, user_pt, gedp->ged_wdbp->dbip->dbi_local2base);
+
+           if (incr_flag) {
+               VADD2(gedp->ged_gvp->gv_adc.pos_model, 
gedp->ged_gvp->gv_adc.pos_model, user_pt);
+           } else {
+               VMOVE(gedp->ged_gvp->gv_adc.pos_model, user_pt);
+           }
+
+           adc_model_to_adc_view(&(gedp->ged_gvp->gv_adc), 
gedp->ged_gvp->gv_model2view, GED_MAX);
+           adc_view_to_adc_grid(&(gedp->ged_gvp->gv_adc), 
gedp->ged_gvp->gv_model2view);
+
+           return GED_OK;
+       }
+
+       bu_vls_printf(gedp->ged_result_str, "The '%s xyz' command requires 0 or 
3 arguments\n", command);
+       return GED_ERROR;
+    }
+
+    if (BU_STR_EQUAL(parameter, "x")) {
+       if (argc == 0) {
+           bu_vls_printf(gedp->ged_result_str, "%d", 
gedp->ged_gvp->gv_adc.dv_x);
+           return GED_OK;
+       } else if (argc == 1) {
+           if (!gedp->ged_gvp->gv_adc.anchor_pos) {
+               if (incr_flag) {
+                   gedp->ged_gvp->gv_adc.dv_x += user_pt[0];
+               } else {
+                   gedp->ged_gvp->gv_adc.dv_x = user_pt[0];
+               }
+
+               gedp->ged_gvp->gv_adc.pos_view[X] = gedp->ged_gvp->gv_adc.dv_x 
* INV_GED;
+               gedp->ged_gvp->gv_adc.pos_view[Y] = gedp->ged_gvp->gv_adc.dv_y 
* INV_GED;
+               adc_view_to_adc_grid(&(gedp->ged_gvp->gv_adc), 
gedp->ged_gvp->gv_model2view);
+               MAT4X3PNT(gedp->ged_gvp->gv_adc.pos_model, 
gedp->ged_gvp->gv_view2model, gedp->ged_gvp->gv_adc.pos_view);
+           }
+
+           return GED_OK;
+       }
+
+       bu_vls_printf(gedp->ged_result_str, "The '%s x' command requires 0 or 1 
argument\n", command);
+       return GED_ERROR;
+    }
+
+    if (BU_STR_EQUAL(parameter, "y")) {
+       if (argc == 0) {
+           bu_vls_printf(gedp->ged_result_str, "%d", 
gedp->ged_gvp->gv_adc.dv_y);
+           return GED_OK;
+       } else if (argc == 1) {
+           if (!gedp->ged_gvp->gv_adc.anchor_pos) {
+               if (incr_flag) {
+                   gedp->ged_gvp->gv_adc.dv_y += user_pt[0];
+               } else {
+                   gedp->ged_gvp->gv_adc.dv_y = user_pt[0];
+               }
+
+               gedp->ged_gvp->gv_adc.pos_view[X] = gedp->ged_gvp->gv_adc.dv_x 
* INV_GED;
+               gedp->ged_gvp->gv_adc.pos_view[Y] = gedp->ged_gvp->gv_adc.dv_y 
* INV_GED;
+               adc_view_to_adc_grid(&(gedp->ged_gvp->gv_adc), 
gedp->ged_gvp->gv_model2view);
+               MAT4X3PNT(gedp->ged_gvp->gv_adc.pos_model, 
gedp->ged_gvp->gv_view2model, gedp->ged_gvp->gv_adc.pos_view);
+           }
+
+           return GED_OK;
+       }
+
+       bu_vls_printf(gedp->ged_result_str, "The '%s y' command requires 0 or 1 
argument\n", command);
+       return GED_ERROR;
+    }
+
+    if (BU_STR_EQUAL(parameter, "anchor_pos")) {
+       if (argc == 0) {
+           bu_vls_printf(gedp->ged_result_str, "%d", 
gedp->ged_gvp->gv_adc.anchor_pos);
+           return GED_OK;
+       } else if (argc == 1) {
+           i = (int)user_pt[X];
+
+           if (i < 0 || 2 < i) {
+               bu_vls_printf(gedp->ged_result_str, "The '%d anchor_pos' 
parameter accepts values of 0, 1, or 2.", i);
+               return GED_ERROR;
+           }
+
+           gedp->ged_gvp->gv_adc.anchor_pos = i;
+           ged_calc_adc_pos(gedp->ged_gvp);
+
+           return GED_OK;
+       }
+
+       bu_vls_printf(gedp->ged_result_str, "The '%s anchor_pos' command 
accepts 0 or 1 argument\n", command);
+       return GED_ERROR;
+    }
+
+    if (BU_STR_EQUAL(parameter, "anchor_a1")) {
+       if (argc == 0) {
+           bu_vls_printf(gedp->ged_result_str, "%d", 
gedp->ged_gvp->gv_adc.anchor_a1);
+           return GED_OK;
+       } else if (argc == 1) {
+           i = (int)user_pt[X];
+
+           if (i)
+               gedp->ged_gvp->gv_adc.anchor_a1 = 1;
+           else
+               gedp->ged_gvp->gv_adc.anchor_a1 = 0;
+
+           ged_calc_adc_a1(gedp->ged_gvp);
+
+           return GED_OK;
+       }
+
+       bu_vls_printf(gedp->ged_result_str, "The '%s anchor_a1' command accepts 
0 or 1 argument\n", command);
+       return GED_ERROR;
+    }
+
+    if (BU_STR_EQUAL(parameter, "anchorpoint_a1")) {
+       if (argc == 0) {
+           VSCALE(scaled_pos, gedp->ged_gvp->gv_adc.anchor_pt_a1, 
gedp->ged_wdbp->dbip->dbi_base2local);
+           bu_vls_printf(gedp->ged_result_str, "%g %g %g", V3ARGS(scaled_pos));
+
+           return GED_OK;
+       } else if (argc == 3) {
+           VSCALE(user_pt, user_pt, gedp->ged_wdbp->dbip->dbi_local2base);
+
+           if (incr_flag) {
+               VADD2(gedp->ged_gvp->gv_adc.anchor_pt_a1, 
gedp->ged_gvp->gv_adc.anchor_pt_a1, user_pt);
+           } else {
+               VMOVE(gedp->ged_gvp->gv_adc.anchor_pt_a1, user_pt);
+           }
+
+           ged_calc_adc_a1(gedp->ged_gvp);
+
+           return GED_OK;
+       }
+
+       bu_vls_printf(gedp->ged_result_str, "The '%s anchorpoint_a1' command 
accepts 0 or 3 arguments\n", command);
+       return GED_ERROR;
+    }
+
+    if (BU_STR_EQUAL(parameter, "anchor_a2")) {
+       if (argc == 0) {
+           bu_vls_printf(gedp->ged_result_str, "%d", 
gedp->ged_gvp->gv_adc.anchor_a2);
+
+           return GED_OK;
+       } else if (argc == 1) {
+           i = (int)user_pt[X];
+
+           if (i)
+               gedp->ged_gvp->gv_adc.anchor_a2 = 1;
+           else
+               gedp->ged_gvp->gv_adc.anchor_a2 = 0;
+
+           ged_calc_adc_a2(gedp->ged_gvp);
+
+           return GED_OK;
+       }
+
+       bu_vls_printf(gedp->ged_result_str, "The '%s anchor_a2' command accepts 
0 or 1 argument\n", command);
+       return GED_ERROR;
+    }
+
+    if (BU_STR_EQUAL(parameter, "anchorpoint_a2")) {
+       if (argc == 0) {
+           VSCALE(scaled_pos, gedp->ged_gvp->gv_adc.anchor_pt_a2, 
gedp->ged_wdbp->dbip->dbi_base2local);
+
+           bu_vls_printf(gedp->ged_result_str, "%g %g %g", V3ARGS(scaled_pos));
+
+           return GED_OK;
+       } else if (argc == 3) {
+           VSCALE(user_pt, user_pt, gedp->ged_wdbp->dbip->dbi_local2base);
+
+           if (incr_flag) {
+               VADD2(gedp->ged_gvp->gv_adc.anchor_pt_a2, 
gedp->ged_gvp->gv_adc.anchor_pt_a2, user_pt);
+           } else {
+               VMOVE(gedp->ged_gvp->gv_adc.anchor_pt_a2, user_pt);
+           }
+
+           ged_calc_adc_a2(gedp->ged_gvp);
+
+           return GED_OK;
+       }
+
+       bu_vls_printf(gedp->ged_result_str, "The '%s anchorpoint_a2' command 
accepts 0 or 3 arguments\n", command);
+       return GED_ERROR;
+    }
+
+    if (BU_STR_EQUAL(parameter, "anchor_dst")) {
+       if (argc == 0) {
+           bu_vls_printf(gedp->ged_result_str, "%d", 
gedp->ged_gvp->gv_adc.anchor_dst);
+
+           return GED_OK;
+       } else if (argc == 1) {
+           i = (int)user_pt[X];
+
+           if (i) {
+               gedp->ged_gvp->gv_adc.anchor_dst = 1;
+           } else
+               gedp->ged_gvp->gv_adc.anchor_dst = 0;
+
+           ged_calc_adc_dst(gedp->ged_gvp);
+
+           return GED_OK;
+       }
+
+       bu_vls_printf(gedp->ged_result_str, "The '%s anchor_dst' command 
accepts 0 or 1 argument\n", command);
+       return GED_ERROR;
+    }
+
+    if (BU_STR_EQUAL(parameter, "anchorpoint_dst")) {
+       if (argc == 0) {
+           VSCALE(scaled_pos, gedp->ged_gvp->gv_adc.anchor_pt_dst, 
gedp->ged_wdbp->dbip->dbi_base2local);
+           bu_vls_printf(gedp->ged_result_str, "%g %g %g", V3ARGS(scaled_pos));
+
+           return GED_OK;
+       } else if (argc == 3) {
+           VSCALE(user_pt, user_pt, gedp->ged_wdbp->dbip->dbi_local2base);
+
+           if (incr_flag) {
+               VADD2(gedp->ged_gvp->gv_adc.anchor_pt_dst, 
gedp->ged_gvp->gv_adc.anchor_pt_dst, user_pt);
+           } else {
+               VMOVE(gedp->ged_gvp->gv_adc.anchor_pt_dst, user_pt);
+           }
+
+           ged_calc_adc_dst(gedp->ged_gvp);
+
+           return GED_OK;
+       }
+
+       bu_vls_printf(gedp->ged_result_str, "The '%s anchorpoint_dst' command 
accepts 0 or 3 arguments\n", command);
+       return GED_ERROR;
+    }
+
+    if (BU_STR_EQUAL(parameter, "reset")) {
+       if (argc == 0) {
+           adc_reset(&(gedp->ged_gvp->gv_adc), gedp->ged_gvp->gv_view2model, 
gedp->ged_gvp->gv_model2view);
+
+           return GED_OK;
+       }
+
+       bu_vls_printf(gedp->ged_result_str, "The '%s reset' command accepts no 
arguments\n", command);
+       return GED_ERROR;
+    }
+
+    if (BU_STR_EQUAL(parameter, "vars")) {
+       adc_vls_print(gedp->ged_gvp, gedp->ged_wdbp->dbip->dbi_base2local, 
gedp->ged_result_str);
+       return GED_OK;
+    }
+
+    if (BU_STR_EQUAL(parameter, "help")) {
+       adc_usage(gedp->ged_result_str, command);
+       return GED_HELP;
+    }
+
+    bu_vls_printf(gedp->ged_result_str, "%s: unrecognized command '%s'\n", 
command, parameter);
+    adc_usage(gedp->ged_result_str, command);
+
+    return GED_ERROR;
+}
+
+
+void
+ged_calc_adc_pos(struct bview *gvp)
+{
+    if (gvp->gv_adc.anchor_pos == 1) {
+       adc_model_to_adc_view(&(gvp->gv_adc), gvp->gv_model2view, GED_MAX);
+       adc_view_to_adc_grid(&(gvp->gv_adc), gvp->gv_model2view);
+    } else if (gvp->gv_adc.anchor_pos == 2) {
+       adc_grid_to_adc_view(&(gvp->gv_adc), gvp->gv_view2model, GED_MAX);
+       MAT4X3PNT(gvp->gv_adc.pos_model, gvp->gv_view2model, 
gvp->gv_adc.pos_view);
+    } else {
+       adc_view_to_adc_grid(&(gvp->gv_adc), gvp->gv_model2view);
+       MAT4X3PNT(gvp->gv_adc.pos_model, gvp->gv_view2model, 
gvp->gv_adc.pos_view);
+    }
+}
+
+
+void
+ged_calc_adc_a1(struct bview *gvp)
+{
+    if (gvp->gv_adc.anchor_a1) {
+       fastf_t dx, dy;
+       point_t view_pt;
+
+       MAT4X3PNT(view_pt, gvp->gv_model2view, gvp->gv_adc.anchor_pt_a1);
+       dx = view_pt[X] * GED_MAX - gvp->gv_adc.dv_x;
+       dy = view_pt[Y] * GED_MAX - gvp->gv_adc.dv_y;
+
+       if (!ZERO(dx) || !ZERO(dy)) {
+           gvp->gv_adc.a1 = RAD2DEG*atan2(dy, dx);
+           gvp->gv_adc.dv_a1 = (1.0 - (gvp->gv_adc.a1 / 45.0)) * GED_MAX;
+       }
+    }
+}
+
+
+void
+ged_calc_adc_a2(struct bview *gvp)
+{
+    if (gvp->gv_adc.anchor_a2) {
+       fastf_t dx, dy;
+       point_t view_pt;
+
+       MAT4X3PNT(view_pt, gvp->gv_model2view, gvp->gv_adc.anchor_pt_a2);
+       dx = view_pt[X] * GED_MAX - gvp->gv_adc.dv_x;
+       dy = view_pt[Y] * GED_MAX - gvp->gv_adc.dv_y;
+
+       if (!ZERO(dx) || !ZERO(dy)) {
+           gvp->gv_adc.a2 = RAD2DEG*atan2(dy, dx);
+           gvp->gv_adc.dv_a2 = (1.0 - (gvp->gv_adc.a2 / 45.0)) * GED_MAX;
+       }
+    }
+}
+
+
+void
+ged_calc_adc_dst(struct bview *gvp)
+{
+    if (gvp->gv_adc.anchor_dst) {
+       fastf_t dist;
+       fastf_t dx, dy;
+       point_t view_pt;
+
+       MAT4X3PNT(view_pt, gvp->gv_model2view, gvp->gv_adc.anchor_pt_dst);
+
+       dx = view_pt[X] * GED_MAX - gvp->gv_adc.dv_x;
+       dy = view_pt[Y] * GED_MAX - gvp->gv_adc.dv_y;
+       dist = sqrt(dx * dx + dy * dy);
+       gvp->gv_adc.dst = dist * INV_GED;
+       gvp->gv_adc.dv_dist = (dist / M_SQRT1_2) - GED_MAX;
+    } else
+       gvp->gv_adc.dst = (gvp->gv_adc.dv_dist * INV_GED + 1.0) * M_SQRT1_2;
+}
+
+
+/*
+ * Local Variables:
+ * mode: C
+ * tab-width: 8
+ * indent-tabs-mode: t
+ * c-file-style: "stroustrup"
+ * End:
+ * ex: shiftwidth=4 tabstop=8
+ */

Deleted: brlcad/branches/bioh/src/libged/adc.c
===================================================================
--- brlcad/branches/bioh/src/libged/adc.c       2020-07-17 13:38:57 UTC (rev 
76359)
+++ brlcad/branches/bioh/src/libged/adc.c       2020-07-17 16:44:16 UTC (rev 
76360)
@@ -1,710 +0,0 @@
-/*                           A D C . C
- * BRL-CAD
- *
- * Copyright (c) 1985-2020 United States Government as represented by
- * the U.S. Army Research Laboratory.
- *
- * This program 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 program 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/adc.c
- *
- */
-
-#include "common.h"
-
-#include <stdlib.h>
-#include <math.h>
-#include <string.h>
-
-
-#include "vmath.h"
-#include "ged.h"
-
-static void
-adc_vls_print(struct bview *gvp, fastf_t base2local, struct bu_vls *out_vp)
-{
-    bu_vls_printf(out_vp, "draw = %d\n", gvp->gv_adc.draw);
-    bu_vls_printf(out_vp, "a1 = %.15e\n", gvp->gv_adc.a1);
-    bu_vls_printf(out_vp, "a2 = %.15e\n", gvp->gv_adc.a2);
-    bu_vls_printf(out_vp, "dst = %.15e\n", gvp->gv_adc.dst * gvp->gv_scale * 
base2local);
-    bu_vls_printf(out_vp, "odst = %d\n", gvp->gv_adc.dv_dist);
-    bu_vls_printf(out_vp, "hv = %.15e %.15e\n",
-                 gvp->gv_adc.pos_grid[X] * gvp->gv_scale * base2local,
-                 gvp->gv_adc.pos_grid[Y] * gvp->gv_scale * base2local);
-    bu_vls_printf(out_vp, "xyz = %.15e %.15e %.15e\n",
-                 gvp->gv_adc.pos_model[X] * base2local,
-                 gvp->gv_adc.pos_model[Y] * base2local,
-                 gvp->gv_adc.pos_model[Z] * base2local);
-    bu_vls_printf(out_vp, "x = %d\n", gvp->gv_adc.dv_x);
-    bu_vls_printf(out_vp, "y = %d\n", gvp->gv_adc.dv_y);
-    bu_vls_printf(out_vp, "anchor_pos = %d\n", gvp->gv_adc.anchor_pos);
-    bu_vls_printf(out_vp, "anchor_a1 = %d\n", gvp->gv_adc.anchor_a1);
-    bu_vls_printf(out_vp, "anchor_a2 = %d\n", gvp->gv_adc.anchor_a2);
-    bu_vls_printf(out_vp, "anchor_dst = %d\n", gvp->gv_adc.anchor_dst);
-    bu_vls_printf(out_vp, "anchorpoint_a1 = %.15e %.15e %.15e\n",
-                 gvp->gv_adc.anchor_pt_a1[X] * base2local,
-                 gvp->gv_adc.anchor_pt_a1[Y] * base2local,
-                 gvp->gv_adc.anchor_pt_a1[Z] * base2local);
-    bu_vls_printf(out_vp, "anchorpoint_a2 = %.15e %.15e %.15e\n",
-                 gvp->gv_adc.anchor_pt_a2[X] * base2local,
-                 gvp->gv_adc.anchor_pt_a2[Y] * base2local,
-                 gvp->gv_adc.anchor_pt_a2[Z] * base2local);
-    bu_vls_printf(out_vp, "anchorpoint_dst = %.15e %.15e %.15e\n",
-                 gvp->gv_adc.anchor_pt_dst[X] * base2local,
-                 gvp->gv_adc.anchor_pt_dst[Y] * base2local,
-                 gvp->gv_adc.anchor_pt_dst[Z] * base2local);
-}
-
-
-HIDDEN void
-adc_usage(struct bu_vls *vp, const char *name)
-{
-    bu_vls_printf(vp, "Usage: %s \n", name);
-    bu_vls_printf(vp, "%s", " adc vname                           toggle 
display of angle/distance cursor\n");
-    bu_vls_printf(vp, "%s", " adc vname vars                      print a list 
of all variables (i.e. var = val)\n");
-    bu_vls_printf(vp, "%s", " adc vname draw [0|1]                set or get 
the draw parameter\n");
-    bu_vls_printf(vp, "%s", " adc vname a1   [#]                  set or get 
angle1\n");
-    bu_vls_printf(vp, "%s", " adc vname a2   [#]                  set or get 
angle2\n");
-    bu_vls_printf(vp, "%s", " adc vname dst  [#]                  set or get 
radius (distance) of tick\n");
-    bu_vls_printf(vp, "%s", " adc vname odst [#]                  set or get 
radius (distance) of tick (+-2047)\n");
-    bu_vls_printf(vp, "%s", " adc vname hv   [# #]                set or get 
position (grid coordinates)\n");
-    bu_vls_printf(vp, "%s", " adc vname xyz  [# # #]              set or get 
position (model coordinates)\n");
-    bu_vls_printf(vp, "%s", " adc vname x [#]                     set or get 
horizontal position (+-2047)\n");
-    bu_vls_printf(vp, "%s", " adc vname y [#]                     set or get 
vertical position (+-2047)\n");
-    bu_vls_printf(vp, "%s", " adc vname dh #                      add to 
horizontal position (grid coordinates)\n");
-    bu_vls_printf(vp, "%s", " adc vname dv #                      add to 
vertical position (grid coordinates)\n");
-    bu_vls_printf(vp, "%s", " adc vname dx #                      add to X 
position (model coordinates)\n");
-    bu_vls_printf(vp, "%s", " adc vname dy #                      add to Y 
position (model coordinates)\n");
-    bu_vls_printf(vp, "%s", " adc vname dz #                      add to Z 
position (model coordinates)\n");
-    bu_vls_printf(vp, "%s", " adc vname anchor_pos [0|1]          anchor ADC 
to current position in model coordinates\n");
-    bu_vls_printf(vp, "%s", " adc vname anchor_a1  [0|1]          anchor 
angle1 to go through anchorpoint_a1\n");
-    bu_vls_printf(vp, "%s", " adc vname anchor_a2  [0|1]          anchor 
angle2 to go through anchorpoint_a2\n");
-    bu_vls_printf(vp, "%s", " adc vname anchor_dst [0|1]          anchor tick 
distance to go through anchorpoint_dst\n");
-    bu_vls_printf(vp, "%s", " adc vname anchorpoint_a1  [# # #]   set or get 
anchor point for angle1\n");
-    bu_vls_printf(vp, "%s", " adc vname anchorpoint_a2  [# # #]   set or get 
anchor point for angle2\n");
-    bu_vls_printf(vp, "%s", " adc vname anchorpoint_dst [# # #]   set or get 
anchor point for tick distance\n");
-    bu_vls_printf(vp, "%s", " adc vname -i                        any of the 
above appropriate commands will interpret parameters as increments\n");
-    bu_vls_printf(vp, "%s", " adc vname reset                     reset 
angles, location, and tick distance\n");
-    bu_vls_printf(vp, "%s", " adc vname help                      prints this 
help message\n");
-}
-
-
-/*
- * Note - this needs to be rewritten to accept keyword/value pairs so
- * that multiple attributes can be set with a single command call.
- */
-int
-ged_adc(struct ged *gedp,
-       int argc,
-       const char *argv[])
-{
-    char *command;
-    char *parameter;
-    char **argp = (char **)argv;
-    double scanval;
-    point_t user_pt;           /* Value(s) provided by user */
-    point_t scaled_pos;
-    int incr_flag;
-    int i;
-
-    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);
-
-    if (argc < 2 || 6 < argc) {
-       adc_usage(gedp->ged_result_str, argv[0]);
-       return GED_ERROR;
-    }
-
-    command = (char *)argv[0];
-
-    if (BU_STR_EQUAL(argv[1], "-i")) {
-       if (argc < 5) {
-           bu_vls_printf(gedp->ged_result_str, "%s: -i option specified 
without an op-val pair", command);
-           return GED_ERROR;
-       }
-
-       incr_flag = 1;
-       parameter = (char *)argv[2];
-       argc -= 3;
-       argp += 3;
-    } else {
-       incr_flag = 0;
-       parameter = (char *)argv[1];
-       argc -= 2;
-       argp += 2;
-    }
-
-    for (i = 0; i < argc; ++i) {
-       if (sscanf(argp[i], "%lf", &scanval) != 1) {
-           adc_usage(gedp->ged_result_str, command);
-           return GED_ERROR;
-       }
-       user_pt[i] = scanval;
-    }
-
-    if (BU_STR_EQUAL(parameter, "draw")) {
-       if (argc == 0) {
-           bu_vls_printf(gedp->ged_result_str, "%d", 
gedp->ged_gvp->gv_adc.draw);
-           return GED_OK;
-       } else if (argc == 1) {
-           i = (int)user_pt[X];
-
-           if (i)
-               gedp->ged_gvp->gv_adc.draw = 1;
-           else
-               gedp->ged_gvp->gv_adc.draw = 0;
-
-           return GED_OK;
-       }
-
-       bu_vls_printf(gedp->ged_result_str, "The '%s draw' command accepts 0 or 
1 argument\n", command);
-       return GED_ERROR;
-    }
-
-    if (BU_STR_EQUAL(parameter, "a1")) {
-       if (argc == 0) {
-           bu_vls_printf(gedp->ged_result_str, "%g", gedp->ged_gvp->gv_adc.a1);
-           return GED_OK;
-       } else if (argc == 1) {
-           if (!gedp->ged_gvp->gv_adc.anchor_a1) {
-               if (incr_flag)
-                   gedp->ged_gvp->gv_adc.a1 += user_pt[0];
-               else
-                   gedp->ged_gvp->gv_adc.a1 = user_pt[0];
-
-               gedp->ged_gvp->gv_adc.dv_a1 = (1.0 - (gedp->ged_gvp->gv_adc.a1 
/ 45.0)) * GED_MAX;
-           }
-
-           return GED_OK;
-       }
-
-       bu_vls_printf(gedp->ged_result_str, "The '%s a1' command accepts only 1 
argument\n", command);
-       return GED_ERROR;
-    }
-
-    if (BU_STR_EQUAL(parameter, "a2")) {
-       if (argc == 0) {
-           bu_vls_printf(gedp->ged_result_str, "%g", gedp->ged_gvp->gv_adc.a2);
-           return GED_OK;
-       } else if (argc == 1) {
-           if (!gedp->ged_gvp->gv_adc.anchor_a2) {
-               if (incr_flag)
-                   gedp->ged_gvp->gv_adc.a2 += user_pt[0];
-               else
-                   gedp->ged_gvp->gv_adc.a2 = user_pt[0];
-
-               gedp->ged_gvp->gv_adc.dv_a2 = (1.0 - (gedp->ged_gvp->gv_adc.a2 
/ 45.0)) * GED_MAX;
-           }
-
-           return GED_OK;
-       }
-
-       bu_vls_printf(gedp->ged_result_str, "The '%s a2' command accepts only 1 
argument\n", command);
-       return GED_ERROR;
-    }
-
-    if (BU_STR_EQUAL(parameter, "dst")) {
-       if (argc == 0) {
-           bu_vls_printf(gedp->ged_result_str, "%g", gedp->ged_gvp->gv_adc.dst 
* gedp->ged_gvp->gv_scale * gedp->ged_wdbp->dbip->dbi_base2local);
-           return GED_OK;
-       } else if (argc == 1) {
-           if (!gedp->ged_gvp->gv_adc.anchor_dst) {
-               if (incr_flag)
-                   gedp->ged_gvp->gv_adc.dst += user_pt[0] / 
(gedp->ged_gvp->gv_scale * gedp->ged_wdbp->dbip->dbi_base2local);
-               else
-                   gedp->ged_gvp->gv_adc.dst = user_pt[0] / 
(gedp->ged_gvp->gv_scale * gedp->ged_wdbp->dbip->dbi_base2local);
-
-               gedp->ged_gvp->gv_adc.dv_dist = (gedp->ged_gvp->gv_adc.dst / 
M_SQRT1_2 - 1.0) * GED_MAX;
-           }
-
-           return GED_OK;
-       }
-
-       bu_vls_printf(gedp->ged_result_str, "The '%s dst' command accepts 0 or 
1 argument\n", command);
-       return GED_ERROR;
-    }
-
-    if (BU_STR_EQUAL(parameter, "odst")) {
-       if (argc == 0) {
-           bu_vls_printf(gedp->ged_result_str, "%d", 
gedp->ged_gvp->gv_adc.dv_dist);
-           return GED_OK;
-       } else if (argc == 1) {
-           if (!gedp->ged_gvp->gv_adc.anchor_dst) {
-               if (incr_flag)
-                   gedp->ged_gvp->gv_adc.dv_dist += user_pt[0];
-               else
-                   gedp->ged_gvp->gv_adc.dv_dist = user_pt[0];
-
-               gedp->ged_gvp->gv_adc.dst = (gedp->ged_gvp->gv_adc.dv_dist * 
INV_GED + 1.0) * M_SQRT1_2;
-           }
-
-           return GED_OK;
-       }
-
-       bu_vls_printf(gedp->ged_result_str, "The '%s odst' command accepts 0 or 
1 argument\n", command);
-       return GED_ERROR;
-    }
-
-    if (BU_STR_EQUAL(parameter, "dh")) {
-       if (argc == 1) {
-           if (!gedp->ged_gvp->gv_adc.anchor_pos) {
-               gedp->ged_gvp->gv_adc.pos_grid[X] += user_pt[0] / 
(gedp->ged_gvp->gv_scale * gedp->ged_wdbp->dbip->dbi_base2local);
-               adc_grid_to_adc_view(&(gedp->ged_gvp->gv_adc), 
gedp->ged_gvp->gv_view2model, GED_MAX);
-               MAT4X3PNT(gedp->ged_gvp->gv_adc.pos_model, 
gedp->ged_gvp->gv_view2model, gedp->ged_gvp->gv_adc.pos_view);
-           }
-
-           return GED_OK;
-       }
-
-       bu_vls_printf(gedp->ged_result_str, "The '%s dh' command requires 1 
argument\n", command);
-       return GED_ERROR;
-    }
-
-    if (BU_STR_EQUAL(parameter, "dv")) {
-       if (argc == 1) {
-           if (!gedp->ged_gvp->gv_adc.anchor_pos) {
-               gedp->ged_gvp->gv_adc.pos_grid[Y] += user_pt[0] / 
(gedp->ged_gvp->gv_scale * gedp->ged_wdbp->dbip->dbi_base2local);
-               adc_grid_to_adc_view(&(gedp->ged_gvp->gv_adc), 
gedp->ged_gvp->gv_view2model, GED_MAX);
-               MAT4X3PNT(gedp->ged_gvp->gv_adc.pos_model, 
gedp->ged_gvp->gv_view2model, gedp->ged_gvp->gv_adc.pos_view);
-           }
-
-           return GED_OK;
-       }
-
-       bu_vls_printf(gedp->ged_result_str, "The '%s dv' command requires 1 
argument\n", command);
-       return GED_ERROR;
-    }
-
-    if (BU_STR_EQUAL(parameter, "hv")) {
-       if (argc == 0) {
-           bu_vls_printf(gedp->ged_result_str, "%g %g",
-                         gedp->ged_gvp->gv_adc.pos_grid[X] * 
gedp->ged_gvp->gv_scale * gedp->ged_wdbp->dbip->dbi_base2local,
-                         gedp->ged_gvp->gv_adc.pos_grid[Y] * 
gedp->ged_gvp->gv_scale * gedp->ged_wdbp->dbip->dbi_base2local);
-           return GED_OK;
-       } else if (argc == 2) {
-           if (!gedp->ged_gvp->gv_adc.anchor_pos) {
-               if (incr_flag) {
-                   gedp->ged_gvp->gv_adc.pos_grid[X] += user_pt[X] / 
(gedp->ged_gvp->gv_scale * gedp->ged_wdbp->dbip->dbi_base2local);
-                   gedp->ged_gvp->gv_adc.pos_grid[Y] += user_pt[Y] / 
(gedp->ged_gvp->gv_scale * gedp->ged_wdbp->dbip->dbi_base2local);
-               } else {
-                   gedp->ged_gvp->gv_adc.pos_grid[X] = user_pt[X] / 
(gedp->ged_gvp->gv_scale * gedp->ged_wdbp->dbip->dbi_base2local);
-                   gedp->ged_gvp->gv_adc.pos_grid[Y] = user_pt[Y] / 
(gedp->ged_gvp->gv_scale * gedp->ged_wdbp->dbip->dbi_base2local);
-               }
-
-               gedp->ged_gvp->gv_adc.pos_grid[Z] = 0.0;
-               adc_grid_to_adc_view(&(gedp->ged_gvp->gv_adc), 
gedp->ged_gvp->gv_view2model, GED_MAX);
-               MAT4X3PNT(gedp->ged_gvp->gv_adc.pos_model, 
gedp->ged_gvp->gv_view2model, gedp->ged_gvp->gv_adc.pos_model);
-           }
-
-           return GED_OK;
-       }
-
-       bu_vls_printf(gedp->ged_result_str, "The '%s hv' command requires 0 or 
2 arguments\n", command);
-       return GED_ERROR;
-    }
-
-    if (BU_STR_EQUAL(parameter, "dx")) {
-       if (argc == 1) {
-           if (!gedp->ged_gvp->gv_adc.anchor_pos) {
-               gedp->ged_gvp->gv_adc.pos_model[X] += user_pt[0] * 
gedp->ged_wdbp->dbip->dbi_local2base;
-               adc_model_to_adc_view(&(gedp->ged_gvp->gv_adc), 
gedp->ged_gvp->gv_model2view, GED_MAX);
-               adc_view_to_adc_grid(&(gedp->ged_gvp->gv_adc), 
gedp->ged_gvp->gv_model2view);
-           }
-
-           return GED_OK;
-       }
-
-       bu_vls_printf(gedp->ged_result_str, "The '%s dx' command requires 1 
argument\n", command);
-       return GED_ERROR;
-    }
-
-    if (BU_STR_EQUAL(parameter, "dy")) {
-       if (argc == 1) {
-           if (!gedp->ged_gvp->gv_adc.anchor_pos) {
-               gedp->ged_gvp->gv_adc.pos_model[Y] += user_pt[0] * 
gedp->ged_wdbp->dbip->dbi_local2base;
-               adc_model_to_adc_view(&(gedp->ged_gvp->gv_adc), 
gedp->ged_gvp->gv_model2view, GED_MAX);
-               adc_view_to_adc_grid(&(gedp->ged_gvp->gv_adc), 
gedp->ged_gvp->gv_model2view);
-           }
-
-           return GED_OK;
-       }
-
-       bu_vls_printf(gedp->ged_result_str, "The '%s dy' command requires 1 
argument\n", command);
-       return GED_ERROR;
-    }
-
-    if (BU_STR_EQUAL(parameter, "dz")) {
-       if (argc == 1) {
-           if (!gedp->ged_gvp->gv_adc.anchor_pos) {
-               gedp->ged_gvp->gv_adc.pos_model[Z] += user_pt[0] * 
gedp->ged_wdbp->dbip->dbi_local2base;
-               adc_model_to_adc_view(&(gedp->ged_gvp->gv_adc), 
gedp->ged_gvp->gv_model2view, GED_MAX);
-               adc_view_to_adc_grid(&(gedp->ged_gvp->gv_adc), 
gedp->ged_gvp->gv_model2view);
-           }
-
-           return GED_OK;
-       }
-
-       bu_vls_printf(gedp->ged_result_str, "The '%s dz' command requires 1 
argument\n", command);
-       return GED_ERROR;
-    }
-
-    if (BU_STR_EQUAL(parameter, "xyz")) {
-       if (argc == 0) {
-           VSCALE(scaled_pos, gedp->ged_gvp->gv_adc.pos_model, 
gedp->ged_wdbp->dbip->dbi_base2local);
-           bu_vls_printf(gedp->ged_result_str, "%g %g %g", V3ARGS(scaled_pos));
-           return GED_OK;
-       } else if (argc == 3) {
-           VSCALE(user_pt, user_pt, gedp->ged_wdbp->dbip->dbi_local2base);
-
-           if (incr_flag) {
-               VADD2(gedp->ged_gvp->gv_adc.pos_model, 
gedp->ged_gvp->gv_adc.pos_model, user_pt);
-           } else {
-               VMOVE(gedp->ged_gvp->gv_adc.pos_model, user_pt);
-           }
-
-           adc_model_to_adc_view(&(gedp->ged_gvp->gv_adc), 
gedp->ged_gvp->gv_model2view, GED_MAX);
-           adc_view_to_adc_grid(&(gedp->ged_gvp->gv_adc), 
gedp->ged_gvp->gv_model2view);
-
-           return GED_OK;
-       }
-
-       bu_vls_printf(gedp->ged_result_str, "The '%s xyz' command requires 0 or 
3 arguments\n", command);
-       return GED_ERROR;
-    }
-
-    if (BU_STR_EQUAL(parameter, "x")) {
-       if (argc == 0) {
-           bu_vls_printf(gedp->ged_result_str, "%d", 
gedp->ged_gvp->gv_adc.dv_x);
-           return GED_OK;
-       } else if (argc == 1) {
-           if (!gedp->ged_gvp->gv_adc.anchor_pos) {
-               if (incr_flag) {
-                   gedp->ged_gvp->gv_adc.dv_x += user_pt[0];
-               } else {
-                   gedp->ged_gvp->gv_adc.dv_x = user_pt[0];
-               }
-
-               gedp->ged_gvp->gv_adc.pos_view[X] = gedp->ged_gvp->gv_adc.dv_x 
* INV_GED;
-               gedp->ged_gvp->gv_adc.pos_view[Y] = gedp->ged_gvp->gv_adc.dv_y 
* INV_GED;
-               adc_view_to_adc_grid(&(gedp->ged_gvp->gv_adc), 
gedp->ged_gvp->gv_model2view);
-               MAT4X3PNT(gedp->ged_gvp->gv_adc.pos_model, 
gedp->ged_gvp->gv_view2model, gedp->ged_gvp->gv_adc.pos_view);
-           }
-
-           return GED_OK;
-       }
-
-       bu_vls_printf(gedp->ged_result_str, "The '%s x' command requires 0 or 1 
argument\n", command);
-       return GED_ERROR;
-    }
-
-    if (BU_STR_EQUAL(parameter, "y")) {
-       if (argc == 0) {
-           bu_vls_printf(gedp->ged_result_str, "%d", 
gedp->ged_gvp->gv_adc.dv_y);
-           return GED_OK;
-       } else if (argc == 1) {
-           if (!gedp->ged_gvp->gv_adc.anchor_pos) {
-               if (incr_flag) {
-                   gedp->ged_gvp->gv_adc.dv_y += user_pt[0];
-               } else {
-                   gedp->ged_gvp->gv_adc.dv_y = user_pt[0];
-               }
-
-               gedp->ged_gvp->gv_adc.pos_view[X] = gedp->ged_gvp->gv_adc.dv_x 
* INV_GED;
-               gedp->ged_gvp->gv_adc.pos_view[Y] = gedp->ged_gvp->gv_adc.dv_y 
* INV_GED;
-               adc_view_to_adc_grid(&(gedp->ged_gvp->gv_adc), 
gedp->ged_gvp->gv_model2view);
-               MAT4X3PNT(gedp->ged_gvp->gv_adc.pos_model, 
gedp->ged_gvp->gv_view2model, gedp->ged_gvp->gv_adc.pos_view);
-           }
-
-           return GED_OK;
-       }
-
-       bu_vls_printf(gedp->ged_result_str, "The '%s y' command requires 0 or 1 
argument\n", command);
-       return GED_ERROR;
-    }
-
-    if (BU_STR_EQUAL(parameter, "anchor_pos")) {
-       if (argc == 0) {
-           bu_vls_printf(gedp->ged_result_str, "%d", 
gedp->ged_gvp->gv_adc.anchor_pos);
-           return GED_OK;
-       } else if (argc == 1) {
-           i = (int)user_pt[X];
-
-           if (i < 0 || 2 < i) {
-               bu_vls_printf(gedp->ged_result_str, "The '%d anchor_pos' 
parameter accepts values of 0, 1, or 2.", i);
-               return GED_ERROR;
-           }
-
-           gedp->ged_gvp->gv_adc.anchor_pos = i;
-           ged_calc_adc_pos(gedp->ged_gvp);
-
-           return GED_OK;
-       }
-
-       bu_vls_printf(gedp->ged_result_str, "The '%s anchor_pos' command 
accepts 0 or 1 argument\n", command);
-       return GED_ERROR;
-    }
-
-    if (BU_STR_EQUAL(parameter, "anchor_a1")) {
-       if (argc == 0) {
-           bu_vls_printf(gedp->ged_result_str, "%d", 
gedp->ged_gvp->gv_adc.anchor_a1);
-           return GED_OK;
-       } else if (argc == 1) {
-           i = (int)user_pt[X];
-
-           if (i)
-               gedp->ged_gvp->gv_adc.anchor_a1 = 1;
-           else
-               gedp->ged_gvp->gv_adc.anchor_a1 = 0;
-
-           ged_calc_adc_a1(gedp->ged_gvp);
-
-           return GED_OK;
-       }
-
-       bu_vls_printf(gedp->ged_result_str, "The '%s anchor_a1' command accepts 
0 or 1 argument\n", command);
-       return GED_ERROR;
-    }
-
-    if (BU_STR_EQUAL(parameter, "anchorpoint_a1")) {
-       if (argc == 0) {
-           VSCALE(scaled_pos, gedp->ged_gvp->gv_adc.anchor_pt_a1, 
gedp->ged_wdbp->dbip->dbi_base2local);
-           bu_vls_printf(gedp->ged_result_str, "%g %g %g", V3ARGS(scaled_pos));
-
-           return GED_OK;
-       } else if (argc == 3) {
-           VSCALE(user_pt, user_pt, gedp->ged_wdbp->dbip->dbi_local2base);
-
-           if (incr_flag) {
-               VADD2(gedp->ged_gvp->gv_adc.anchor_pt_a1, 
gedp->ged_gvp->gv_adc.anchor_pt_a1, user_pt);
-           } else {
-               VMOVE(gedp->ged_gvp->gv_adc.anchor_pt_a1, user_pt);
-           }
-
-           ged_calc_adc_a1(gedp->ged_gvp);
-
-           return GED_OK;
-       }
-
-       bu_vls_printf(gedp->ged_result_str, "The '%s anchorpoint_a1' command 
accepts 0 or 3 arguments\n", command);
-       return GED_ERROR;
-    }
-
-    if (BU_STR_EQUAL(parameter, "anchor_a2")) {
-       if (argc == 0) {
-           bu_vls_printf(gedp->ged_result_str, "%d", 
gedp->ged_gvp->gv_adc.anchor_a2);
-
-           return GED_OK;
-       } else if (argc == 1) {
-           i = (int)user_pt[X];
-
-           if (i)
-               gedp->ged_gvp->gv_adc.anchor_a2 = 1;
-           else
-               gedp->ged_gvp->gv_adc.anchor_a2 = 0;
-
-           ged_calc_adc_a2(gedp->ged_gvp);
-
-           return GED_OK;
-       }
-
-       bu_vls_printf(gedp->ged_result_str, "The '%s anchor_a2' command accepts 
0 or 1 argument\n", command);
-       return GED_ERROR;
-    }
-
-    if (BU_STR_EQUAL(parameter, "anchorpoint_a2")) {
-       if (argc == 0) {
-           VSCALE(scaled_pos, gedp->ged_gvp->gv_adc.anchor_pt_a2, 
gedp->ged_wdbp->dbip->dbi_base2local);
-
-           bu_vls_printf(gedp->ged_result_str, "%g %g %g", V3ARGS(scaled_pos));
-
-           return GED_OK;
-       } else if (argc == 3) {
-           VSCALE(user_pt, user_pt, gedp->ged_wdbp->dbip->dbi_local2base);
-
-           if (incr_flag) {
-               VADD2(gedp->ged_gvp->gv_adc.anchor_pt_a2, 
gedp->ged_gvp->gv_adc.anchor_pt_a2, user_pt);
-           } else {
-               VMOVE(gedp->ged_gvp->gv_adc.anchor_pt_a2, user_pt);
-           }
-
-           ged_calc_adc_a2(gedp->ged_gvp);
-
-           return GED_OK;
-       }
-
-       bu_vls_printf(gedp->ged_result_str, "The '%s anchorpoint_a2' command 
accepts 0 or 3 arguments\n", command);
-       return GED_ERROR;
-    }
-
-    if (BU_STR_EQUAL(parameter, "anchor_dst")) {
-       if (argc == 0) {
-           bu_vls_printf(gedp->ged_result_str, "%d", 
gedp->ged_gvp->gv_adc.anchor_dst);
-
-           return GED_OK;
-       } else if (argc == 1) {
-           i = (int)user_pt[X];
-
-           if (i) {
-               gedp->ged_gvp->gv_adc.anchor_dst = 1;
-           } else
-               gedp->ged_gvp->gv_adc.anchor_dst = 0;
-
-           ged_calc_adc_dst(gedp->ged_gvp);
-
-           return GED_OK;
-       }
-
-       bu_vls_printf(gedp->ged_result_str, "The '%s anchor_dst' command 
accepts 0 or 1 argument\n", command);
-       return GED_ERROR;
-    }
-
-    if (BU_STR_EQUAL(parameter, "anchorpoint_dst")) {
-       if (argc == 0) {
-           VSCALE(scaled_pos, gedp->ged_gvp->gv_adc.anchor_pt_dst, 
gedp->ged_wdbp->dbip->dbi_base2local);
-           bu_vls_printf(gedp->ged_result_str, "%g %g %g", V3ARGS(scaled_pos));
-
-           return GED_OK;
-       } else if (argc == 3) {
-           VSCALE(user_pt, user_pt, gedp->ged_wdbp->dbip->dbi_local2base);
-
-           if (incr_flag) {
-               VADD2(gedp->ged_gvp->gv_adc.anchor_pt_dst, 
gedp->ged_gvp->gv_adc.anchor_pt_dst, user_pt);
-           } else {
-               VMOVE(gedp->ged_gvp->gv_adc.anchor_pt_dst, user_pt);
-           }
-
-           ged_calc_adc_dst(gedp->ged_gvp);
-
-           return GED_OK;
-       }
-
-       bu_vls_printf(gedp->ged_result_str, "The '%s anchorpoint_dst' command 
accepts 0 or 3 arguments\n", command);
-       return GED_ERROR;
-    }
-
-    if (BU_STR_EQUAL(parameter, "reset")) {
-       if (argc == 0) {
-           adc_reset(&(gedp->ged_gvp->gv_adc), gedp->ged_gvp->gv_view2model, 
gedp->ged_gvp->gv_model2view);
-
-           return GED_OK;
-       }
-
-       bu_vls_printf(gedp->ged_result_str, "The '%s reset' command accepts no 
arguments\n", command);
-       return GED_ERROR;
-    }
-
-    if (BU_STR_EQUAL(parameter, "vars")) {
-       adc_vls_print(gedp->ged_gvp, gedp->ged_wdbp->dbip->dbi_base2local, 
gedp->ged_result_str);
-       return GED_OK;
-    }
-
-    if (BU_STR_EQUAL(parameter, "help")) {
-       adc_usage(gedp->ged_result_str, command);
-       return GED_HELP;
-    }
-
-    bu_vls_printf(gedp->ged_result_str, "%s: unrecognized command '%s'\n", 
command, parameter);
-    adc_usage(gedp->ged_result_str, command);
-
-    return GED_ERROR;
-}
-
-
-void
-ged_calc_adc_pos(struct bview *gvp)
-{
-    if (gvp->gv_adc.anchor_pos == 1) {
-       adc_model_to_adc_view(&(gvp->gv_adc), gvp->gv_model2view, GED_MAX);
-       adc_view_to_adc_grid(&(gvp->gv_adc), gvp->gv_model2view);
-    } else if (gvp->gv_adc.anchor_pos == 2) {
-       adc_grid_to_adc_view(&(gvp->gv_adc), gvp->gv_view2model, GED_MAX);
-       MAT4X3PNT(gvp->gv_adc.pos_model, gvp->gv_view2model, 
gvp->gv_adc.pos_view);
-    } else {
-       adc_view_to_adc_grid(&(gvp->gv_adc), gvp->gv_model2view);
-       MAT4X3PNT(gvp->gv_adc.pos_model, gvp->gv_view2model, 
gvp->gv_adc.pos_view);
-    }
-}
-
-
-void
-ged_calc_adc_a1(struct bview *gvp)
-{
-    if (gvp->gv_adc.anchor_a1) {
-       fastf_t dx, dy;
-       point_t view_pt;
-
-       MAT4X3PNT(view_pt, gvp->gv_model2view, gvp->gv_adc.anchor_pt_a1);
-       dx = view_pt[X] * GED_MAX - gvp->gv_adc.dv_x;
-       dy = view_pt[Y] * GED_MAX - gvp->gv_adc.dv_y;
-
-       if (!ZERO(dx) || !ZERO(dy)) {
-           gvp->gv_adc.a1 = RAD2DEG*atan2(dy, dx);
-           gvp->gv_adc.dv_a1 = (1.0 - (gvp->gv_adc.a1 / 45.0)) * GED_MAX;
-       }
-    }
-}
-
-
-void
-ged_calc_adc_a2(struct bview *gvp)
-{
-    if (gvp->gv_adc.anchor_a2) {
-       fastf_t dx, dy;
-       point_t view_pt;
-
-       MAT4X3PNT(view_pt, gvp->gv_model2view, gvp->gv_adc.anchor_pt_a2);
-       dx = view_pt[X] * GED_MAX - gvp->gv_adc.dv_x;
-       dy = view_pt[Y] * GED_MAX - gvp->gv_adc.dv_y;
-
-       if (!ZERO(dx) || !ZERO(dy)) {
-           gvp->gv_adc.a2 = RAD2DEG*atan2(dy, dx);
-           gvp->gv_adc.dv_a2 = (1.0 - (gvp->gv_adc.a2 / 45.0)) * GED_MAX;
-       }
-    }
-}
-
-
-void
-ged_calc_adc_dst(struct bview *gvp)
-{
-    if (gvp->gv_adc.anchor_dst) {
-       fastf_t dist;
-       fastf_t dx, dy;
-       point_t view_pt;
-
-       MAT4X3PNT(view_pt, gvp->gv_model2view, gvp->gv_adc.anchor_pt_dst);
-
-       dx = view_pt[X] * GED_MAX - gvp->gv_adc.dv_x;
-       dy = view_pt[Y] * GED_MAX - gvp->gv_adc.dv_y;
-       dist = sqrt(dx * dx + dy * dy);
-       gvp->gv_adc.dst = dist * INV_GED;
-       gvp->gv_adc.dv_dist = (dist / M_SQRT1_2) - GED_MAX;
-    } else
-       gvp->gv_adc.dst = (gvp->gv_adc.dv_dist * INV_GED + 1.0) * M_SQRT1_2;
-}
-
-
-/*
- * Local Variables:
- * mode: C
- * tab-width: 8
- * indent-tabs-mode: t
- * c-file-style: "stroustrup"
- * End:
- * ex: shiftwidth=4 tabstop=8
- */

Copied: brlcad/branches/bioh/src/libged/adjust/adjust.c (from rev 76359, 
brlcad/branches/bioh/src/libged/adjust.c)
===================================================================
--- brlcad/branches/bioh/src/libged/adjust/adjust.c                             
(rev 0)
+++ brlcad/branches/bioh/src/libged/adjust/adjust.c     2020-07-17 16:44:16 UTC 
(rev 76360)
@@ -0,0 +1,96 @@
+/*                         A D J U S T . 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/adjust.c
+ *
+ * The adjust command.
+ *
+ */
+
+#include "common.h"
+
+#include <stdlib.h>
+#include <ctype.h>
+#include <string.h>
+
+#include "ged.h"
+
+
+int
+ged_adjust(struct ged *gedp, int argc, const char *argv[])
+{
+    int status;
+    struct directory *dp;
+    char *name;
+    struct rt_db_internal intern;
+    static const char *usage = "object attr value ?attr value?";
+
+    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 < 4) {
+       bu_vls_printf(gedp->ged_result_str, "Usage: %s %s", argv[0], usage);
+       return GED_ERROR;
+    }
+
+    name = (char *)argv[1];
+
+    GED_DB_LOOKUP(gedp, dp, name, LOOKUP_QUIET, GED_ERROR);
+
+    GED_DB_GET_INTERNAL(gedp, &intern, dp, (matp_t)NULL, &rt_uniresource, 
GED_ERROR);
+    RT_CK_DB_INTERNAL(&intern);
+
+    /* Find out what type of object we are dealing with and tweak it. */
+    RT_CK_FUNCTAB(intern.idb_meth);
+
+    if (!intern.idb_meth->ft_adjust) {
+       bu_vls_printf(gedp->ged_result_str, "wdb_export(%s) adjust failure", 
name);
+       return GED_ERROR;
+    }
+
+    status = intern.idb_meth->ft_adjust(gedp->ged_result_str, &intern, argc-2, 
argv+2);
+    if (status == GED_OK && wdb_put_internal(gedp->ged_wdbp, name, &intern, 
1.0) < 0) {
+       bu_vls_printf(gedp->ged_result_str, "wdb_export(%s) failure", name);
+       rt_db_free_internal(&intern);
+       return GED_ERROR;
+    }
+
+    return GED_OK;
+}
+
+
+/*
+ * Local Variables:
+ * tab-width: 8
+ * mode: C
+ * indent-tabs-mode: t
+ * c-file-style: "stroustrup"
+ * End:
+ * ex: shiftwidth=4 tabstop=8
+ */

Deleted: brlcad/branches/bioh/src/libged/adjust.c
===================================================================
--- brlcad/branches/bioh/src/libged/adjust.c    2020-07-17 13:38:57 UTC (rev 
76359)
+++ brlcad/branches/bioh/src/libged/adjust.c    2020-07-17 16:44:16 UTC (rev 
76360)
@@ -1,96 +0,0 @@
-/*                         A D J U S T . 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/adjust.c
- *
- * The adjust command.
- *
- */
-
-#include "common.h"
-
-#include <stdlib.h>
-#include <ctype.h>
-#include <string.h>
-
-#include "ged.h"
-
-
-int
-ged_adjust(struct ged *gedp, int argc, const char *argv[])
-{
-    int status;
-    struct directory *dp;
-    char *name;
-    struct rt_db_internal intern;
-    static const char *usage = "object attr value ?attr value?";
-
-    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 < 4) {
-       bu_vls_printf(gedp->ged_result_str, "Usage: %s %s", argv[0], usage);
-       return GED_ERROR;
-    }
-
-    name = (char *)argv[1];
-
-    GED_DB_LOOKUP(gedp, dp, name, LOOKUP_QUIET, GED_ERROR);
-
-    GED_DB_GET_INTERNAL(gedp, &intern, dp, (matp_t)NULL, &rt_uniresource, 
GED_ERROR);
-    RT_CK_DB_INTERNAL(&intern);
-
-    /* Find out what type of object we are dealing with and tweak it. */
-    RT_CK_FUNCTAB(intern.idb_meth);
-
-    if (!intern.idb_meth->ft_adjust) {
-       bu_vls_printf(gedp->ged_result_str, "wdb_export(%s) adjust failure", 
name);
-       return GED_ERROR;
-    }
-
-    status = intern.idb_meth->ft_adjust(gedp->ged_result_str, &intern, argc-2, 
argv+2);
-    if (status == GED_OK && wdb_put_internal(gedp->ged_wdbp, name, &intern, 
1.0) < 0) {
-       bu_vls_printf(gedp->ged_result_str, "wdb_export(%s) failure", name);
-       rt_db_free_internal(&intern);
-       return GED_ERROR;
-    }
-
-    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/branches/bioh/src/libged/ae2dir/ae2dir.c (from rev 76359, 
brlcad/branches/bioh/src/libged/ae2dir.c)
===================================================================
--- brlcad/branches/bioh/src/libged/ae2dir/ae2dir.c                             
(rev 0)
+++ brlcad/branches/bioh/src/libged/ae2dir/ae2dir.c     2020-07-17 16:44:16 UTC 
(rev 76360)
@@ -0,0 +1,94 @@
+/*                         A E 2 D I R . 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/ae2dir.c
+ *
+ * The ae2dir command.
+ *
+ */
+
+#include "common.h"
+
+#include <stdlib.h>
+#include <ctype.h>
+#include <string.h>
+
+#include "./ged_private.h"
+
+
+int
+ged_ae2dir(struct ged *gedp, int argc, const char *argv[])
+{
+    double az, el;
+    vect_t dir;
+    int iflag;
+    static const char *usage = "[-i] az el";
+
+    GED_CHECK_DATABASE_OPEN(gedp, GED_ERROR);
+    GED_CHECK_ARGC_GT_0(gedp, argc, GED_ERROR);
+
+    /* initialize result */
+    bu_vls_trunc(gedp->ged_result_str, 0);
+
+    /* must be wanting help */
+    if (argc == 1) {
+       bu_vls_printf(gedp->ged_result_str, "Usage: %s %s", argv[0], usage);
+       return GED_HELP;
+    }
+
+    if (argv[1][0] == '-' && argv[1][1] == 'i' && argv[1][2] == '\0') {
+       iflag = 1;
+       --argc;
+       ++argv;
+    } else
+       iflag = 0;
+
+    if (argc != 3) {
+       bu_vls_printf(gedp->ged_result_str, "Usage: %s %s", argv[0], usage);
+       return GED_ERROR;
+    }
+
+    if (sscanf(argv[1], "%lf", &az) != 1 ||
+       sscanf(argv[2], "%lf", &el) != 1) {
+       bu_vls_printf(gedp->ged_result_str, "Usage: %s %s", argv[0], usage);
+       return GED_ERROR;
+    }
+
+    az *= DEG2RAD;
+    el *= DEG2RAD;
+    V3DIR_FROM_AZEL(dir, az, el);
+
+    if (iflag)
+       VSCALE(dir, dir, -1);
+
+    bn_encode_vect(gedp->ged_result_str, dir, 1);
+
+    return GED_OK;
+}
+
+
+/*
+ * Local Variables:
+ * tab-width: 8
+ * mode: C
+ * indent-tabs-mode: t
+ * c-file-style: "stroustrup"
+ * End:
+ * ex: shiftwidth=4 tabstop=8
+ */

Deleted: brlcad/branches/bioh/src/libged/ae2dir.c
===================================================================
--- brlcad/branches/bioh/src/libged/ae2dir.c    2020-07-17 13:38:57 UTC (rev 
76359)
+++ brlcad/branches/bioh/src/libged/ae2dir.c    2020-07-17 16:44:16 UTC (rev 
76360)
@@ -1,94 +0,0 @@
-/*                         A E 2 D I R . 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/ae2dir.c
- *
- * The ae2dir command.
- *
- */
-
-#include "common.h"
-
-#include <stdlib.h>
-#include <ctype.h>
-#include <string.h>
-
-#include "./ged_private.h"
-
-
-int
-ged_ae2dir(struct ged *gedp, int argc, const char *argv[])
-{
-    double az, el;
-    vect_t dir;
-    int iflag;
-    static const char *usage = "[-i] az el";
-
-    GED_CHECK_DATABASE_OPEN(gedp, GED_ERROR);
-    GED_CHECK_ARGC_GT_0(gedp, argc, GED_ERROR);
-
-    /* initialize result */
-    bu_vls_trunc(gedp->ged_result_str, 0);
-
-    /* must be wanting help */
-    if (argc == 1) {
-       bu_vls_printf(gedp->ged_result_str, "Usage: %s %s", argv[0], usage);
-       return GED_HELP;
-    }
-
-    if (argv[1][0] == '-' && argv[1][1] == 'i' && argv[1][2] == '\0') {
-       iflag = 1;
-       --argc;
-       ++argv;
-    } else
-       iflag = 0;
-
-    if (argc != 3) {
-       bu_vls_printf(gedp->ged_result_str, "Usage: %s %s", argv[0], usage);
-       return GED_ERROR;
-    }
-
-    if (sscanf(argv[1], "%lf", &az) != 1 ||
-       sscanf(argv[2], "%lf", &el) != 1) {
-       bu_vls_printf(gedp->ged_result_str, "Usage: %s %s", argv[0], usage);
-       return GED_ERROR;
-    }
-
-    az *= DEG2RAD;
-    el *= DEG2RAD;
-    V3DIR_FROM_AZEL(dir, az, el);
-
-    if (iflag)
-       VSCALE(dir, dir, -1);
-
-    bn_encode_vect(gedp->ged_result_str, dir, 1);
-
-    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/branches/bioh/src/libged/analyze/analyze.c (from rev 76359, 
brlcad/branches/bioh/src/libged/analyze.c)
===================================================================
--- brlcad/branches/bioh/src/libged/analyze/analyze.c                           
(rev 0)
+++ brlcad/branches/bioh/src/libged/analyze/analyze.c   2020-07-17 16:44:16 UTC 
(rev 76360)
@@ -0,0 +1,1324 @@
+/*                          A N A L Y Z E . C
+ * BRL-CAD
+ *
+ * Copyright (c) 1985-2020 United States Government as represented by
+ * the U.S. Army Research Laboratory.
+ *
+ * This program 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 program 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/analyze.c
+ *
+ * The analyze command.
+ *
+ */
+
+#include "common.h"
+
+#include <math.h>
+#include <string.h>
+#include <assert.h>
+
+
+
+#include "vmath.h"
+#include "bn.h"
+#include "bg/polygon.h"
+#include "rt/arb_edit.h"
+#include "raytrace.h"
+#include "rt/geom.h"
+
+#include "./ged_private.h"
+
+/**
+ * TODO: primitives that still need implementing
+ * ehy
+ * metaball
+ * nmg
+ */
+
+/* Conversion factor for Gallons to cubic millimeters */
+#define GALLONS_TO_MM3 3785411.784
+
+
+/* ARB face printout array */
+static const int prface[5][6] = {
+    {123, 124, 234, 134, -111, -111},          /* ARB4 */
+    {1234, 125, 235, 345, 145, -111},          /* ARB5 */
+    {1234, 2365, 1564, 512, 634, -111},                /* ARB6 */
+    {1234, 567, 145, 2376, 1265, 4375},                /* ARB7 */
+    {1234, 5678, 1584, 2376, 1265, 4378},      /* ARB8 */
+};
+
+
+/* edge definition array */
+static const int nedge[5][24] = {
+    {0, 1, 1, 2, 2, 0, 0, 3, 3, 2, 1, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
-1, -1, -1},   /* ARB4 */
+    {0, 1, 1, 2, 2, 3, 0, 3, 0, 4, 1, 4, 2, 4, 3, 4, -1, -1, -1, -1, -1, -1, 
-1, -1},       /* ARB5 */
+    {0, 1, 1, 2, 2, 3, 0, 3, 0, 4, 1, 4, 2, 5, 3, 5, 4, 5, -1, -1, -1, -1, -1, 
-1},         /* ARB6 */
+    {0, 1, 1, 2, 2, 3, 0, 3, 0, 4, 3, 4, 1, 5, 2, 6, 4, 5, 5, 6, 4, 6, -1, 
-1},             /* ARB7 */
+    {0, 1, 1, 2, 2, 3, 0, 3, 0, 4, 4, 5, 1, 5, 5, 6, 6, 7, 4, 7, 3, 7, 2, 6},  
             /* ARB8 */
+};
+
+
+/* contains information used to analyze a polygonal face */
+struct poly_face
+{
+    char label[5];
+    size_t npts;
+    point_t *pts;
+    plane_t plane_eqn;
+    fastf_t area;
+};
+
+
+#define POLY_FACE_INIT_ZERO { { 0, 0, 0, 0, 0 }, 0, NULL, HINIT_ZERO, 0.0 }
+
+#define ADD_PT(face, pt) do { VMOVE((face).pts[(face).npts], (pt)); 
(face).npts++; } while (0)
+
+/* structures and subroutines for analyze pretty printing */
+
+#define FBUFSIZ 100
+#define NFIELDS 9
+#define NOT_A_PLANE -1
+typedef struct row_field
+{
+    int nchars;
+    char buf[FBUFSIZ];
+} field_t;
+
+typedef struct table_row
+{
+    int nfields;
+    field_t fields[NFIELDS];
+} row_t;
+
+typedef struct table
+{
+    int nrows;
+    row_t *rows;
+} table_t;
+
+void get_dashes(field_t *f, const int ndashes)
+{
+    int i;
+    f->buf[0] = '\0';
+    for (i = 0; i < ndashes; ++i) {
+       bu_strlcat(f->buf, "-", FBUFSIZ);
+    }
+    f->nchars = ndashes;
+}
+
+
+void print_volume_table(struct ged *gedp
+                       , const fastf_t tot_vol
+                       , const fastf_t tot_area
+                       , const fastf_t tot_gallons
+    )
+{
+
+/* table format
+
+   +------------------------------------+
+   | Volume       = 7999999999.99999905 |
+   | Surface Area =   24000000.00000000 |
+   | Gallons      =       2113.37641887 |
+   +------------------------------------+
+
+*/
+    /* track actual table column widths */
+    /* this table has 1 column (plus a name column) */
+    int maxwidth[2] = {0, 0};
+    field_t dashes;
+    char* fnames[3] = {"Volume",
+                      "Surface Area",
+                      "Gallons"};
+    int indent = 4; /* number spaces to indent the table */
+    int table_width_chars;
+    table_t table;
+    int i, nd, field;
+
+    table.nrows = 3;
+    table.rows = (row_t *)bu_calloc(3, sizeof(row_t), "print_volume_table: 
rows");
+    for (i = 0; i < table.nrows; ++i) {
+       fastf_t val = 0.0;
+
+       /* field 0 */
+       field = 0;
+       table.rows[i].fields[0].nchars = 
snprintf(table.rows[i].fields[field].buf, FBUFSIZ, "%s",
+                                                 fnames[i]);
+       if (maxwidth[field] < table.rows[i].fields[field].nchars)
+           maxwidth[field] = table.rows[i].fields[field].nchars;
+
+       if (i == 0) {
+           val = tot_vol;
+       } else if (i == 1) {
+           val = tot_area;
+       } else if (i == 2) {
+           val = tot_gallons;
+       }
+
+       /* field 1 */
+       field = 1;
+       if (val < 0) {
+           table.rows[i].fields[1].nchars = 
snprintf(table.rows[i].fields[field].buf, FBUFSIZ, "COULD NOT DETERMINE");
+       } else {
+           table.rows[i].fields[1].nchars = 
snprintf(table.rows[i].fields[field].buf, FBUFSIZ, "%10.8f", val);
+       }
+       if (maxwidth[field] < table.rows[i].fields[field].nchars)
+           maxwidth[field] = table.rows[i].fields[field].nchars;
+    }
+
+    /* get total table width */
+    table_width_chars  = maxwidth[0] + maxwidth[1];
+    table_width_chars += 2 + 2; /* 2 chars at each end of a row */
+    table_width_chars += 3; /* ' = ' between the two fields of a row */
+
+    /* newline following previous table */
+    bu_vls_printf(gedp->ged_result_str, "\n");
+
+    /* header row 1 */
+    nd = table_width_chars - 4;
+    get_dashes(&dashes, nd);
+    bu_vls_printf(gedp->ged_result_str, "%-*.*s+-%-*.*s-+\n",
+                 indent, indent, " ",
+                 nd, nd, dashes.buf);
+
+    /* the three data rows */
+    for (i = 0; i < table.nrows; ++i) {
+       bu_vls_printf(gedp->ged_result_str, "%-*.*s| %-*.*s = %*.*s |\n",
+                     indent, indent, " ",
+                     maxwidth[0], maxwidth[0], table.rows[i].fields[0].buf,
+                     maxwidth[1], maxwidth[1], table.rows[i].fields[1].buf);
+    }
+
+    /* closing table row */
+    bu_vls_printf(gedp->ged_result_str, "%-*.*s+-%-*.*s-+\n",
+                 indent, indent, " ",
+                 nd, nd, dashes.buf);
+    bu_free((char *)table.rows, "print_volume_table: rows");
+}
+
+
+void print_edges_table(struct ged *gedp, table_t *table)
+{
+
+/* table header
+
+   
+--------------------+--------------------+--------------------+--------------------+
+   | EDGE          LEN  | EDGE          LEN  | EDGE          LEN  | EDGE       
   LEN  |
+   
+--------------------+--------------------+--------------------+--------------------+
+
+*/
+
+    int i;
+    int tcol, nd, nrow, nrows;
+    int maxwidth[] = {0, 0, 0,
+                     0, 0, 0,
+                     0, 0};
+    int indent = 2;
+    field_t dashes;
+    char EDGE[] = {"EDGE"};
+    int elen    = strlen(EDGE);
+    char LEN[]  = {"LENGTH"};
+    int llen    = strlen(LEN);
+    char buf[FBUFSIZ];
+
+    /* put four edges per row making 8 columns */
+    /* this table has 8 columns per row: 2 columns per edge; 4 edges per row */
+
+    /* collect max table column widths */
+    tcol = 0;
+    for (i = 0; i < table->nrows; ++i) {
+       /* field 0 */
+       int field = 0;
+       if (maxwidth[tcol] < table->rows[i].fields[field].nchars)
+           maxwidth[tcol] = table->rows[i].fields[field].nchars;
+       if (maxwidth[tcol] < elen)
+           maxwidth[tcol] = elen;
+
+       /* field 1 */
+       field = 1;
+       if (maxwidth[tcol+1] < table->rows[i].fields[field].nchars)
+           maxwidth[tcol+1] = table->rows[i].fields[field].nchars;
+       if (maxwidth[tcol] < llen)
+           maxwidth[tcol] = llen;
+
+       /* iterate on columns */
+       tcol += 2;
+       tcol = tcol > 6 ? 0 : tcol;
+    }
+
+    /* header row 1 */
+    /* print dashes in 4 sets */
+    nd = maxwidth[0] + maxwidth[1] + 3; /* 1 space between numbers and one at 
each end */
+    get_dashes(&dashes, nd);
+    bu_vls_printf(gedp->ged_result_str, "%-*.*s+%-*.*s",
+                 indent, indent, " ",
+                 nd, nd, dashes.buf);
+    nd = maxwidth[2] + maxwidth[3] + 3; /* 1 space between numbers and one at 
each end */
+    get_dashes(&dashes, nd);
+    bu_vls_printf(gedp->ged_result_str, "+%-*.*s",
+                 nd, nd, dashes.buf);
+    nd = maxwidth[4] + maxwidth[5] + 3; /* 1 space between numbers and one at 
each end */
+    get_dashes(&dashes, nd);
+    bu_vls_printf(gedp->ged_result_str, "+%-*.*s",
+                 nd, nd, dashes.buf);
+    nd = maxwidth[6] + maxwidth[7] + 3; /* 1 space between numbers and one at 
each end */
+    get_dashes(&dashes, nd);
+    bu_vls_printf(gedp->ged_result_str, "+%-*.*s+\n",
+                 nd, nd, dashes.buf);
+
+    /* header row 2 */
+    /* print titles in 4 sets */
+
+    /* bu_vls_printf can't handle this at the moment */
+    bu_vls_printf(gedp->ged_result_str, "%-*.*s| %-*.*s %*.*s ",
+                 indent, indent, " ",
+                 maxwidth[0], maxwidth[0], EDGE,
+                 maxwidth[1], maxwidth[1], LEN);
+    bu_vls_printf(gedp->ged_result_str, "| %-*.*s %*.*s ",
+                 maxwidth[2], maxwidth[2], EDGE,
+                 maxwidth[3], maxwidth[3], LEN);
+    bu_vls_printf(gedp->ged_result_str, "| %-*.*s %*.*s ",
+                 maxwidth[4], maxwidth[4], EDGE,
+                 maxwidth[5], maxwidth[5], LEN);
+    bu_vls_printf(gedp->ged_result_str, "| %-*.*s %*.*s |\n",
+                 maxwidth[6], maxwidth[6], EDGE,
+                 maxwidth[7], maxwidth[7], LEN);
+
+    /* header row 3 */
+    /* print dashes in 4 sets */
+    nd = maxwidth[0] + maxwidth[1] + 3; /* 1 space between numbers and one at 
each end */
+    get_dashes(&dashes, nd);
+    bu_vls_printf(gedp->ged_result_str, "%-*.*s+%-*.*s",
+                 indent, indent, " ",
+                 nd, nd, dashes.buf);
+    nd = maxwidth[2] + maxwidth[3] + 3; /* 1 space between numbers and one at 
each end */
+    get_dashes(&dashes, nd);
+    bu_vls_printf(gedp->ged_result_str, "+%-*.*s",
+                 nd, nd, dashes.buf);
+    nd = maxwidth[4] + maxwidth[5] + 3; /* 1 space between numbers and one at 
each end */
+    get_dashes(&dashes, nd);
+    bu_vls_printf(gedp->ged_result_str, "+%-*.*s",
+                 nd, nd, dashes.buf);
+    nd = maxwidth[6] + maxwidth[7] + 3; /* 1 space between numbers and one at 
each end */
+    get_dashes(&dashes, nd);
+    bu_vls_printf(gedp->ged_result_str, "+%-*.*s+\n",
+                 nd, nd, dashes.buf);
+
+    /* print the data lines */
+    /* collect max table column widths */
+    tcol = 0;
+    nrow = 0;
+    for (i = 0; i < table->nrows; ++i) {
+       int field;
+
+       if (tcol == 0) {
+           /* need to start a row */
+           snprintf(buf, FBUFSIZ, "%-*.*s|",
+                    indent, indent, " ");
+           bu_vls_printf(gedp->ged_result_str, "%s", buf);
+       }
+
+       /* data in sets of two */
+       /* field 0 */
+       field = 0;
+       /* FIXME: using snprintf because bu_vls_printf is broken for complex 
formats */
+       snprintf(buf, FBUFSIZ, " %-*.*s",
+                maxwidth[tcol], maxwidth[tcol], 
table->rows[i].fields[field].buf);
+       bu_vls_printf(gedp->ged_result_str, "%s", buf);
+
+       /* field 1 */
+       field = 1;
+       /* FIXME: using snprintf because bu_vls_printf is broken for complex 
formats */
+       snprintf(buf, FBUFSIZ, " %-*.*s |",
+                maxwidth[tcol+1], maxwidth[tcol+1], 
table->rows[i].fields[field].buf);
+       bu_vls_printf(gedp->ged_result_str, "%s", buf);
+
+       /* iterate on columns */
+       tcol += 2;
+
+       if (tcol > 6) {
+           /* time for a newline to end the row */
+           bu_vls_printf(gedp->ged_result_str, "\n");
+           tcol = 0;
+           ++nrow;
+       }
+    }
+
+    /* we may have a row to finish */
+    nrows = table->nrows % 4;
+    if (nrows) {
+       assert(tcol < 8);
+
+       /* write blanks */
+       while (tcol < 7) {
+
+           /* data in sets of two */
+           /* this is field 0 */
+           /* FIXME: using snprintf because bu_vls_printf is broken for 
complex formats */
+           snprintf(buf, FBUFSIZ, " %-*.*s",
+                    maxwidth[tcol], maxwidth[tcol], " ");
+           bu_vls_printf(gedp->ged_result_str, "%s", buf);
+
+           /* this is field 1 */
+           /* FIXME: using snprintf because bu_vls_printf is broken for 
complex formats */
+           snprintf(buf, FBUFSIZ, " %-*.*s |",
+                    maxwidth[tcol+1], maxwidth[tcol+1], " ");
+           bu_vls_printf(gedp->ged_result_str, "%s", buf);
+
+           /* iterate on columns */
+           tcol += 2;
+
+           if (tcol > 6) {
+               /* time for a newline to end the row */
+               bu_vls_printf(gedp->ged_result_str, "\n");
+           }
+       }
+    }
+
+    /* close the table */
+    /* print dashes in 4 sets */
+    nd = maxwidth[0] + maxwidth[1] + 3; /* 1 space between numbers and one at 
each end */
+    get_dashes(&dashes, nd);
+    bu_vls_printf(gedp->ged_result_str, "%-*.*s+%-*.*s",
+                 indent, indent, " ",
+                 nd, nd, dashes.buf);
+    nd = maxwidth[2] + maxwidth[3] + 3; /* 1 space between numbers and one at 
each end */
+    get_dashes(&dashes, nd);
+    bu_vls_printf(gedp->ged_result_str, "+%-*.*s",
+                 nd, nd, dashes.buf);
+    nd = maxwidth[4] + maxwidth[5] + 3; /* 1 space between numbers and one at 
each end */
+    get_dashes(&dashes, nd);
+    bu_vls_printf(gedp->ged_result_str, "+%-*.*s",
+                 nd, nd, dashes.buf);
+    nd = maxwidth[6] + maxwidth[7] + 3; /* 1 space between numbers and one at 
each end */
+    get_dashes(&dashes, nd);
+    bu_vls_printf(gedp->ged_result_str, "+%-*.*s+\n",
+                 nd, nd, dashes.buf);
+}
+
+
+void print_faces_table(struct ged *gedp, table_t *table)
+{
+
+/* table header
+
+   
+------+-----------------------------+--------------------------------------------------+-----------------+
+   | FACE |      ROT           FB       |                  PLANE EQUATION      
            |   SURFACE AREA  |
+   
+------+-----------------------------+--------------------------------------------------+-----------------+
+
+*/
+
+    /* track actual table column widths */
+    /* this table has 8 columns */
+    int maxwidth[8] = {0, 0, 0,
+                      0, 0, 0,
+                      0, 0};
+    int i, j;
+    int c0, h1a, h1b, h1c;
+    int h2a, h2b, h2c;
+    int c2, c2a, c2b, c2c;
+    int f7, f7a, f7b, f7c;
+    int nd, tnd;
+    field_t dashes;
+    char ROT[] = {"ROT"};
+    char FB[]  = {"FB"};
+    char PA[]  = {"PLANE EQUATION"};
+    char SA[]  = {"SURFACE AREA"};
+
+    /* get max fields widths */
+    for (i = 0; i < table->nrows; ++i) {
+       for (j = 0; j < table->rows[i].nfields; ++j) {
+           if (table->rows[i].fields[j].nchars > maxwidth[j])
+               maxwidth[j] = table->rows[i].fields[j].nchars;
+       }
+    }
+
+    /* blank line following previous table */
+    bu_vls_printf(gedp->ged_result_str, "\n");
+
+    /* get max width of header columns (not counting single space on either 
side) */
+    c0 = maxwidth[0] > 4 ? maxwidth[0] : 4;
+
+    /* print "ROT" in center of field 1 space */
+    h1b = strlen(ROT);
+    h1a = (maxwidth[1] - h1b)/2;
+    h1c = (maxwidth[1] - h1b - h1a);
+
+    /* print "FB" in center of field 2 space */
+    h2b = strlen(FB);
+    h2a = (maxwidth[2] - h2b)/2;
+    h2c = (maxwidth[2] - h2b - h2a);
+
+    /* get width of subcolumns of header column 2 */
+    /* print "PLANE EQUATION" in center of columns 2 space */
+    c2 = maxwidth[3] + maxwidth[4] + maxwidth[5] + maxwidth[6] + 3; /* 3 
spaces between fields */
+    c2b = strlen(PA);
+    c2a = (c2 - c2b)/2;
+    c2c = (c2 - c2b - c2a);
+
+    /* print "SURFACE AREA" in center of field 7 space */
+    f7b = strlen(SA);
+    f7  = maxwidth[7] > f7b ? maxwidth[7] : f7b;
+    f7a = (f7 - f7b)/2;
+    f7c = (f7 - f7b - f7a);
+
+    /* print the pieces */
+
+    /* header row 1 */
+    bu_vls_printf(gedp->ged_result_str, "+-");
+    nd = c0; tnd = nd;
+    get_dashes(&dashes, nd);
+    bu_vls_printf(gedp->ged_result_str, "%-*.*s",
+                 nd, nd, dashes.buf);
+    bu_vls_printf(gedp->ged_result_str, "-+-");
+    nd = h1a + h1b + h1c + 1 + h2a + h2b + h2c; tnd += nd + 3;
+    get_dashes(&dashes, nd);
+    bu_vls_printf(gedp->ged_result_str, "%*.*s",
+                 nd, nd, dashes.buf);
+    bu_vls_printf(gedp->ged_result_str, "-+-");
+    nd = c2a + c2b + c2c; tnd += nd + 3;
+    get_dashes(&dashes, nd);
+    bu_vls_printf(gedp->ged_result_str, "%*.*s",
+                 nd, nd, dashes.buf);
+    bu_vls_printf(gedp->ged_result_str, "-+-");
+    nd = f7a + f7b + f7c; tnd += nd + 3;
+    get_dashes(&dashes, nd);
+    bu_vls_printf(gedp->ged_result_str, "%*.*s",
+                 nd, nd, dashes.buf);
+    bu_vls_printf(gedp->ged_result_str, "-+\n");
+
+    /* header row 2 */
+    bu_vls_printf(gedp->ged_result_str, "| ");
+
+    bu_vls_printf(gedp->ged_result_str, "%-*.*s", c0, c0, "FACE");
+
+    bu_vls_printf(gedp->ged_result_str, " | ");
+
+

@@ 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

Reply via email to