Revision: 75706
          http://sourceforge.net/p/brlcad/code/75706
Author:   starseeker
Date:     2020-05-06 17:14:34 +0000 (Wed, 06 May 2020)
Log Message:
-----------
Shift openNURBS to building as a component of libbrep

Modified Paths:
--------------
    brlcad/trunk/INSTALL
    brlcad/trunk/configure
    brlcad/trunk/doc/legal/embedded/OpenNURBS.txt
    brlcad/trunk/include/brep/defines.h
    brlcad/trunk/misc/attributes/CMakeLists.txt
    brlcad/trunk/misc/external_build_testing/CMakeLists.txt
    brlcad/trunk/misc/win32-msvc/Dll/CMakeLists.txt
    brlcad/trunk/src/conv/iges/CMakeLists.txt
    brlcad/trunk/src/conv/step/ap203e2-g/CMakeLists.txt
    brlcad/trunk/src/conv/step/ap214-g/CMakeLists.txt
    brlcad/trunk/src/conv/step/ap242-g/CMakeLists.txt
    brlcad/trunk/src/conv/step/g-ap203e2/CMakeLists.txt
    brlcad/trunk/src/conv/step/g-ap214/CMakeLists.txt
    brlcad/trunk/src/conv/step/g-ap242/CMakeLists.txt
    brlcad/trunk/src/conv/step/g-step/CMakeLists.txt
    brlcad/trunk/src/conv/step/ifc-g/CMakeLists.txt
    brlcad/trunk/src/conv/step/step-g/CMakeLists.txt
    brlcad/trunk/src/conv/step/util/CMakeLists.txt
    brlcad/trunk/src/external/Creo/CMakeLists.txt
    brlcad/trunk/src/external/Cubit/CMakeLists.txt
    brlcad/trunk/src/external/Unigraphics/CMakeLists.txt
    brlcad/trunk/src/libbrep/CMakeLists.txt
    brlcad/trunk/src/libbrep/openNURBS/opennurbs_array_defs.h
    brlcad/trunk/src/libbrep/openNURBS/opennurbs_beam.cpp
    brlcad/trunk/src/libbrep/openNURBS/opennurbs_beam.h
    brlcad/trunk/src/libbrep/openNURBS/opennurbs_box.cpp
    brlcad/trunk/src/libbrep/openNURBS/opennurbs_dll_resource.h
    brlcad/trunk/src/libbrep/openNURBS/opennurbs_fsp.cpp
    brlcad/trunk/src/libbrep/openNURBS/opennurbs_hsort_template.h
    brlcad/trunk/src/libbrep/openNURBS/opennurbs_memory.c
    brlcad/trunk/src/libbrep/openNURBS/opennurbs_mesh_ngon.cpp
    brlcad/trunk/src/libbrep/openNURBS/opennurbs_polyedgecurve.cpp
    brlcad/trunk/src/libbrep/openNURBS/opennurbs_qsort_template.h
    brlcad/trunk/src/libbrep/openNURBS/opennurbs_sort.cpp
    brlcad/trunk/src/libbrep/openNURBS/opennurbs_string.cpp
    brlcad/trunk/src/libbrep/openNURBS/opennurbs_wstring.cpp
    brlcad/trunk/src/libfb/CMakeLists.txt
    brlcad/trunk/src/libgcv/plugins/rhino/CMakeLists.txt
    brlcad/trunk/src/librt/CMakeLists.txt
    brlcad/trunk/src/librt/primitives/dsp/dsp_brep.cpp
    brlcad/trunk/src/librt/primitives/revolve/revolve_brep.cpp
    brlcad/trunk/src/librt/primitives/sketch/sketch_brep.cpp
    brlcad/trunk/src/libwdb/CMakeLists.txt
    brlcad/trunk/src/other/CMakeLists.txt
    brlcad/trunk/src/proc-db/CMakeLists.txt
    brlcad/trunk/src/proc-db/naca/CMakeLists.txt

Added Paths:
-----------
    brlcad/trunk/src/libbrep/openNURBS/
    brlcad/trunk/src/libbrep/opennurbs_basic.cpp
    brlcad/trunk/src/libbrep/opennurbs_brep_changesrf.cpp
    brlcad/trunk/src/libbrep/opennurbs_brep_kinky.cpp
    brlcad/trunk/src/libbrep/opennurbs_x.cpp

Removed Paths:
-------------
    brlcad/trunk/src/libbrep/openNURBS/opennurbs_basic.cpp
    brlcad/trunk/src/libbrep/openNURBS/opennurbs_brep_changesrf.cpp
    brlcad/trunk/src/libbrep/openNURBS/opennurbs_brep_kinky.cpp
    brlcad/trunk/src/libbrep/openNURBS/opennurbs_x.cpp
    brlcad/trunk/src/other/openNURBS/

Modified: brlcad/trunk/INSTALL
===================================================================
--- brlcad/trunk/INSTALL        2020-05-06 13:00:38 UTC (rev 75705)
+++ brlcad/trunk/INSTALL        2020-05-06 17:14:34 UTC (rev 75706)
@@ -644,16 +644,6 @@
 Aliases:  ENABLE_TKTABLE
 
 
---- BRLCAD_OPENNURBS ---
-
-Option for enabling and disabling compilation of the openNURBS library
-provided with BRL-CAD's source code.  Default is AUTO, responsive to
-the toplevel BRLCAD_BUNDLED_LIBS option and testing first for a system
-version if BRLCAD_BUNDLED_LIBS is also AUTO.
-
-Aliases:  ENABLE_OPENNURBS
-
-
 --- BRLCAD_SPSR ---
 
 Option for enabling and disabling compilation of the Screened Poisson

Modified: brlcad/trunk/configure
===================================================================
--- brlcad/trunk/configure      2020-05-06 13:00:38 UTC (rev 75705)
+++ brlcad/trunk/configure      2020-05-06 17:14:34 UTC (rev 75706)
@@ -162,10 +162,6 @@
                                   shift;;
      --disable-tktable)                options="$options 
-DBRLCAD_TKTABLE=SYSTEM";
                                   shift;;
-     --enable-opennurbs)                options="$options 
-DBRLCAD_OPENNURBS=BUNDLED";
-                                  shift;;
-     --disable-opennurbs)                options="$options 
-DBRLCAD_OPENNURBS=SYSTEM";
-                                  shift;;
      --enable-spsr)                options="$options -DBRLCAD_SPSR=BUNDLED";
                                   shift;;
      --disable-spsr)                options="$options -DBRLCAD_SPSR=SYSTEM";

Modified: brlcad/trunk/doc/legal/embedded/OpenNURBS.txt
===================================================================
--- brlcad/trunk/doc/legal/embedded/OpenNURBS.txt       2020-05-06 13:00:38 UTC 
(rev 75705)
+++ brlcad/trunk/doc/legal/embedded/OpenNURBS.txt       2020-05-06 17:14:34 UTC 
(rev 75706)
@@ -12,236 +12,236 @@
 ALL IMPLIED WARRANTIES OF FITNESS FOR ANY PARTICULAR PURPOSE AND OF
 MERCHANTABILITY ARE HEREBY DISCLAIMED.
 
-file:src/other/openNURBS/example_brep/example_brep.cpp
-file:src/other/openNURBS/example_gl/example_gl.cpp
-file:src/other/openNURBS/example_read/example_read.cpp
-file:src/other/openNURBS/example_roundtrip/example_roundtrip.cpp
-file:src/other/openNURBS/example_userdata/example_ud.cpp
-file:src/other/openNURBS/example_userdata/example_ud.h
-file:src/other/openNURBS/example_userdata/example_userdata.cpp
-file:src/other/openNURBS/example_write/example_texture.bmp
-file:src/other/openNURBS/example_write/example_write.cpp
-file:src/other/openNURBS/examples_linking_pragmas.h
-file:src/other/openNURBS/faq.txt
-file:src/other/openNURBS/license.txt
-file:src/other/openNURBS/opennurbs.h
-file:src/other/openNURBS/opennurbs.rc
-file:src/other/openNURBS/opennurbs_3dm.h
-file:src/other/openNURBS/opennurbs_3dm_attributes.cpp
-file:src/other/openNURBS/opennurbs_3dm_attributes.h
-file:src/other/openNURBS/opennurbs_3dm_properties.cpp
-file:src/other/openNURBS/opennurbs_3dm_properties.h
-file:src/other/openNURBS/opennurbs_3dm_settings.cpp
-file:src/other/openNURBS/opennurbs_3dm_settings.h
-file:src/other/openNURBS/opennurbs_annotation.cpp
-file:src/other/openNURBS/opennurbs_annotation.h
-file:src/other/openNURBS/opennurbs_annotation2.cpp
-file:src/other/openNURBS/opennurbs_annotation2.h
-file:src/other/openNURBS/opennurbs_arc.cpp
-file:src/other/openNURBS/opennurbs_arc.h
-file:src/other/openNURBS/opennurbs_arccurve.cpp
-file:src/other/openNURBS/opennurbs_arccurve.h
-file:src/other/openNURBS/opennurbs_archive.cpp
-file:src/other/openNURBS/opennurbs_archive.h
-file:src/other/openNURBS/opennurbs_array.cpp
-file:src/other/openNURBS/opennurbs_array.h
-file:src/other/openNURBS/opennurbs_array_defs.h
-file:src/other/openNURBS/opennurbs_base32.cpp
-file:src/other/openNURBS/opennurbs_base32.h
-file:src/other/openNURBS/opennurbs_base64.cpp
-file:src/other/openNURBS/opennurbs_base64.h
-file:src/other/openNURBS/opennurbs_basic.cpp
-file:src/other/openNURBS/opennurbs_beam.cpp
-file:src/other/openNURBS/opennurbs_beam.h
-file:src/other/openNURBS/opennurbs_bezier.cpp
-file:src/other/openNURBS/opennurbs_bezier.h
-file:src/other/openNURBS/opennurbs_beziervolume.cpp
-file:src/other/openNURBS/opennurbs_bitmap.cpp
-file:src/other/openNURBS/opennurbs_bitmap.h
-file:src/other/openNURBS/opennurbs_bounding_box.cpp
-file:src/other/openNURBS/opennurbs_bounding_box.h
-file:src/other/openNURBS/opennurbs_box.cpp
-file:src/other/openNURBS/opennurbs_box.h
-file:src/other/openNURBS/opennurbs_brep.cpp
-file:src/other/openNURBS/opennurbs_brep.h
-file:src/other/openNURBS/opennurbs_brep_changesrf.cpp
-file:src/other/openNURBS/opennurbs_brep_extrude.cpp
-file:src/other/openNURBS/opennurbs_brep_io.cpp
-file:src/other/openNURBS/opennurbs_brep_isvalid.cpp
-file:src/other/openNURBS/opennurbs_brep_kinky.cpp
-file:src/other/openNURBS/opennurbs_brep_region.cpp
-file:src/other/openNURBS/opennurbs_brep_tools.cpp
-file:src/other/openNURBS/opennurbs_brep_v2valid.cpp
-file:src/other/openNURBS/opennurbs_circle.cpp
-file:src/other/openNURBS/opennurbs_circle.h
-file:src/other/openNURBS/opennurbs_color.cpp
-file:src/other/openNURBS/opennurbs_color.h
-file:src/other/openNURBS/opennurbs_compress.cpp
-file:src/other/openNURBS/opennurbs_compress.h
-file:src/other/openNURBS/opennurbs_cone.cpp
-file:src/other/openNURBS/opennurbs_cone.h
-file:src/other/openNURBS/opennurbs_crc.cpp
-file:src/other/openNURBS/opennurbs_crc.h
-file:src/other/openNURBS/opennurbs_curve.cpp
-file:src/other/openNURBS/opennurbs_curve.h
-file:src/other/openNURBS/opennurbs_curveonsurface.cpp
-file:src/other/openNURBS/opennurbs_curveonsurface.h
-file:src/other/openNURBS/opennurbs_curveproxy.cpp
-file:src/other/openNURBS/opennurbs_curveproxy.h
-file:src/other/openNURBS/opennurbs_cylinder.cpp
-file:src/other/openNURBS/opennurbs_cylinder.h
-file:src/other/openNURBS/opennurbs_defines.cpp
-file:src/other/openNURBS/opennurbs_defines.h
-file:src/other/openNURBS/opennurbs_detail.cpp
-file:src/other/openNURBS/opennurbs_detail.h
-file:src/other/openNURBS/opennurbs_dimstyle.cpp
-file:src/other/openNURBS/opennurbs_dimstyle.h
-file:src/other/openNURBS/opennurbs_dll.cpp
-file:src/other/openNURBS/opennurbs_dll_resource.h
-file:src/other/openNURBS/opennurbs_ellipse.cpp
-file:src/other/openNURBS/opennurbs_ellipse.h
-file:src/other/openNURBS/opennurbs_embedded_file.cpp
-file:src/other/openNURBS/opennurbs_error.cpp
-file:src/other/openNURBS/opennurbs_error.h
-file:src/other/openNURBS/opennurbs_error_message.cpp
-file:src/other/openNURBS/opennurbs_evaluate_nurbs.cpp
-file:src/other/openNURBS/opennurbs_evaluate_nurbs.h
-file:src/other/openNURBS/opennurbs_extensions.cpp
-file:src/other/openNURBS/opennurbs_extensions.h
-file:src/other/openNURBS/opennurbs_font.cpp
-file:src/other/openNURBS/opennurbs_font.h
-file:src/other/openNURBS/opennurbs_fpoint.h
-file:src/other/openNURBS/opennurbs_fsp.cpp
-file:src/other/openNURBS/opennurbs_fsp.h
-file:src/other/openNURBS/opennurbs_fsp_defs.h
-file:src/other/openNURBS/opennurbs_geometry.cpp
-file:src/other/openNURBS/opennurbs_geometry.h
-file:src/other/openNURBS/opennurbs_gl.cpp
-file:src/other/openNURBS/opennurbs_gl.h
-file:src/other/openNURBS/opennurbs_group.cpp
-file:src/other/openNURBS/opennurbs_group.h
-file:src/other/openNURBS/opennurbs_hatch.cpp
-file:src/other/openNURBS/opennurbs_hatch.h
-file:src/other/openNURBS/opennurbs_hsort_template.h
-file:src/other/openNURBS/opennurbs_instance.cpp
-file:src/other/openNURBS/opennurbs_instance.h
-file:src/other/openNURBS/opennurbs_intersect.cpp
-file:src/other/openNURBS/opennurbs_intersect.h
-file:src/other/openNURBS/opennurbs_knot.cpp
-file:src/other/openNURBS/opennurbs_knot.h
-file:src/other/openNURBS/opennurbs_layer.cpp
-file:src/other/openNURBS/opennurbs_layer.h
-file:src/other/openNURBS/opennurbs_light.cpp
-file:src/other/openNURBS/opennurbs_light.h
-file:src/other/openNURBS/opennurbs_line.cpp
-file:src/other/openNURBS/opennurbs_line.h
-file:src/other/openNURBS/opennurbs_linecurve.cpp
-file:src/other/openNURBS/opennurbs_linecurve.h
-file:src/other/openNURBS/opennurbs_linestyle.h
-file:src/other/openNURBS/opennurbs_linetype.cpp
-file:src/other/openNURBS/opennurbs_linetype.h
-file:src/other/openNURBS/opennurbs_lookup.cpp
-file:src/other/openNURBS/opennurbs_lookup.h
-file:src/other/openNURBS/opennurbs_mapchan.h
-file:src/other/openNURBS/opennurbs_massprop.cpp
-file:src/other/openNURBS/opennurbs_massprop.h
-file:src/other/openNURBS/opennurbs_material.cpp
-file:src/other/openNURBS/opennurbs_material.h
-file:src/other/openNURBS/opennurbs_math.cpp
-file:src/other/openNURBS/opennurbs_math.h
-file:src/other/openNURBS/opennurbs_matrix.cpp
-file:src/other/openNURBS/opennurbs_matrix.h
-file:src/other/openNURBS/opennurbs_memory.c
-file:src/other/openNURBS/opennurbs_memory.h
-file:src/other/openNURBS/opennurbs_memory_util.c
-file:src/other/openNURBS/opennurbs_mesh.cpp
-file:src/other/openNURBS/opennurbs_mesh.h
-file:src/other/openNURBS/opennurbs_mesh_ngon.cpp
-file:src/other/openNURBS/opennurbs_mesh_tools.cpp
-file:src/other/openNURBS/opennurbs_morph.cpp
-file:src/other/openNURBS/opennurbs_nurbscurve.cpp
-file:src/other/openNURBS/opennurbs_nurbscurve.h
-file:src/other/openNURBS/opennurbs_nurbssurface.cpp
-file:src/other/openNURBS/opennurbs_nurbssurface.h
-file:src/other/openNURBS/opennurbs_nurbsvolume.cpp
-file:src/other/openNURBS/opennurbs_object.cpp
-file:src/other/openNURBS/opennurbs_object.h
-file:src/other/openNURBS/opennurbs_object_history.cpp
-file:src/other/openNURBS/opennurbs_object_history.h
-file:src/other/openNURBS/opennurbs_objref.cpp
-file:src/other/openNURBS/opennurbs_objref.h
-file:src/other/openNURBS/opennurbs_offsetsurface.cpp
-file:src/other/openNURBS/opennurbs_offsetsurface.h
-file:src/other/openNURBS/opennurbs_optimize.cpp
-file:src/other/openNURBS/opennurbs_optimize.h
-file:src/other/openNURBS/opennurbs_plane.cpp
-file:src/other/openNURBS/opennurbs_plane.h
-file:src/other/openNURBS/opennurbs_planesurface.cpp
-file:src/other/openNURBS/opennurbs_planesurface.h
-file:src/other/openNURBS/opennurbs_pluginlist.cpp
-file:src/other/openNURBS/opennurbs_pluginlist.h
-file:src/other/openNURBS/opennurbs_point.cpp
-file:src/other/openNURBS/opennurbs_point.h
-file:src/other/openNURBS/opennurbs_pointcloud.cpp
-file:src/other/openNURBS/opennurbs_pointcloud.h
-file:src/other/openNURBS/opennurbs_pointgeometry.cpp
-file:src/other/openNURBS/opennurbs_pointgeometry.h
-file:src/other/openNURBS/opennurbs_pointgrid.cpp
-file:src/other/openNURBS/opennurbs_pointgrid.h
-file:src/other/openNURBS/opennurbs_polycurve.cpp
-file:src/other/openNURBS/opennurbs_polycurve.h
-file:src/other/openNURBS/opennurbs_polyedgecurve.cpp
-file:src/other/openNURBS/opennurbs_polyedgecurve.h
-file:src/other/openNURBS/opennurbs_polyline.cpp
-file:src/other/openNURBS/opennurbs_polyline.h
-file:src/other/openNURBS/opennurbs_polylinecurve.cpp
-file:src/other/openNURBS/opennurbs_polylinecurve.h
-file:src/other/openNURBS/opennurbs_precompiledheader.cpp
-file:src/other/openNURBS/opennurbs_qsort_template.h
-file:src/other/openNURBS/opennurbs_rand.cpp
-file:src/other/openNURBS/opennurbs_rand.h
-file:src/other/openNURBS/opennurbs_rendering.h
-file:src/other/openNURBS/opennurbs_revsurface.cpp
-file:src/other/openNURBS/opennurbs_revsurface.h
-file:src/other/openNURBS/opennurbs_rtree.cpp
-file:src/other/openNURBS/opennurbs_rtree.h
-file:src/other/openNURBS/opennurbs_sort.cpp
-file:src/other/openNURBS/opennurbs_sphere.cpp
-file:src/other/openNURBS/opennurbs_sphere.h
-file:src/other/openNURBS/opennurbs_string.cpp
-file:src/other/openNURBS/opennurbs_string.h
-file:src/other/openNURBS/opennurbs_sum.cpp
-file:src/other/openNURBS/opennurbs_sumsurface.cpp
-file:src/other/openNURBS/opennurbs_sumsurface.h
-file:src/other/openNURBS/opennurbs_surface.cpp
-file:src/other/openNURBS/opennurbs_surface.h
-file:src/other/openNURBS/opennurbs_surfaceproxy.cpp
-file:src/other/openNURBS/opennurbs_surfaceproxy.h
-file:src/other/openNURBS/opennurbs_system.h
-file:src/other/openNURBS/opennurbs_textlog.cpp
-file:src/other/openNURBS/opennurbs_textlog.h
-file:src/other/openNURBS/opennurbs_texture.h
-file:src/other/openNURBS/opennurbs_texture_mapping.h
-file:src/other/openNURBS/opennurbs_torus.cpp
-file:src/other/openNURBS/opennurbs_torus.h
-file:src/other/openNURBS/opennurbs_unicode.cpp
-file:src/other/openNURBS/opennurbs_unicode.h
-file:src/other/openNURBS/opennurbs_userdata.cpp
-file:src/other/openNURBS/opennurbs_userdata.h
-file:src/other/openNURBS/opennurbs_uuid.cpp
-file:src/other/openNURBS/opennurbs_uuid.h
-file:src/other/openNURBS/opennurbs_version.h
-file:src/other/openNURBS/opennurbs_viewport.cpp
-file:src/other/openNURBS/opennurbs_viewport.h
-file:src/other/openNURBS/opennurbs_workspace.cpp
-file:src/other/openNURBS/opennurbs_workspace.h
-file:src/other/openNURBS/opennurbs_wstring.cpp
-file:src/other/openNURBS/opennurbs_x.cpp
-file:src/other/openNURBS/opennurbs_x.h
-file:src/other/openNURBS/opennurbs_xform.cpp
-file:src/other/openNURBS/opennurbs_xform.h
-file:src/other/openNURBS/opennurbs_zlib.cpp
-file:src/other/openNURBS/opennurbs_zlib.h
-file:src/other/openNURBS/opennurbs_zlib_memory.cpp
-file:src/other/openNURBS/readme.txt
+file:src/libbrep/opennurbs_basic.cpp
+file:src/libbrep/opennurbs_brep_kinky.cpp
+file:src/libbrep/opennurbs_brep_changesrf.cpp
+file:src/libbrep/opennurbs_x.cpp
+file:src/libbrep/openNURBS/example_brep/example_brep.cpp
+file:src/libbrep/openNURBS/example_gl/example_gl.cpp
+file:src/libbrep/openNURBS/example_read/example_read.cpp
+file:src/libbrep/openNURBS/example_roundtrip/example_roundtrip.cpp
+file:src/libbrep/openNURBS/example_userdata/example_ud.cpp
+file:src/libbrep/openNURBS/example_userdata/example_ud.h
+file:src/libbrep/openNURBS/example_userdata/example_userdata.cpp
+file:src/libbrep/openNURBS/example_write/example_texture.bmp
+file:src/libbrep/openNURBS/example_write/example_write.cpp
+file:src/libbrep/openNURBS/examples_linking_pragmas.h
+file:src/libbrep/openNURBS/faq.txt
+file:src/libbrep/openNURBS/license.txt
+file:src/libbrep/openNURBS/opennurbs.h
+file:src/libbrep/openNURBS/opennurbs.rc
+file:src/libbrep/openNURBS/opennurbs_3dm.h
+file:src/libbrep/openNURBS/opennurbs_3dm_attributes.cpp
+file:src/libbrep/openNURBS/opennurbs_3dm_attributes.h
+file:src/libbrep/openNURBS/opennurbs_3dm_properties.cpp
+file:src/libbrep/openNURBS/opennurbs_3dm_properties.h
+file:src/libbrep/openNURBS/opennurbs_3dm_settings.cpp
+file:src/libbrep/openNURBS/opennurbs_3dm_settings.h
+file:src/libbrep/openNURBS/opennurbs_annotation.cpp
+file:src/libbrep/openNURBS/opennurbs_annotation.h
+file:src/libbrep/openNURBS/opennurbs_annotation2.cpp
+file:src/libbrep/openNURBS/opennurbs_annotation2.h
+file:src/libbrep/openNURBS/opennurbs_arc.cpp
+file:src/libbrep/openNURBS/opennurbs_arc.h
+file:src/libbrep/openNURBS/opennurbs_arccurve.cpp
+file:src/libbrep/openNURBS/opennurbs_arccurve.h
+file:src/libbrep/openNURBS/opennurbs_archive.cpp
+file:src/libbrep/openNURBS/opennurbs_archive.h
+file:src/libbrep/openNURBS/opennurbs_array.cpp
+file:src/libbrep/openNURBS/opennurbs_array.h
+file:src/libbrep/openNURBS/opennurbs_array_defs.h
+file:src/libbrep/openNURBS/opennurbs_base32.cpp
+file:src/libbrep/openNURBS/opennurbs_base32.h
+file:src/libbrep/openNURBS/opennurbs_base64.cpp
+file:src/libbrep/openNURBS/opennurbs_base64.h
+file:src/libbrep/openNURBS/opennurbs_beam.cpp
+file:src/libbrep/openNURBS/opennurbs_beam.h
+file:src/libbrep/openNURBS/opennurbs_bezier.cpp
+file:src/libbrep/openNURBS/opennurbs_bezier.h
+file:src/libbrep/openNURBS/opennurbs_beziervolume.cpp
+file:src/libbrep/openNURBS/opennurbs_bitmap.cpp
+file:src/libbrep/openNURBS/opennurbs_bitmap.h
+file:src/libbrep/openNURBS/opennurbs_bounding_box.cpp
+file:src/libbrep/openNURBS/opennurbs_bounding_box.h
+file:src/libbrep/openNURBS/opennurbs_box.cpp
+file:src/libbrep/openNURBS/opennurbs_box.h
+file:src/libbrep/openNURBS/opennurbs_brep.cpp
+file:src/libbrep/openNURBS/opennurbs_brep.h
+file:src/libbrep/openNURBS/opennurbs_brep_extrude.cpp
+file:src/libbrep/openNURBS/opennurbs_brep_io.cpp
+file:src/libbrep/openNURBS/opennurbs_brep_isvalid.cpp
+file:src/libbrep/openNURBS/opennurbs_brep_region.cpp
+file:src/libbrep/openNURBS/opennurbs_brep_tools.cpp
+file:src/libbrep/openNURBS/opennurbs_brep_v2valid.cpp
+file:src/libbrep/openNURBS/opennurbs_circle.cpp
+file:src/libbrep/openNURBS/opennurbs_circle.h
+file:src/libbrep/openNURBS/opennurbs_color.cpp
+file:src/libbrep/openNURBS/opennurbs_color.h
+file:src/libbrep/openNURBS/opennurbs_compress.cpp
+file:src/libbrep/openNURBS/opennurbs_compress.h
+file:src/libbrep/openNURBS/opennurbs_cone.cpp
+file:src/libbrep/openNURBS/opennurbs_cone.h
+file:src/libbrep/openNURBS/opennurbs_crc.cpp
+file:src/libbrep/openNURBS/opennurbs_crc.h
+file:src/libbrep/openNURBS/opennurbs_curve.cpp
+file:src/libbrep/openNURBS/opennurbs_curve.h
+file:src/libbrep/openNURBS/opennurbs_curveonsurface.cpp
+file:src/libbrep/openNURBS/opennurbs_curveonsurface.h
+file:src/libbrep/openNURBS/opennurbs_curveproxy.cpp
+file:src/libbrep/openNURBS/opennurbs_curveproxy.h
+file:src/libbrep/openNURBS/opennurbs_cylinder.cpp
+file:src/libbrep/openNURBS/opennurbs_cylinder.h
+file:src/libbrep/openNURBS/opennurbs_defines.cpp
+file:src/libbrep/openNURBS/opennurbs_defines.h
+file:src/libbrep/openNURBS/opennurbs_detail.cpp
+file:src/libbrep/openNURBS/opennurbs_detail.h
+file:src/libbrep/openNURBS/opennurbs_dimstyle.cpp
+file:src/libbrep/openNURBS/opennurbs_dimstyle.h
+file:src/libbrep/openNURBS/opennurbs_dll.cpp
+file:src/libbrep/openNURBS/opennurbs_dll_resource.h
+file:src/libbrep/openNURBS/opennurbs_ellipse.cpp
+file:src/libbrep/openNURBS/opennurbs_ellipse.h
+file:src/libbrep/openNURBS/opennurbs_embedded_file.cpp
+file:src/libbrep/openNURBS/opennurbs_error.cpp
+file:src/libbrep/openNURBS/opennurbs_error.h
+file:src/libbrep/openNURBS/opennurbs_error_message.cpp
+file:src/libbrep/openNURBS/opennurbs_evaluate_nurbs.cpp
+file:src/libbrep/openNURBS/opennurbs_evaluate_nurbs.h
+file:src/libbrep/openNURBS/opennurbs_extensions.cpp
+file:src/libbrep/openNURBS/opennurbs_extensions.h
+file:src/libbrep/openNURBS/opennurbs_font.cpp
+file:src/libbrep/openNURBS/opennurbs_font.h
+file:src/libbrep/openNURBS/opennurbs_fpoint.h
+file:src/libbrep/openNURBS/opennurbs_fsp.cpp
+file:src/libbrep/openNURBS/opennurbs_fsp.h
+file:src/libbrep/openNURBS/opennurbs_fsp_defs.h
+file:src/libbrep/openNURBS/opennurbs_geometry.cpp
+file:src/libbrep/openNURBS/opennurbs_geometry.h
+file:src/libbrep/openNURBS/opennurbs_gl.cpp
+file:src/libbrep/openNURBS/opennurbs_gl.h
+file:src/libbrep/openNURBS/opennurbs_group.cpp
+file:src/libbrep/openNURBS/opennurbs_group.h
+file:src/libbrep/openNURBS/opennurbs_hatch.cpp
+file:src/libbrep/openNURBS/opennurbs_hatch.h
+file:src/libbrep/openNURBS/opennurbs_hsort_template.h
+file:src/libbrep/openNURBS/opennurbs_instance.cpp
+file:src/libbrep/openNURBS/opennurbs_instance.h
+file:src/libbrep/openNURBS/opennurbs_intersect.cpp
+file:src/libbrep/openNURBS/opennurbs_intersect.h
+file:src/libbrep/openNURBS/opennurbs_knot.cpp
+file:src/libbrep/openNURBS/opennurbs_knot.h
+file:src/libbrep/openNURBS/opennurbs_layer.cpp
+file:src/libbrep/openNURBS/opennurbs_layer.h
+file:src/libbrep/openNURBS/opennurbs_light.cpp
+file:src/libbrep/openNURBS/opennurbs_light.h
+file:src/libbrep/openNURBS/opennurbs_line.cpp
+file:src/libbrep/openNURBS/opennurbs_line.h
+file:src/libbrep/openNURBS/opennurbs_linecurve.cpp
+file:src/libbrep/openNURBS/opennurbs_linecurve.h
+file:src/libbrep/openNURBS/opennurbs_linestyle.h
+file:src/libbrep/openNURBS/opennurbs_linetype.cpp
+file:src/libbrep/openNURBS/opennurbs_linetype.h
+file:src/libbrep/openNURBS/opennurbs_lookup.cpp
+file:src/libbrep/openNURBS/opennurbs_lookup.h
+file:src/libbrep/openNURBS/opennurbs_mapchan.h
+file:src/libbrep/openNURBS/opennurbs_massprop.cpp
+file:src/libbrep/openNURBS/opennurbs_massprop.h
+file:src/libbrep/openNURBS/opennurbs_material.cpp
+file:src/libbrep/openNURBS/opennurbs_material.h
+file:src/libbrep/openNURBS/opennurbs_math.cpp
+file:src/libbrep/openNURBS/opennurbs_math.h
+file:src/libbrep/openNURBS/opennurbs_matrix.cpp
+file:src/libbrep/openNURBS/opennurbs_matrix.h
+file:src/libbrep/openNURBS/opennurbs_memory.c
+file:src/libbrep/openNURBS/opennurbs_memory.h
+file:src/libbrep/openNURBS/opennurbs_memory_util.c
+file:src/libbrep/openNURBS/opennurbs_mesh.cpp
+file:src/libbrep/openNURBS/opennurbs_mesh.h
+file:src/libbrep/openNURBS/opennurbs_mesh_ngon.cpp
+file:src/libbrep/openNURBS/opennurbs_mesh_tools.cpp
+file:src/libbrep/openNURBS/opennurbs_morph.cpp
+file:src/libbrep/openNURBS/opennurbs_nurbscurve.cpp
+file:src/libbrep/openNURBS/opennurbs_nurbscurve.h
+file:src/libbrep/openNURBS/opennurbs_nurbssurface.cpp
+file:src/libbrep/openNURBS/opennurbs_nurbssurface.h
+file:src/libbrep/openNURBS/opennurbs_nurbsvolume.cpp
+file:src/libbrep/openNURBS/opennurbs_object.cpp
+file:src/libbrep/openNURBS/opennurbs_object.h
+file:src/libbrep/openNURBS/opennurbs_object_history.cpp
+file:src/libbrep/openNURBS/opennurbs_object_history.h
+file:src/libbrep/openNURBS/opennurbs_objref.cpp
+file:src/libbrep/openNURBS/opennurbs_objref.h
+file:src/libbrep/openNURBS/opennurbs_offsetsurface.cpp
+file:src/libbrep/openNURBS/opennurbs_offsetsurface.h
+file:src/libbrep/openNURBS/opennurbs_optimize.cpp
+file:src/libbrep/openNURBS/opennurbs_optimize.h
+file:src/libbrep/openNURBS/opennurbs_plane.cpp
+file:src/libbrep/openNURBS/opennurbs_plane.h
+file:src/libbrep/openNURBS/opennurbs_planesurface.cpp
+file:src/libbrep/openNURBS/opennurbs_planesurface.h
+file:src/libbrep/openNURBS/opennurbs_pluginlist.cpp
+file:src/libbrep/openNURBS/opennurbs_pluginlist.h
+file:src/libbrep/openNURBS/opennurbs_point.cpp
+file:src/libbrep/openNURBS/opennurbs_point.h
+file:src/libbrep/openNURBS/opennurbs_pointcloud.cpp
+file:src/libbrep/openNURBS/opennurbs_pointcloud.h
+file:src/libbrep/openNURBS/opennurbs_pointgeometry.cpp
+file:src/libbrep/openNURBS/opennurbs_pointgeometry.h
+file:src/libbrep/openNURBS/opennurbs_pointgrid.cpp
+file:src/libbrep/openNURBS/opennurbs_pointgrid.h
+file:src/libbrep/openNURBS/opennurbs_polycurve.cpp
+file:src/libbrep/openNURBS/opennurbs_polycurve.h
+file:src/libbrep/openNURBS/opennurbs_polyedgecurve.cpp
+file:src/libbrep/openNURBS/opennurbs_polyedgecurve.h
+file:src/libbrep/openNURBS/opennurbs_polyline.cpp
+file:src/libbrep/openNURBS/opennurbs_polyline.h
+file:src/libbrep/openNURBS/opennurbs_polylinecurve.cpp
+file:src/libbrep/openNURBS/opennurbs_polylinecurve.h
+file:src/libbrep/openNURBS/opennurbs_precompiledheader.cpp
+file:src/libbrep/openNURBS/opennurbs_qsort_template.h
+file:src/libbrep/openNURBS/opennurbs_rand.cpp
+file:src/libbrep/openNURBS/opennurbs_rand.h
+file:src/libbrep/openNURBS/opennurbs_rendering.h
+file:src/libbrep/openNURBS/opennurbs_revsurface.cpp
+file:src/libbrep/openNURBS/opennurbs_revsurface.h
+file:src/libbrep/openNURBS/opennurbs_rtree.cpp
+file:src/libbrep/openNURBS/opennurbs_rtree.h
+file:src/libbrep/openNURBS/opennurbs_sort.cpp
+file:src/libbrep/openNURBS/opennurbs_sphere.cpp
+file:src/libbrep/openNURBS/opennurbs_sphere.h
+file:src/libbrep/openNURBS/opennurbs_string.cpp
+file:src/libbrep/openNURBS/opennurbs_string.h
+file:src/libbrep/openNURBS/opennurbs_sum.cpp
+file:src/libbrep/openNURBS/opennurbs_sumsurface.cpp
+file:src/libbrep/openNURBS/opennurbs_sumsurface.h
+file:src/libbrep/openNURBS/opennurbs_surface.cpp
+file:src/libbrep/openNURBS/opennurbs_surface.h
+file:src/libbrep/openNURBS/opennurbs_surfaceproxy.cpp
+file:src/libbrep/openNURBS/opennurbs_surfaceproxy.h
+file:src/libbrep/openNURBS/opennurbs_system.h
+file:src/libbrep/openNURBS/opennurbs_textlog.cpp
+file:src/libbrep/openNURBS/opennurbs_textlog.h
+file:src/libbrep/openNURBS/opennurbs_texture.h
+file:src/libbrep/openNURBS/opennurbs_texture_mapping.h
+file:src/libbrep/openNURBS/opennurbs_torus.cpp
+file:src/libbrep/openNURBS/opennurbs_torus.h
+file:src/libbrep/openNURBS/opennurbs_unicode.cpp
+file:src/libbrep/openNURBS/opennurbs_unicode.h
+file:src/libbrep/openNURBS/opennurbs_userdata.cpp
+file:src/libbrep/openNURBS/opennurbs_userdata.h
+file:src/libbrep/openNURBS/opennurbs_uuid.cpp
+file:src/libbrep/openNURBS/opennurbs_uuid.h
+file:src/libbrep/openNURBS/opennurbs_version.h
+file:src/libbrep/openNURBS/opennurbs_viewport.cpp
+file:src/libbrep/openNURBS/opennurbs_viewport.h
+file:src/libbrep/openNURBS/opennurbs_workspace.cpp
+file:src/libbrep/openNURBS/opennurbs_workspace.h
+file:src/libbrep/openNURBS/opennurbs_wstring.cpp
+file:src/libbrep/openNURBS/opennurbs_x.h
+file:src/libbrep/openNURBS/opennurbs_xform.cpp
+file:src/libbrep/openNURBS/opennurbs_xform.h
+file:src/libbrep/openNURBS/opennurbs_zlib.cpp
+file:src/libbrep/openNURBS/opennurbs_zlib.h
+file:src/libbrep/openNURBS/opennurbs_zlib_memory.cpp
+file:src/libbrep/openNURBS/readme.txt
 file:src/librt/primitives/tor/tor_brep.cpp

Modified: brlcad/trunk/include/brep/defines.h
===================================================================
--- brlcad/trunk/include/brep/defines.h 2020-05-06 13:00:38 UTC (rev 75705)
+++ brlcad/trunk/include/brep/defines.h 2020-05-06 17:14:34 UTC (rev 75706)
@@ -47,7 +47,29 @@
  */
 #define read on_read
 #define write on_write
+
+#if defined(__GNUC__) && !defined(__clang__)
+#  pragma GCC diagnostic push
+#endif
+#if defined(__clang__)
+#  pragma clang diagnostic push
+#endif
+#if defined(__GNUC__) && !defined(__clang__)
+#  pragma GCC diagnostic ignored "-Wclass-memaccess"
+#  pragma GCC diagnostic ignored "-Wdeprecated-copy"
+#endif
+#if defined(__clang__)
+#  pragma clang diagnostic ignored "-Wclass-memaccess"
+#  pragma clang diagnostic ignored "-Wdeprecated-copy"
+#endif
 #include "opennurbs.h"
+#if defined(__GNUC__) && !defined(__clang__)
+#  pragma GCC diagnostic pop
+#endif
+#if defined(__clang__)
+#  pragma clang diagnostic pop
+#endif
+
 #undef read
 #undef write
 

Modified: brlcad/trunk/misc/attributes/CMakeLists.txt
===================================================================
--- brlcad/trunk/misc/attributes/CMakeLists.txt 2020-05-06 13:00:38 UTC (rev 
75705)
+++ brlcad/trunk/misc/attributes/CMakeLists.txt 2020-05-06 17:14:34 UTC (rev 
75706)
@@ -7,7 +7,6 @@
 include_directories(
   ${BRLCAD_SOURCE_DIR}/include
   ${BRLCAD_SOURCE_DIR}/src/librt
-  ${OPENNURBS_INCLUDE_DIRS}
   ${BU_INCLUDE_DIRS}
   ${RT_INCLUDE_DIRS}
   )

Modified: brlcad/trunk/misc/external_build_testing/CMakeLists.txt
===================================================================
--- brlcad/trunk/misc/external_build_testing/CMakeLists.txt     2020-05-06 
13:00:38 UTC (rev 75705)
+++ brlcad/trunk/misc/external_build_testing/CMakeLists.txt     2020-05-06 
17:14:34 UTC (rev 75706)
@@ -670,128 +670,6 @@
   )
 
 ###############################################################################
-#                                 OpenNURBS
-###############################################################################
-ExternalProject_Add(OPENNURBS_BLD
-  URL ${CMAKE_SOURCE_DIR}/external/openNURBS.tar.gz
-  URL_HASH MD5=c55cae1c39e263dc990773434d8c978c
-  CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR} -DLIB_DIR=${LIB_DIR} 
-DBIN_DIR=${BIN_DIR} -DCMAKE_PREFIX_PATH=${CMAKE_BINARY_DIR}/${LIB_DIR} 
-DCMAKE_INSTALL_RPATH=${CMAKE_BUILD_RPATH}
-  DEPENDS ${ZLIB_LIBRARY}
-  )
-ExternalProject_Target(openNURBS OPENNURBS_BLD
-  OUTPUT_FILE libopenNURBS${CMAKE_SHARED_LIBRARY_SUFFIX}.2012.10.245
-  SYMLINKS "libopenNURBS${CMAKE_SHARED_LIBRARY_SUFFIX}"
-  LINK_TARGET "libopenNURBS${CMAKE_SHARED_LIBRARY_SUFFIX}"
-  RPATH
-  )
-ExternalProject_ByProducts(OPENNURBS_BLD ${INCLUDE_DIR}
-  openNURBS/opennurbs.h
-  openNURBS/opennurbs_3dm.h
-  openNURBS/opennurbs_3dm_attributes.h
-  openNURBS/opennurbs_3dm_properties.h
-  openNURBS/opennurbs_3dm_settings.h
-  openNURBS/opennurbs_annotation.h
-  openNURBS/opennurbs_annotation2.h
-  openNURBS/opennurbs_arc.h
-  openNURBS/opennurbs_arccurve.h
-  openNURBS/opennurbs_archive.h
-  openNURBS/opennurbs_array.h
-  openNURBS/opennurbs_array_defs.h
-  openNURBS/opennurbs_base32.h
-  openNURBS/opennurbs_base64.h
-  openNURBS/opennurbs_beam.h
-  openNURBS/opennurbs_bezier.h
-  openNURBS/opennurbs_bitmap.h
-  openNURBS/opennurbs_bounding_box.h
-  openNURBS/opennurbs_box.h
-  openNURBS/opennurbs_brep.h
-  openNURBS/opennurbs_circle.h
-  openNURBS/opennurbs_color.h
-  openNURBS/opennurbs_compress.h
-  openNURBS/opennurbs_cone.h
-  openNURBS/opennurbs_crc.h
-  openNURBS/opennurbs_curve.h
-  openNURBS/opennurbs_curveonsurface.h
-  openNURBS/opennurbs_curveproxy.h
-  openNURBS/opennurbs_cylinder.h
-  openNURBS/opennurbs_defines.h
-  openNURBS/opennurbs_detail.h
-  openNURBS/opennurbs_dimstyle.h
-  openNURBS/opennurbs_dll_resource.h
-  openNURBS/opennurbs_ellipse.h
-  openNURBS/opennurbs_error.h
-  openNURBS/opennurbs_evaluate_nurbs.h
-  openNURBS/opennurbs_extensions.h
-  openNURBS/opennurbs_font.h
-  openNURBS/opennurbs_fpoint.h
-  openNURBS/opennurbs_fsp.h
-  openNURBS/opennurbs_fsp_defs.h
-  openNURBS/opennurbs_geometry.h
-  openNURBS/opennurbs_group.h
-  openNURBS/opennurbs_hatch.h
-  openNURBS/opennurbs_hsort_template.h
-  openNURBS/opennurbs_instance.h
-  openNURBS/opennurbs_intersect.h
-  openNURBS/opennurbs_knot.h
-  openNURBS/opennurbs_layer.h
-  openNURBS/opennurbs_light.h
-  openNURBS/opennurbs_line.h
-  openNURBS/opennurbs_linecurve.h
-  openNURBS/opennurbs_linestyle.h
-  openNURBS/opennurbs_linetype.h
-  openNURBS/opennurbs_lookup.h
-  openNURBS/opennurbs_mapchan.h
-  openNURBS/opennurbs_massprop.h
-  openNURBS/opennurbs_material.h
-  openNURBS/opennurbs_math.h
-  openNURBS/opennurbs_matrix.h
-  openNURBS/opennurbs_memory.h
-  openNURBS/opennurbs_mesh.h
-  openNURBS/opennurbs_nurbscurve.h
-  openNURBS/opennurbs_nurbssurface.h
-  openNURBS/opennurbs_object.h
-  openNURBS/opennurbs_object_history.h
-  openNURBS/opennurbs_objref.h
-  openNURBS/opennurbs_offsetsurface.h
-  openNURBS/opennurbs_optimize.h
-  openNURBS/opennurbs_plane.h
-  openNURBS/opennurbs_planesurface.h
-  openNURBS/opennurbs_pluginlist.h
-  openNURBS/opennurbs_point.h
-  openNURBS/opennurbs_pointcloud.h
-  openNURBS/opennurbs_pointgeometry.h
-  openNURBS/opennurbs_pointgrid.h
-  openNURBS/opennurbs_polycurve.h
-  openNURBS/opennurbs_polyedgecurve.h
-  openNURBS/opennurbs_polyline.h
-  openNURBS/opennurbs_polylinecurve.h
-  openNURBS/opennurbs_qsort_template.h
-  openNURBS/opennurbs_rand.h
-  openNURBS/opennurbs_rendering.h
-  openNURBS/opennurbs_revsurface.h
-  openNURBS/opennurbs_rtree.h
-  openNURBS/opennurbs_sphere.h
-  openNURBS/opennurbs_string.h
-  openNURBS/opennurbs_sumsurface.h
-  openNURBS/opennurbs_surface.h
-  openNURBS/opennurbs_surfaceproxy.h
-  openNURBS/opennurbs_system.h
-  openNURBS/opennurbs_textlog.h
-  openNURBS/opennurbs_texture.h
-  openNURBS/opennurbs_texture_mapping.h
-  openNURBS/opennurbs_torus.h
-  openNURBS/opennurbs_unicode.h
-  openNURBS/opennurbs_userdata.h
-  openNURBS/opennurbs_uuid.h
-  openNURBS/opennurbs_version.h
-  openNURBS/opennurbs_viewport.h
-  openNURBS/opennurbs_workspace.h
-  openNURBS/opennurbs_x.h
-  openNURBS/opennurbs_xform.h
-  openNURBS/opennurbs_zlib.h
-  )
-
-###############################################################################
 #                                 Poly2Tri
 ###############################################################################
 ExternalProject_Add(POLY2TRI_BLD

Modified: brlcad/trunk/misc/win32-msvc/Dll/CMakeLists.txt
===================================================================
--- brlcad/trunk/misc/win32-msvc/Dll/CMakeLists.txt     2020-05-06 13:00:38 UTC 
(rev 75705)
+++ brlcad/trunk/misc/win32-msvc/Dll/CMakeLists.txt     2020-05-06 17:14:34 UTC 
(rev 75706)
@@ -96,7 +96,7 @@
 include_directories(
   ../../../../rt^3/include
   ${ZLIB_INCLUDE_DIRS}
-  ${OPENNURBS_INCLUDE_DIR}
+  ${BREP_INCLUDE_DIR}
   )
 
 if(MSVC)

Modified: brlcad/trunk/src/conv/iges/CMakeLists.txt
===================================================================
--- brlcad/trunk/src/conv/iges/CMakeLists.txt   2020-05-06 13:00:38 UTC (rev 
75705)
+++ brlcad/trunk/src/conv/iges/CMakeLists.txt   2020-05-06 17:14:34 UTC (rev 
75706)
@@ -1,6 +1,7 @@
 set(IGES_INCLUDE_DIRS
   ${BU_INCLUDE_DIRS}
   ${BN_INCLUDE_DIRS}
+  ${BREP_INCLUDE_DIRS}
   ${RT_INCLUDE_DIRS}
   ${WDB_INCLUDE_DIRS}
   )
@@ -17,7 +18,7 @@
 #    n_iges.cpp
 #    n_main.cpp
 #)
-#target_link_libraries(iges libwdb librt libbu ${OPENNURBS_LIBRARIES} 
${WIN32LIBS} ${M_LIBRARY})
+#target_link_libraries(iges libwdb librt libbrep libbu ${WIN32LIBS} 
${M_LIBRARY})
 #install(TARGETS iges RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)
 
 set(iges-g_SRCS

Modified: brlcad/trunk/src/conv/step/ap203e2-g/CMakeLists.txt
===================================================================
--- brlcad/trunk/src/conv/step/ap203e2-g/CMakeLists.txt 2020-05-06 13:00:38 UTC 
(rev 75705)
+++ brlcad/trunk/src/conv/step/ap203e2-g/CMakeLists.txt 2020-05-06 17:14:34 UTC 
(rev 75706)
@@ -2,7 +2,7 @@
   ${CMAKE_CURRENT_BINARY_DIR}
   ${CMAKE_CURRENT_SOURCE_DIR}
   ${CMAKE_CURRENT_SOURCE_DIR}/../step-g
-  ${OPENNURBS_INCLUDE_DIRS}
+  ${BREP_INCLUDE_DIRS}
   )
 BRLCAD_INCLUDE_DIRS(AP203_INCLUDE_DIRS)
 
@@ -231,7 +231,6 @@
   stepeditor
   stepdai
   stepcore
-  ${OPENNURBS_LIBRARIES}
   )
 list(APPEND ap203e2g_LIBS ${ap203e2g_LIBS})
 

Modified: brlcad/trunk/src/conv/step/ap214-g/CMakeLists.txt
===================================================================
--- brlcad/trunk/src/conv/step/ap214-g/CMakeLists.txt   2020-05-06 13:00:38 UTC 
(rev 75705)
+++ brlcad/trunk/src/conv/step/ap214-g/CMakeLists.txt   2020-05-06 17:14:34 UTC 
(rev 75706)
@@ -3,7 +3,7 @@
   ${CMAKE_CURRENT_BINARY_DIR}
   ${CMAKE_CURRENT_SOURCE_DIR}
   ${CMAKE_CURRENT_SOURCE_DIR}/../step-g
-  ${OPENNURBS_INCLUDE_DIRS}
+  ${BREP_INCLUDE_DIRS}
   )
 BRLCAD_INCLUDE_DIRS(AP214_INCLUDE_DIRS)
 
@@ -232,7 +232,6 @@
   stepeditor
   stepdai
   stepcore
-  ${OPENNURBS_LIBRARIES}
   )
 list(APPEND ap214g_LIBS ${ap214g_LIBS})
 

Modified: brlcad/trunk/src/conv/step/ap242-g/CMakeLists.txt
===================================================================
--- brlcad/trunk/src/conv/step/ap242-g/CMakeLists.txt   2020-05-06 13:00:38 UTC 
(rev 75705)
+++ brlcad/trunk/src/conv/step/ap242-g/CMakeLists.txt   2020-05-06 17:14:34 UTC 
(rev 75706)
@@ -2,7 +2,7 @@
   ${CMAKE_CURRENT_BINARY_DIR}
   ${CMAKE_CURRENT_SOURCE_DIR}
   ${CMAKE_CURRENT_SOURCE_DIR}/../step-g
-  ${OPENNURBS_INCLUDE_DIRS}
+  ${BREP_INCLUDE_DIRS}
   )
 BRLCAD_INCLUDE_DIRS(AP242_INCLUDE_DIRS)
 
@@ -231,7 +231,6 @@
   stepeditor
   stepdai
   stepcore
-  ${OPENNURBS_LIBRARIES}
   )
 list(APPEND ap242g_LIBS ${ap242g_LIBS})
 

Modified: brlcad/trunk/src/conv/step/g-ap203e2/CMakeLists.txt
===================================================================
--- brlcad/trunk/src/conv/step/g-ap203e2/CMakeLists.txt 2020-05-06 13:00:38 UTC 
(rev 75705)
+++ brlcad/trunk/src/conv/step/g-ap203e2/CMakeLists.txt 2020-05-06 17:14:34 UTC 
(rev 75706)
@@ -1,7 +1,7 @@
 set(AP203_INCLUDE_DIRS
   ${CMAKE_CURRENT_BINARY_DIR}
   ${CMAKE_CURRENT_SOURCE_DIR}
-  ${OPENNURBS_INCLUDE_DIRS}
+  ${BREP_INCLUDE_DIRS}
   )
 BRLCAD_INCLUDE_DIRS(AP203_INCLUDE_DIRS)
 
@@ -38,7 +38,6 @@
   stepeditor
   stepdai
   stepcore
-  ${OPENNURBS_LIBRARIES}
   )
 list(APPEND gap203e2_LIBS ${gap203e2_LIBS})
 

Modified: brlcad/trunk/src/conv/step/g-ap214/CMakeLists.txt
===================================================================
--- brlcad/trunk/src/conv/step/g-ap214/CMakeLists.txt   2020-05-06 13:00:38 UTC 
(rev 75705)
+++ brlcad/trunk/src/conv/step/g-ap214/CMakeLists.txt   2020-05-06 17:14:34 UTC 
(rev 75706)
@@ -2,7 +2,7 @@
   ${CMAKE_CURRENT_BINARY_DIR}
   ${CMAKE_CURRENT_SOURCE_DIR}
   ${CMAKE_CURRENT_SOURCE_DIR}/../g-step
-  ${OPENNURBS_INCLUDE_DIRS}
+  ${BREP_INCLUDE_DIRS}
   )
 BRLCAD_INCLUDE_DIRS(AP214_INCLUDE_DIRS)
 
@@ -39,7 +39,6 @@
   stepeditor
   stepdai
   stepcore
-  ${OPENNURBS_LIBRARIES}
   )
 list(APPEND gap214_LIBS ${gap214_LIBS})
 

Modified: brlcad/trunk/src/conv/step/g-ap242/CMakeLists.txt
===================================================================
--- brlcad/trunk/src/conv/step/g-ap242/CMakeLists.txt   2020-05-06 13:00:38 UTC 
(rev 75705)
+++ brlcad/trunk/src/conv/step/g-ap242/CMakeLists.txt   2020-05-06 17:14:34 UTC 
(rev 75706)
@@ -2,7 +2,7 @@
   ${CMAKE_CURRENT_BINARY_DIR}
   ${CMAKE_CURRENT_SOURCE_DIR}
   ${CMAKE_CURRENT_SOURCE_DIR}/../g-step
-  ${OPENNURBS_INCLUDE_DIRS}
+  ${BREP_INCLUDE_DIRS}
   )
 BRLCAD_INCLUDE_DIRS(AP242_INCLUDE_DIRS)
 
@@ -35,7 +35,6 @@
   stepeditor
   stepdai
   stepcore
-  ${OPENNURBS_LIBRARIES}
   )
 list(APPEND gap242_LIBS ${gap242_LIBS})
 

Modified: brlcad/trunk/src/conv/step/g-step/CMakeLists.txt
===================================================================
--- brlcad/trunk/src/conv/step/g-step/CMakeLists.txt    2020-05-06 13:00:38 UTC 
(rev 75705)
+++ brlcad/trunk/src/conv/step/g-step/CMakeLists.txt    2020-05-06 17:14:34 UTC 
(rev 75706)
@@ -37,7 +37,6 @@
   stepeditor
   stepdai
   stepcore
-  ${OPENNURBS_LIBRARIES}
   )
 list(APPEND gstep_LIBS ${gstep_LIBS})
 

Modified: brlcad/trunk/src/conv/step/ifc-g/CMakeLists.txt
===================================================================
--- brlcad/trunk/src/conv/step/ifc-g/CMakeLists.txt     2020-05-06 13:00:38 UTC 
(rev 75705)
+++ brlcad/trunk/src/conv/step/ifc-g/CMakeLists.txt     2020-05-06 17:14:34 UTC 
(rev 75706)
@@ -1,7 +1,7 @@
 set(IFC_INCLUDE_DIRS
   ${CMAKE_CURRENT_BINARY_DIR}
   ${CMAKE_CURRENT_SOURCE_DIR}
-  ${OPENNURBS_INCLUDE_DIRS}
+  ${BREP_INCLUDE_DIRS}
   )
 BRLCAD_INCLUDE_DIRS(IFC_INCLUDE_DIRS)
 
@@ -24,7 +24,6 @@
   stepeditor
   stepdai
   stepcore
-  ${OPENNURBS_LIBRARIES}
   )
 list(APPEND ifcg_LIBS ${ifcg_LIBS})
 

Modified: brlcad/trunk/src/conv/step/step-g/CMakeLists.txt
===================================================================
--- brlcad/trunk/src/conv/step/step-g/CMakeLists.txt    2020-05-06 13:00:38 UTC 
(rev 75705)
+++ brlcad/trunk/src/conv/step/step-g/CMakeLists.txt    2020-05-06 17:14:34 UTC 
(rev 75706)
@@ -1,7 +1,7 @@
 set(AP203_INCLUDE_DIRS
   ${CMAKE_CURRENT_BINARY_DIR}
   ${CMAKE_CURRENT_SOURCE_DIR}
-  ${OPENNURBS_INCLUDE_DIRS}
+  ${BREP_INCLUDE_DIRS}
   )
 BRLCAD_INCLUDE_DIRS(AP203_INCLUDE_DIRS)
 
@@ -461,7 +461,6 @@
   stepeditor
   stepdai
   stepcore
-  ${OPENNURBS_LIBRARIES}
   )
 list(APPEND stepg_LIBS ${stepg_LIBS})
 

Modified: brlcad/trunk/src/conv/step/util/CMakeLists.txt
===================================================================
--- brlcad/trunk/src/conv/step/util/CMakeLists.txt      2020-05-06 13:00:38 UTC 
(rev 75705)
+++ brlcad/trunk/src/conv/step/util/CMakeLists.txt      2020-05-06 17:14:34 UTC 
(rev 75706)
@@ -1,6 +1,7 @@
 include_directories(
   ${CMAKE_CURRENT_BINARY_DIR}
   ${CMAKE_CURRENT_SOURCE_DIR}
+  ${BREP_INCLUDE_DIRS}
   )
 
 set(STEP_SCHEMA_FILE ${STEPCODE_DIR}/data/ap203/ap203.exp)
@@ -14,7 +15,6 @@
   stepeditor
   stepdai
   stepcore
-  ${OPENNURBS_LIBRARIES}
   )
 
 GENERATE_SCHEMA_INPUTS(${STEP_SCHEMA_FILE} list_elements)

Modified: brlcad/trunk/src/external/Creo/CMakeLists.txt
===================================================================
--- brlcad/trunk/src/external/Creo/CMakeLists.txt       2020-05-06 13:00:38 UTC 
(rev 75705)
+++ brlcad/trunk/src/external/Creo/CMakeLists.txt       2020-05-06 17:14:34 UTC 
(rev 75706)
@@ -214,10 +214,9 @@
     librt
     libvds
     libwdb
-    openNURBS
     regex
     zlib1
-       libSPSR
+    libSPSR
     )
   set(BRLCAD_STATIC_LIBS)
   set(brlcadlibs_notinstalled)
@@ -351,7 +350,7 @@
   include_directories(
     "${CMAKE_CURRENT_BINARY_DIR}/../../../include"
     "${CMAKE_CURRENT_SOURCE_DIR}/../../../include"
-    "${CMAKE_CURRENT_SOURCE_DIR}/../../../src/other/openNURBS"
+    "${CMAKE_CURRENT_SOURCE_DIR}/../../../src/libbrep/openNURBS"
     "${ZLIB_INCLUDE_DIRS}"
     "${REGEX_INCLUDE_DIRS}"
     )

Modified: brlcad/trunk/src/external/Cubit/CMakeLists.txt
===================================================================
--- brlcad/trunk/src/external/Cubit/CMakeLists.txt      2020-05-06 13:00:38 UTC 
(rev 75705)
+++ brlcad/trunk/src/external/Cubit/CMakeLists.txt      2020-05-06 17:14:34 UTC 
(rev 75706)
@@ -10,7 +10,7 @@
   include_directories(
     "${CMAKE_CURRENT_BINARY_DIR}/../../../include"
     "${CMAKE_CURRENT_SOURCE_DIR}/../../../include"
-    "${CMAKE_CURRENT_SOURCE_DIR}/../../../src/other/openNURBS"
+    "${CMAKE_CURRENT_SOURCE_DIR}/../../../src/libbrep/openNURBS"
     "${ZLIB_INCLUDE_DIRS}"
     "${REGEX_INCLUDE_DIRS}"
     )

Modified: brlcad/trunk/src/external/Unigraphics/CMakeLists.txt
===================================================================
--- brlcad/trunk/src/external/Unigraphics/CMakeLists.txt        2020-05-06 
13:00:38 UTC (rev 75705)
+++ brlcad/trunk/src/external/Unigraphics/CMakeLists.txt        2020-05-06 
17:14:34 UTC (rev 75706)
@@ -10,7 +10,7 @@
   include_directories(
     "${CMAKE_CURRENT_BINARY_DIR}/../../../include"
     "${CMAKE_CURRENT_SOURCE_DIR}/../../../include"
-    "${CMAKE_CURRENT_SOURCE_DIR}/../../../src/other/openNURBS"
+    "${CMAKE_CURRENT_SOURCE_DIR}/../../../src/libbrep/openNURBS"
     "${ZLIB_INCLUDE_DIRS}"
     "${REGEX_INCLUDE_DIRS}"
     "${TCL_INCLUDE_PATH}"

Modified: brlcad/trunk/src/libbrep/CMakeLists.txt
===================================================================
--- brlcad/trunk/src/libbrep/CMakeLists.txt     2020-05-06 13:00:38 UTC (rev 
75705)
+++ brlcad/trunk/src/libbrep/CMakeLists.txt     2020-05-06 17:14:34 UTC (rev 
75706)
@@ -2,10 +2,11 @@
 set(BREP_INCLUDE_DIRS
   ${BRLCAD_BINARY_DIR}/include
   ${BRLCAD_SOURCE_DIR}/include
+  ${CMAKE_CURRENT_SOURCE_DIR}/openNURBS
   ${BU_INCLUDE_DIRS}
   ${BN_INCLUDE_DIRS}
   ${P2T_INCLUDE_DIR}
-  ${OPENNURBS_INCLUDE_DIRS}
+  ${ZLIB_INCLUDE_DIRS}
   )
 
 # locally used but not needed by users of the library
@@ -17,7 +18,166 @@
 
 BRLCAD_LIB_INCLUDE_DIRS(brep BREP_INCLUDE_DIRS BREP_LOCAL_INCLUDE_DIRS)
 
+#############################################################################
+# BRL-CAD's copy of openNURBS diverges somewhat from upstream - we build our
+# version directly into libbrep to ensure BRL-CAD has the expected
+# functionality.
+#############################################################################
+
+# these are files no longer in upstream openNURBS but retained for reference
+set(OPENNURBS_REF
+  opennurbs_basic.cpp
+  opennurbs_brep_changesrf.cpp
+  opennurbs_brep_kinky.cpp
+  opennurbs_x.cpp
+  )
+
+set(OPENNURBS_C_SOURCES
+  openNURBS/opennurbs_memory.c
+  openNURBS/opennurbs_memory_util.c
+  )
+
+set(OPENNURBS_CXX_SOURCES
+  openNURBS/opennurbs_3dm_attributes.cpp
+  openNURBS/opennurbs_3dm_properties.cpp
+  openNURBS/opennurbs_3dm_settings.cpp
+  openNURBS/opennurbs_annotation.cpp
+  openNURBS/opennurbs_annotation2.cpp
+  openNURBS/opennurbs_arc.cpp
+  openNURBS/opennurbs_arccurve.cpp
+  openNURBS/opennurbs_archive.cpp
+  openNURBS/opennurbs_array.cpp
+  openNURBS/opennurbs_base32.cpp
+  openNURBS/opennurbs_base64.cpp
+  openNURBS/opennurbs_beam.cpp
+  openNURBS/opennurbs_bezier.cpp
+  openNURBS/opennurbs_beziervolume.cpp
+  openNURBS/opennurbs_bitmap.cpp
+  openNURBS/opennurbs_bounding_box.cpp
+  openNURBS/opennurbs_box.cpp
+  openNURBS/opennurbs_brep.cpp
+  openNURBS/opennurbs_brep_extrude.cpp
+  openNURBS/opennurbs_brep_io.cpp
+  openNURBS/opennurbs_brep_isvalid.cpp
+  openNURBS/opennurbs_brep_region.cpp
+  openNURBS/opennurbs_brep_tools.cpp
+  openNURBS/opennurbs_brep_v2valid.cpp
+  openNURBS/opennurbs_circle.cpp
+  openNURBS/opennurbs_color.cpp
+  openNURBS/opennurbs_compress.cpp
+  openNURBS/opennurbs_cone.cpp
+  openNURBS/opennurbs_crc.cpp
+  openNURBS/opennurbs_curve.cpp
+  openNURBS/opennurbs_curveonsurface.cpp
+  openNURBS/opennurbs_curveproxy.cpp
+  openNURBS/opennurbs_cylinder.cpp
+  openNURBS/opennurbs_defines.cpp
+  openNURBS/opennurbs_detail.cpp
+  openNURBS/opennurbs_dimstyle.cpp
+  openNURBS/opennurbs_dll.cpp
+  openNURBS/opennurbs_ellipse.cpp
+  openNURBS/opennurbs_embedded_file.cpp
+  openNURBS/opennurbs_error.cpp
+  openNURBS/opennurbs_error_message.cpp
+  openNURBS/opennurbs_evaluate_nurbs.cpp
+  openNURBS/opennurbs_extensions.cpp
+  openNURBS/opennurbs_font.cpp
+  openNURBS/opennurbs_fsp.cpp
+  openNURBS/opennurbs_geometry.cpp
+  openNURBS/opennurbs_group.cpp
+  openNURBS/opennurbs_hatch.cpp
+  openNURBS/opennurbs_instance.cpp
+  openNURBS/opennurbs_intersect.cpp
+  openNURBS/opennurbs_knot.cpp
+  openNURBS/opennurbs_layer.cpp
+  openNURBS/opennurbs_light.cpp
+  openNURBS/opennurbs_line.cpp
+  openNURBS/opennurbs_linecurve.cpp
+  openNURBS/opennurbs_linetype.cpp
+  openNURBS/opennurbs_lookup.cpp
+  openNURBS/opennurbs_material.cpp
+  openNURBS/opennurbs_math.cpp
+  openNURBS/opennurbs_massprop.cpp
+  openNURBS/opennurbs_matrix.cpp
+  openNURBS/opennurbs_mesh.cpp
+  openNURBS/opennurbs_mesh_ngon.cpp
+  openNURBS/opennurbs_mesh_tools.cpp
+  openNURBS/opennurbs_morph.cpp
+  openNURBS/opennurbs_nurbscurve.cpp
+  openNURBS/opennurbs_nurbssurface.cpp
+  openNURBS/opennurbs_nurbsvolume.cpp
+  openNURBS/opennurbs_object.cpp
+  openNURBS/opennurbs_object_history.cpp
+  openNURBS/opennurbs_objref.cpp
+  openNURBS/opennurbs_offsetsurface.cpp
+  openNURBS/opennurbs_optimize.cpp
+  openNURBS/opennurbs_plane.cpp
+  openNURBS/opennurbs_planesurface.cpp
+  openNURBS/opennurbs_pluginlist.cpp
+  openNURBS/opennurbs_point.cpp
+  openNURBS/opennurbs_pointcloud.cpp
+  openNURBS/opennurbs_pointgeometry.cpp
+  openNURBS/opennurbs_pointgrid.cpp
+  openNURBS/opennurbs_polycurve.cpp
+  openNURBS/opennurbs_polyedgecurve.cpp
+  openNURBS/opennurbs_polyline.cpp
+  openNURBS/opennurbs_polylinecurve.cpp
+  openNURBS/opennurbs_rand.cpp
+  openNURBS/opennurbs_revsurface.cpp
+  openNURBS/opennurbs_rtree.cpp
+  openNURBS/opennurbs_sort.cpp
+  openNURBS/opennurbs_sphere.cpp
+  openNURBS/opennurbs_string.cpp
+  openNURBS/opennurbs_sum.cpp
+  openNURBS/opennurbs_sumsurface.cpp
+  openNURBS/opennurbs_surface.cpp
+  openNURBS/opennurbs_surfaceproxy.cpp
+  openNURBS/opennurbs_textlog.cpp
+  openNURBS/opennurbs_torus.cpp
+  openNURBS/opennurbs_unicode.cpp
+  openNURBS/opennurbs_userdata.cpp
+  openNURBS/opennurbs_uuid.cpp
+  openNURBS/opennurbs_viewport.cpp
+  openNURBS/opennurbs_workspace.cpp
+  openNURBS/opennurbs_wstring.cpp
+  openNURBS/opennurbs_xform.cpp
+  openNURBS/opennurbs_zlib.cpp
+  )
+
+# The openNURBS sources don't tolerate a number of our warning flags
+set(ON_FLAGS
+  no-class-memaccess
+  no-deprecated-declarations
+  no-extra
+  no-float-equal
+  no-implicit-fallthrough
+  no-misleading-indentation
+  no-shadow
+  no-unused-but-set-parameter
+  no-unused-but-set-variable
+  no-unused-parameter
+  )
+set(A_ON_FLAGS)
+foreach(onflag ${ON_FLAGS})
+  string(TOUPPER "${onflag}" UONFLAG)
+  string(REPLACE "-" "_" HFLAG ${UONFLAG})
+  CHECK_CXX_COMPILER_FLAG("-W${onflag}" ${HFLAG})
+  if (${HFLAG})
+    set(A_ON_FLAGS ${A_ON_FLAGS} ${onflag})
+  endif (${HFLAG})
+endforeach(onflag ${ON_FLAGS})
+
+foreach(onfile ${OPENNURBS_CXX_SOURCES})
+  foreach(onflag ${A_ON_FLAGS})
+    set_property(SOURCE ${onfile} APPEND_STRING PROPERTY COMPILE_FLAGS " 
-W${onflag}")
+  endforeach(onflag ${A_ON_FLAGS})
+endforeach(onfile ${OPENNURBS_CXX_SOURCES})
+
+
 set(LIBBREP_SOURCES
+  ${OPENNURBS_REF}
+  ${OPENNURBS_C_SOURCES}
+  ${OPENNURBS_CXX_SOURCES}
   BBNode.cpp
   BRNode.cpp
   PullbackCurve.cpp
@@ -86,14 +246,135 @@
   set_property(GLOBAL APPEND PROPERTY libbrep_DLL_DEFINES "ON_DLL_IMPORTS")
 endif(CPP_DLL_DEFINES)
 
-BRLCAD_ADDLIB(libbrep "${LIBBREP_SOURCES}" 
"libbg;libbn;libbu;${OPENNURBS_LIBRARIES};${P2T_LIBRARY};${WINSOCK_LIB};${RPCRT_LIB};${STDCXX_LIBRARIES}")
+BRLCAD_ADDLIB(libbrep "${LIBBREP_SOURCES}" 
"libbg;libbn;libbu;${OPENNURBS_LIBRARIES};${P2T_LIBRARY};${ZLIB_LIBRARIES};${WINSOCK_LIB};${RPCRT_LIB};${STDCXX_LIBRARIES}")
 
 set_target_properties(libbrep PROPERTIES VERSION 20.0.1 SOVERSION 20)
 
 add_subdirectory(tests)
 
-CMAKEFILES(CMakeLists.txt)
+set(OPENNURBS_HEADERS
+  openNURBS/opennurbs.h
+  openNURBS/opennurbs_3dm.h
+  openNURBS/opennurbs_3dm_attributes.h
+  openNURBS/opennurbs_3dm_properties.h
+  openNURBS/opennurbs_3dm_settings.h
+  openNURBS/opennurbs_annotation.h
+  openNURBS/opennurbs_annotation2.h
+  openNURBS/opennurbs_arc.h
+  openNURBS/opennurbs_arccurve.h
+  openNURBS/opennurbs_archive.h
+  openNURBS/opennurbs_array.h
+  openNURBS/opennurbs_array_defs.h
+  openNURBS/opennurbs_base32.h
+  openNURBS/opennurbs_base64.h
+  openNURBS/opennurbs_beam.h
+  openNURBS/opennurbs_bezier.h
+  openNURBS/opennurbs_bitmap.h
+  openNURBS/opennurbs_bounding_box.h
+  openNURBS/opennurbs_box.h
+  openNURBS/opennurbs_brep.h
+  openNURBS/opennurbs_circle.h
+  openNURBS/opennurbs_color.h
+  openNURBS/opennurbs_compress.h
+  openNURBS/opennurbs_cone.h
+  openNURBS/opennurbs_crc.h
+  openNURBS/opennurbs_curve.h
+  openNURBS/opennurbs_curveonsurface.h
+  openNURBS/opennurbs_curveproxy.h
+  openNURBS/opennurbs_cylinder.h
+  openNURBS/opennurbs_defines.h
+  openNURBS/opennurbs_detail.h
+  openNURBS/opennurbs_dimstyle.h
+  openNURBS/opennurbs_dll_resource.h
+  openNURBS/opennurbs_ellipse.h
+  openNURBS/opennurbs_error.h
+  openNURBS/opennurbs_evaluate_nurbs.h
+  openNURBS/opennurbs_extensions.h
+  openNURBS/opennurbs_font.h
+  openNURBS/opennurbs_fpoint.h
+  openNURBS/opennurbs_fsp.h
+  openNURBS/opennurbs_fsp_defs.h
+  openNURBS/opennurbs_geometry.h
+  openNURBS/opennurbs_group.h
+  openNURBS/opennurbs_hatch.h
+  openNURBS/opennurbs_hsort_template.h
+  openNURBS/opennurbs_instance.h
+  openNURBS/opennurbs_intersect.h
+  openNURBS/opennurbs_knot.h
+  openNURBS/opennurbs_layer.h
+  openNURBS/opennurbs_light.h
+  openNURBS/opennurbs_line.h
+  openNURBS/opennurbs_linecurve.h
+  openNURBS/opennurbs_linestyle.h
+  openNURBS/opennurbs_linetype.h
+  openNURBS/opennurbs_lookup.h
+  openNURBS/opennurbs_mapchan.h
+  openNURBS/opennurbs_massprop.h
+  openNURBS/opennurbs_material.h
+  openNURBS/opennurbs_math.h
+  openNURBS/opennurbs_matrix.h
+  openNURBS/opennurbs_memory.h
+  openNURBS/opennurbs_mesh.h
+  openNURBS/opennurbs_nurbscurve.h
+  openNURBS/opennurbs_nurbssurface.h
+  openNURBS/opennurbs_object.h
+  openNURBS/opennurbs_object_history.h
+  openNURBS/opennurbs_objref.h
+  openNURBS/opennurbs_offsetsurface.h
+  openNURBS/opennurbs_optimize.h
+  openNURBS/opennurbs_plane.h
+  openNURBS/opennurbs_planesurface.h
+  openNURBS/opennurbs_pluginlist.h
+  openNURBS/opennurbs_point.h
+  openNURBS/opennurbs_pointcloud.h
+  openNURBS/opennurbs_pointgeometry.h
+  openNURBS/opennurbs_pointgrid.h
+  openNURBS/opennurbs_polycurve.h
+  openNURBS/opennurbs_polyedgecurve.h
+  openNURBS/opennurbs_polyline.h
+  openNURBS/opennurbs_polylinecurve.h
+  openNURBS/opennurbs_qsort_template.h
+  openNURBS/opennurbs_rand.h
+  openNURBS/opennurbs_rendering.h
+  openNURBS/opennurbs_revsurface.h
+  openNURBS/opennurbs_rtree.h
+  openNURBS/opennurbs_sphere.h
+  openNURBS/opennurbs_string.h
+  openNURBS/opennurbs_sumsurface.h
+  openNURBS/opennurbs_surface.h
+  openNURBS/opennurbs_surfaceproxy.h
+  openNURBS/opennurbs_system.h
+  openNURBS/opennurbs_textlog.h
+  openNURBS/opennurbs_texture.h
+  openNURBS/opennurbs_texture_mapping.h
+  openNURBS/opennurbs_torus.h
+  openNURBS/opennurbs_unicode.h
+  openNURBS/opennurbs_userdata.h
+  openNURBS/opennurbs_uuid.h
+  openNURBS/opennurbs_version.h
+  openNURBS/opennurbs_viewport.h
+  openNURBS/opennurbs_workspace.h
+  openNURBS/opennurbs_x.h
+  openNURBS/opennurbs_xform.h
+  openNURBS/opennurbs_zlib.h
+  )
 
+BRLCAD_MANAGE_FILES(OPENNURBS_HEADERS ${INCLUDE_DIR}/brlcad/openNURBS)
+
+# these are files we turn off because we don't use them and they incur some
+# cost to enable (e.g., they require OpenGL)
+set(OPENNURBS_OFF
+  openNURBS/opennurbs_gl.cpp
+  openNURBS/opennurbs_gl.h
+  openNURBS/opennurbs_precompiledheader.cpp
+  openNURBS/opennurbs_zlib_memory.cpp
+  )
+
+CMAKEFILES(
+  CMakeLists.txt
+  ${OPENNURBS_OFF}
+  )
+
 # Local Variables:
 # tab-width: 8
 # mode: cmake

Modified: brlcad/trunk/src/libbrep/openNURBS/opennurbs_array_defs.h
===================================================================
--- brlcad/trunk/src/other/openNURBS/opennurbs_array_defs.h     2020-05-06 
13:00:38 UTC (rev 75705)
+++ brlcad/trunk/src/libbrep/openNURBS/opennurbs_array_defs.h   2020-05-06 
17:14:34 UTC (rev 75706)
@@ -107,7 +107,25 @@
       }
       if ( m_a ) {
         m_count = src.m_count;
+#if defined(__GNUC__) && !defined(__clang__)
+#  pragma GCC diagnostic push
+#endif
+#if defined(__clang__)
+#  pragma clang diagnostic push
+#endif
+#if defined(__GNUC__) && !defined(__clang__)
+#  pragma GCC diagnostic ignored "-Wclass-memaccess"
+#endif
+#if defined(__clang__)
+#  pragma clang diagnostic ignored "-Wclass-memaccess"
+#endif
         memcpy( m_a, src.m_a, m_count*sizeof(T) );
+#if defined(__GNUC__) && !defined(__clang__)
+#  pragma GCC diagnostic pop
+#endif
+#if defined(__clang__)
+#  pragma clang diagnostic pop
+#endif
       }
     }
   }  
@@ -403,8 +421,25 @@
       capacity = 2*m_capacity;
     SetCapacity( capacity );
   }
-
+#if defined(__GNUC__) && !defined(__clang__)
+#  pragma GCC diagnostic push
+#endif
+#if defined(__clang__)
+#  pragma clang diagnostic push
+#endif
+#if defined(__GNUC__) && !defined(__clang__)
+#  pragma GCC diagnostic ignored "-Wclass-memaccess"
+#endif
+#if defined(__clang__)
+#  pragma clang diagnostic ignored "-Wclass-memaccess"
+#endif 
   memmove( &m_a[dest_i], &m_a[src_i], ele_cnt*sizeof(T) );
+#if defined(__GNUC__) && !defined(__clang__)
+#  pragma GCC diagnostic pop
+#endif
+#if defined(__clang__)
+#  pragma clang diagnostic pop
+#endif
 }
 
 template <class T>
@@ -415,7 +450,25 @@
     int new_capacity = NewCapacity();
     Reserve( new_capacity );
   }
+#if defined(__GNUC__) && !defined(__clang__)
+#  pragma GCC diagnostic push
+#endif
+#if defined(__clang__)
+#  pragma clang diagnostic push
+#endif
+#if defined(__GNUC__) && !defined(__clang__)
+#  pragma GCC diagnostic ignored "-Wclass-memaccess"
+#endif
+#if defined(__clang__)
+#  pragma clang diagnostic ignored "-Wclass-memaccess"
+#endif
   memset( &m_a[m_count], 0, sizeof(T) );
+#if defined(__GNUC__) && !defined(__clang__)
+#  pragma GCC diagnostic pop
+#endif
+#if defined(__clang__)
+#  pragma clang diagnostic pop
+#endif
   return m_a[m_count++];
 }
 
@@ -491,7 +544,25 @@
   if ( i >= 0 && i < m_count ) {
     Move( i, i+1, m_count-1-i );
     m_count--;
+#if defined(__GNUC__) && !defined(__clang__)
+#  pragma GCC diagnostic push
+#endif
+#if defined(__clang__)
+#  pragma clang diagnostic push
+#endif
+#if defined(__GNUC__) && !defined(__clang__)
+#  pragma GCC diagnostic ignored "-Wclass-memaccess"
+#endif
+#if defined(__clang__)
+#  pragma clang diagnostic ignored "-Wclass-memaccess"
+#endif 
     memset( &m_a[m_count], 0, sizeof(T) );
+#if defined(__GNUC__) && !defined(__clang__)
+#  pragma GCC diagnostic pop
+#endif
+#if defined(__clang__)
+#  pragma clang diagnostic pop
+#endif
   }
 } 
 
@@ -499,7 +570,25 @@
 void ON_SimpleArray<T>::Empty()
 {
   if ( m_a )
+#if defined(__GNUC__) && !defined(__clang__)
+#  pragma GCC diagnostic push
+#endif
+#if defined(__clang__)
+#  pragma clang diagnostic push
+#endif
+#if defined(__GNUC__) && !defined(__clang__)
+#  pragma GCC diagnostic ignored "-Wclass-memaccess"
+#endif
+#if defined(__clang__)
+#  pragma clang diagnostic ignored "-Wclass-memaccess"
+#endif
     memset( m_a, 0, m_capacity*sizeof(T) );
+#if defined(__GNUC__) && !defined(__clang__)
+#  pragma GCC diagnostic pop
+#endif
+#if defined(__clang__)
+#  pragma clang diagnostic pop
+#endif
   m_count = 0;
 }
 
@@ -773,8 +862,26 @@
 void ON_SimpleArray<T>::Zero()
 {
   if ( m_a && m_capacity > 0 ) {
+#if defined(__GNUC__) && !defined(__clang__)
+#  pragma GCC diagnostic push
+#endif
+#if defined(__clang__)
+#  pragma clang diagnostic push
+#endif
+#if defined(__GNUC__) && !defined(__clang__)
+#  pragma GCC diagnostic ignored "-Wclass-memaccess"
+#endif
+#if defined(__clang__)
+#  pragma clang diagnostic ignored "-Wclass-memaccess"
+#endif
     memset( m_a, 0, m_capacity*sizeof(T) );
-  }
+#if defined(__GNUC__) && !defined(__clang__)
+#  pragma GCC diagnostic pop
+#endif
+#if defined(__clang__)
+#  pragma clang diagnostic pop
+#endif
+   }
 }
 
 template <class T>
@@ -781,8 +888,26 @@
 void ON_SimpleArray<T>::MemSet( unsigned char value )
 {
   if ( m_a && m_capacity > 0 ) {
-    memset( m_a, value, m_capacity*sizeof(T) );
-  }
+#if defined(__GNUC__) && !defined(__clang__)
+#  pragma GCC diagnostic push
+#endif
+#if defined(__clang__)
+#  pragma clang diagnostic push
+#endif
+#if defined(__GNUC__) && !defined(__clang__)
+#  pragma GCC diagnostic ignored "-Wclass-memaccess"
+#endif
+#if defined(__clang__)
+#  pragma clang diagnostic ignored "-Wclass-memaccess"
+#endif
+     memset( m_a, value, m_capacity*sizeof(T) );
+#if defined(__GNUC__) && !defined(__clang__)
+#  pragma GCC diagnostic pop
+#endif
+#if defined(__clang__)
+#  pragma clang diagnostic pop
+#endif
+   }
 }
 
 // memory managment ////////////////////////////////////////////////////
@@ -828,7 +953,25 @@
       if ( m_a ) {
         if ( capacity > m_capacity ) {
           // zero new memory
+#if defined(__GNUC__) && !defined(__clang__)
+#  pragma GCC diagnostic push
+#endif
+#if defined(__clang__)
+#  pragma clang diagnostic push
+#endif
+#if defined(__GNUC__) && !defined(__clang__)
+#  pragma GCC diagnostic ignored "-Wclass-memaccess"
+#endif
+#if defined(__clang__)
+#  pragma clang diagnostic ignored "-Wclass-memaccess"
+#endif
           memset( m_a + m_capacity, 0, (capacity-m_capacity)*sizeof(T) );
+#if defined(__GNUC__) && !defined(__clang__)
+#  pragma GCC diagnostic pop
+#endif
+#if defined(__clang__)
+#  pragma clang diagnostic pop
+#endif
         }
         m_capacity = capacity;
       }
@@ -1429,7 +1572,25 @@
       Move( i+1, i, m_count-1-i );
       // This call to memset is ok even when T has a vtable
       // because in-place construction is used later.
-      memset( (void*)(&m_a[i]), 0, sizeof(T) );
+#if defined(__GNUC__) && !defined(__clang__)
+#  pragma GCC diagnostic push
+#endif
+#if defined(__clang__)
+#  pragma clang diagnostic push
+#endif
+#if defined(__GNUC__) && !defined(__clang__)
+#  pragma GCC diagnostic ignored "-Wclass-memaccess"
+#endif
+#if defined(__clang__)
+#  pragma clang diagnostic ignored "-Wclass-memaccess"
+#endif
+       memset( (void*)(&m_a[i]), 0, sizeof(T) );
+#if defined(__GNUC__) && !defined(__clang__)
+#  pragma GCC diagnostic pop
+#endif
+#if defined(__clang__)
+#  pragma clang diagnostic pop
+#endif
       ConstructDefaultElement( &m_a[i] );
     }
     else {
@@ -1453,7 +1614,25 @@
     DestroyElement( m_a[i] );
     // This call to memset is ok even when T has a vtable
     // because in-place construction is used later.
+#if defined(__GNUC__) && !defined(__clang__)
+#  pragma GCC diagnostic push
+#endif
+#if defined(__clang__)
+#  pragma clang diagnostic push
+#endif
+#if defined(__GNUC__) && !defined(__clang__)
+#  pragma GCC diagnostic ignored "-Wclass-memaccess"
+#endif
+#if defined(__clang__)
+#  pragma clang diagnostic ignored "-Wclass-memaccess"
+#endif
     memset( (void*)(&m_a[i]), 0, sizeof(T) );
+#if defined(__GNUC__) && !defined(__clang__)
+#  pragma GCC diagnostic pop
+#endif
+#if defined(__clang__)
+#  pragma clang diagnostic pop
+#endif
     Move( i, i+1, m_count-1-i );
     // This call to memset is ok even when T has a vtable
     // because in-place construction is used later.
@@ -1471,7 +1650,25 @@
     DestroyElement( m_a[i] );
     // This call to memset is ok even when T has a vtable
     // because in-place construction is used later.
+#if defined(__GNUC__) && !defined(__clang__)
+#  pragma GCC diagnostic push
+#endif
+#if defined(__clang__)
+#  pragma clang diagnostic push
+#endif
+#if defined(__GNUC__) && !defined(__clang__)
+#  pragma GCC diagnostic ignored "-Wclass-memaccess"
+#endif
+#if defined(__clang__)
+#  pragma clang diagnostic ignored "-Wclass-memaccess"
+#endif
     memset( (void*)(&m_a[i]), 0, sizeof(T) );
+#if defined(__GNUC__) && !defined(__clang__)
+#  pragma GCC diagnostic pop
+#endif
+#if defined(__clang__)
+#  pragma clang diagnostic pop
+#endif
     ConstructDefaultElement( &m_a[i] );
   }
   m_count = 0;
@@ -1680,7 +1877,25 @@
       DestroyElement(m_a[i]);
       // This call to memset is ok even when T has a vtable
       // because in-place construction is used later.
+ #if defined(__GNUC__) && !defined(__clang__)
+#  pragma GCC diagnostic push
+#endif
+#if defined(__clang__)
+#  pragma clang diagnostic push
+#endif
+#if defined(__GNUC__) && !defined(__clang__)
+#  pragma GCC diagnostic ignored "-Wclass-memaccess"
+#endif
+#if defined(__clang__)
+#  pragma clang diagnostic ignored "-Wclass-memaccess"
+#endif
       memset( (void*)(&m_a[i]), 0, sizeof(T) );
+#if defined(__GNUC__) && !defined(__clang__)
+#  pragma GCC diagnostic pop
+#endif
+#if defined(__clang__)
+#  pragma clang diagnostic pop
+#endif
       ConstructDefaultElement(&m_a[i]);
     }
   }
@@ -1742,7 +1957,25 @@
       // this call to memset(..., 0, ...) is what I want to do
       // because in-place construction will be used when needed
       // on this memory.
+#if defined(__GNUC__) && !defined(__clang__)
+#  pragma GCC diagnostic push
+#endif
+#if defined(__clang__)
+#  pragma clang diagnostic push
+#endif
+#if defined(__GNUC__) && !defined(__clang__)
+#  pragma GCC diagnostic ignored "-Wclass-memaccess"
+#endif
+#if defined(__clang__)
+#  pragma clang diagnostic ignored "-Wclass-memaccess"
+#endif
       memset( (void*)(m_a + m_capacity), 0, (capacity-m_capacity)*sizeof(T) );
+#if defined(__GNUC__) && !defined(__clang__)
+#  pragma GCC diagnostic pop
+#endif
+#if defined(__clang__)
+#  pragma clang diagnostic pop
+#endif
       for ( i = m_capacity; i < capacity; i++ ) {
         ConstructDefaultElement(&m_a[i]);
       }

Deleted: brlcad/trunk/src/libbrep/openNURBS/opennurbs_basic.cpp
===================================================================
--- brlcad/trunk/src/other/openNURBS/opennurbs_basic.cpp        2020-05-06 
13:00:38 UTC (rev 75705)
+++ brlcad/trunk/src/libbrep/openNURBS/opennurbs_basic.cpp      2020-05-06 
17:14:34 UTC (rev 75706)
@@ -1,477 +0,0 @@
-/* $NoKeywords: $ */
-/*
-//
-// Copyright (c) 1993-2007 Robert McNeel & Associates. All rights reserved.
-// Rhinoceros is a registered trademark of Robert McNeel & Assoicates.
-//
-// THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT EXPRESS OR IMPLIED WARRANTY.
-// ALL IMPLIED WARRANTIES OF FITNESS FOR ANY PARTICULAR PURPOSE AND OF
-// MERCHANTABILITY ARE HEREBY DISCLAIMED.
-//                             
-// For complete openNURBS copyright information see <http://www.opennurbs.org>.
-//
-////////////////////////////////////////////////////////////////
-*/
-
-#include "opennurbs.h"
-
-int ON_ArcCurve::IntersectSelf( 
-        ON_SimpleArray<ON_X_EVENT>& x,
-        double intersection_tolerance,
-        const ON_Interval* curve_domain
-        ) const
-{
-  return 0;
-}
-
-int ON_LineCurve::IntersectSelf( 
-        ON_SimpleArray<ON_X_EVENT>& x,
-        double intersection_tolerance,
-        const ON_Interval* curve_domain
-        ) const
-{
-  return 0;
-}
-
-#if !defined(OPENNURBS_PLUS_INC_)
-
-////////////////////////////////////////////////////////////////
-//
-// Basic ON_Line functions
-//
-
-int ON_Line::IntersectSurface( 
-          const ON_Surface* surfaceB,
-          ON_SimpleArray<ON_X_EVENT>& x,
-          double intersection_tolerance,
-          double overlap_tolerance,
-          const ON_Interval* line_domain,
-          const ON_Interval* surfaceB_udomain,
-          const ON_Interval* surfaceB_vdomain
-          ) const
-{
-  // The working function is part of the Rhino SDK.
-  return 0;
-}
-
-////////////////////////////////////////////////////////////////
-//
-// Basic ON_PlaneEquation functions
-//
-
-double ON_PlaneEquation::MinimumValueAt(const ON_SurfaceLeafBox& srfleafbox) 
const
-{
-  // The working function is part of the Rhino SDK.
-  return 0.0;
-}
-
-double ON_PlaneEquation::MaximumValueAt(const ON_SurfaceLeafBox& srfleafbox) 
const
-{
-  // The working function is part of the Rhino SDK.
-  return 0.0;
-}
-
-double ON_PlaneEquation::MinimumValueAt(const class ON_CurveLeafBox& 
crvleafbox) const
-{
-  // The working function is part of the Rhino SDK.
-  return 0.0;
-}
-
-double ON_PlaneEquation::MaximumValueAt(const class ON_CurveLeafBox& 
crvleafbox) const
-{
-  // The working function is part of the Rhino SDK.
-  return 0.0;
-}
-
-////////////////////////////////////////////////////////////////
-//
-// Basic ON_BezierCurve functions
-//
-
-int ON_BezierCurve::IntersectSelf( 
-        ON_SimpleArray<ON_X_EVENT>& x,
-        double intersection_tolerance
-        ) const
-{
-  // The working function is part of the Rhino SDK.
-  return 0;
-}
-
-int ON_BezierCurve::IntersectCurve( 
-        const ON_BezierCurve* bezierB,
-        ON_SimpleArray<ON_X_EVENT>& x,
-        double intersection_tolerance,
-        double overlap_tolerance,
-        const ON_Interval* bezierA_domain,
-        const ON_Interval* bezierB_domain
-        ) const
-{
-  // The working function is part of the Rhino SDK.
-  return 0;
-}
-
-int ON_BezierCurve::IntersectSurface( 
-          const ON_BezierSurface* bezsrfB,
-          ON_SimpleArray<ON_X_EVENT>& x,
-          double intersection_tolerance,
-          double overlap_tolerance,
-          const ON_Interval* bezierA_domain,
-          const ON_Interval* bezsrfB_udomain,
-          const ON_Interval* bezsrfB_vdomain
-          ) const
-{
-  // The working function is part of the Rhino SDK.
-  return 0;
-}
-
-bool ON_BezierCurve::GetLocalClosestPoint( 
-        ON_3dPoint P,
-        double seed_parameter,
-        double* t,
-        const ON_Interval* sub_domain
-        ) const
-{
-  // The working function is part of the Rhino SDK.
-  return false;
-}
-
-bool ON_BezierCurve::GetClosestPoint( 
-        ON_3dPoint P,
-        double* t,
-        double maximum_distance,
-        const ON_Interval* sub_domain
-        ) const
-{
-  // The working function is part of the Rhino SDK.
-  return false;
-}
-
-bool ON_BezierCurve::GetLocalCurveIntersection( 
-        const ON_BezierCurve* other_bezcrv,
-        double this_seed_t,
-        double other_seed_t,
-        double* this_t,
-        double* other_t,
-        const ON_Interval* this_domain,
-        const ON_Interval* other_domain
-        ) const
-{
-  // The working function is part of the Rhino SDK.
-  return false;
-}
-
-
-bool ON_BezierCurve::GetLocalSurfaceIntersection( 
-          const ON_BezierSurface* bezsrf,
-          double seed_t,
-          double seed_u,
-          double seed_v,
-          double* t,
-          double* u,
-          double* v,
-          const ON_Interval* tdomain,
-          const ON_Interval* udomain,
-          const ON_Interval* vdomain
-          ) const
-{
-  // The working function is part of the Rhino SDK.
-  return false;
-}
-
-
-////////////////////////////////////////////////////////////////
-//
-// Basic ON_BezierSurface functions
-//
-
-bool ON_BezierSurface::GetLocalClosestPoint( 
-        ON_3dPoint P,
-        double s_seed,
-        double t_seed,
-        double* s,
-        double* t,
-        const ON_Interval* sub_domain0,
-        const ON_Interval* sub_domain1
-        ) const
-{
-  // The working function is part of the Rhino SDK.
-  return false;
-}
-
-bool ON_BezierSurface::GetClosestPoint( 
-        ON_3dPoint P,
-        double* s,
-        double* t,
-        double maximum_distance,
-        const ON_Interval* sub_domain0,
-        const ON_Interval* sub_domain1
-        ) const
-{
-  // The working function is part of the Rhino SDK.
-  return false;
-}
-
-
-////////////////////////////////////////////////////////////////
-//
-// Basic ON_X_EVENT functions
-//
-
-bool ON_X_EVENT::IsValid(ON_TextLog* text_log,
-                          double intersection_tolerance,
-                          double overlap_tolerance,
-                          const ON_Curve* curveA,
-                          const ON_Interval* curveA_domain,
-                          const ON_Curve* curveB,
-                          const ON_Interval* curveB_domain,
-                          const ON_Surface* surfaceB,
-                          const ON_Interval* surfaceB_domain0,
-                          const ON_Interval* surfaceB_domain1
-                          ) const
-{
-  // The working function is part of the Rhino SDK.
-  return true;
-}
-
-void ON_X_EVENT::CopyEventPart(
-      const ON_X_EVENT& src, 
-      int i,
-      ON_X_EVENT& dst, 
-      int j 
-      )
-{
-  // The working function is part of the Rhino SDK.
-}
-
-bool ON_X_EVENT::IsValidList(
-        int xevent_count,
-        const ON_X_EVENT* xevent,
-        ON_TextLog* text_log,
-        double intersection_tolerance,
-        double overlap_tolerance,
-        const class ON_Curve* curveA,
-        const class ON_Interval* curveA_domain,
-        const class ON_Curve* curveB,
-        const class ON_Interval* curveB_domain,
-        const class ON_Surface* surfaceB,
-        const class ON_Interval* surfaceB_domain0,
-        const class ON_Interval* surfaceB_domain1
-        )
-{
-  // The working function is part of the Rhino SDK.
-  return true;
-}
-
-int ON_X_EVENT::CleanList(
-        double event_tolerance,
-        double overlap_tolerance,
-        int xevent_count,
-        ON_X_EVENT* xevent
-        )
-{
-  // The working function is part of the Rhino SDK.
-  return xevent_count;
-}
-
-bool ON_X_EVENT::IsValidCurveCurveOverlap( 
-          ON_Interval,
-          int,
-          double,
-          const class ON_CurveTreeNode*, 
-          const class ON_CurveTreeNode*,
-          const ON_Interval*
-          )
-{
-  // The working function is part of the Rhino SDK.
-  return true;
-}
-
-bool ON_X_EVENT::IsValidCurveSurfaceOverlap( 
-                      ON_Interval,
-                      int,
-                      double,
-                      const class ON_CurveTreeNode*, 
-                      const class ON_SurfaceTreeNode*,
-                      const ON_Interval*,
-                      const ON_Interval*
-                      )
-{
-  // The working function is part of the Rhino SDK.
-  return true;
-}
-
-bool ON_X_EVENT::IsValidCurvePlaneOverlap( 
-          ON_Interval,
-          int,
-          double,
-          double,
-          const class ON_CurveTreeNode*,
-          const ON_PlaneEquation*
-          )
-{
-  // The working function is part of the Rhino SDK.
-  return true;
-}
-
-ON_CurveTree* ON_Curve::CreateCurveTree() const
-{
-  // The working function is part of the Rhino SDK.
-  return 0;
-}
-
-bool ON_Curve::GetClosestPoint( 
-        const ON_3dPoint&,
-        double*,
-        double,
-        const ON_Interval*
-        ) const
-{
-  // The working function is part of the Rhino SDK.
-  return false;
-}
-
-int ON_Curve::IntersectSelf( 
-        ON_SimpleArray<ON_X_EVENT>&,
-        double,
-        const ON_Interval*
-        ) const
-{
-  // The working function is part of the Rhino SDK.
-  return 0;
-}
-
-int ON_Curve::IntersectCurve( 
-          const ON_Curve*,
-          ON_SimpleArray<ON_X_EVENT>&,
-          double,
-          double,
-          const ON_Interval*,
-          const ON_Interval*
-          ) const
-{
-  // The working function is part of the Rhino SDK.
-  return 0;
-}
-
-int ON_Curve::IntersectSurface( 
-          const ON_Surface*,
-          ON_SimpleArray<ON_X_EVENT>&,
-          double,
-          double,
-          const ON_Interval*,
-          const ON_Interval*,
-          const ON_Interval*
-          ) const
-{
-  // The working function is part of the Rhino SDK.
-  return 0;
-}
-
-int ON_Surface::IntersectSurface( 
-        const ON_Surface*,
-        ON_ClassArray<ON_SSX_EVENT>&,
-        double,
-        double,
-        double,
-        const ON_Interval*,
-        const ON_Interval*,
-        const ON_Interval*,
-        const ON_Interval*
-        ) const
-{
-  // The working function is part of the Rhino SDK.
-  return 0;
-}
-
-ON_SurfaceTree* ON_Surface::CreateSurfaceTree() const
-{
-  // The working function is part of the Rhino SDK.
-  return 0;
-}
-
-class ON_NurbsSurface* ON_Surface::CreateCubicLoft(
-    int,
-    const ON_Curve* const*,
-    double,
-    int,
-    ON::cubic_loft_end_condition,
-    ON::cubic_loft_end_condition,
-    class ON_NurbsSurface*
-    )
-{
-  // The working function is part of the Rhino SDK.
-  return 0;
-}
-
-bool ON_Surface::AreaMassProperties(
-  ON_MassProperties&,
-  bool,
-  bool,
-  bool,
-  bool,
-  double,
-  double
-  ) const
-{
-  // The working function is part of the Rhino SDK.
-  return false;
-}
-
-bool ON_Surface::VolumeMassProperties(
-  ON_MassProperties&, 
-  bool,
-  bool,
-  bool,
-  bool,
-  ON_3dPoint,
-  double,
-  double
-  ) const
-{
-  // The working function is part of the Rhino SDK.
-  return false;
-}
-
-bool ON_Curve::LengthMassProperties(
-  ON_MassProperties&,
-  bool,
-  bool,
-  bool,
-  bool,
-  double,
-  double
-  ) const
-{
-  // The working function is part of the Rhino SDK.
-  return false;
-}
-
-bool ON_Curve::AreaMassProperties(
-    ON_3dPoint,
-    ON_3dVector,
-    ON_MassProperties&, 
-    bool,
-    bool,
-    bool,
-    bool,
-    double,
-    double
-    ) const
-{
-  // The working function is part of the Rhino SDK.
-  return false;
-}
-
-ON_PolylineCurve* ON_Curve::MeshCurve(
-    ON_MeshCurveParameters&,
-    ON_PolylineCurve*,
-    bool,
-    const ON_Interval*
-    )
-{
-  // The working function is part of the Rhino SDK.
-  return 0;
-}
-
-
-#endif

Modified: brlcad/trunk/src/libbrep/openNURBS/opennurbs_beam.cpp
===================================================================
--- brlcad/trunk/src/other/openNURBS/opennurbs_beam.cpp 2020-05-06 13:00:38 UTC 
(rev 75705)
+++ brlcad/trunk/src/libbrep/openNURBS/opennurbs_beam.cpp       2020-05-06 
17:14:34 UTC (rev 75706)
@@ -1,3 +1,19 @@
+/* $NoKeywords: $ */
+/*
+//
+// Copyright (c) 1993-2012 Robert McNeel & Associates. All rights reserved.
+// OpenNURBS, Rhinoceros, and Rhino3D are registered trademarks of Robert
+// McNeel & Associates.
+//
+// THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT EXPRESS OR IMPLIED WARRANTY.
+// ALL IMPLIED WARRANTIES OF FITNESS FOR ANY PARTICULAR PURPOSE AND OF
+// MERCHANTABILITY ARE HEREBY DISCLAIMED.
+//
+// For complete openNURBS copyright information see <http://www.opennurbs.org>.
+//
+////////////////////////////////////////////////////////////////
+*/
+
 #include "opennurbs.h"
 
 static bool ON_ExtrusionPolyCurveProfileIsNotValid()

Modified: brlcad/trunk/src/libbrep/openNURBS/opennurbs_beam.h
===================================================================
--- brlcad/trunk/src/other/openNURBS/opennurbs_beam.h   2020-05-06 13:00:38 UTC 
(rev 75705)
+++ brlcad/trunk/src/libbrep/openNURBS/opennurbs_beam.h 2020-05-06 17:14:34 UTC 
(rev 75706)
@@ -1,3 +1,19 @@
+/* $NoKeywords: $ */
+/*
+//
+// Copyright (c) 1993-2012 Robert McNeel & Associates. All rights reserved.
+// OpenNURBS, Rhinoceros, and Rhino3D are registered trademarks of Robert
+// McNeel & Associates.
+//
+// THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT EXPRESS OR IMPLIED WARRANTY.
+// ALL IMPLIED WARRANTIES OF FITNESS FOR ANY PARTICULAR PURPOSE AND OF
+// MERCHANTABILITY ARE HEREBY DISCLAIMED.
+//
+// For complete openNURBS copyright information see <http://www.opennurbs.org>.
+//
+////////////////////////////////////////////////////////////////
+*/
+
 #if !defined(OPENNURBS_EXTRUSION_INC_)
 #define OPENNURBS_EXTRUSION_INC_
 

Modified: brlcad/trunk/src/libbrep/openNURBS/opennurbs_box.cpp
===================================================================
--- brlcad/trunk/src/other/openNURBS/opennurbs_box.cpp  2020-05-06 13:00:38 UTC 
(rev 75705)
+++ brlcad/trunk/src/libbrep/openNURBS/opennurbs_box.cpp        2020-05-06 
17:14:34 UTC (rev 75706)
@@ -1,3 +1,19 @@
+/* $NoKeywords: $ */
+/*
+//
+// Copyright (c) 1993-2012 Robert McNeel & Associates. All rights reserved.
+// OpenNURBS, Rhinoceros, and Rhino3D are registered trademarks of Robert
+// McNeel & Associates.
+//
+// THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT EXPRESS OR IMPLIED WARRANTY.
+// ALL IMPLIED WARRANTIES OF FITNESS FOR ANY PARTICULAR PURPOSE AND OF
+// MERCHANTABILITY ARE HEREBY DISCLAIMED.
+//
+// For complete openNURBS copyright information see <http://www.opennurbs.org>.
+//
+////////////////////////////////////////////////////////////////
+*/
+
 #include "opennurbs.h"
 
 ON_Box::ON_Box()

Deleted: brlcad/trunk/src/libbrep/openNURBS/opennurbs_brep_changesrf.cpp
===================================================================
--- brlcad/trunk/src/other/openNURBS/opennurbs_brep_changesrf.cpp       
2020-05-06 13:00:38 UTC (rev 75705)
+++ brlcad/trunk/src/libbrep/openNURBS/opennurbs_brep_changesrf.cpp     
2020-05-06 17:14:34 UTC (rev 75706)
@@ -1,834 +0,0 @@
-/* $NoKeywords: $ */
-/*
-//
-// Copyright (c) 1993-2007 Robert McNeel & Associates. All rights reserved.
-// Rhinoceros is a registered trademark of Robert McNeel & Assoicates.
-//
-// THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT EXPRESS OR IMPLIED WARRANTY.
-// ALL IMPLIED WARRANTIES OF FITNESS FOR ANY PARTICULAR PURPOSE AND OF
-// MERCHANTABILITY ARE HEREBY DISCLAIMED.
-//                             
-// For complete openNURBS copyright information see <http://www.opennurbs.org>.
-//
-////////////////////////////////////////////////////////////////
-*/
-
-#include "opennurbs.h"
-
-static
-bool ChangeEdgeVertex( 
-         ON_Brep& brep,
-         ON_BrepEdge& edge,
-         int edge_end,
-         int old_vi,
-         int new_vi,
-         bool bUpdateTrims
-         )
-{
-  // used by ON_Brep::ReplaceSurface() to change edge ends
-
-  if ( edge_end != 0 && edge_end != 1 )
-    return false;
-  if ( edge.m_vi[edge_end] != old_vi )
-    return false;
-  if ( old_vi == new_vi )
-    return true;
-
-  ON_BrepVertex* old_v = brep.Vertex(old_vi);
-  if ( old_vi >= 0 && 0 == old_v )
-    return false;
-  if ( old_v )
-    old_v->m_tolerance = ON_UNSET_VALUE;
-  
-  ON_BrepVertex* new_v = brep.Vertex(new_vi);
-  if ( new_vi >= 0 && 0 == new_v )
-    return false;
-  if ( new_v )
-    old_v->m_tolerance = ON_UNSET_VALUE;
-
-  // disconnect edge from old vertex
-  if ( old_vi >= 0 )
-  {
-    for ( int vei = 0; vei < old_v->m_ei.Count(); vei++ )
-    {
-      if ( old_v->m_ei[vei] == edge.m_edge_index )
-      {
-        old_v->m_ei.Remove(vei);
-        break;
-      }
-    }
-  }
-
-  edge.m_vi[edge_end] = new_vi;
-  new_v->m_ei.Append(edge.m_edge_index);
-
-  if ( bUpdateTrims )
-  {
-    for ( int eti = 0; eti < edge.m_ti.Count(); eti++ )
-    {
-      ON_BrepTrim* trim = brep.Trim(edge.m_ti[eti]);
-      if ( 0 == trim )
-        continue;
-      int trim_end = trim->m_bRev3d ? 1-edge_end : edge_end;
-      if ( trim->m_vi[trim_end] == old_vi )
-        trim->m_vi[trim_end] = new_vi;
-    }
-  }
-
-  return true;
-}
-
-
-
-static
-bool ChangeTrimVertex( 
-         ON_Brep& brep,
-         ON_BrepTrim& trim,
-         int trim_end,
-         int old_vi,
-         int new_vi,
-         bool bUpdateEdge,
-         bool bUpdateMates
-         )
-{
-  // used by ON_Brep::ReplaceSurface() to change trim ends
-  if ( trim_end != 0 && trim_end != 1 )
-    return false;
-  if ( trim.m_vi[trim_end] != old_vi )
-    return false;
-  if ( old_vi == new_vi )
-    return true;
-  trim.m_vi[trim_end] = new_vi;
-
-  ON_BrepVertex* v = brep.Vertex(old_vi);
-  if ( v )
-    v->m_tolerance = ON_UNSET_VALUE;
-  v = brep.Vertex(new_vi);
-  if ( v )
-    v->m_tolerance = ON_UNSET_VALUE;
-
-  bool rc = true;
-  if ( bUpdateEdge )
-  {
-    ON_BrepEdge* edge = brep.Edge(trim.m_ei);
-    if ( 0 == edge )
-      return true;
-    int edge_end = trim.m_bRev3d ? 1-trim_end : trim_end;
-    rc = ChangeEdgeVertex( brep, *edge, edge_end, old_vi, new_vi, bUpdateMates 
);
-  }
-
-  return true;
-}
-
-static
-ON_Curve* PushUpIsoTrim( ON_Brep& brep, ON_BrepTrim& trim )
-{
-  ON_Curve* c3 = 0;
-  const ON_Surface* srf = trim.SurfaceOf();
-  if ( 0 == srf )
-    return 0;
-  c3 = srf->ON_Surface::Pushup( trim, 0.0 );
-  if ( 0 == c3 )
-  {
-    ON_2dPoint p0 = trim.PointAtStart();
-    ON_2dPoint p1 = trim.PointAtEnd();
-    double c, t0, t1;
-    int isodir;
-    if (    trim.m_iso == ON_Surface::N_iso 
-         || trim.m_iso == ON_Surface::S_iso 
-         || trim.m_iso == ON_Surface::y_iso )
-    {
-      isodir = 0;
-      c = p0.y;
-      t0 = p0.x;
-      t1 = p1.x;
-    }
-    else if (    trim.m_iso == ON_Surface::E_iso 
-              || trim.m_iso == ON_Surface::W_iso 
-              || trim.m_iso == ON_Surface::x_iso  )
-    {
-      isodir = 1;
-      c = p0.x;
-      t0 = p0.y;
-      t1 = p1.y;
-    }
-    else
-      return 0;
-    c3 = srf->IsoCurve( isodir, c );
-    if ( 0 == c3 )
-      return 0;
-    ON_Interval trim_interval(t0,t1);
-    if ( trim_interval.IsDecreasing() )
-      trim_interval.Swap();
-    if ( !c3->Trim(trim_interval) )
-    {
-      delete c3;
-      return 0;
-    }
-    if ( t0 > t1 )
-      c3->Reverse();
-    c3->SetDomain(trim_interval);
-  }
-  return c3;
-}
-
-
-static
-bool ChangeTrimSingToBdry( ON_Brep& brep, ON_BrepTrim& trim, ON_BrepTrim* 
nexttrim )
-{
-  if ( trim.m_vi[0] != trim.m_vi[1] )
-    return false;
-  if ( trim.m_type != ON_BrepTrim::singular )
-    return false;
-  if ( trim.m_ei >= 0 )
-    return false;
-
-  const ON_Surface* srf = trim.SurfaceOf();
-  if ( 0 == srf )
-    return false;
-
-  brep.m_V.Reserve( brep.m_V.Count() + 1 );
-  ON_BrepVertex* v0 = brep.Vertex(trim.m_vi[0]);
-  if ( 0 == v0 )
-    return false;
-
-  // get new 3d curve
-  ON_Curve* c3 = PushUpIsoTrim( brep, trim );
-  if ( 0 == c3 )
-    return false;
-
-  // valid singular trim can be changed to non-singular trim
-
-
-  // create new vertex for end of this trim
-  v0->m_tolerance = ON_UNSET_VALUE;
-
-  ON_BrepVertex* v1 = 0;
-
-  if ( c3->IsClosed() )
-  {
-    // 3d edge is closed so start and end vertex are still the same.
-    v1 = v0;
-  }
-  else
-  {
-    // new 3d edge is not closed, so the single singular vertex
-    // needs to be "split" into two vertices.
-    brep.NewVertex();
-    v1 = brep.m_V.Last();
-  }
-  trim.m_vi[1] = v1->m_vertex_index;
-
-  // update the start of the next trim to use new vertex
-  if ( nexttrim && nexttrim->m_trim_index != trim.m_trim_index )
-  {
-    ChangeTrimVertex( brep, *nexttrim, 0, v0->m_vertex_index, 
v1->m_vertex_index, true, true );
-  }              
-
-  // make a new edge
-  int ci = brep.AddEdgeCurve(c3);
-  c3 = 0;
-  ON_BrepEdge& edge = brep.NewEdge(*v0,*v1,ci);
-  edge.m_tolerance = 0.0;
-
-  // hook trim to new edge
-  trim.m_type = ON_BrepTrim::boundary;
-  trim.m_bRev3d = false;
-  trim.m_ei = edge.m_edge_index;
-  edge.m_ti.Append(trim.m_trim_index);
-
-  return true;
-}
-
-static
-bool ChangeTrimBdryToSing( ON_Brep& brep, ON_BrepTrim& trim, 
-                           ON_BrepTrim* prevtrim, ON_BrepTrim* nexttrim )
-{
-  if ( trim.m_vi[0] == trim.m_vi[1] )
-    return false;
-  if ( trim.m_type == ON_BrepTrim::singular )
-    return false;
-  if ( trim.m_ei < 0 )
-    return false;
-
-  int vi0 = trim.m_vi[0];
-  int vi1 = trim.m_vi[1];
-
-  int sing_vi = vi0;
-
-  ON_BrepVertex* v0 = brep.Vertex(vi0);
-  if ( v0 )
-    v0->m_tolerance = ON_UNSET_VALUE;
-  ON_BrepVertex* v1 = brep.Vertex(vi1);
-  if ( v1 )
-    v1->m_tolerance = ON_UNSET_VALUE;
-
-  ON_BrepEdge* edge = brep.Edge(trim.m_ei);
-  if ( edge )
-  {
-    for ( int eti = 0; eti < edge->m_ti.Count(); eti++ )
-    {
-      if ( edge->m_ti[eti] == trim.m_trim_index )
-      {
-        edge->m_ti.Remove(eti);
-        break;
-      }
-    }
-
-    trim.m_ei = -1;
-    if ( 0 == edge->m_ti.Count() )
-    {
-      brep.DeleteEdge( *edge, true );
-    }
-    else if ( 1 == edge->m_ti.Count() && ON_BrepTrim::seam == trim.m_type )
-    {
-      // change neighbor trim type
-      ON_BrepTrim* other_trim = brep.Trim(edge->m_ti[0]);
-      if ( 0 != other_trim && ON_BrepTrim::seam == other_trim->m_type )
-      {
-        other_trim->m_type = ON_BrepTrim::boundary;
-        int j = (trim.m_bRev3d == other_trim->m_bRev3d) ? 0 : 1;
-        if (    trim.m_vi[0] == other_trim->m_vi[j] 
-             && trim.m_vi[1] == other_trim->m_vi[1-j] )
-        {
-          // we need a new singular vertex
-          sing_vi = brep.NewVertex(ON_UNSET_POINT).m_vertex_index;
-        }
-      }
-    }
-  }
-
-  trim.m_vi[0] = sing_vi;
-  trim.m_vi[1] = sing_vi;
-  trim.m_type = ON_BrepTrim::singular;
-  trim.m_bRev3d = false;
-
-  if ( nexttrim )
-    ChangeTrimVertex( brep,*nexttrim,0,vi1,sing_vi,true,true);
-  if ( prevtrim )
-    ChangeTrimVertex( brep,*prevtrim,1,vi0,sing_vi,true,true);
-
-  return true;
-}
-
-static
-bool SplitSeam( ON_Brep& brep, 
-                ON_BrepTrim& trimA, ON_BrepTrim& trimB,
-                ON_BrepTrim& prevtrimB,
-                ON_BrepTrim& nexttrimB,
-                int vcount0 // number of verts before singular fixups
-                )
-{
-  if ( trimA.m_trim_index == trimB.m_trim_index )
-    return false;
-  if ( trimA.m_trim_index == prevtrimB.m_trim_index )
-    return false;
-  if ( trimA.m_trim_index == nexttrimB.m_trim_index )
-    return false;
-  if ( trimB.m_trim_index == prevtrimB.m_trim_index )
-    return false;
-  if ( trimB.m_trim_index == nexttrimB.m_trim_index )
-    return false;
-  if ( prevtrimB.m_trim_index == nexttrimB.m_trim_index )
-    return false;
-  if ( trimA.m_type != ON_BrepTrim::seam )
-    return false;
-  if ( trimB.m_type != ON_BrepTrim::seam )
-    return false;
-  if ( trimA.m_ei != trimB.m_ei )
-    return false;
-  if (    trimA.m_vi[0] != trimB.m_vi[1] 
-       && trimA.m_vi[0] < vcount0
-       && trimB.m_vi[1] < vcount0 )
-    return false;
-  if (    trimA.m_vi[1] != trimB.m_vi[0] 
-       && trimA.m_vi[1] < vcount0
-       && trimB.m_vi[0] < vcount0 )
-    return false;
-  if ( prevtrimB.m_vi[1] != trimB.m_vi[0] 
-       && prevtrimB.m_vi[1] < vcount0
-       && trimB.m_vi[0] < vcount0 )
-    return false;
-  if ( nexttrimB.m_vi[0] != trimB.m_vi[1]
-       && prevtrimB.m_vi[0] < vcount0
-       && trimB.m_vi[1] < vcount0 )
-    return false;
-  if ( trimA.m_li != trimB.m_li )
-    return false;
-  if ( trimA.m_li != prevtrimB.m_li )
-    return false;
-  if ( trimA.m_li != nexttrimB.m_li )
-    return false;
-  if ( trimA.m_bRev3d == trimB.m_bRev3d )
-    return false;
-  const ON_Surface* srf = trimA.SurfaceOf();
-  if ( 0 == srf )
-    return false;
-  ON_BrepEdge* edgeA = brep.Edge(trimA.m_ei);
-  if ( 0 == edgeA )
-    return false;
-  if ( edgeA->m_ti.Count() != 2 )
-    return false;
-  if ( edgeA->m_ti[0] != trimA.m_trim_index && edgeA->m_ti[1] != 
trimA.m_trim_index )
-    return false;
-  if ( edgeA->m_ti[0] != trimB.m_trim_index && edgeA->m_ti[1] != 
trimB.m_trim_index )
-    return false;
-
-  // reserve space now so the vA0 and vA1 pointers
-  // will be valid if m_V[] is grown.
-  brep.m_V.Reserve( brep.m_V.Count()+2 );
-
-  ON_BrepVertex* vA0 = brep.Vertex(trimA.m_vi[0]);
-  if ( 0 == vA0 )
-    return false;
-  ON_BrepVertex* vA1 = brep.Vertex(trimA.m_vi[1]);
-  if ( 0 == vA1 )
-    return false;
-
-  // looks like we have a valid seam to blow apart
-
-  // get a new 3d curve for trimB
-  ON_Curve* cB3 = PushUpIsoTrim( brep, trimB );
-  if ( 0 == cB3 )
-    return false;
-  int c3i = brep.AddEdgeCurve(cB3);
-
-  vA0->m_tolerance = ON_UNSET_VALUE;
-  vA1->m_tolerance = ON_UNSET_VALUE;
-
-  // make new vertices for trimB
-  ON_BrepVertex* vB0 = 0;
-  ON_BrepVertex* vB1 = 0;
-
-  ON_3dPoint PA, PB;
-  bool bSame = false;
-
-  if (brep.GetTrim3dStart(trimB.m_trim_index, PB) && 
brep.GetTrim3dEnd(trimA.m_trim_index, PA))
-    bSame = PB.DistanceTo(PA) < ON_ZERO_TOLERANCE;
-  if (bSame || trimB.m_vi[0] != trimA.m_vi[1] )
-  {
-    // sing fixups have already blown apart this end
-    vB0 = brep.Vertex( trimB.m_vi[0] );
-  }
-
-  bSame = false;
-  if (brep.GetTrim3dStart(trimA.m_trim_index, PA) && 
brep.GetTrim3dEnd(trimB.m_trim_index, PB))
-    bSame = PB.DistanceTo(PA) < ON_ZERO_TOLERANCE;
-  if (bSame || trimB.m_vi[1] != trimA.m_vi[0] )
-  {
-    // sing fixups have already blown apart this end
-    vB1 = brep.Vertex( trimB.m_vi[1] );
-  }
-  if ( 0 == vB0 )
-  {
-    ON_BrepVertex& v = brep.NewVertex();
-    vB0 = &v;
-    trimB.m_vi[0] = vB0->m_vertex_index;
-  }
-  if ( 0 == vB1 )
-  {
-    ON_BrepVertex& v = brep.NewVertex();
-    vB1 = &v;
-    trimB.m_vi[1] = vB1->m_vertex_index;
-  }
-
-  // disconnect edgeA and trimB
-  trimB.m_ei = -1;
-  if ( edgeA->m_ti[0] == trimB.m_trim_index )
-    edgeA->m_ti.Remove(0);
-  else if ( edgeA->m_ti[1] == trimB.m_trim_index )
-    edgeA->m_ti.Remove(1);
-  ChangeTrimVertex( brep, trimB, 0, vA1->m_vertex_index, vB0->m_vertex_index, 
true, true );
-  ChangeTrimVertex( brep, trimB, 1, vA0->m_vertex_index, vB1->m_vertex_index, 
true, true );
-
-  ChangeTrimVertex( brep, prevtrimB, 1, vA1->m_vertex_index, 
vB0->m_vertex_index, true, true );
-  ChangeTrimVertex( brep, nexttrimB, 0, vA0->m_vertex_index, 
vB1->m_vertex_index, true, true );
-
-  // make a new edgeB and connect it to trimB
-  ON_BrepEdge& edgeB = brep.NewEdge( *vB0, *vB1, c3i );
-  edgeA = 0; // pointer may be invalid after m_E[] grows
-
-  edgeB.m_ti.Append(trimB.m_trim_index);
-  trimB.m_ei = edgeB.m_edge_index;
-  trimB.m_bRev3d = false;
-
-  trimA.m_type = ON_BrepTrim::boundary;
-  trimB.m_type = ON_BrepTrim::boundary;
-
-  return true;
-}
-
-static bool RebuildVertexToTrimEnd(ON_BrepTrim& T, int end)
-
-{
-  ON_Brep* pB = T.Brep();
-  if (!pB) return false;
-  int vid = T.m_vi[end];
-  if (vid < 0) return false;
-  ON_BrepVertex& V = pB->m_V[vid];
-  ON_3dPoint P;
-  if (end){
-    if (!pB->GetTrim3dEnd(T.m_trim_index, P))
-      return false;
-  }
-  else {
-    if (!pB->GetTrim3dStart(T.m_trim_index, P))
-      return false;
-  }
-
-  V.SetPoint(P);
-
-  return true;
-
-}
-
-
-static bool SealSeam(int closed_dir, ON_BrepFace& F)
-
-{
-  if (closed_dir) closed_dir = 1;
-  int seam_dir = 1-closed_dir;
-  ON_Brep* pBrep = F.Brep();
-  if (!pBrep) return false;
-  const ON_Surface* pSrf = F.SurfaceOf();
-  if (!pSrf || !pSrf->IsClosed(closed_dir)) return false;
-
-  ON_Surface::ISO isoA = ON_Surface::not_iso;//same dir as isocurve
-  ON_Surface::ISO isoB = ON_Surface::not_iso;//opposite dir as isocurve
-  if (closed_dir){
-    isoA = ON_Surface::S_iso;
-    isoB = ON_Surface::N_iso;
-  }
-  else {
-    isoA = ON_Surface::E_iso;
-    isoB = ON_Surface::W_iso;
-  }
-
-  /* TODO: Handle cases where there is more than one trim on a seam side 
-     or seam edges do not fully overlap.
-  */
-
-  //Look for a single pair of trims that match across parameter space.
-
-  int A_id = -1;
-  int B_id = -1;
-
-  int li;
-  for (li=0; li<F.m_li.Count(); li++){
-    const ON_BrepLoop* L = F.Loop(li);
-    if (!L || L->m_type !=  ON_BrepLoop::outer) continue;
-    int lti;
-    for (lti = 0; lti<L->m_ti.Count(); lti++ ){
-      ON_BrepTrim* T = L->Trim(lti);
-      if (!T) continue;
-      if (T->m_iso == isoA) {
-        if (A_id >= 0)
-          return false;
-        A_id = T->m_trim_index;
-      }
-      else if (T->m_iso == isoB) {
-        if (B_id >= 0)
-          return false;
-        B_id = T->m_trim_index;
-      }
-    }
-  }
-
-  if (A_id < 0 || B_id < 0)
-    return true;//no seam to join
-
-  ON_BrepTrim& TA = pBrep->m_T[A_id];
-  ON_BrepTrim& TB = pBrep->m_T[B_id];
-
-  ON_BrepEdge* pEA = TA.Edge();
-  ON_BrepEdge* pEB = TB.Edge();
-  if (!pEA || !pEB)
-    return false;
-
-  ON_Interval a,b;
-  int i;
-  for (i=0; i<2; i++){
-    a[i] = TA.PointAt(TA.Domain()[i])[seam_dir];
-    b[i] = TB.PointAt(TB.Domain()[i])[seam_dir];
-  }
-
-  a.MakeIncreasing();
-  b.MakeIncreasing();
-
-  if (a[0] >= b[1] || b[0] >= a[1])
-    return true; //nothing to be joined;
-
-  double pspace_tol = 1.0e-8;
-
-  if (a.Length() < 10.0*pspace_tol)
-    return false;
-  if (fabs(a[0] - b[0]) > pspace_tol || fabs(a[1] - b[1]) > pspace_tol)
-    return false;
-
-  //fix vertices so join will work.
-
-  RebuildVertexToTrimEnd(TA, 0);
-  RebuildVertexToTrimEnd(TA, 1);
-  RebuildVertexToTrimEnd(TB, 0);
-  RebuildVertexToTrimEnd(TB, 1);
-
-  double join_tol = 1.0e-6;
-  if (!pBrep->JoinEdges(*pEA, *pEB, join_tol))
-    return false;
-
-  TA.m_type = ON_BrepTrim::seam;
-  TB.m_type = ON_BrepTrim::seam;
-
-  return true;
-}
-
-bool ON_BrepFace::ChangeSurface(
-  int si
-  )
-{
-  if ( 0 == m_brep )
-    return false;
-  if ( si < 0 || si >= m_brep->m_S.Count() )
-    return false;
-  const ON_Surface* pSurface = m_brep->m_S[si];
-  
-  m_brep->DestroyMesh( ON::any_mesh );
-
-  const ON_Surface* old_srf = SurfaceOf();
-  m_si = si;
-  SetProxySurface(pSurface);
-  if ( pSurface )
-    m_bbox = pSurface->BoundingBox();
-  else
-    m_bbox.Destroy();
-  m_brep->m_bbox.Destroy();
-
-  if ( old_srf && pSurface )
-  {
-    // If domain changed, tehn update 2d trim curve locations
-    ON_Interval udom0 = old_srf->Domain(0);
-    ON_Interval vdom0 = old_srf->Domain(1);
-    ON_Interval udom1 = pSurface->Domain(0);
-    ON_Interval vdom1 = pSurface->Domain(1);
-    if ( udom0 != udom1 || vdom0 != vdom1 )
-    {
-      // need to transform trimming curves
-      ON_Xform x(1), xu(1), xv(1);
-      if ( udom0 != udom1 )
-        xu.IntervalChange(0,udom0,udom1);
-      if ( vdom0 != vdom1 )
-        xv.IntervalChange(1,vdom0,vdom1);
-      x = xv*xu;
-      TransformTrim(x);
-    }
-
-    int vcount0 = m_brep->m_V.Count();
-
-    // If singular points changed, then add/remove edges
-    // and update trim.m_type flags
-    int i;
-    {
-      bool bSing0[4];
-      bool bSing1[4];
-      for ( i = 0; i < 4; i++ )
-      {
-        bSing0[i] = old_srf->IsSingular(i) ? true : false;
-        bSing1[i] = pSurface->IsSingular(i) ? true : false;
-      }
-      int sing_fix, sing_fix_max = 1;
-      for ( sing_fix = 0; sing_fix < sing_fix_max; sing_fix++ )
-      {
-        // sing_fix:
-        //   0: expands old singularities and checks for new ones
-        //   1: collapses old edges to new singular points.
-        for ( i = 0; i < 4; i++ )
-        {
-          if ( bSing0[i] == bSing1[i] )
-            continue;
-
-          ON_Surface::ISO iso = ON_Surface::not_iso;
-          switch(i)
-          {
-          case 0: iso = ON_Surface::S_iso; break;
-          case 1: iso = ON_Surface::E_iso; break;
-          case 2: iso = ON_Surface::N_iso; break;
-          case 3: iso = ON_Surface::W_iso; break;
-          }
-
-          if ( bSing0[i] && sing_fix != 0 )
-          {
-            // we already expanded old singular trims into edge trims
-            continue;
-          }
-
-          for ( int fli = 0; fli < m_li.Count(); fli++ )
-          {
-            const ON_BrepLoop* loop = Loop(fli);
-            if ( 0 == loop )
-              continue;
-            if ( loop->m_type != ON_BrepLoop::outer )
-              continue;
-            for ( int lti = 0; lti < loop->m_ti.Count(); lti++ )
-            {
-              ON_BrepTrim* trim = loop->Trim(lti);
-              if ( !trim )
-                continue;
-              if ( trim->m_iso != iso )
-                continue;
-              ON_BrepTrim* nexttrim = loop->Trim((lti+1)%loop->m_ti.Count());
-              if ( bSing0[i] )
-              {
-                // valid singular trim changing to non-singular trim
-                if( 0 == sing_fix )
-                  ChangeTrimSingToBdry( *m_brep, *trim, nexttrim );
-              }
-              else if ( bSing1[i] )
-              {
-                if ( 0 == sing_fix )
-                {
-                  // we need a 2nd pass to collapse this edge
-                  // to a singular trim.
-                  sing_fix_max = 2;
-                }
-                else
-                {
-                  // valid non-singular trim changing to singular trim
-                  ON_BrepTrim* prevtrim = 
loop->Trim((lti-1+loop->m_ti.Count())%loop->m_ti.Count());
-                  ChangeTrimBdryToSing( *m_brep, *trim, prevtrim, nexttrim );
-                }
-              }
-            }
-          }
-        }
-      }
-    }
-
-    // If closed/open status changed, then add/remove edges
-    // and update m_type flag
-    for ( i = 0; i < 2; i++ )
-    {
-      bool bClosed0 = old_srf->IsClosed(i) ? true : false;
-      bool bClosed1 = pSurface->IsClosed(i) ? true : false;
-      if ( bClosed0 == bClosed1 )
-        continue;
-      ON_Surface::ISO isoA = ON_Surface::not_iso;
-      ON_Surface::ISO isoB = ON_Surface::not_iso;
-      switch(i)
-      {
-      case 0: isoA = ON_Surface::W_iso; isoB = ON_Surface::E_iso; break;
-      case 1: isoA = ON_Surface::S_iso; isoB = ON_Surface::N_iso; break;
-      }
-
-      for ( int fli = 0; fli < m_li.Count(); fli++ )
-      {
-        const ON_BrepLoop* loop = Loop(fli);
-        if ( 0 == loop )
-          continue;
-        if ( loop->m_type != ON_BrepLoop::outer )
-          continue;
-        int loop_trim_count = loop->m_ti.Count();
-        for ( int ltiA = 0; ltiA < loop_trim_count; ltiA++ )
-        {
-          ON_BrepTrim* trimA = loop->Trim(ltiA);
-          if ( !trimA )
-            continue;
-          if ( trimA->m_iso != isoA )
-            continue;
-
-          if ( bClosed0 )
-          {
-            // old surface has a seam and new surface does not
-            if ( trimA->m_type != ON_BrepTrim::seam )
-              continue;
-            const ON_BrepEdge* edge = m_brep->Edge(trimA->m_ei);
-            if ( 0 == edge )
-              continue;
-            if ( edge->m_ti.Count() != 2 )
-              continue;
-            int etiB = (edge->m_ti[0] == trimA->m_trim_index) ? 1 : 0;
-            ON_BrepTrim* trimB = edge->Trim(etiB);
-            if ( 0 == trimB )
-              continue;
-            if ( trimA == trimB )
-              continue;
-            if ( trimB->m_li != trimA->m_li )
-              continue;
-            if ( trimB->m_type != ON_BrepTrim::seam )
-              continue;
-            if ( trimB->m_iso != isoB )
-              continue;
-            for ( int ltiB = 0; ltiB < loop_trim_count; ltiB++ )
-            {
-              if ( trimB != loop->Trim(ltiB) )
-                continue;
-              ON_BrepTrim* prevtrimB = 
loop->Trim((ltiB+loop_trim_count-1)%loop_trim_count);
-              ON_BrepTrim* nexttrimB = loop->Trim((ltiB+1)%loop_trim_count);
-              if ( 0 == prevtrimB )
-                continue;
-              if ( 0 == nexttrimB )
-                continue;
-              if ( prevtrimB == trimA || prevtrimB == trimB )
-                continue;
-              if ( nexttrimB == trimA || nexttrimB == trimB )
-                continue;
-              if ( prevtrimB == nexttrimB )
-                continue;
-              SplitSeam( *m_brep, *trimA, *trimB, *prevtrimB, *nexttrimB, 
vcount0 );
-              break;
-            }
-          }
-          else
-          {
-            // open sides replaced with a seam
-            // TODO
-            bool sok;
-            sok = SealSeam(i, *this);
-            if (sok)
-              sok = !sok;
-          }
-        }
-      }
-    }
-  }
-
-  if ( pSurface )
-  {
-    for ( int fli = 0; fli < m_li.Count(); fli++ )
-    {
-      const ON_BrepLoop* loop = Loop(fli);
-      if ( 0 == loop )
-        continue;
-      for ( int lti = 0; lti < loop->m_ti.Count(); lti++ )
-      {
-        const ON_BrepTrim* trim = loop->Trim(lti);
-        if ( 0 ==  trim )
-          continue;
-        ON_BrepVertex* v0 = m_brep->Vertex(trim->m_vi[0]);
-        if ( 0 != v0 )
-        {
-          if ( v0->point == ON_UNSET_POINT )
-          {
-            ON_3dPoint uv = trim->PointAtStart();
-            v0->point = pSurface->PointAt( uv.x, uv.y );
-          }
-        }
-      }
-    }
-  }
-
-  return true;
-}
-
-//bool ON_Brep::ReplaceSurface( ON_BrepFace& face, 
-//                     ON_Surface* pSurface
-//                     )
-//{
-//  bool rc = false;
-//  if ( pSurface )
-//  {
-//    int si = AddSurface(pSurface);
-//    rc = face.ChangeSurface(si);
-//  }
-//  return rc;
-//}
-

Deleted: brlcad/trunk/src/libbrep/openNURBS/opennurbs_brep_kinky.cpp
===================================================================
--- brlcad/trunk/src/other/openNURBS/opennurbs_brep_kinky.cpp   2020-05-06 
13:00:38 UTC (rev 75705)
+++ brlcad/trunk/src/libbrep/openNURBS/opennurbs_brep_kinky.cpp 2020-05-06 
17:14:34 UTC (rev 75706)
@@ -1,192 +0,0 @@
-/* $NoKeywords: $ */
-/*
-//
-// Copyright (c) 1993-2007 Robert McNeel & Associates. All rights reserved.
-// Rhinoceros is a registered trademark of Robert McNeel & Assoicates.
-//
-// THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT EXPRESS OR IMPLIED WARRANTY.
-// ALL IMPLIED WARRANTIES OF FITNESS FOR ANY PARTICULAR PURPOSE AND OF
-// MERCHANTABILITY ARE HEREBY DISCLAIMED.
-//                             
-// For complete openNURBS copyright information see <http://www.opennurbs.org>.
-//
-////////////////////////////////////////////////////////////////
-*/
-
-#include "opennurbs.h"
-
-
-bool ON_Brep::SplitKinkyFaces( 
-        double kink_tol_radians,
-        bool bCompactIfNeeded
-        )
-{
-  bool rc = true;
-  // see if splitting is required
-  const int ecount = m_E.Count();
-  const int fcount = m_F.Count();
-  for (int j=0; j<fcount; j++)
-  {
-    if ( !SplitKinkyFace(j,kink_tol_radians) )
-      rc = false;
-  }
-  if (bCompactIfNeeded && ( fcount != m_F.Count() || ecount != m_E.Count()) )
-  {
-    Compact();
-  }
-  return true;
-}
-
-
-bool ON_Brep::SplitKinkyFace( 
-  int,   // face_index - formal parameter intentionally ignored in this 
virtual function
-  double // kink_tol_radians - formal parameter intentionally ignored in this 
virtual function
-  )
-{
-  // works in RHino SDK - not part of free opennurbs
-  return false;
-}
-
-bool ON_Brep::SplitKinkyEdge( 
-  int edge_index, 
-  double kink_tol_radians
-  )
-{
-  // Default kink_tol_radians MUST BE ON_PI/180.0.
-  //
-  // The default kink tol must be kept in sync with the default for 
-  // TL_Brep::SplitKinkyFace() and ON_Brep::SplitKinkyFace().
-  // See comments in TL_Brep::SplitKinkyFace() for more details.
-
-  bool rc = true;
-  if (kink_tol_radians < ON_ZERO_TOLERANCE) kink_tol_radians = 
ON_ZERO_TOLERANCE;
-  else if (kink_tol_radians > ON_PI - ON_ZERO_TOLERANCE) 
-    kink_tol_radians = ON_PI - ON_ZERO_TOLERANCE;
-  double atol = cos(kink_tol_radians);
-  if (edge_index < 0 || edge_index >= m_E.Count()) return false;
-  ON_BrepEdge& E = m_E[edge_index];
-  if (E.m_c3i < 0) return false;
-  ON_SimpleArray<double> split_t(4);
-  double t0 = E.Domain()[0];
-  int hint = 0;
-  ON_Curve* curve = m_C3[E.m_c3i];
-  if (!curve) return false;
-  int scount = curve->SpanCount();
-  while (split_t.Count() < scount){
-    double t;
-    if (!E.GetNextDiscontinuity(ON::G1_continuous, t0, E.Domain()[1], 
-      &t, &hint, NULL, atol)) break;
-    split_t.Append(t);
-    t0 = t;
-  }
-  if (split_t.Count() >= scount) return false;
-
-  if (split_t.Count() == 0) return true;//no kinks
-
-  split_t.Reverse();
-  for (int i=0; i<split_t.Count(); i++){
-    //if split parameter is near start or end, just adjust domain.
-    double t0, t1;
-    m_E[edge_index].GetDomain(&t0, &t1);
-    if (t1 - t0 < 10.0*ON_ZERO_TOLERANCE) continue;
-
-    //6 Dec 2002 Dale Lear:
-    //   I added the relative edge_split_s and trm_split_s tests to detect
-    //   attempts to trim a nano-gnats-wisker of the end of a trim.
-
-    // set to true if edge should be trimmed instead of split.
-    bool bTrimEdgeEnd = false; 
-

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