Compare commits

..
1 Commits
Author SHA1 Message Date
Clifford Yapp 7d71036e4a Tcl/Tk 8.6 is now merged into trunk - delete branch (svn branch delete)
svn:revision:75424
svn:branch:tcltk86
svn:account:starseeker
2020-04-16 01:39:43 +00:00
3724 changed files with 376018 additions and 249754 deletions
-5
View File
@@ -898,11 +898,6 @@ nicknames lois221
2019 May
Open Source (GSoC)
Vaidya, Sahil
nicknames sahilvaidya99
2020 April
ARL Student Hire / University of Texas at Austin
SPECIAL THANKS
--------------
+1 -3
View File
@@ -15,12 +15,10 @@ on-going issues.
Recent Bugs
-----------
* dbupgrade -r produces an invalid rhc with the default v5 rhc produced
by MGED with "make rhc rhc"
* apparently all four BRL-CAD Tutorial Series volumes are missing from
our bibliography...
* Tessellating an ETO with a normal tolerance results in stack
smashing due to bad logic in recursive algorithm: set norm 2;
facetize my.eto my.bot;. Observed infinite recursion in both
-2
View File
@@ -1525,5 +1525,3 @@ s/tclcad_bn_mat_xform_about_pt/tclcad_bn_mat_xform_about_pnt/g
s/wdb_metaballpt/wdb_metaball_pnt/g
s/wdb_pipept/wdb_pipe_pnt/g
renamed points from pt to pnt for consistency [7.30]
s/proe-brl/creo-brl/g
replaced by newer creo plugin [7.30]
+77 -177
View File
@@ -114,9 +114,14 @@ endif(NOT EXISTS ${BRLCAD_CNT_FILE})
include(CMakeDependentOption)
#---------------------------------------------------------------------
# Check whether we need to add import/export lines to libraries
if(MSVC)
set(CPP_DLL_DEFINES 1)
endif(MSVC)
# Define an option to use OBJECT libraries - when we build this
# way, we also need position independent code.
cmake_dependent_option(USE_OBJECT_LIBS "Use OBJECT libraries" ON "NOT MSVC" OFF)
cmake_dependent_option(USE_OBJECT_LIBS "Use OBJECT libraries" ON "NOT CPP_DLL_DEFINES" OFF)
mark_as_advanced(USE_OBJECT_LIBS)
if(USE_OBJECT_LIBS)
set(CMAKE_POSITION_INDEPENDENT_CODE TRUE)
@@ -154,27 +159,6 @@ generate_sstamp()
set(CONFIG_DELTA_START "${CMAKE_BINARY_DIR}/CMakeTmp/CONFIG_DELTA_START")
execute_process(COMMAND "${CMAKE_BINARY_DIR}/CMakeTmp/sstamp${EXE_EXT}" "${CONFIG_DELTA_START}")
#------------------------------------------------------------------------------
# The SuperBuild (https://blog.kitware.com/cmake-superbuilds-git-submodules/)
# pattern requires a differentiation between the CMake installation prefix used
# for the build and the specification of the ultimate installation location
# used for the superbuild's install. Any hard-coded knowledge of the final
# path backed into BRL-CAD must use the superbuild's final destination, not the
# intermediate build-directory installation used by the superbuild.
#
# For the moment we are not using superbuild, but we will ultimately need to
# move to that approach to manage increasingly complex dependencies. To allow
# the code to work seamlessly with both variables, make them match unless both
# are explicitly set in advance.
if (DEFINED BRLCAD_INSTALL_PREFIX)
if (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT OR NOT DEFINED CMAKE_INSTALL_PREFIX)
set(CMAKE_INSTALL_PREFIX "${BRLCAD_INSTALL_PREFIX}")
endif (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT OR NOT DEFINED CMAKE_INSTALL_PREFIX)
endif (DEFINED BRLCAD_INSTALL_PREFIX)
if (DEFINED CMAKE_INSTALL_PREFIX AND NOT DEFINED BRLCAD_INSTALL_PREFIX)
set(BRLCAD_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}")
endif (DEFINED CMAKE_INSTALL_PREFIX AND NOT DEFINED BRLCAD_INSTALL_PREFIX)
#---------------------------------------------------------------------
# Allow the BRLCAD_ROOT environment variable to set during build, but be noisy
# about it unless we're specifically told this is intentional. Having this
@@ -188,15 +172,15 @@ if(NOT "$ENV{BRLCAD_ROOT}" STREQUAL "" AND NOT BRLCAD_ROOT_OVERRIDE)
endif(SLEEP_EXEC)
endif(NOT "$ENV{BRLCAD_ROOT}" STREQUAL "" AND NOT BRLCAD_ROOT_OVERRIDE)
# If BRLCAD_INSTALL_PREFIX is "/usr", be VERY noisy about it - a make install in
# If CMAKE_INSTALL_PREFIX is "/usr", be VERY noisy about it - a make install in
# this location is dangerous/destructive on some systems.
if("${BRLCAD_INSTALL_PREFIX}" STREQUAL "/usr" AND NOT BRLCAD_ALLOW_INSTALL_TO_USR)
if("${CMAKE_INSTALL_PREFIX}" STREQUAL "/usr" AND NOT BRLCAD_ALLOW_INSTALL_TO_USR)
message(WARNING "}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}\nIt is STRONGLY recommended that you DO NOT install BRL-CAD into /usr as BRL-CAD provides several libraries that may conflict with other libraries (e.g. librt, libbu, libbn) on certain system configurations.\nSince our libraries predate all those that we're known to conflict with and are at the very core of our geometry services and project heritage, we have no plans to change the names of our libraries at this time.\nINSTALLING INTO /usr CAN MAKE A SYSTEM COMPLETELY UNUSABLE. If you choose to continue installing into /usr, you do so entirely at your own risk. You have been warned.\n}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}")
if(SLEEP_EXEC)
execute_process(COMMAND ${SLEEP_EXEC} 15)
endif(SLEEP_EXEC)
message(FATAL_ERROR "If you wish to proceed using /usr as your prefix, define BRLCAD_ALLOW_INSTALL_TO_USR=1 for CMake")
endif("${BRLCAD_INSTALL_PREFIX}" STREQUAL "/usr" AND NOT BRLCAD_ALLOW_INSTALL_TO_USR)
endif("${CMAKE_INSTALL_PREFIX}" STREQUAL "/usr" AND NOT BRLCAD_ALLOW_INSTALL_TO_USR)
#---------------------------------------------------------------------
# Define relative install locations and output directories. Don't set
@@ -258,20 +242,12 @@ include(Path_Setup)
# To ensure the previous (and internally set) CMAKE_INSTALL_PREFIX value
# is available, BRLCAD_PREFIX is used to store the value in the cache.)
if(BRLCAD_INSTALL_PREFIX)
if(NOT "${BRLCAD_INSTALL_PREFIX}" STREQUAL "/usr" AND NOT "${BRLCAD_INSTALL_PREFIX}" STREQUAL "/usr/local")
get_filename_component(PATH_NORMALIZED "${BRLCAD_INSTALL_PREFIX}/${LIB_DIR}" ABSOLUTE)
set(CMAKE_SYSTEM_IGNORE_PATH "${PATH_NORMALIZED}")
endif(NOT "${BRLCAD_INSTALL_PREFIX}" STREQUAL "/usr" AND NOT "${BRLCAD_INSTALL_PREFIX}" STREQUAL "/usr/local")
endif(BRLCAD_INSTALL_PREFIX)
if(CMAKE_INSTALL_PREFIX)
if(NOT "${CMAKE_INSTALL_PREFIX}" STREQUAL "/usr" AND NOT "${CMAKE_INSTALL_PREFIX}" STREQUAL "/usr/local")
get_filename_component(PATH_NORMALIZED "${CMAKE_INSTALL_PREFIX}/${LIB_DIR}" ABSOLUTE)
set(CMAKE_SYSTEM_IGNORE_PATH "${PATH_NORMALIZED}")
endif(NOT "${CMAKE_INSTALL_PREFIX}" STREQUAL "/usr" AND NOT "${CMAKE_INSTALL_PREFIX}" STREQUAL "/usr/local")
endif(CMAKE_INSTALL_PREFIX)
if(BRLCAD_PREFIX)
if(NOT "${BRLCAD_PREFIX}" STREQUAL "/usr" AND NOT "${BRLCAD_PREFIX}" STREQUAL "/usr/local")
get_filename_component(PATH_NORMALIZED "${BRLCAD_PREFIX}/${LIB_DIR}" ABSOLUTE)
@@ -521,7 +497,7 @@ if(NOT BRLCAD_IS_SUBBUILD)
COMMAND ${CMAKE_COMMAND} -E echo " regression tests. To consider a build viable for production use,"
COMMAND ${CMAKE_COMMAND} -E echo " these tests must pass. Dependencies are compiled automatically."
COMMAND ${CMAKE_COMMAND} -E echo "\"**********************************************************************\""
COMMAND ${CMAKE_CTEST_COMMAND} -C ${CONFIG} -LE \"Regression|STAND_ALONE\" -E \"^regress-|NOTE|benchmark|slow-\" --output-on-failure ${JFLAG}
COMMAND ${CMAKE_CTEST_COMMAND} -C ${CONFIG} -LE \"Regression|NOT_WORKING\" -E \"^regress-|NOTE|benchmark|slow-\" --output-on-failure ${JFLAG}
COMMAND ${CMAKE_CTEST_COMMAND} -C ${CONFIG} -R \"benchmark\" --output-on-failure ${JFLAG}
COMMAND ${CMAKE_CTEST_COMMAND} -C ${CONFIG} -L \"Regression\" --output-on-failure ${JFLAG}
)
@@ -778,6 +754,7 @@ if (IS_DIRECTORY /usr/local)
set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} /usr/local)
if (IS_DIRECTORY /usr/local/include)
set(CMAKE_REQUIRED_INCLUDES ${CMAKE_REQUIRED_INCLUDES} /usr/local/include)
include_directories(AFTER SYSTEM /usr/local/include)
endif (IS_DIRECTORY /usr/local/include)
endif (IS_DIRECTORY /usr/local)
@@ -819,63 +796,59 @@ endif(CMAKE_CONFIGURATION_TYPES)
# ExternalProject_Add approach first as well - that way unmodified install
# commands in 3rd party CMake files will be moot.
#
# if (NOT BRLCAD_INSTALL_PREFIX)
# set(BRLCAD_INSTALL_PREFIX "/usr/brlcad/")
# if (NOT CMAKE_INSTALL_PREFIX)
# set(CMAKE_INSTALL_PREFIX "/usr/brlcad/")
# if (NOT MSVC)
# set(gen_exp $<IF:$<CONFIG:Debug>,dev-${BRLCAD_VERSION}/,$<IF:$<CONFIG:Release>,rel-${BRLCAD_VERSION}/${BRLCAD_VERSION},>>)
# else (NOT MSVC)
# set(gen_exp)
# if(CMAKE_CL_64)
# set(BRLCAD_INSTALL_PREFIX "C:/Program Files/BRL-CAD ${BRLCAD_VERSION}")
# set(CMAKE_INSTALL_PREFIX "C:/Program Files/BRL-CAD ${BRLCAD_VERSION}")
# else(CMAKE_CL_64)
# set(BRLCAD_INSTALL_PREFIX "C:/Program Files (x86)/BRL-CAD ${BRLCAD_VERSION}")
# set(CMAKE_INSTALL_PREFIX "C:/Program Files (x86)/BRL-CAD ${BRLCAD_VERSION}")
# endif(CMAKE_CL_64)
# endif (NOT MSVC)
# endif (NOT BRLCAD_INSTALL_PREFIX)
# endif (NOT CMAKE_INSTALL_PREFIX)
# install(TARGETS mged DESTINATION ${gen_exp}${BIN_DIR})
#
# Another (maybe better) option instead of generators might be to use the CONFIGURATIONS
# option in our macros and the ExternalProject_Add management:
# https://cmake.org/cmake/help/latest/command/install.html
#
if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT OR NOT BRLCAD_INSTALL_PREFIX)
if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT OR NOT CMAKE_INSTALL_PREFIX)
if(NOT CMAKE_CONFIGURATION_TYPES)
if("${CMAKE_BUILD_TYPE}" MATCHES "Release")
set(BRLCAD_INSTALL_PREFIX "/usr/brlcad/rel-${BRLCAD_VERSION}")
set(CMAKE_INSTALL_PREFIX "/usr/brlcad/rel-${BRLCAD_VERSION}")
else("${CMAKE_BUILD_TYPE}" MATCHES "Release")
set(BRLCAD_INSTALL_PREFIX "/usr/brlcad/dev-${BRLCAD_VERSION}")
set(CMAKE_INSTALL_PREFIX "/usr/brlcad/dev-${BRLCAD_VERSION}")
endif("${CMAKE_BUILD_TYPE}" MATCHES "Release")
else(NOT CMAKE_CONFIGURATION_TYPES)
if(MSVC)
if(CMAKE_CL_64)
set(BRLCAD_INSTALL_PREFIX "C:/Program Files/BRL-CAD ${BRLCAD_VERSION}")
set(CMAKE_INSTALL_PREFIX "C:/Program Files/BRL-CAD ${BRLCAD_VERSION}")
else(CMAKE_CL_64)
set(BRLCAD_INSTALL_PREFIX "C:/Program Files (x86)/BRL-CAD ${BRLCAD_VERSION}")
set(CMAKE_INSTALL_PREFIX "C:/Program Files (x86)/BRL-CAD ${BRLCAD_VERSION}")
endif(CMAKE_CL_64)
else(MSVC)
set(BRLCAD_INSTALL_PREFIX "/usr/brlcad/dev-${BRLCAD_VERSION}")
set(CMAKE_INSTALL_PREFIX "/usr/brlcad/dev-${BRLCAD_VERSION}")
endif(MSVC)
endif(NOT CMAKE_CONFIGURATION_TYPES)
set(BRLCAD_INSTALL_PREFIX ${BRLCAD_INSTALL_PREFIX} CACHE PATH "BRL-CAD install prefix" FORCE)
set(BRLCAD_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT 0)
endif(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT OR NOT BRLCAD_INSTALL_PREFIX)
set(BRLCAD_PREFIX "${BRLCAD_INSTALL_PREFIX}" CACHE STRING "BRL-CAD install prefix")
set(CMAKE_INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX} CACHE PATH "BRL-CAD install prefix" FORCE)
set(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT 0)
endif(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT OR NOT CMAKE_INSTALL_PREFIX)
set(BRLCAD_PREFIX "${CMAKE_INSTALL_PREFIX}" CACHE STRING "BRL-CAD install prefix")
mark_as_advanced(BRLCAD_PREFIX)
if (DEFINED BRLCAD_INSTALL_PREFIX AND NOT DEFINED CMAKE_INSTALL_PREFIX)
set(CMAKE_INSTALL_PREFIX "${BRLCAD_INSTALL_PREFIX}")
endif (DEFINED BRLCAD_INSTALL_PREFIX AND NOT DEFINED CMAKE_INSTALL_PREFIX)
# If we've a Release build with a Debug path or vice versa, warn about
# it. A "make install" of a Release build into a dev install
# directory or vice versa is going to result in an install that
# doesn't respect BRL-CAD standard naming conventions.
if("${CMAKE_BUILD_TYPE}" MATCHES "Release" AND "${BRLCAD_INSTALL_PREFIX}" STREQUAL "/usr/brlcad/dev-${BRLCAD_VERSION}")
message(FATAL_ERROR "\nInstallation directory (BRLCAD_INSTALL_PREFIX) is set to /usr/brlcad/dev-${BRLCAD_VERSION}, but build type is set to Release!\n")
endif("${CMAKE_BUILD_TYPE}" MATCHES "Release" AND "${BRLCAD_INSTALL_PREFIX}" STREQUAL "/usr/brlcad/dev-${BRLCAD_VERSION}")
if("${CMAKE_BUILD_TYPE}" MATCHES "Debug" AND "${BRLCAD_INSTALL_PREFIX}" STREQUAL "/usr/brlcad/rel-${BRLCAD_VERSION}")
message(FATAL_ERROR "\nInstallation directory (BRLCAD_INSTALL_PREFIX) is set to /usr/brlcad/rel-${BRLCAD_VERSION}, but build type is set to Debug!\n")
endif("${CMAKE_BUILD_TYPE}" MATCHES "Debug" AND "${BRLCAD_INSTALL_PREFIX}" STREQUAL "/usr/brlcad/rel-${BRLCAD_VERSION}")
if("${CMAKE_BUILD_TYPE}" MATCHES "Release" AND "${CMAKE_INSTALL_PREFIX}" STREQUAL "/usr/brlcad/dev-${BRLCAD_VERSION}")
message(FATAL_ERROR "\nInstallation directory (CMAKE_INSTALL_PREFIX) is set to /usr/brlcad/dev-${BRLCAD_VERSION}, but build type is set to Release!\n")
endif("${CMAKE_BUILD_TYPE}" MATCHES "Release" AND "${CMAKE_INSTALL_PREFIX}" STREQUAL "/usr/brlcad/dev-${BRLCAD_VERSION}")
if("${CMAKE_BUILD_TYPE}" MATCHES "Debug" AND "${CMAKE_INSTALL_PREFIX}" STREQUAL "/usr/brlcad/rel-${BRLCAD_VERSION}")
message(FATAL_ERROR "\nInstallation directory (CMAKE_INSTALL_PREFIX) is set to /usr/brlcad/rel-${BRLCAD_VERSION}, but build type is set to Debug!\n")
endif("${CMAKE_BUILD_TYPE}" MATCHES "Debug" AND "${CMAKE_INSTALL_PREFIX}" STREQUAL "/usr/brlcad/rel-${BRLCAD_VERSION}")
#------------------------------------------------------------------------------
# Now that we know the install prefix, generate the binary for calculating
@@ -925,35 +898,7 @@ if(NOT DEFINED CMAKE_CXX_FLAGS_DEFAULT)
endif(NOT DEFINED CMAKE_CXX_FLAGS_DEFAULT)
mark_as_advanced(CMAKE_CXX_FLAGS_DEFAULT)
# OpenBSD 6.6 doesn't tolerate these flags when using #include <iostream>,
# so we have to test
include(CheckCXXSourceRuns)
include(CMakePushCheckState)
function(BRLCAD_API_FLAG AFLAG AFLAGS)
set(CHECK_API_FLAG_SRC "
#include <iostream>
int main(int ac, char *av[])
{
if (ac > 0 && av)
std::cout << \"hello\";
return 0;
}
")
string(TOUPPER "${AFLAG}" UAFLAG)
string(REPLACE "-" "_" AFLAGVAR "${UAFLAG}")
string(REPLACE "=" "_" AFLAGVAR "${AFLAGVAR}")
cmake_push_check_state()
set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} ${C_STANDARD_FLAGS} ${AFLAG}")
check_cxx_source_runs("${CHECK_API_FLAG_SRC}" WORKING_${AFLAGVAR})
cmake_pop_check_state()
if(WORKING_${AFLAGVAR})
set(${AFLAGS} "${${AFLAGS}} ${AFLAG}" PARENT_SCOPE)
endif(WORKING_${AFLAGVAR})
endfunction(BRLCAD_API_FLAG)
set(API_FLAGS)
BRLCAD_API_FLAG("-D_POSIX_C_SOURCE=200809L" API_FLAGS)
BRLCAD_API_FLAG("-D_XOPEN_SOURCE=700" API_FLAGS)
set(API_FLAGS "-D_POSIX_C_SOURCE=200809L -D_XOPEN_SOURCE=700")
# C
unset(C_STANDARD_FLAGS)
@@ -1005,12 +950,6 @@ if(NOT COMMAND CONFIG_H_APPEND)
endif(NOT COMMAND CONFIG_H_APPEND)
CONFIG_H_APPEND(BRLCAD "/**** Define statements for CMake ****/\n")
CONFIG_H_APPEND(BRLCAD "#if !defined(BRLCADBUILD)\n")
CONFIG_H_APPEND(BRLCAD " # pragma message \"Warning: included brlcad_config.h (compile-time API) without BRLCADBUILD defined\"\n")
CONFIG_H_APPEND(BRLCAD "#endif\n")
CONFIG_H_APPEND(BRLCAD "#if !defined(HAVE_CONFIG_H)\n")
CONFIG_H_APPEND(BRLCAD " # pragma message \"Warning: included brlcad_config.h (compile-time API) without HAVE_CONFIG_H defined\"\n")
CONFIG_H_APPEND(BRLCAD "#endif\n")
CONFIG_H_APPEND(BRLCAD "#ifndef __CONFIG_H__\n")
CONFIG_H_APPEND(BRLCAD "#define __CONFIG_H__\n")
@@ -1025,10 +964,8 @@ CONFIG_H_APPEND(BRLCAD "#define PACKAGE_TARNAME \"brlcad\"\n")
CONFIG_H_APPEND(BRLCAD "#define EXECUTABLE_SUFFIX \"${CMAKE_EXECUTABLE_SUFFIX}\"\n")
CONFIG_H_APPEND(BRLCAD "#define SHARED_LIBRARY_SUFFIX \"${CMAKE_SHARED_LIBRARY_SUFFIX}\"\n")
# Let bu_dir know what the target install directory is. In a superbuild
# configuration this will be the most import place to be sure that we get the
# actual superbuild install path, not the local BRL-CAD subbuild install path.
CONFIG_H_APPEND(BRLCAD "#define BRLCAD_ROOT \"${BRLCAD_INSTALL_PREFIX}\"\n")
# Let bu_dir know what the target install directory is
CONFIG_H_APPEND(BRLCAD "#define BRLCAD_ROOT \"${CMAKE_INSTALL_PREFIX}\"\n")
# Define the various relative paths for bu_dir (be sure to have included
# Path_Setup.cmake before this point, as that file defines these variables.)
@@ -1140,14 +1077,6 @@ endif (APPLE)
CONFIG_H_APPEND(BRLCAD "#define SIZEOF_VOID_P ${CMAKE_SIZEOF_VOID_P}\n")
# OpenBSD doesn't define __WORD_SIZE
if(${CMAKE_WORD_SIZE} MATCHES "32BIT")
CONFIG_H_APPEND(BRLCAD "#ifndef __WORDSIZE\n# define __WORDSIZE 32\n#endif\n")
endif(${CMAKE_WORD_SIZE} MATCHES "32BIT")
if(${CMAKE_WORD_SIZE} MATCHES "64BIT")
CONFIG_H_APPEND(BRLCAD "#ifndef __WORDSIZE\n# define __WORDSIZE 64\n#endif\n")
endif(${CMAKE_WORD_SIZE} MATCHES "64BIT")
# Based on what we are doing, we may need to constrain our search paths
#
# NOTE: Ideally we would set a matching property for 32 bit paths
@@ -1232,6 +1161,13 @@ else(NOT CMAKE_BUILD_TYPE)
endif(NOT CMAKE_BUILD_TYPE)
cmake_dependent_option(BUILD_STATIC_LIBS "Build static libraries" ON "CMAKE_CONFIGURATION_TYPES OR NOT ${CBT} STREQUAL Debug" OFF)
# On Mac OS X, it is common to have third party package managers
# present for easy software installation (currently we're aware of
# Fink and MacPorts). This can seriously complicate find_* results,
# so provide an option to specify whether or which of the third
# party setup to use.
include(Fink_MacPorts)
# Turn off the brlcad.dll build.
# It's an expert's setting at the moment.
option(BRLCAD_ENABLE_BRLCAD_LIBRARY "Build the brlcad.dll" OFF)
@@ -1327,12 +1263,10 @@ if(BRLCAD_ENABLE_X11)
endif(BRLCAD_ENABLE_X11)
mark_as_advanced(OPENGL_USE_AQUA)
# Enable/disable features requiring the Tcl/Tk toolkit - usually this should
# be on, as a lot of functionality in BRL-CAD depends on Tcl/Tk
option(BRLCAD_ENABLE_TCL "Enable features requiring the Tcl toolkit" ON)
cmake_dependent_option(BRLCAD_ENABLE_TK "Enable features requiring the Tk toolkit" ON "BRLCAD_ENABLE_TCL" OFF)
mark_as_advanced(BRLCAD_ENABLE_TCL BRLCAD_ENABLE_TK)
# Enable/disable features requiring the Tk toolkit - usually this should
# be on, as a lot of functionality in BRL-CAD depends on Tk
option(BRLCAD_ENABLE_TK "Enable features requiring the Tk toolkit" ON)
mark_as_advanced(BRLCAD_ENABLE_TK)
if(NOT BRLCAD_ENABLE_X11 AND NOT BRLCAD_ENABLE_AQUA AND NOT WIN32)
set(BRLCAD_ENABLE_TK OFF)
endif(NOT BRLCAD_ENABLE_X11 AND NOT BRLCAD_ENABLE_AQUA AND NOT WIN32)
@@ -1365,6 +1299,17 @@ BRLCAD_OPTION(BRLCAD_ENABLE_OPENGL ${OPENGL_FOUND}
ALIASES ENABLE_OPENGL
DESCRIPTION BRLCAD_ENABLE_OPENGL_DESCRIPTION)
# Enable RTGL. Requires an enabled OpenGL.
option(BRLCAD_ENABLE_RTGL "Enable experimental RTGL code." OFF)
mark_as_advanced(BRLCAD_ENABLE_RTGL)
if(NOT BRLCAD_ENABLE_OPENGL AND BRLCAD_ENABLE_RTGL)
message("RTGL requested, but OpenGL is not enabled - disabling")
set(BRLCAD_ENABLE_RTGL OFF CACHE BOOL "Enable experimental RTGL code." FORCE)
endif(NOT BRLCAD_ENABLE_OPENGL AND BRLCAD_ENABLE_RTGL)
if(NOT BRLCAD_ENABLE_X11 AND BRLCAD_ENABLE_RTGL)
message("RTGL currently works only with GLX, and X11 is not enabled - disabling")
set(BRLCAD_ENABLE_RTGL OFF CACHE BOOL "Enable experimental RTGL code." FORCE)
endif(NOT BRLCAD_ENABLE_X11 AND BRLCAD_ENABLE_RTGL)
if(BRLCAD_ENABLE_AQUA)
set(OPENGL_USE_AQUA ON CACHE STRING "Aqua enabled - use Aqua OpenGL" FORCE)
endif(BRLCAD_ENABLE_AQUA)
@@ -1382,19 +1327,17 @@ option(BRLCAD_ENABLE_GDAL "Enable features requiring the Geospatial Data Abstrac
mark_as_advanced(BRLCAD_ENABLE_GDAL)
# Enable features requiring Qt
# TODO - try COMPONENTS search: https://blog.kitware.com/cmake-finding-qt5-the-right-way/
find_package(Qt5Widgets QUIET)
option(BRLCAD_ENABLE_QT "Enable features requiring Qt" OFF)
mark_as_advanced(BRLCAD_ENABLE_QT)
if (BRLCAD_ENABLE_QT)
# TODO - try COMPONENTS search: https://blog.kitware.com/cmake-finding-qt5-the-right-way/
find_package(Qt5Widgets QUIET)
if(NOT Qt5Widgets_FOUND AND BRLCAD_ENABLE_QT)
message("QT interface requested, but QT5 is not found - disabling")
set(BRLCAD_ENABLE_QT OFF)
endif(NOT Qt5Widgets_FOUND AND BRLCAD_ENABLE_QT)
endif (BRLCAD_ENABLE_QT)
mark_as_advanced(Qt5Widgets_DIR)
mark_as_advanced(Qt5Core_DIR)
mark_as_advanced(Qt5Gui_DIR)
if(NOT Qt5Widgets_FOUND AND BRLCAD_ENABLE_QT)
message("QT interface requested, but QT5 is not found - disabling")
set(BRLCAD_ENABLE_QT OFF)
endif(NOT Qt5Widgets_FOUND AND BRLCAD_ENABLE_QT)
mark_as_advanced(Qt5Widgets_DIR)
# Enable features requiring OpenSceneGraph
option(BRLCAD_ENABLE_OSG "Enable features requiring OpenSceneGraph" OFF)
@@ -1773,23 +1716,6 @@ set(CMAKE_CXX_FLAGS "${CXX_STANDARD_FLAGS}")
CHECK_C_FLAG(pipe)
CHECK_CXX_FLAG(pipe)
# Enable visibility restrictions. We have to deal with this on Windows, so
# enable it wherever we can to keep the code working across all platforms.
CHECK_C_FLAG(fvisibility=hidden)
CHECK_CXX_FLAG(fvisibility=hidden)
# If we can, hide internal library symbols
if(FVISIBILITY_HIDDEN_CXX_FLAG_FOUND)
set(HIDE_INTERNAL_SYMBOLS 1)
endif(FVISIBILITY_HIDDEN_CXX_FLAG_FOUND)
if(MSVC)
# On platforms other than MSVC, the hidden symbols are a convenience and may
# not be supported by system lib headers. With Visual Studio, they are a
# necessity - define an extra flag so we know to always set them in that
# case in order to properly link against the system libs.
set(HIDE_INTERNAL_SYMBOLS 1)
set(HIDE_INTERNAL_SYMBOLS_EXT 1)
endif(MSVC)
# check for -fno-strict-aliasing
# XXX - THIS FLAG IS REQUIRED if any level of optimization is
# enabled with GCC as we do use aliasing and type-punning.
@@ -1811,8 +1737,6 @@ CHECK_CXX_FLAG(fexceptions)
# needs to be increased from the default ANSI minimum of 17.
CHECK_CXX_FLAG(ftemplate-depth-128)
# check for llvm libFuzzer support
CHECK_CXX_FLAG(fsanitize=fuzzer)
# dynamic SSE optimizations for NURBS processing
#
@@ -2009,6 +1933,7 @@ if(HAVE_WARN_UNUSED_RESULT_ATTRIBUTE)
CONFIG_H_APPEND(BRLCAD "#define HAVE_WARN_UNUSED_RESULT_ATTRIBUTE 1\n")
endif(HAVE_WARN_UNUSED_RESULT_ATTRIBUTE)
# Silence check for unused arguments (used to silence clang warnings about
# unused options on the command line). By default clang generates a lot of
# warnings about such arguments, and we don't really care.
@@ -2140,7 +2065,7 @@ if(NOT MSVC)
# llvm-style USE
if("${pgo_flags_found}" STREQUAL "")
cmake_push_check_state()
set(flags "fprofile-use=\"${BRLCAD_PGO_PATH}\" -Wno-profile-instr-out-of-date -Wno-profile-instr-unprofiled")
set(flags "fprofile-use=\"${BRLCAD_PGO_PATH}\"")
set(CMAKE_REQUIRED_FLAGS "-${flags}")
CHECK_C_FLAG("${flags}" GROUPS OPTIMIZE_C_FLAGS VARS pgo_flags_found)
CHECK_CXX_FLAG("${flags}" GROUPS OPTIMIZE_CXX_FLAGS)
@@ -2359,18 +2284,13 @@ if(NOT MSVC)
endif(BRLCAD_ENABLE_COMPILER_WARNINGS OR BRLCAD_ENABLE_STRICT)
if(BRLCAD_ENABLE_COVERAGE)
# TODO: These seem to GCC specific flags - should probably set up for clang
# as well if that's our compiler...
# https://clang.llvm.org/docs/SourceBasedCodeCoverage.html
# If we need different settings for different tools, should
# encapsulate each tool's setup in a function
CHECK_C_FLAG(ftest-coverage)
CHECK_CXX_FLAG(ftest-coverage)
if(FTEST_COVERAGE_C_FLAG_FOUND)
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -ftest-coverage -fprofile-arcs")
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ftest-coverage -fprofile-arcs")
SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -lgcov -ftest-coverage -fprofile-arcs")
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -lgcov -ftest-coverage -fprofile-arcs")
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} --coverage")
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --coverage")
SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} --coverage -fprofile-arcs")
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} --coverage -fprofile-arcs")
else(FTEST_COVERAGE_C_FLAG_FOUND)
message(SEND_ERROR "Building with coverage is not supported by BRL-CAD on this platform.")
endif(FTEST_COVERAGE_C_FLAG_FOUND)
@@ -2456,7 +2376,7 @@ endif(BRLCAD_PRINT_MSGS)
# Look for threads (doesn't check for headers)
# The variable CMAKE_THREAD_LIBS_INIT is the one of interest
# when writing target_link_libraries lists.
find_package(Threads REQUIRED)
find_package(Threads)
# Check for the C++ STL library - need to link it explicitly in
# some compilation situations
@@ -2537,27 +2457,6 @@ if("${HAVE_TIMESETEVENT}" MATCHES "^${HAVE_TIMESETEVENT}$")
set(CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES_BAK})
endif("${HAVE_TIMESETEVENT}" MATCHES "^${HAVE_TIMESETEVENT}$")
# Grumble... find_library doesn't find ws2_32. Until we come up with
# working tests for these, set them by hand
if(MSVC)
set(COMCTL32_LIBRARY comctl32.lib)
set(IMM32_LIBRARY imm32.lib)
# TODO - mged and adrt call this specific OpenGL library out - why doesn't
# OPENGL_LIBRARIES do the trick?
set(OPENGL32_LIBRARY opengl32.lib)
set(PSAPI_LIB psapi.lib)
set(RPCRT_LIB rpcrt4.lib)
set(WINSOCK_LIB ws2_32.lib)
set(WS2_32_LIBRARY ws2_32)
else(MSVC)
set(COMCTL32_LIBRARY "")
set(IMM32_LIBRARY "")
set(OPENGL32_LIBRARY "")
set(PSAPI_LIB "")
set(RPCRT_LIB "")
set(WINSOCK_LIB "")
set(WS2_32_LIBRARY "")
endif(MSVC)
# *******************************************************************
if(BRLCAD_PRINT_MSGS)
@@ -3059,7 +2958,6 @@ if(WIN32)
endif(NOT HAVE_NEXTAFTERL)
BRLCAD_FUNCTION_EXISTS(_fseeki64)
BRLCAD_FUNCTION_EXISTS(_lseeki64)
BRLCAD_FUNCTION_EXISTS(_ftelli64)
endif(WIN32)
@@ -3135,7 +3033,12 @@ int main(void) {
return 0;
}
")
# Grumble... find_library doesn't find ws2_32, so set it by hand.
if(CPP_DLL_DEFINES)
set(WS2_32_LIBRARY ws2_32)
else(CPP_DLL_DEFINES)
set(WS2_32_LIBRARY "")
endif(CPP_DLL_DEFINES)
file(WRITE "${CMAKE_BINARY_DIR}/CMakeTmp/report_hostname.c" "${report_hostname_src}")
try_run(RH_RESULT RH_COMPILED "${CMAKE_BINARY_DIR}/CMakeTmp"
"${CMAKE_BINARY_DIR}/CMakeTmp/report_hostname.c"
@@ -3436,8 +3339,6 @@ if(NOT BRLCAD_IS_SUBBUILD)
endif(NOT BRLCAD_IS_SUBBUILD)
# TODO - the below logic will have to be rethought in a superbuild setup...
# To set correct install paths for CMake at build time, rather than CMake
# time, some rather special logic is necessary - a build target that needs
# to be run when the current build type changes, and introspective scripting
@@ -3655,7 +3556,6 @@ if(NOT BRLCAD_IS_SUBBUILD)
#
# CREATE_DISTCHECK(TARGET_SUFFIX CMAKE_OPTS source_dir build_dir install_dir [custom_template])
CREATE_DISTCHECK(default_build_type "-DBRLCAD_BUNDLED_LIBS=AUTO" "${CPACK_SOURCE_PACKAGE_FILE_NAME}" "build" "install")
CREATE_DISTCHECK(no_tcl "-DCMAKE_BUILD_TYPE=Debug -DBRLCAD_BUNDLED_LIBS=BUNDLED -DBRLCAD_ENABLE_TCL=OFF" "${CPACK_SOURCE_PACKAGE_FILE_NAME}" "build" "install" distcheck_no_tcl.cmake.in)
CREATE_DISTCHECK(no_tk "-DCMAKE_BUILD_TYPE=Debug -DBRLCAD_BUNDLED_LIBS=BUNDLED -DBRLCAD_ENABLE_TK=OFF" "${CPACK_SOURCE_PACKAGE_FILE_NAME}" "build" "install")
CREATE_DISTCHECK(no_strict "-DCMAKE_BUILD_TYPE=Debug -DBRLCAD_BUNDLED_LIBS=BUNDLED -DBRLCAD_ENABLE_STRICT=OFF" "${CPACK_SOURCE_PACKAGE_FILE_NAME}" "build" "install")
CREATE_DISTCHECK(no_object "-DCMAKE_BUILD_TYPE=Debug -DBRLCAD_BUNDLED_LIBS=BUNDLED -DUSE_OBJECT_LIBS=OFF" "${CPACK_SOURCE_PACKAGE_FILE_NAME}" "build" "install")
+5344 -175
View File
File diff suppressed because it is too large Load Diff
+11 -10
View File
@@ -418,11 +418,9 @@ public library APIs should expose only C function calls and data
except in very specific cases (should be discussed with the
development team ahead of time to get consensus on the necessity.)
There is a C++ interface to the core BRL-CAD libraries called MOOSE
that is maintained in a separate repository. It is developed with
separation in order to avoid mixing C++ semantics into existing APIs
and to ensure clean separation of responsibilities and modularity.
There is currently no C++ interface to the core BRL-CAD libraries. If
such an interface is eventually developed, it will be done separately
rather than mixing C++ semantics into existing APIs.
CODING STYLE & STANDARDS
------------------------
@@ -831,16 +829,19 @@ it better?" and add documentation accordingly.
All public library functions and most private or application functions
should be appropriately documented using Doxygen/Javadoc style
comments. This minimally means that you need to add an additional
asterisk to a comment that precedes your functions. Public functions
must be exported and imported using per-library macros that precede
public symbol declarations (e.g., BU_EXPORT int func();). Example:
comments. Without getting into the advanced details, this minimally
means that you need to add an additional asterisk to a comment that
precedes your functions:
/**
* Computes the answer to the meaning of life, the universe, and
* everything.
*/
MYLIB_EXPORT int mylib_function();
int
the_answer(void)
{
return 42;
}
TESTING & DEBUGGING
+52 -49
View File
@@ -52,32 +52,35 @@ below. The rest of this quick installation section is only relevant
to source code distributions of BRL-CAD.
For the impatient or simplistic, the following steps should compile,
test, and install an optimized BRL-CAD quickly into the
/usr/brlcad/rel-VERSION directory if CMake is already installed:
test, and install an optimized BRL-CAD quickly into the /usr/brlcad/rel-X.Y.Z
directory if CMake is installed on your system:
tar -zxvf brlcad-VERSION.tar
mkdir brlcad-VERSION/build
cd brlcad-VERSION/build
cmake .. -DBRLCAD_BUNDLED_LIBS=ON -DCMAKE_BUILD_TYPE=Release
make -j4
make check
make install
gunzip brlcad-X.Y.Z.tar.gz
tar -xvf brlcad-X.Y.Z.tar
mkdir brlcad-build
cd brlcad-build
cmake ../brlcad-X.Y.Z -DBRLCAD_BUNDLED_LIBS=ON -DCMAKE_BUILD_TYPE=Release
make
make benchmark
make regress
make install # as root, e.g. sudo make install
See the REPORTING PROBLEMS section of this document to report any
problems or the INSTALLING FROM SOURCE section for more comprehensive
If any of the listed steps fail, then something unexpected happened.
See the REPORTING PROBLEMS section of this document to report the
problem or the INSTALLING FROM SOURCE section for more comprehensive
instructions.
Once installed, add /usr/brlcad/rel-VERSION/bin to your path, and you should be
Once installed, add /usr/brlcad/rel-X.Y.Z/bin to your path, and you should be
able to run any of the 400+ applications that constitute BRL-CAD. For
example, to run the MGED solid modeler:
PATH=/usr/brlcad/rel-VERSION/bin:$PATH ; export PATH
PATH=/usr/brlcad/rel-X.Y.Z/bin:$PATH ; export PATH
mged
If you use tcsh or another C-shell based command shell, use this
instead:
set path=( /usr/brlcad/rel-VERSION/bin $path ) ; rehash
set path=( /usr/brlcad/rel-X.Y.Z/bin $path ) ; rehash
mged
@@ -123,10 +126,9 @@ always be loaded first, regardless of the presence of a "local" copy.
Mac OS X Disk Mounting Image:
Mount the .dmg and run the Installer .pkg contained therein. This
will install into /usr/brlcad/rel-X.Y.Z and will only require
confirming that your environment is set up properly (i.e. add
/usr/brlcad/rel-X.Y.Z/bin to your path) as described in the Quick
Installation section.
will install into /usr/brlcad/rel-X.Y.Z and will only require confirming that
your environment is set up properly (i.e. add /usr/brlcad/rel-X.Y.Z/bin to your
path) as described in the Quick Installation section.
INSTALLING FROM SOURCE
@@ -240,14 +242,6 @@ performance evaluation), enable BRLCAD_FLAGS_OPTIMIZATION:
-DBRLCAD_FLAGS_OPTIMIZATION=ON
Profile-guided optimization builds are possible via two-pass
compilation. Compile with this flag set, run the benchmark suite,
clean the build, and then compile again with this flag set. Supported
compilers will utilize data from the first pass to guide optimization,
typically resulting in a significant performance increase:
-DBRLCAD_PGO=ON
See the CONFIGURATION OPTIONS below for more details on all of the
possible settings.
@@ -293,31 +287,19 @@ or on operating systems set up to use sudo:
TESTING FUNCTIONALITY
---------------------
The primary build target to validate a compilation of BRL-CAD is:
make check
That runs a trio of test sets including "benchmark", "regress", and
"unit". The first set is a performance test that also validates
whether ray tracing behavior is correct:
To test BRL-CAD before installation, you can run the BRL-CAD benchmark.
The benchmark will report if the results are correct, testing a
majority of the core functionality of BRL-CAD in addition to testing
your system's performance:
make benchmark
The second test set is our regression tests that run a host of
rigorous integration tests and validate essential behavior:
Note that the benchmark target will build ONLY the pieces required for
the benchmark tests, unless a general make has already been performed.
For more testing, you can run the regression test suite:
make regress
The third set runs unit tests that validate low-level behavior in
BRL-CAD's core libraries:
make unit
Last but not least, one may simply run all available tests, though
note that some tests will intentionally fail:
make test
POST-INSTALLATION
-----------------
@@ -530,15 +512,25 @@ first for a system version if BRLCAD_BUNDLED_LIBS is also AUTO.
Aliases: ENABLE_ZLIB, ENABLE_LIBZ
--- BRLCAD_PNG ---
--- BRLCAD_LZ4 ---
Option for enabling and disabling compilation of the Portable Network
Graphics library provided with BRL-CAD's source distribution. Default
Option for enabling and disabling compilation of the lz4 data
compression 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_PNG
Aliases: ENABLE_LZ4
--- BRLCAD_FREETYPE ---
Option for enabling and disabling compilation of the FreeType
libraries 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_FREETYPE
--- BRLCAD_NETPBM ---
@@ -551,6 +543,17 @@ version if BRLCAD_BUNDLED_LIBS is also AUTO.
Aliases: ENABLE_NETPBM
--- BRLCAD_PNG ---
Option for enabling and disabling compilation of the Portable Network
Graphics library provided with BRL-CAD's source distribution. 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_PNG
--- BRLCAD_UTAHRLE ---
Option for enabling and disabling compilation of the Utah Raster
+2 -23
View File
@@ -9,32 +9,12 @@ first and are grouped by release. Each release also includes optional
descriptive text that emphasizes or further describes significant
changes made. See document footer for additional details.
----------------------------------------------------------------------
--- 20XX-XX-XX Release 7.3X.X ---
----------------------------------------------------------------------
* improved gdiff -F filtering option behavior - Cliff Yapp
* improved gdiff command verbosity reporting options - Cliff Yapp
* improved Combination Editor button behaviors in MGED - Sean Morrison
* consistent usage taxonomy for ident-related commands - Sean Morrison
* added units label to the Archer in-scene scale graphic - Cliff Yapp
* improved output path sorting of search command - Cliff Yapp
* added 3dm-g failure message about supported versions - Cliff Yapp
* fixed bw-png writing corrupted png files on Windows - Sean Morrison
----------------------------------------------------------------------
--- 2020-05-08 Release 7.30.8 ---
--- 20XX-XX-XX Release 7.XX.X ---
----------------------------------------------------------------------
* added gchecker tool to generate MGED overlap inputs - Cliff Yapp
* improved behavior of MGED overlap checker GUI - Nick Reed
* fixed startup dimensions of overlap checker window - Nick Reed
* fixed rtedge line drawing color when using -W flag - Cliff Yapp
* added -F option to lint cmd to test specifc solid types - Cliff Yapp
* added support to MGED for zooming with mouse wheel - Cliff Yapp
* fixed solid editing wireframe drawing in MGED - Nick Reed
* added .r suffixes to region names in 3dm-g conversion - Cliff Yapp
* add .r suffixes to region names in 3dm-g conversion - Cliff Yapp
----------------------------------------------------------------------
@@ -412,7 +392,6 @@ performance ray tracing pipeline.
* removed "high resolution" options from all commands - Carl Moore
* improved performance of archer loading large BoT models - Nick Reed
* added evaluated shaded drawing preference mode and menu - Nick Reed
* fixed .mgedrc creation corruption with closed database - Cliff Yapp
* extensive improvements to NURBS Boolean evaluation - Nick Reed
* added 'bot chull' for creating convex hull envelopes - Cliff Yapp
* new manual page for the g-voxel exporter - Mandarj
+24 -11
View File
@@ -1,5 +1,5 @@
BRL-CAD
Release 7.32.0
Release 7.30.6
http://brlcad.org/
BRL-CAD is a powerful cross-platform open source combinatorial
@@ -69,20 +69,33 @@ contact one of the BRL-CAD developers.
COMPILE AND INSTALL
-------------------
In order to compile and install BRL-CAD from a source distribution,
the CMake ( http://www.cmake.org ) configuration tool is requird.
See the INSTALL file for details on configuring, compiling, and
installing BRL-CAD. In order to compile and install BRL-CAD from a
source distribution, the build tool CMake is required - see the website
at http://www.cmake.org for source and binary installers. CMake is also
available in many Linux and *BSD distributions.
The following steps should result in a successful install:
Once CMake is installed, the following steps may be taken for a full
default install (starting with a source tarball):
tar -xvzf brlcad-VERSION.tar.gz
mkdir brlcad-VERSION/build
cd brlcad-VERSION/build
cmake .. -DBRLCAD_ENABLE_STRICT=OFF -DCMAKE_BUILD_TYPE=Release
make -j4
tar -xvzf brlcad-X.Y.Z.tar.gz
mkdir brlcad-build
cd brlcad-build
cmake ../brlcad-X.Y.Z
make
make install
See the INSTALL file for explanation of the various configuration
options available when building BRL-CAD.
where "X.Y.Z" is the version number of BRL-CAD. For those who prefer
a curses interface, substitute ccmake for cmake above. If the graphical
interface available from CMake is installed cmake-gui may be
substituted for cmake. These interfaces will display the various
configuration options available when building BRL-CAD, or the options
may be set directly via command line -D options.
The configure wrapper script may be substituted for cmake in the above
steps for a more autotools-like configuration experience.
Users on multiprocessor systems will be able to speed up their builds
by passing the -j option to make (e.g. make -j4, assuming GNU make).
Once the build completes and assuming you have proper filesystem
permissions, you should be able to begin the installation by running
+15 -61
View File
@@ -18,10 +18,6 @@ tasks as they are completed.
THESE TASKS SHOULD HAPPEN BEFORE THE NEXT RELEASE
-------------------------------------------------
* The embedded framebuffer for the X display manager is not working
with Tcl/Tk 8.6 - it brings down mged with an Xerror when it tries
to XFlush after X24_blit.
THESE TASKS SHOULD HAPPEN WITHIN TWO RELEASE ITERATIONS
-------------------------------------------------------
@@ -146,16 +142,6 @@ THESE TASKS SHOULD HAPPEN WITHIN TWO RELEASE ITERATIONS
THESE ARE UNSCHEDULED BACKLOG TASKS
-----------------------------------
* audit/fix all of the src/util and src/fb utilities to ensure they
set binary mode (setmode O_BINARY) when writing out files. at quick
glance, there are many (about 50) that still do not.
* the osgl libdm backend has what appears to be an off-by-one-pixel
error in the x and y directions with respect to mouse placement.
Using kmag, can see tha putting the mouse cursor over the center
yellow dot and center clicking (which should be a no-op, and is
with ogl) results in the scene shifting slightly.
* replace los references/terminology with span, len, dist, factor, etc
accordingly since los is ambiguous and a source of user confusion.
@@ -2444,7 +2430,7 @@ DOCUMENTATION
* document the new NURBS/BREP primitive, capabilities and limitations
* Low-hanging fruit, add missing manual pages:
* add missing manual pages (tbrowder2 generated list 2013-08):
archer
bombardier
@@ -2477,8 +2463,10 @@ DOCUMENTATION
umod
ustats
Shape tools installed without docs. may absorb into ged as plugins
or may rename, but still need docs:
* these are matured shape tools that get installed with simple
usability but should still have basic docs and better names. plan
to absorb them into ged as external plugins, but they'll still need
docs:
bolt
fence
@@ -2490,57 +2478,23 @@ DOCUMENTATION
window_frame
wire
User-facing commands reported by 'help' needing docs. some are
implemented as Tcl, others to consolidate, but still need docs:
* misc / 3rd party tools we control / bundle, but need docs if anyone
else is to use them or contribute:
adjust
bot_smooth
cc
closedb
dbversion
dmtype
dsp
dump
e_id
form
joint
labelface
loadview
lod
match
mirror
nmg_fix_normals
png
put
relos
remat
reset
rmats
rt_gettrees
rtabort
rtedge
rtweight
savekey
shaded_mode
unhide
perplex
re2c
Need to revisit utility of spherical mapping, used by sh_spm and
* needs his own repo:
ttcp
* need to revisit utility of spherical mapping, used by sh_spm and
sh_points, used for environment mapping (e.g., stars):
pix-spm
spm-fb
3rd party tools we control / bundle, but need docs if anyone else is
to use them or contribute:
perplex
re2c
Needs separate repo:
ttcp
Converters that belong in GCV:
* these eventually get put into gcv (hopefully not needing docs):
3dm-g
g-dot
+7 -3
View File
@@ -2,7 +2,11 @@ add_subdirectory(ref)
include_directories(${BU_INCLUDE_DIRS})
add_definitions(-DCONSOLE)
add_definitions(
-DHAVE_CONFIG_H
-DBRLCADBUILD
-DCONSOLE
)
BRLCAD_ADDEXEC(pixcmp pixcmp.c libbu)
set(BARK_SOURCES
@@ -36,7 +40,7 @@ CMAKEFILES(
viewdiff.sh
)
if(SH_EXEC AND TARGET m35.g)
if(SH_EXEC)
# CTest enabled short run of the benchmark suite
add_test(NAME benchmark COMMAND ${SH_EXEC} "${CMAKE_BINARY_DIR}/bin/benchmark" run TIMEFRAME=1)
set_tests_properties(benchmark PROPERTIES LABELS "Benchmark")
@@ -64,7 +68,7 @@ if(SH_EXEC AND TARGET m35.g)
add_custom_target(benchmark-clobber
${SH_EXEC} ${CMAKE_BINARY_DIR}/bin/benchmark clobber
)
endif(SH_EXEC AND TARGET m35.g)
endif(SH_EXEC)
# Local Variables:
# tab-width: 8
-3
View File
@@ -36,7 +36,6 @@
#endif
#include "bio.h"
#include "bu/app.h"
#include "bu/getopt.h"
#include "bu/log.h"
#include "bu/file.h"
@@ -135,8 +134,6 @@ main(int argc, char *argv[])
size_t f2_skip = 0;
size_t bytes = 0;
bu_setprogname(argv[0]);
/* process opts */
while ((c = bu_getopt(argc, argv, "lbi:s")) != -1) {
switch (c) {
Vendored
+10 -2
View File
@@ -118,14 +118,22 @@ do
shift;;
--disable-libz) options="$options -DBRLCAD_ZLIB=SYSTEM";
shift;;
--enable-png) options="$options -DBRLCAD_PNG=BUNDLED";
--enable-lz4) options="$options -DBRLCAD_LZ4=BUNDLED";
shift;;
--disable-png) options="$options -DBRLCAD_PNG=SYSTEM";
--disable-lz4) options="$options -DBRLCAD_LZ4=SYSTEM";
shift;;
--enable-freetype) options="$options -DBRLCAD_FREETYPE=BUNDLED";
shift;;
--disable-freetype) options="$options -DBRLCAD_FREETYPE=SYSTEM";
shift;;
--enable-netpbm) options="$options -DBRLCAD_NETPBM=BUNDLED";
shift;;
--disable-netpbm) options="$options -DBRLCAD_NETPBM=SYSTEM";
shift;;
--enable-png) options="$options -DBRLCAD_PNG=BUNDLED";
shift;;
--disable-png) options="$options -DBRLCAD_PNG=SYSTEM";
shift;;
--enable-utahrle) options="$options -DBRLCAD_UTAHRLE=BUNDLED";
shift;;
--disable-utahrle) options="$options -DBRLCAD_UTAHRLE=SYSTEM";
+50 -50
View File
@@ -53,15 +53,21 @@ function(ADD_G_TARGET in_model folder)
# the sense that it uses libgcv...)
if(${MODEL_TYPE} STREQUAL "3dm")
set(INPUT_FILE "${CMAKE_CURRENT_SOURCE_DIR}/${in_model}")
set(OUTPUT_FILE "${output_file}")
# Because we won't know the output directory in the script reliably until run time,
# we append CURRENT_BUILD_DIR as a string to the arguments - it is the script's
# responsibility to handle it correctly at run time.
set(CMD_ARGS "-o" "CURRENT_BUILD_DIR/${output_file}" "${CMAKE_CURRENT_SOURCE_DIR}/${in_model}")
# Use the model name for the script, since the output file is specific to this input
configure_file("${CMAKE_SOURCE_DIR}/db/conv_run.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/${in_model_root}.cmake" @ONLY)
set(script_file "${CMAKE_CURRENT_BINARY_DIR}/${in_model_root}.cmake")
# We know enough - write the script
generate_cmd_script(3dm-g "${script_file}" OLOG "${log_file}" ELOG "${log_file}" CARGS "${CMD_ARGS}")
# Define the target
add_custom_command(
OUTPUT ${CMAKE_CURRENT_BUILD_DIR_SCRIPT}/${output_file}
COMMAND ${CMAKE_COMMAND} -DEXEC=$<TARGET_FILE:3dm-g> -P "${CMAKE_CURRENT_BINARY_DIR}/${in_model_root}.cmake"
COMMAND ${CMAKE_COMMAND} -P "${script_file}"
DEPENDS 3dm-g ${CMAKE_CURRENT_SOURCE_DIR}/${in_model}
)
@@ -70,13 +76,11 @@ function(ADD_G_TARGET in_model folder)
# The rest of the conversions follow the simpler/older pattern:
if(${MODEL_TYPE} STREQUAL "asc")
if (BRLCAD_ENABLE_TCL)
add_custom_command(
OUTPUT ${CMAKE_CURRENT_BUILD_DIR_SCRIPT}/${output_file}
COMMAND asc2g "${CMAKE_CURRENT_SOURCE_DIR}/${in_model}" ${CMAKE_CURRENT_BUILD_DIR_SCRIPT}/${output_file}
DEPENDS asc2g "${CMAKE_CURRENT_SOURCE_DIR}/${in_model}"
)
endif (BRLCAD_ENABLE_TCL)
add_custom_command(
OUTPUT ${CMAKE_CURRENT_BUILD_DIR_SCRIPT}/${output_file}
COMMAND asc2g "${CMAKE_CURRENT_SOURCE_DIR}/${in_model}" ${CMAKE_CURRENT_BUILD_DIR_SCRIPT}/${output_file}
DEPENDS asc2g "${CMAKE_CURRENT_SOURCE_DIR}/${in_model}"
)
endif(${MODEL_TYPE} STREQUAL "asc")
if(${MODEL_TYPE} STREQUAL "comgeom")
@@ -104,19 +108,17 @@ function(ADD_G_TARGET in_model folder)
)
endif(${MODEL_TYPE} STREQUAL "stp")
if(NOT ${MODEL_TYPE} STREQUAL "asc" OR BRLCAD_ENABLE_TCL)
add_custom_target(${in_model_root}.g ALL DEPENDS ${CMAKE_CURRENT_BUILD_DIR_SCRIPT}/${output_file})
set_target_properties(${in_model_root}.g PROPERTIES FOLDER "${folder}")
add_custom_target(${in_model_root}.g ALL DEPENDS ${CMAKE_CURRENT_BUILD_DIR_SCRIPT}/${output_file})
set_target_properties(${in_model_root}.g PROPERTIES FOLDER "${folder}")
# Install logic
if(BRLCAD_INSTALL_EXAMPLE_GEOMETRY)
install(FILES ${CMAKE_CURRENT_BUILD_DIR_INSTALL}/${output_file} DESTINATION ${DATA_DIR}/${rel_dir})
endif(BRLCAD_INSTALL_EXAMPLE_GEOMETRY)
# Install logic
if(BRLCAD_INSTALL_EXAMPLE_GEOMETRY)
install(FILES ${CMAKE_CURRENT_BUILD_DIR_INSTALL}/${output_file} DESTINATION ${DATA_DIR}/${rel_dir})
endif(BRLCAD_INSTALL_EXAMPLE_GEOMETRY)
# Clean-up
set_property(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES "${log_file}")
DISTCLEAN("${log_file}")
endif(NOT ${MODEL_TYPE} STREQUAL "asc" OR BRLCAD_ENABLE_TCL)
# Clean-up
set_property(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES "${log_file}")
DISTCLEAN("${log_file}")
endfunction(ADD_G_TARGET in_model folder)
@@ -183,36 +185,34 @@ if(SH_EXEC)
set(conversion_g_files_fp)
set(conversion_deps_list)
if (BRLCAD_ENABLE_TCL)
macro(Sh_Conversion_Test gfile depends_list)
add_custom_target(convert-${gfile} COMMAND ${SH_EXEC} ${CMAKE_SOURCE_DIR}/sh/conversion.sh GED=$<TARGET_FILE:mged> ${CMAKE_BINARY_DIR}/${DATA_DIR}/db/${gfile})
set_target_properties(convert-${gfile} PROPERTIES EXCLUDE_FROM_DEFAULT_BUILD 1)
set_target_properties(convert-${gfile} PROPERTIES FOLDER "BRL-CAD Conversion Tests")
set(conversion_g_files ${conversion_g_files} ${gfile})
if(NOT "${depends_list}" STREQUAL "")
add_dependencies(convert-${gfile} ${depends_list})
set(conversion_deps_list ${conversion_deps_list} ${depends_list})
endif(NOT "${depends_list}" STREQUAL "")
endmacro(Sh_Conversion_Test)
macro(Sh_Conversion_Test gfile depends_list)
add_custom_target(convert-${gfile} COMMAND ${SH_EXEC} ${CMAKE_SOURCE_DIR}/sh/conversion.sh GED=$<TARGET_FILE:mged> ${CMAKE_BINARY_DIR}/${DATA_DIR}/db/${gfile})
set_target_properties(convert-${gfile} PROPERTIES EXCLUDE_FROM_DEFAULT_BUILD 1)
set_target_properties(convert-${gfile} PROPERTIES FOLDER "BRL-CAD Conversion Tests")
set(conversion_g_files ${conversion_g_files} ${gfile})
if(NOT "${depends_list}" STREQUAL "")
add_dependencies(convert-${gfile} ${depends_list})
set(conversion_deps_list ${conversion_deps_list} ${depends_list})
endif(NOT "${depends_list}" STREQUAL "")
endmacro(Sh_Conversion_Test)
foreach(g_input ${G_BENCHMARK_MODELS})
get_filename_component(GROOT "${g_input}" NAME_WE)
Sh_Conversion_Test(${GROOT}.g "mged")
endforeach(g_input ${G_BENCHMARK_MODELS})
foreach(g_input ${G_SAMPLE_MODELS})
get_filename_component(GROOT "${g_input}" NAME_WE)
Sh_Conversion_Test(${GROOT}.g "mged")
endforeach(g_input ${G_SAMPLE_MODELS})
foreach(g_input ${G_BENCHMARK_MODELS})
get_filename_component(GROOT "${g_input}" NAME_WE)
Sh_Conversion_Test(${GROOT}.g "mged")
endforeach(g_input ${G_BENCHMARK_MODELS})
foreach(g_input ${G_SAMPLE_MODELS})
get_filename_component(GROOT "${g_input}" NAME_WE)
Sh_Conversion_Test(${GROOT}.g "mged")
endforeach(g_input ${G_SAMPLE_MODELS})
list(REMOVE_DUPLICATES conversion_deps_list)
foreach(gfile ${conversion_g_files})
set(conversion_g_files_fp ${conversion_g_files_fp} "${CMAKE_BINARY_DIR}/${DATA_DIR}/db/${gfile}")
endforeach(gfile ${conversion_g_files})
add_custom_target(convert COMMAND ${SH_EXEC} ${CMAKE_SOURCE_DIR}/sh/conversion.sh GED=$<TARGET_FILE:mged> ${conversion_g_files_fp})
set_target_properties(convert PROPERTIES EXCLUDE_FROM_DEFAULT_BUILD 1)
set_target_properties(convert PROPERTIES FOLDER "BRL-CAD Conversion Tests")
add_dependencies(convert ${conversion_deps_list})
endif (BRLCAD_ENABLE_TCL)
list(REMOVE_DUPLICATES conversion_deps_list)
foreach(gfile ${conversion_g_files})
set(conversion_g_files_fp ${conversion_g_files_fp} "${CMAKE_BINARY_DIR}/${DATA_DIR}/db/${gfile}")
endforeach(gfile ${conversion_g_files})
add_custom_target(convert COMMAND ${SH_EXEC} ${CMAKE_SOURCE_DIR}/sh/conversion.sh GED=$<TARGET_FILE:mged> ${conversion_g_files_fp})
set_target_properties(convert PROPERTIES EXCLUDE_FROM_DEFAULT_BUILD 1)
set_target_properties(convert PROPERTIES FOLDER "BRL-CAD Conversion Tests")
add_dependencies(convert ${conversion_deps_list})
endif(SH_EXEC)
CMAKEFILES(
-41
View File
@@ -1,41 +0,0 @@
string(REPLACE "\\" "" GCV_EXEC "${EXEC}")
set(INPUT_FILE "@INPUT_FILE@")
set(OUTPUT_FILE "@OUTPUT_FILE@")
set(BIN_DIR "@BIN_DIR@")
# NOTE: OUTPUT_FILE needs to be defined in terms of a path relative to the root
# of the build diretory, not as an absolute path. Since that root may change
# at runtime in multiconfig builds, the full output path cannot be encoded
# directly into the generated script.
get_filename_component(OF_ABS "${OUTPUT_FILE}" ABSOLUTE)
if ("${OF_ABS}" STREQUAL "${OUTPUT_FILE}")
message(FATAL_ERROR "Absoute output file path \"${OUTPUT_FILE}\" supplied for conversion of \"${INPUT_FILE}\" - path must be relative.")
endif ("${OF_ABS}" STREQUAL "${OUTPUT_FILE}")
# Because the build directory changes at runtime in multiconfig builds, we
# need to deduce its current value from GCV_EXEC.
get_filename_component(CBDIR "${GCV_EXEC}" DIRECTORY)
string(REGEX REPLACE "${BIN_DIR}$" "" CROOT "${CBDIR}")
# BRLCAD_ROOT is the hammer that makes certain we are running
# things found in the build directory.
set(ENV{BRLCAD_ROOT} "${CROOT}")
# Now that we know the root, finalize the full path output file location
set(OUTPUT_FILE "${CROOT}/${OUTPUT_FILE}")
execute_process(
COMMAND "${GCV_EXEC}" -o "${OUTPUT_FILE}" "${INPUT_FILE}"
RESULT_VARIABLE conv_result OUTPUT_VARIABLE conv_log ERROR_VARIABLE conv_log
)
if(conv_result)
message(FATAL_ERROR "[geometry conversion] Failure: ${conv_result}\n${GCV_EXEC} -o \"${OUTPUT_FILE}\" \"${INPUT_FILE}\"\n\n${conv_log}")
endif(conv_result)
# Local Variables:
# tab-width: 8
# mode: cmake
# indent-tabs-mode: t
# End:
# ex: shiftwidth=2 tabstop=8
+65 -64
View File
@@ -2,30 +2,45 @@ verbose_add_subdirectory(doc docbook)
verbose_add_subdirectory(doc html)
verbose_add_subdirectory(doc legal)
CMAKEFILES(
parsers/bison_to_lemon.txt
parsers/flex_to_re2c.txt
parsers/templates/CMakeLists.txt
parsers/templates/main.c
parsers/templates/main.h
parsers/templates/parser.lemon
parsers/templates/scanner.perplex
parsers/writing_perplex_lemon_parsers.txt
)
set(documentation_DATA
BRL-CAD.bib
IDEAS
PROJECTS
README.AIX
README.BSD
README.IRIX
README.Linux
README.MacOSX
README.Solaris
README.VAX
README.Windows
README.other/README.AIX
README.other/README.BSD
README.other/README.IRIX
README.other/README.Solaris
README.other/README.VAX
TODO.BREP
TODO.shaded_displays
archer_ack.txt
benchmark.tr
bu_opt_design_notes.txt
brep.txt
BRL-CAD.bib
checklist.txt
cvs.txt
description.txt
notes/TODO.BREP
notes/TODO.shaded_displays
notes/brep.txt
notes/bu_opt_design_notes.txt
notes/cvs.txt
notes/editors.txt
notes/history.txt
notes/hypot.txt
notes/mater.txt
notes/matrix.txt
editors.txt
ged.tr
history.txt
hypot.txt
irprep.tr
mater.txt
matrix.txt
pre_BRL-CAD.bib
)
ADD_DOC(documentation_DATA ".")
@@ -195,11 +210,13 @@ set(documentation_mged_old_DATA
mged/wm-leg1.ps
mged/wm-prims.ps
mged/wm-tube.ps
notes/ecosystem.dot
notes/regions.txt
notes/rounding.txt
notes/tool_categories.txt
mk.tr
old-mged.tr
pkg.tr
regions.txt
rounding.txt
tool_categories.txt
ecosystem.dot
)
ADD_DOC(documentation_mged_old_DATA mged_old)
@@ -208,57 +225,41 @@ install(FILES "${CMAKE_CURRENT_BINARY_DIR}/pad_file.xml" DESTINATION ${DOC_DIR})
CMAKEFILES(
CMakeLists.txt
README.other/README.OSCON-2014
README.OSCON-2014
STARTERS
STRATEGY
notes/bsd_semaphore_bug.txt
notes/cmake_paths/CMakeLists.txt
notes/cmake_paths/README.txt
notes/cmake_paths/dir_info.c
notes/cmake_paths/test.cmake.in
notes/cmake_vars.txt
notes/csv_to_comgeom.txt
notes/implicit_constraints.txt
notes/lcov.txt
cmake_vars.txt
csv_to_comgeom.txt
implicit_constraints.txt
lcov.txt
pad_file.xml.in
trunk_hierarchy.org
)
# Generic C/C++ examples
CMAKEFILES(
notes/c_cxx_patterns/01_basic_C/CMakeLists.txt
notes/c_cxx_patterns/01_basic_C/main.c
notes/c_cxx_patterns/01_basic_C/nlib.c
notes/c_cxx_patterns/01_basic_C/nlib.h
notes/c_cxx_patterns/02_hidden_C/CMakeLists.txt
notes/c_cxx_patterns/02_hidden_C/main.c
notes/c_cxx_patterns/02_hidden_C/nlib.c
notes/c_cxx_patterns/02_hidden_C/nlib.h
notes/c_cxx_patterns/03_PImpl_C/CMakeLists.txt
notes/c_cxx_patterns/03_PImpl_C/main.c
notes/c_cxx_patterns/03_PImpl_C/nlib.c
notes/c_cxx_patterns/03_PImpl_C/nlib.h
notes/c_cxx_patterns/04_hidden_CXX/CMakeLists.txt
notes/c_cxx_patterns/04_hidden_CXX/main.c
notes/c_cxx_patterns/04_hidden_CXX/nlib.cxx
notes/c_cxx_patterns/04_hidden_CXX/nlib.h
notes/c_cxx_patterns/05_PImpl_CXX/CMakeLists.txt
notes/c_cxx_patterns/05_PImpl_CXX/main.c
notes/c_cxx_patterns/05_PImpl_CXX/nlib.cxx
notes/c_cxx_patterns/05_PImpl_CXX/nlib.h
notes/c_cxx_patterns/CMakeLists.txt
notes/c_cxx_patterns/README
)
# Notes about parser generators
CMAKEFILES(
notes/parsers/bison_to_lemon.txt
notes/parsers/flex_to_re2c.txt
notes/parsers/templates/CMakeLists.txt
notes/parsers/templates/main.c
notes/parsers/templates/main.h
notes/parsers/templates/parser.lemon
notes/parsers/templates/scanner.perplex
notes/parsers/writing_perplex_lemon_parsers.txt
c_cxx_patterns/01_basic_C/CMakeLists.txt
c_cxx_patterns/01_basic_C/main.c
c_cxx_patterns/01_basic_C/nlib.c
c_cxx_patterns/01_basic_C/nlib.h
c_cxx_patterns/02_hidden_C/CMakeLists.txt
c_cxx_patterns/02_hidden_C/main.c
c_cxx_patterns/02_hidden_C/nlib.c
c_cxx_patterns/02_hidden_C/nlib.h
c_cxx_patterns/03_PImpl_C/CMakeLists.txt
c_cxx_patterns/03_PImpl_C/main.c
c_cxx_patterns/03_PImpl_C/nlib.c
c_cxx_patterns/03_PImpl_C/nlib.h
c_cxx_patterns/04_hidden_CXX/CMakeLists.txt
c_cxx_patterns/04_hidden_CXX/main.c
c_cxx_patterns/04_hidden_CXX/nlib.cxx
c_cxx_patterns/04_hidden_CXX/nlib.h
c_cxx_patterns/05_PImpl_CXX/CMakeLists.txt
c_cxx_patterns/05_PImpl_CXX/main.c
c_cxx_patterns/05_PImpl_CXX/nlib.cxx
c_cxx_patterns/05_PImpl_CXX/nlib.h
c_cxx_patterns/CMakeLists.txt
c_cxx_patterns/README
)
# Local Variables:
+849
View File
@@ -0,0 +1,849 @@
.\" $Header$
.\" groff -t -ms -X benchmark.tr
.\" groff -t -ms benchmark.tr | print-postscript
.\"
.\" sort '-t ' +7nr -8
.de BR
\fB\\$1\fR\\$2
..
.TL
The BRL-CAD Benchmark Suite
.AU
Michael John Muuss
.AU
Charles M. Kennedy
.AU
Lee A. Butler
.AI
The U.S. Army Research Laboratory
.PP
This document describes the BRL-CAD Benchmark Suite Methodology, and
the Ray-Tracing Figure of Merit (RTFM) used to judge the computational
performance of different computer systems.
.PP
The core of the test is the \fBrt\fR ray-tracing program. The results
for each processor are determined by running a benchmark test of the
RT ray-tracing program on each of the sample databases provided. The
\fBrt\fR program requires a binary database for input ("db/xxx.g"),
and produces a binary image as output ("bench/xxx.pix"), along with a
log file ("bench/xxx.log"). Each run will produce a 512x512x24 bit
color shaded image in a "bench/xxx.pix" file, and a run log in
"bench/xxx.log". Reference copies of the images are provided as
"pix/xxx.pix" and "pix/xxx.log". The sample databases provided are
processed in order of increasing difficulty, and each produces a
colorful image. In each picture there are two light sources; the
primary source is located near the center of the model (the white
ball), and the secondary light source is located at the "eye"
position.
.NH 1
The Benchmark Models
.LP
moss.g -- This is a simple model, containing a yellow torus, a green
ellipsoid, a bluish cube, a pink truncated (distorted) cone, all
sitting on a blue plate. Note the shadowing, and "specular splash".
.sp
world.g -- The same model as moss.g, but with various rendering
features enabled. The model is enclosed in a hollow cloud sphere.
The plate is a mirror, the egg is crystal, the box has a debugging
texture map applied.
.sp
star.g -- A familiar sight to Star Trek fans; a low-detail exterior of
the ship "Enterprise". The hull is white, with some other structures
in other colors. The small red object in the foreground is the
shuttlecraft Galileo, to scale.
.sp
bldg391.g -- An exploded view of a two-story imaginary computer site,
including various walls, red stairways, green disk drives, etc. The
lower floor is a mirror, the upper floor is glass.
.sp
m35.g -- A truck.
.sp
sphflake.g -- A sphereflake.
.NH 1
MACHINE INDEPENDENCE
.PP
To make the benchmark distribution machine independent, the databases
are provided in an ASCII format in the "db" directory, and
ascii-to-binary converters are provided in the "conv" directory. The
setup command "\fBcake benchmark\fR" (see the document \fIInstalling
the BRL-CAD Package\fR) will automatically compile and run the
converters.
.PP
If you are running this benchmark on a non-UNIX machine that has
difficulty writing binary streams, change the "-o file.pix" flag to
"-O file.a_pix" and RT will write an ASCII form directly. For more
discussion, consult the doc/pix.5 and conv/asc2pix.1 manual pages.
.PP
The reference images are distributed in binary BRL-CAD
.BR pix (5)
format. Earlier releases distributed the reference images in the
portable ASCII form, and then converted them to the binary form. This
consumed a significant amount of extra storage on UNIX machines, so
this practice was discontinued. It is assumed that anyone attempting
to benchmark a system that can not read pure binary files will at
least have access to a UNIX system. That UNIX system can be used to
convert the reference images to the portable ASCII form with the
.BR pix2asc (1)
tool, and then those images may be sent to the machine under test.
.PP
Information about modifying the benchmark to run on a particular
system may be found in the document \fIInstalling the BRL-CAD
Package\fR. For a detailed explanation of various hardware specific
modifications necessary to take advantage of parallel processing, see
the document \fIWorkstations, Networking, Distributed Graphics, and
Parallel Processing\fR. Implementations for several different types
of hardware in use at ARL are included.
.PP
If you encounter difficulty with running the benchmark, you might wish
to build the full BRL-CAD package, to take advantage of the image
tools in determining the nature of the problem. For example, one
system suffered from a compiler bug that made TGC solids vanish, while
another system had difficulties with the light visibility
calculations.
.NH 1
OBTAINING CORRECT RESULTS
.PP
The benchmark timings are not considered valid unless the correct
results are given. Make sure that the answers match the reference
files to within plus-or-minus one in each color (see pixdiff(1)).
Slight variations in the calculated pixels are generally attributable
to variations in floating point precision. You may wish to compare
the execution times and log file remarks from your tests (in the
"bench/xxx.log" files) with the VAX-11/780 (with hardware FPA) times
which are given in the "pix/xxx.log" files. The log file for sphflake
has yet to be run on the same system, causing weighted results. It's
still useful and informative, however, for deriving performance
statistics. The reference images are also located in the "pix/"
directory.
.PP
For example, if you are running the benchmark on a Cray XMP, the
world.pix and bldg391.pix images will have a single byte in the blue
channel off by 1, out in the cloud background. This is not to be
considered an error.
.NH 1
BENCHMARK IMAGE DISPLAY
.PP
If you have a suitable framebuffer, you may wish to display the images
generated by the benchmark, and compare them to the reference images.
This section assumes that you have successfully compiled the full set
of BRL-CAD software, not just the benchmark portion. Programs for
dealing with images are in the "util" directory. To display a
\fBpix\fR(5) file on a framebuffer, set environment variable FB_FILE
(see \fBbrlcad\fR(1) for details), and run \fBpix-fb\fR. Note that by
leaving FB_FILE unset, your default display will be used.
.sp
.nf
.ft B
cd bench
pix-fb moss.pix
.ft R
.fi
.sp
If the images computed on your machine do not match the reference
images, the program "util/pixdiff" will compute a pix file that will
highlight the differences for you, and report a summary of bytes
equal, off-by-1, and off-by-many, e.g.,
.sp
.ft B
pixdiff moss.pix ../pix/moss.pix \(or pix-fb
.ft R
.fi
.sp
For a display of the relative magnitude of the differences at each
pixel, use "util/bwdiff" instead, e.g.,
.sp
.nf
.ft B
bwdiff moss.pix ../pix/moss.pix \(or pix-fb
.ft R
or
.ft B
bwdiff moss.pix ../pix/moss.pix \(or \\
bwmod -s 128 -m 4 -a 128 \(or pix-fb
.ft R
.fi
.sp
and for statistics on the differences, use
.sp
.ft B
bwdiff moss.pix ../pix/moss.pix \(or pixstat
.ft R
.ne 8i
.NH 1
THE COMPETITION
.PP
The full benchmark takes about 9 CPU hours on a VAX-11/780, so you
should scale your expectations accordingly.
.PP
Here is a sampling of some systems that have been tested, with as much
information about the configuration as could be obtained. Some
systems have a great many options for small things that can affect
performance, such as memory interleaving.
.LP
.TS
center box;
l l.
System Name Configuration
_ _
axposf DEC Alpha 4000/710, 256M, OSF/1 V3.0 \(dg
ex-art Pentium-P90, 16MB, 256K cache, BSD/OS 2.0,
hawks 486DX/33, 24MB, 256K cache, BSD/OS 2.0
orac 486/100, 20MB, No cache, BSD/OS 2.0 (laptop)
pk Cray C90, C916/161024, UNICOS 8.0.2.4
vapor SGI, 18* 75 MHz R8000 IP21, 1024M RAM 8-way, Irix 6.0
vblt 66 MHz 486DX2/66, 16M RAM, Linux 1.1.73
vgr DEC VAX-11/780 w/FPA, 64M RAM, 4.3 BSD
vision Sun-3/280 w/68881 FPA, 16M RAM, SunOS 4.1.1
voyage SGI, 4* 25 MHz R3000 IP7, 56M RAM, Irix 4.0.1
whiz SGI Ingido**2, 100 MHz IP22, 96M RAM, Irix 5.2
waffle SGI, 4* 25 MHz R3000 IP7, 64M RAM, Irix 4.0.5 (heavy network use)
warp Sun SPARCstation 5, 32M RAM, SunOS 4.1.4
wax SGI, 24* 150 MHz R4400 IP19, 1024M RAM 4-way, Irix 5.2
wilson SGI, 8* 100 MHz R4400 IP19, 1024M RAM 8-way, Irix 5.2
wilted Sun-4/25 ELC, 16M RAM, SunOS 4.1.1
wimp 33 MHz 386DX/33 w/387, 256k cache, 16M RAM, BSDI 2.0beta2
wimpy Sun SS10BSX-GX, 2* 50 MHz SuperSPARC, 64M RAM, SunOS 5.4
wizard SGI Ingido**2, 150 MHz IP22, 96M RAM, Irix 5.3
.TE
\(dg The Alpha was heavily loaded while the benchmark was being run.
DEC requires us to show the load average at the time:
.br
03:28 up 18 days, 10:59, 7 users, load average: 2.00, 2.00, 2.08
.NH 1
BENCHMARK RESULTS
.PP
In the tradition of Dongarra, the Rays/sec figure is considered the
"RT Figure of Merit" (RTFM). Note that the RTFM can only be compared
between different runs on the \fIsame\fR database; it is not
meaningful to compare RTFM numbers between different databases. The
Rays/sec number for a multi-processor machine is for "aggregate CPU
cluster seconds", rather than rays/total CPU seconds (which remains
fairly constant on good parallel machines).
.PP
The statistics are recorded in an easily understood format, with all
results for a particular configuration listed on a single line. The
numbers reported are the rays/sec (RTFM) figure. Entries denoted with
a dagger ("\(dg") produced incorrect results. Entries denoted with a
dash ("-") were not available and should be considered differently
than those entries with a dagger. Generally the results are not
available because time constraints prevented running the complete set
of databases.
.fi
.br
.ne 8i
.NH 1
RELEASE 4.4 STATISTICS (4-Jan-1995)
.PP
There is very little difference in RTFM numbers between Release 4.0
and Release 4.4, so they can be usefully compared. In some cases the
4.4 performance is slower due to the use of shared libraries. For
example "vision" dropped from 1.33 to 1.22 due to the shared
libraries. For most users reducing the disk consumption from 300
MBytes to 30 MBytes makes this a reasonable tradeoff. However, for
the best performance, use non-shared libraries.
.LP
.TS H
expand box;
l | n n n n n | n | l.
H/W Moss World Star Bldg M35 Mean S/W Notes
_
.TH
vapor 810.91 1091.39 1012.63 1027.25 1092.85 1007 -P18 static
vapor 773.8 1038.7 979.49 970.91 1036.62 959.9 -P17
vapor 732.85 1021.69 968.93 922.62 1024.15 934.04 -P18 (SW lock)
wax 769.38 940.83 953.36 924.7 1050.14 927.68 -P24
vapor 730.17 994.97 934.43 917.1 987.83 912.9 -P16
wax 725.26 957.68 927.61 932.67 992.75 907.19 -P24
wax 756.95 915.96 940.43 903.45 966.09 896.57 -P23
vapor 686.8 939.63 897.72 884.39 927.16 867.14 -P15
wax 691.18 853.75 887.17 859.32 933.41 844.96 -P21
wax 724.73 683.08 890.87 900.82 939.31 827.76 -P22
vapor 645.32 881.18 843.23 801.41 859.26 806.08 -P14
wax 637.28 757.74 820.21 871.37 877.6 792.84 -P20
vapor 608.12 835.84 795.36 759.95 806.32 761.11 -P13
_
wax 606.98 784.3 754.46 799.95 794.52 748.04 -P19
wax 590.16 758.23 794.06 794.52 757.79 738.95 -P18
wax 579.29 722.35 787.55 720.26 754.65 712.82 -P17
vapor 571.14 783.72 740.47 697.24 746.72 707.85 -P12
wax 553.72 697.1 744.21 663.61 723.03 676.33 -P16
vapor 534.85 716.58 685.87 656.25 685.77 655.86 -P11
wax 519.01 655.57 690.95 651.9 663.92 636.27 -P15
wax 475.88 637.33 665.38 608.31 653.99 608.17 -P14
vapor 499.46 663.26 633.48 614.58 624.34 607.02 -P10
wax 449.16 591.54 616.21 590.59 614.25 572.35 -P13
vapor 463.3 598.34 575.07 555.62 560.89 550.64 -P9
wax 424.71 556.8 595.02 521.63 538.78 527.38 -P12
vapor 424.89 534.5 509.85 497.63 503.99 494.17 -P8
wax 391.66 490.63 545.28 488.57 508.96 485.02 -P11
wax 315.45 472.03 525.47 442.37 461.44 443.35 -P10
vapor 381.1 467.67 440.13 425.57 442.04 431.3 -P7
wax 309.35 426.37 386.11 417.85 434.96 394.92 -P9
vapor 336.55 392.2 390.72 373.92 380.03 374.68 -P6
_
wax 307.6 361.32 396.07 380.17 380.74 365.18 -P8
wax 245.87 332.33 362.5 338.62 331.39 322.14 -P7
vapor 288.45 327.78 328.76 314.54 320.16 315.93 -P5
wax 254.82 255.29 299.93 302.08 256.54 273.73 -P6
wilson 223.01 265.17 287.8 262.19 269.62 261.55 -P8
vapor 240.6 269.93 266.46 253.99 259.05 258 -P4
wax 215.96 231.65 221.78 248.63 221.45 227.89 -P5
wax 177.94 185.27 213.74 201.64 197.27 195.17 -P4
vapor 187.58 198.84 202.28 191.94 194.74 195.07 -P3
wax 120.4 138.01 162.12 159.36 141.33 144.24 -P3
vapor 130.61 140.04 134.88 129.38 129.78 132.93 -P2
wax 100.83 102.09 111.12 87.26 98.62 99.98 -P2
wimpy 99.10 95.78 92.15 97.51 96.65 96.23 -P2
wimpy 82.14 93.60 92.17 103.59 82.22 90.74 -P2
_
axposf 81.05 82.27 86.72 84.36 79.28 82.73 -P1
vapor 79.68 77.7 73.89 71.38 70.06 74.54 -P1 static
vapor 69.34 70.14 67.52 65.55 66.69 67.84 -P1 shared
wizard 63.8 55.86 68.97 73.21 61.56 64.68
wax 62.28 58.58 65.24 67.39 59.31 62.56 -P1
wax 59.08 56.06 61.45 64.4 56.11 59.42 -P1
voyage 52.78 55.44 58.19 58.03 52.41 55.37 -P4
pk 64.89 55.71 48.01 49.50 53.43 54.30 -P1
waffle 38.56 47.63 62.36 59.62 51.20 51.87 -P4
wimpy 50.17 48.82 50.46 55.12 49.27 50.76 -P1
wimpy 47.80 43.23 51.37 54.10 46.23 48.54 -P1
weber 46.53 43.45 50.88 50.33 46.03 47.44 -P1
wilson 41.16 39.54 45.98 42.93 34.82 40.88 -P1
whiz 36.25 31.08 37.21 39.62 36.98 36.22
warp 19.88 21.33 23.71 24.19 22.60 22.34
ex-art 16.89 18.54 22.98 26.97 25.57 22.19
orac 7.57 8.23 10.72 12.43 11.30 10.05
wilted 9.58 9.53 10.66 10.53 9.87 10.03
hawks 3.64 4.17 5.71 6.90 6.23 5.33
vblt 4.85 4.89 5.29 5.24 4.90 5.03
wimp 1.16 1.34 1.82 2.25 2.06 1.72
vision 1.07 1.23 1.23 1.31 1.26 1.22 -P1
vgr 1.0 1.0 1.0 1.0 1.0 1.0
.TE
.br
.ne 8i
.NH 1
THE OLD COMPETITION
.PP
These are the definitions for systems measured in previous tests.
.LP
.TS
center box;
l l.
System Name Configuration
_ _
alliant Alliant FX/8 (8 CEs, 9 IPs, 64 Mbytes), Concentrix 3.0
amber HP 9000/720, 32 MB memory
amsaa-seer Gould PN 9080, w/MACCs, UTX 2.0, 4x4Mb mem boards
ardec-3 Pyramid 90Mx, Dual-CPU, OSx 2.5, 16 Mbytes
bob Cray-2, SN 2009, 4.3ns clock
cor3 Pyramid MIS-12T/3, OSx 192
patton Cray X-MP/48, SN213, UNICOS 5.0, 8.5ns clock
uy1 Cray Y-MP8/2128, UNICOS 5.1.11
shpcrc2 IBM RS/6000, AIX 3.1
slc1 Macintosh II, 68020, 68881, AUX 1.1, GCC 1.39
spark Gould PN 9050, no MACC, UTX 2.0, 2x4Mb mem boards
sws2 Convex C120, 16 Mbytes, Convex Unix 6.2.32.2
vector Alliant FX/80 (8 ACEs, 6 IPs, 32 Mbytes), Concentrix
venom Alliant FX/8 (8 CEs, 6 IPs, 32 Mbytes), Concentrix
vgr VAX 780, FPA, 4.3 BSD
virus Sun-3/50, 15 Mhz clock, 12 Mhz 68881, Sun UNIX 3.2
vista SGI 3030, w/FP chip, UNIX release 3.5
vmb Gould PN 9080, no MACCs, UTX 2.0, 12x1Mb mem boards
vhs Silicon Graphics 4D/60T, 12.5 Mhz clock 16 MB memory
ovoyage Silicon Graphics 4D/120, 16.7 Mhz clock 16 MB memory
taylor Silicon Graphics 4D/220, 25 Mhz clock 16 MB memory
crim Silicon Graphics 4DCRIMS 50Mhz clock 128 MB memory
wiltse Silicon Graphics 4D R4000 50Mhz clock
c1east T{
Convex C1 XP (2 IOPs, 4 Multibus, 64 Mbytes),
S/W 6.0.1.12
T}
elxsi-gnu Elxsi 6420, BSD 4.2 16 MB
elxsi-gnuy Elxsi 6420, Sys Vr2, 16MB
elxsi-m1 Elxsi 6410, BSD 4.2 16 MB
hep Denelcor HEP, 4 PEMs
indigo SGI Iris 3030, FPA, GL2-W3.5
mseries T{
MIPS Mseries, Release 0.6, UMIPS 2.1, 16 MB of R2350 RAM.
R2000 CPU rev 5.0, R2010 FP rev 2.0
T}
multiflow Multiflow Trace 7/200 (PRELIMINARY)
nova T{
Sun SPARCserver 490, 32 Mb, 33 MHz clock, 33 MHz TI 8847 FPU, SunOS 4.1.1B
T}
rh2 Tektronix, Motorola 88000
snm2 Cray 1-M, SN2, UNICOS 2.0
sws1 Convex C1, ConvexOS 9.1 48MB memory
tek4132 Tektronix 4132, 32082 fpp, UTek 2.3
utah-gr VAX 785, FPA, 4.3 BSD
utah-cs VAX 8600, FPA, 4.3 BSD
veto Sun 4/260 32MB memory Sun UNIX 4.0.3
violet VaxStationII GPX, Ultrix 1.2
vision Sun-3/280, 16 MB memory
vortac Sun-3/160, 16.67 Mhz clock, 12 Mhz 68881, Sun 3.2
walrus Silicon Graphics 4D/280 25 Mhz clock 64 MB memory Irix 3.3.1
whiz Silicon Graphics 4D/240 25 Mhz clock 56 MB memory Irix 3.3.1
whisper Sun SPARCStation 1+
wilted Sun SPARCstation ELC , Diskless, 12MB memory Sun UNIX 4.1.1
worm Silicon Graphics 4D/280 25 Mhz clock 64 MB memory Irix 3.3.1
.TE
.br
.ne 8i
.NH 1
OLD BENCHMARK RESULTS
.PP
These are the results of previous benchmarks.
.NH 1
RELEASE 1.20 STATISTICS (12-Feb-1987)
.LP
.TS H
expand box;
l l | n n n n | n | l.
A/* H/W Moss World Star Bldg Mean S/W Notes
_
.TH
Rays tek4132 80.5 44.0 33.9 31.4 ? UTek 2.3
*vgr tek4132 0.72 0.69 0.62 0.62 ?
_
Rays violet 107.7 57.3 44.7 44.1 ? Ultrix 1.2
*vgr violet 0.96 0.90 0.81 0.87 ?
_
Rays violet 119.0 63.0 50.0 46.3 ? Ultrix 1.2,
*vgr violet 1.06 0.99 0.91 0.91 ? w/fast_sqrt
_
Rays vgr 112.1 63.6 55.0 50.7 ? BSD 4.3
*vgr vgr 1.0 1.0 1.0 1.0 1.0
_
Rays indigo 115.9 85.3 \(dg 101.8 ? GL2-W3.5
*vgr indigo 1.03 1.34 \(dg 2.01 ?
_
Rays vista 116.4 86.0 \(dg 102.3 ? SGI UNIX 3.5
*vgr vista 1.04 1.35 \(dg 2.02 ?
_
Rays virus 127.3 69.9 57.0 52.4 ? Sun UNIX 3.2
*vgr virus 1.14 1.10 1.04 1.03 ?
_
Rays vortac 148.2 81.0 65.8 60.7 ? Sun UNIX 3.2
*vgr vortac 1.32 1.27 1.20 1.20 ?
_
Rays utah-gr 191.8 105.8 89.9 86.5 ? 4.3 BSD
*vgr utah-gr 1.71 1.66 1.64 1.71 ?
_
Rays ardec-3 - 68.4 57.2 - ? OSx 2.5
*vgr ardec-3 - 1.08 1.04 - ?
_
Rays elxsim1 380.5 232.2 204.8 189.3 ? BSD 4.2
*vgr elxsim1 3.39 3.65 3.72 3.73 ?
_
Rays spark 413.4 232.0 213.8 211.9 ? UTX 2.0
*vgr spark 3.69 3.65 3.89 4.18 ?
_
Rays vmb 413.9 233.4 210.6 212.6 ? UTX 2.0
*vgr vmb 3.69 3.67 3.83 4.19 ?
_
Rays c1east 454.8 252.4 205.6 192.3 ? Convex UNIX 6.0.1.12,
*vgr c1east 4.06 3.97 3.74 3.80 ? vanilla cc
_
Rays seer 460.7 263.2 246.8 241.0 ? UTX 2.0
*vgr seer 4.11 4.14 4.49 4.75 ?
_
Rays venom 492.9 228.0 180.0 157.1 ? Concentrix 2.0
*vgr venom 4.40 3.58 3.27 3.10 ?
_
Rays elxgnu 520.6 315.4 264.4 242.0 ? BSD 4.2
*vgr elxgnu 4.64 4.96 4.81 4.77 ?
_
Rays utah-cs 521.1 292.1 237.4 216.2 ? BSD 4.3
*vgr utah-cs 4.64 4.59 4.32 4.27 ?
_
Rays c1east 521.6 285.3 230.5 215.1 ? Convex UNIX 6.0.1.12,
*vgr c1east 4.66 4.49 4.20 4.24 ? vc -O1 (scalar)
_
Rays c1east 527.7 287.4 228.7 210.0 ? Convex UNIX 6.0.1.12,
*vgr c1east 4.71 4.52 4.16 4.14 ? vc -O2 (vector)
_
Rays elxgnuy 644.7 349.3 264.6 242.1 ? System Vr2
*vgr elxgnuy 5.75 5.49 4.81 4.77 ?
_
Rays mflow 845.2 439.5 313.1 338.9 ? (preliminary)
*vgr mflow 7.54 6.91 5.69 6.68 ?
_
Rays venom 904.9 424.6 349.3 312.6 ? Concentrix 2.0,
*vgr venom 8.07 6.68 6.35 6.17 ? 2 CEs, no vectors
_
Rays venom 1375.5 650.0 523.4 459.9 ? Concentrix 2.0,
*vgr venom 12.27 10.22 9.52 9.07 ? 3 CEs, no vectors
_
Rays venom 1813.5 845.5 686.0 600.7 ? Concentrix 2.0,
*vgr venom 16.17 13.29 12.47 11.85 ? 4 CEs, no vectors
_
Rays venom 2364.1 1104.4 870.2 775.9 ? Concentrix 2.0,
*vgr venom 21.08 17.36 15.82 15.3 ? 5 CEs, no vectors
_
Rays snm2 2492.9 - - - ? Unicos 2.0,
*vgr snm2 22.24 - - - ? no vectors, no optim
_
Rays hep 2502.0 - - - ? 1 PEM, npsw=10
*vgr hep 22.32 - - - ?
_
Rays venom 2811.4 1319.0 1051.6 918.0 ? Concentrix 2.0,
*vgr venom 25.08 20.74 19.12 18.1 ? 6 CEs, no vectors
_
Rays venom 3248.8 1533.0 1232.3 1065.9 ? Concentrix 2.0,
*vgr venom 28.98 24.10 22.41 21.02 ? 7 CEs, no vectors
_
Rays patton 3453.3 1514.3 1271.2 1027.3 ? COS V115BF2
*vgr patton 30.81 23.81 23.11 20.26 ? 1 CPU, no vectors
_
Rays venom 3677.3 1724.2 1375.4 1208.4 ? Concentrix 2.0,
*vgr venom 32.80 27.11 25.01 23.83 ? 8 CEs, no vectors
_
Rays alliant 3972.9 1840.0 1457.2 1266.4 ? Concentrix 3.0,
*vgr alliant 35.44 28.93 26.49 24.98 ? 8 CEs, no vectors
_
Rays hep 4055.9 - - - ? 1 PEM, npsw=40
*vgr hep 36.18 - - - ?
_
Rays patton 6856.6 - 2522.2 - ? COS V115BF2
*vgr patton 61.16 - 45.86 - ? 2 CPUs, no vectors
_
Rays patton 10205.1 - 3749.9 - ? COS V115BF2
*vgr patton 91.04 - 68.18 - ? 3 CPUs, no vectors
_
Rays patton 13320.2 - 4955.6 - ? COS V115BF2
*vgr patton 118.82 - 90.10 - ? 4 CPUs, no vectors
.TE
.NH 1
RELEASE 2.3 STATISTICS (2-Nov-1987)
.LP
.TS H
expand box;
l l | n n n n | n | l.
A/* H/W Moss World Star Bldg Mean S/W Notes
_
.TH
Rays vgr 118.8 64.9 36.5 34.2 ? BSD 4.3
*vgr vgr 1.0 1.0 1.0 1.0 1.0
_
Rays vmb 375.4 218.6 186.4 196.2 ? UTX 2.0
*vgr vmb 3.16 3.37 5.11 5.74 ?
_
Rays venom 468.2 221.7 166.1 144.9 ? Concentrix 3.0,
*vgr venom 3.94 3.42 4.55 4.24 ? 1 CE, no vectors
_
Rays sws2 471.9 258.4 202.5 186.4 ? Convex Unix 6.2.32.2
*vgr sws2 3.97 3.98 5.55 5.45 ? vanilla cc -O
_
Rays vector 656.6 301.6 221.1 195.0 ? Concentrix 3.0,
*vgr vector 5.53 4.65 6.06 5.70 ? 1 ACE, no vectors
_
Rays venom 827.3 424.0 327.1 287.9 ? Concentrix 3.0,
*vgr venom 6.96 6.53 8.96 8.42 ? 2 CEs, no vectors
_
Rays vhs 958.3 545.6 447.0 414.1 ? -O2 optimization
*vgr vhs 8.07 9.41 12.25 12.11 ?
_
Rays mseries 988.3 603.5 515.6 491.6 ?
*vgr mseries 8.32 9.29 14.13 14.37 ?
_
Rays vector 1280.9 596.8 436.7 389.2 ? Concentrix 3.0,
*vgr vector 10.78 9.19 11.96 11.38 ? 2 ACEs, no vectors
_
Rays venom 1288.7 630.6 486.4 428.0 ? Concentrix 3.0,
*vgr venom 10.85 9.72 13.33 12.51 ? 3 CEs, no vectors
_
Rays venom 1732.9 853.2 645.4 560.1 ? Concentrix 3.0,
*vgr venom 14.59 13.15 17.68 16.38 ? 4 CEs, no vectors
_
Rays bob 1856.7 801.9 574.1 500.3 ? 1 CPU, UNICOS 3.0,
*vgr bob 15.63 12.36 15.73 15.62 ? CC -O
_
Rays vector 1952.1 881.7 647.6 578.8 ? Concentrix 3.0,
*vgr vector 16.43 13.58 17.74 16.92 ? 3 ACEs, no vectors
_
Rays venom 2158.4 1031.3 797.3 703.1 ? Concentrix 3.0,
*vgr venom 18.17 15.89 21.84 20.56 ? 5 CEs, no vectors
_
Rays bob 2346.1 1127.4 751.0 677.2 ? 1 CPU UNICOS 4.0
*vgr bob 19.75 17.37 20.57 19.80 ? CC -O
_
Rays bob 2423.5 1045.7 719.3 609.4 ? 1 CPU, UNICOS 3.0,
*vgr bob 20.40 16.11 19.71 17.82 ? VCC -O
_
Rays vector 2546.2 1170.0 867.2 758.7 ? Concentrix 3.0,
*vgr vector 21.43 18.03 23.76 22.18 ? 4 ACEs, no vectors
_
Rays venom 2633.7 1232.7 943.4 839.5 ? Concentrix 3.0,
*vgr venom 22.17 18.99 25.85 24.55 ? 6 CEs, no vectors
_
Rays venom 2769.4 1393.3 1098.1 971.6 ? Concentrix 3.0,
*vgr venom 23.31 21.47 30.08 28.41 ? 7 CEs, no vectors
_
Rays vector 3131.2 1453.8 1065.8 945.4 ? Concentrix 3.0,
*vgr vector 26.36 22.40 29.20 27.64 ? 5 ACEs, no vectors
_
Rays venom 3368.7 1605.3 1231.3 1095.11 ? Concentrix 3.0,
*vgr venom 28.36 24.73 33.73 32.02 ? 8 CEs, no vectors
_
Rays patton 3456.5 1691.8 1169.0 1043.6 ? 1 CPU, UNICOS 2.1
*vgr patton 29.10 26.07 32.03 30.51 ? no vectors
_
Rays vector 3686.4 1688.6 1259.1 1129.0 ? Concentrix 3.0,
*vgr vector 31.03 26.02 34.49 33.01 ? 6 ACEs, no vectors
_
Rays vector 4140.3 1953.0 1463.3 1299.7 ? Concentrix 3.0,
*vgr vector 34.85 30.09 40.09 38.00 ? 7 ACEs, no vectors
_
Rays bob 4641.7 2243.4 1498.2 1358.1 ? 2 CPUs, UNICOS 4.0
*vgr bob 39.07 34.57 41.05 39.71 ? CC -O
_
Rays vector 4712.2 2226.3 1649.0 1469.7 ? Concentrix 3.0,
*vgr vector 39.66 34.30 45.18 42.97 ? 8 ACEs, no vectors
_
Rays bob 6884.9 3422.4 2267.7 2034.3 ? 3 CPUs, UNICOS 4.0
*vgr bob 57.95 52.73 62.13 59.48 ? CC -O
_
Rays bob 9477.1 4484.7 2947.0 2832.9 ? 4 CPUs, UNICOS 4.0
*vgr bob 79.77 69.10 80.76 82.83 ? CC -O
.TE
.NH 1
RELEASE 3.0 STATISTICS (10-Oct-1988)
.LP
.TS H
expand box;
l l | n n n n | n | l.
A/* H/W Moss World Star Bldg Mean S/W Notes
_
.TH
Abs vgr 138.85 67.15 54.48 49.11 77.39 BSD 4.3
*vgr vgr 1.00 1.00 1.00 1.00 1.00 w/FPA
_
Abs sdm 163.56 76.98 59.79 52.51 88.21 SunOS 3.4
*vgr sdm 1.17 1.14 1.09 1.06 1.11 w/68881
_
Abs ardec-3 417.95 212.43 177.01 160.73 242.03 9820, OSx 4.1
*vgr ardec-3 3.01 3.16 3.24 3.27 3.17 -P 1
_
Abs spark 443.84 216.92 190.42 192.82 261.00 UTX 2.0
*vgr spark 3.19 3.23 3.49 3.92 3.37 no MACC
_
Abs vmb 482.28 226.33 191.52 193.04 273.29 UTX 2.0
*vgr vmb 3.47 3.37 3.51 3.93 3.57 no MACC
_
Abs sws2 546.23 255.45 183.10 163.85 287.15 Convex 6.2.32.2
*vgr sws2 3.93 3.80 3.36 3.33 3.60 /bin/cc
_
Abs sun4 767.7 373.7 315.5 284.5 435.6 Unix 3.5
*vgr sun4 5.52 5.56 5.79 5.79 5.62 -O2 optim
_
Abs video 940.33 469.30 399.21 367.64 544.12 UNIX 2.0
*vgr video 6.77 6.98 7.32 7.48 7.13 -O2
_
Abs vhs 954.81 471.90 409.78 392.55 557.26 IRix 3.1
*vgr vhs 6.87 7.02 7.52 7.99 7.45 Parallel, -P1
_
Abs bob 2602.68 1078.25 712.39 642.42 1258.93 UNICOS 4.0, /bin/cc
*vgr bob 21.22 18.17 15.39 13.98 17.19 -P 1
_
Abs vector 3811.68 1469.80 1060.50 921.21 1815.79 Alliant 3.0
*vgr vector 27.45 21.88 19.46 18.75 21.88 -P 5
_
Abs vector 4515.09 1751.94 1266.49 1090.85 2156.09 Alliant 3.0
*vgr vector 32.51 26.08 23.24 22.21 26.01 -P 6
_
Abs patton 4550.67 1920.15 1298.61 1153.02 2230.61 UNICOS 3.0, /bin/cc
*vgr patton 37.10 32.36 28.05 25.09 30.65 -P 1
_
Abs vector 5130.74 2004.49 1438.97 1261.36 2458.89 Alliant 3.0
*vgr vector 36.95 29.85 26.41 25.68 29.72 -P 7
_
Abs bob 5186.24 2132.17 1409.10 1273.72 2500.30 UNICOS 4.0, /bin/cc
*vgr bob 42.28 35.93 30.44 27.71 34.09 -P 2
_
Abs vector 5813.76 2260.61 1638.31 1422.82 2783.87 Alliant 3.0
*vgr vector 41.87 33.66 30.07 28.97 33.64 -P 8
_
Abs amber 5901.29 2702.65 2096.35 1893.41 3148.42
*vgr amber 42.50 40.24 38.47 38.55 39.94 -P 1
_
Abs bob 7934.12 3392.98 2119.11 1929.74 3843.98 UNICOS 4.0, /bin/cc
*vgr bob 64.69 57.18 45.78 41.99 52.41 -P 3
_
Abs patton 8898.79 3782.55 2559.48 2292.13 4383.23 UNICOS 3.0, /bin/cc
*vgr patton 72.56 63.75 55.30 49.88 60.37 -P 2
_
Abs bob 10734.52 4436.61 2883.53 2617.47 5168.03 UNICOS 4.0, /bin/cc
*vgr bob 87.52 74.77 62.30 56.96 70.38 -P 4
_
Abs patton 13078.79 5631.95 3832.88 3416.90 6490.13 UNICOS 3.0, /bin/cc
*vgr patton 106.64 94.92 82.81 74.36 89.68 -P 3
_
Abs patton 17157.78 7437.55 5073.58 4531.25 8550.04 UNICOS 3.0, /bin/cc
*vgr patton 139.90 125.35 109.62 98.61 118.37 -P 4
.TE
.bp
.NH 1
RELEASE 3.7 STATISTICS (19-June-1989)
.LP
.TS H
expand box;
l l | n n n n n | n | l.
A/* H/W Moss World Star Bldg M35 Mean CPU
_
.TH
Abs vgr 128.64 54.47 45.17 40.35 49.02 63.53 1
*vgr vgr 1.00 1.00 1.00 1.00 1.00 1.00
_
Abs rh2 1704.56 791.31 599.81 549.74 589.01 846.88 1
*vgr rh2 13.25 14.52 13.27 13.62 12.01 13.33
_
Abs spark 435.69 208.59 176.76 177.69 174.67 234.68 1
*vgr spark 3.53 3.61 4.17 4.29 3.40 3.80
_
Abs vhs 973.11 475.00 384.62 351.12 343.44 505.45 1
*vgr vhs 7.56 8.72 8.51 8.70 7.00 8.09
_
Abs whisper 1118.35 561.81 473.52 439.76 509.26 620.54 1
*vgr whisper 8.69 10.31 10.48 10.89 10.38 10.15
_
Abs nova 2024.80 976.01 790.17 732.35 ? 1130.83 1
*vgr nova 15.74 17.92 17.49 18.15 ? 17.32
_
Abs ovoyage 1969.57 1001.21 862.77 809.61 786.11 1085.85 2
*vgr ovoyage 15.31 18.38 19.10 20.06 16.03 17.77
_
Abs taylor 2446.98 1076.24 912.03 837.56 799.58 1214.47 1
*vgr taylor 19.02 19.75 20.19 20.75 16.31 19.20
_
Abs worm 2671.46 1218.49 966.76 859.61 932.18 1329.70 1
*vgr worm 20.76 22.36 21.40 21.30 19.01 20.96
_
Abs viper 3255.73 1368.96 1102.71 1039.37 1008.15 1554.98 8
*vgr viper 25.30 25.13 24.41 25.75 20.56 24.23
_
Abs vector 3956.86 1625.23 1234.03 1137.36 1121.41 1814.97 8
*vgr vector 30.75 29.83 27.31 28.18 22.87 27.78
_
Abs taylor 4730.05 2225.56 1742.09 1590.57 1551.78 2368.01 2
*vgr taylor 36.76 40.85 38.56 39.41 31.65 37.44
_
Abs worm 5017.85 2309.86 1894.92 1708.27 1791.11 2544.40 2
*vgr worm 39.00 42.40 41.95 42.33 36.53 40.44
_
Abs worm 7082.79 3359.99 2740.50 2502.03 2594.37 3655.93 3
*vgr worm 55.05 61.68 60.67 62.00 52.92 58.46
_
Abs worm 8664.78 4162.53 3323.46 3115.36 3378.75 4528.97 4
*vgr worm 67.35 76.41 73.57 77.20 68.92 72.69
_
Abs worm 10072.1 5016.57 4032.60 3855.90 4043.11 5404.06 5
*vgr worm 78.29 92.09 89.27 95.56 82.47 87.53
_
Abs worm 11678.4 5752.20 4758.80 4493.16 4700.52 6276.60 6
*vgr worm 90.78 105.60 105.35 111.35 95.88 101.79
_
Abs worm 12282.3 6021.31 5394.36 4908.98 5141.71 6749.72 7
*vgr worm 95.47 110.54 119.42 121.65 104.89 110.39
_
Abs worm 12158.3 5913.50 5784.67 5327.66 5505.71 6937.96 8
*vgr worm 94.51 108.56 128.06 132.03 112.31 115.09
_
Abs patton 16028.8 7289.7 4827.9 4392.5 20829.2 53368.1 4
*vgr patton 124.6 133.83 106.88 108.85 106.23 116.07
.TE
.bp
.NH 1
RELEASE 4.0 STATISTICS
.LP
.TS H
expand box;
l l | n n n n n | n | l.
A/* H/W Moss World Star Bldg M35 Mean CPU
_
.TH
Abs vgr 137.82 67.23 56.39 53.91 69.25 76.92 1
*vgr vgr 1.00 1.00 1.00 1.00 1.00 1.00
_
Abs slc1 153.63 80.95 62.94 60.48 ? 71.60 1
*vgr slc1 1.12 1.20 1.12 1.13 ? .91
_
Abs vision 165.85 89.78 76.44 75.78 96.18 100.80 1
*vgr vision 1.21 1.33 1.36 1.42 1.36 1.33
_
Abs vmb 381.92 195.11 178.78 186.62 214.31 231.34 1
*vgr vmb 2.78 2.90 3.18 3.49 3.03 3.07
_
Abs sws1 636.26 288.76 212.99 210.18 271.02 323.84 1
*vgr sws1 4.64 4.30 3.79 3.93 3.83 4.09
_
Abs veto 827.25 436.38 361.89 348.99 422.19 479.34 1
*vgr veto 6.03 6.50 6.45 6.54 5.97 6.29
_
Abs vhs 1040.44 500.52 436.90 415.15 496.30 577.86 1
*vgr vhs 7.59 7.46 7.79 7.78 7.02 7.52
_
Abs cor3 1203.14 553.22 445.45 398.79 534.18 626.95 1
*vgr cor3 8.78 8.24 7.94 7.47 7.55 7.99
_
Abs wilted 1556.66 800.18 722.95 708.21 858.90 929.38 1
*vgr wilted 11.36 11.93 12.89 13.27 12.15 12.32
_
Abs shpcrc2 2274.36 1041.79 915.99 854.30 1110.23 1239.33 1
*vgr shpcrc2 16.59 15.53 16.33 16.01 15.70 16.03
_
Abs walrus 2291.38 1094.04 960.07 892.67 1066.31 1260.89 1
*vgr walrus 16.72 16.31 17.12 16.72 15.08 16.39
_
Abs walrus 4010.55 2019.34 1767.75 1685.19 2029.78 2302.52 2
*vgr walrus 29.27 30.11 31.52 31.58 28.71 30.23
_
Abs patton 5235.87 2108.02 1509.85 1507.81 2132.01 2498.71 1
*vgr patton 38.21 31.43 26.92 28.25 30.15 30.99
_
Abs crim 4679.97 2246.04 2143.07 1936.85 2224.65 2646.11 1
*vgr crim 34.15 33.49 38.22 36.29 31.47 34.72
_
Abs uy1 6220.79 2474.97 1742.33 1748.73 2464.90 2930.34 1
*vgr uy1 45.40 36.90 31.07 32.77 34.86 36.20
_
Abs wiltse 5785.83 2737.06 2473.66 2310.58 2699.06 3201.23 1
*vgr wiltse 42.22 40.81 44.11 43.30 38.18 41.72 -mips1
_
Abs walrus 5743.85 2938.73 2513.24 2446.85 2858.84 3300.30 3
*vgr walrus 41.92 43.82 44.82 45.85 40.44 43.37
_
Abs wiltse 7093.51 3458.89 2887.77 2730.62 3199.08 3873.97 1
*vgr wiltse 51.77 51.57 51.50 51.17 45.25 50.25 -mips2
_
Abs walrus 7131.48 3613.02 3262.01 3048.77 3594.35 4129.92 4
*vgr walrus 52.05 53.87 58.17 57.13 50.84 54.41
_
Abs whiz 7159.01 3655.65 3355.85 3132.36 3655.02 4191.57 4
*vgr whiz 52.25 54.51 59.85 58.70 51.70 55.40
_
Abs walrus 7698.43 4119.06 3889.37 3690.27 4244.30 4728.28 5
*vgr walrus 56.18 61.42 69.36 69.15 60.04 63.23
_
Abs walrus 8718.08 4625.56 4469.49 4295.53 4765.40 5374.81 6
*vgr walrus 63.63 68.97 79.71 80.50 67.41 72.04
_
Abs walrus 8937.71 4882.66 4911.99 4601.09 5335.14 5733.71 7
*vgr walrus 65.23 72.81 87.60 86.22 75.47 77.46
_
Abs walrus 9300.31 5136.17 5243.14 5112.23 5318.45 6022.06 8
*vgr walrus 67.88 76.59 93.51 95.80 75.23 81.80
_
.TE
.bp
.NH 1
ADDITIONAL STATISTICS
.PP
It would be greatly appreciated if you would e-mail any statistics
that you gather to the BRL-CAD developers, including: the ``summary''
file produced by the benchmark script, which BRL-CAD release was used,
the manufacturer of the machine, hardware model name/number, software
version numbers (OS and compiler), presence or absence of floating
point hardware, processor cache sizes, bus and memory speeds, and the
local host name (preferably an Internet or UUCP host name) of the
specific machine used.
View File
@@ -17,6 +17,8 @@ BRLCAD_ENABLE_COVERAGE "Build with coverage enabled" OFF
ENABLE_ALL_CXX_COMPILE "Build all C and C++ files with a C++ compiler." OFF
ENABLE_ALL_CXX
ENABLE_POSIX_COMPLIANCE
ENABLE_POSIX
BRLCAD_ENABLE_PROFILING
BRLCAD_ENABLE_DTRACE "Build with dtrace support" OFF
@@ -38,6 +40,7 @@ BRLCAD_ENABLE_STRICT
ENABLE_STRICT
ENABLE_STRICT_COMPILE
ENABLE_STRICT_COMPILE_FLAGS
ENABLE_STRICT_COMPILER_STANDARD_COMPLIANCE "Build with strict ISO C compliance checking. Defaults to OFF." OFF
### WHAT TO COMPILE ###
@@ -59,6 +62,7 @@ BRLCAD_ENABLE_OPENGL "Enable support for OpenGL based Display Managers in BRL-CA
BRLCAD_ENABLE_QT "Enable features requiring Qt" OFF
BRLCAD_ENABLE_OSG "Enable features requiring OpenSceneGraph" OFF
BRLCAD_ENABLE_RTGL "Enable experimental RTGL code." OFF
BRLCAD_ENABLE_BULLET "Enable features requiring the Bullet Physics Library" ON
BRLCAD_ENABLE_GCT "Enable features requiring GCT" ON
BRLCAD_ENABLE_GDAL "Enable features requiring the Geospatial Data Abstraction Library" ON
View File
+33 -29
View File
@@ -1,17 +1,27 @@
# Define a build target that builds a no-op executable, so we can ensure
# a target for generator expression use regardless of other changes elsewhere
# in the build system
add_executable(db_dir_info db_dir_info.c)
set_target_properties(db_dir_info PROPERTIES FOLDER "DocBook")
# We need various configuration files set up for DocBook processing tools
add_subdirectory(resources)
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/resources/brlcad/)
# First, define the commands to expand the third party components we will need to handle
# DocBook processing from their archives into the build directory
include(${CMAKE_CURRENT_SOURCE_DIR}/resources/other/expand.cmake)
# Rework CMake binary and source paths for DocBook templates - if we
# have spaces in the paths, they will cause a problem.
string(REPLACE " " "%20" DOCBOOK_BINARY_DIR "${CMAKE_BINARY_DIR}")
string(REPLACE " " "%20" DOCBOOK_SOURCE_DIR "${CMAKE_SOURCE_DIR}")
# Common stylesheets for all DocBook sources
if(BRLCAD_EXTRADOCS_HTML OR BRLCAD_EXTRADOCS_PDF OR BRLCAD_EXTRADOCS_MAN OR BRLCAD_EXTRADOCS_PHP OR BRLCAD_EXTRADOCS_PPT)
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/resources/brlcad/brlcad-common.xsl.in
${CMAKE_CURRENT_BINARY_DIR}/resources/brlcad/brlcad-common.xsl)
# Fonts definition
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/resources/brlcad/brlcad-fonts.xsl.in
${CMAKE_CURRENT_BINARY_DIR}/resources/brlcad/brlcad-fonts.xsl)
# Wordpress
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/resources/brlcad/wordpress.xsl.in
${CMAKE_CURRENT_BINARY_DIR}/resources/brlcad/wordpress.xsl)
endif(BRLCAD_EXTRADOCS_HTML OR BRLCAD_EXTRADOCS_PDF OR BRLCAD_EXTRADOCS_MAN OR BRLCAD_EXTRADOCS_PHP OR BRLCAD_EXTRADOCS_PPT)
# Files for PDF products
if(BRLCAD_EXTRADOCS_PDF)
# Apache FOP needs a couple of config files set up
@@ -19,38 +29,32 @@ if(BRLCAD_EXTRADOCS_PDF)
configure_file(${CMAKE_SOURCE_DIR}/doc/docbook/fop.xconf.in ${CMAKE_BINARY_DIR}/doc/docbook/fop.xconf)
endif(BRLCAD_EXTRADOCS_PDF)
# For the html files, we need brlcad.css
add_custom_command(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/brlcad_css-${CMAKE_CFG_INTDIR}-done
COMMAND "${CMAKE_COMMAND}" -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/css/brlcad.css $<TARGET_FILE_DIR:db_dir_info>/${RBIN_DIR}/${DOC_DIR}/html/css/brlcad.css
COMMAND "${CMAKE_COMMAND}" -E touch ${CMAKE_CURRENT_BINARY_DIR}/brlcad_css-${CMAKE_CFG_INTDIR}-done
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/css/brlcad.css
)
add_custom_target(brlcad_css DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/brlcad_css-${CMAKE_CFG_INTDIR}-done)
set_target_properties(brlcad_css PROPERTIES FOLDER "DocBook")
install(FILES css/brlcad.css DESTINATION ${DOC_DIR}/html/css)
DISTCLEAN(${CMAKE_CFG_INTDIR}/${DOC_DIR}/html/css/brlcad.css)
# Include CMake macros for DocBook.
include(${BRLCAD_SOURCE_DIR}/misc/CMake/DocBook.cmake)
# For the html files, we need brlcad.css
if(NOT CMAKE_CONFIGURATION_TYPES)
configure_file(css/brlcad.css ${CMAKE_BINARY_DIR}/${DOC_DIR}/html/css/brlcad.css)
else(NOT CMAKE_CONFIGURATION_TYPES)
foreach(CFG_TYPE ${CMAKE_CONFIGURATION_TYPES})
string(TOUPPER "${CFG_TYPE}" CFG_TYPE_UPPER)
configure_file(css/brlcad.css ${CMAKE_BINARY_DIR_${CFG_TYPE_UPPER}}/${DOC_DIR}/html/css/brlcad.css)
endforeach(CFG_TYPE ${CMAKE_CONFIGURATION_TYPES})
endif(NOT CMAKE_CONFIGURATION_TYPES)
install(FILES css/brlcad.css DESTINATION ${DOC_DIR}/html/css)
add_subdirectory(articles)
add_subdirectory(books)
add_subdirectory(lessons)
add_subdirectory(presentations)
add_subdirectory(resources)
add_subdirectory(specifications)
add_subdirectory(system)
set(ignore_files
CMakeLists.txt
README
README.DB_authors_notes
css/brlcad.css
db_dir_info.c
fop.xconf.in
log4j.properties
)
CMAKEFILES(${ignore_files})
CMAKEFILES(README fop.xconf.in log4j.properties)
CMAKEFILES(README.DB_authors_notes)
CMAKEFILES(css/brlcad.css)
CMAKEFILES(CMakeLists.txt)
# Local Variables:
# tab-width: 8
+44 -4
View File
@@ -149,11 +149,51 @@ See this link for help in installing fop 1.0 and saxon-he on Ubuntu:
VALIDATION
----------
It is possible to add a validation step to DocBook compilation by defining the
CMake variable BRLCAD_EXTRADOCS_VALIDATE to ON. This will use xmllint to
validate the xml files as they are built.
It is possible to add a validation step to DocBook compilation by
defining the CMake variable BRLCAD_EXTRADOCS_VALIDATE to ON.
By default, this will use xmllint to validate the xml files as
they are built.
In order to use a different validation program the user must obtain some
external tools that are not presently part of the BRL-CAD package:
For the 'msv' validation method (a recommended method):
* msv
Oracle Multi-Schema XML Validator (MSV) (see http://msv.java.net/)
* Java
a working Java run-time environment
For the 'nvdl' validation method:
* onvdl.jar
a Java jar file with the oNVDL validation tool (see
https://sourceforge.net/projects/onvdl/
* Java
a working Java run-time environment
For the 'rnv' validation method:
* rnv
http://sourceforge.net/projects/rnv/
* expat library
present in most Linux/Unix distributions, see
http://expat.sourceforge.net/
To use these tools, a <toolname>.cmake.in file must be present
in the misc/CMake source directory. This file tells CMake how
to run the tool in question. Examples for msv and rnv are already
present - see misc/CMake/rnv.cmake.in and misc/CMake/msv.cmake.in
Once the correct file is present, configure CMake with options
similar to the following (alter for your specific tool):
cmake .. -DBRLCAD_EXTRADOCS_VALIDATE=ON -DVALIDATE_EXECUTABLE=msv
By default, this option is enable if the BRL-CAD strict build is enabled.
OTHER CONSIDERATIONS
--------------------
-32
View File
@@ -1,32 +0,0 @@
/* D B _ D I R _ I N F O . C
* BRL-CAD
*
* Published in 2020 by the United States Government.
* This work is in the public domain.
*
*/
/** @file dir_info.c
*
* This is a stub file, whose purpose is to provide the Docbook logic with an
* add_executable build target that can be passed to scripts in order to decode
* at runtime what the location of BR-CAD's build directory is.
*
* Unlike most other BRL-CAD logic, Docbook building may be done without any
* software build targets needing to be processed if the necessary system
* tools are in place. Since it is otherwise difficult to reliably get the
* location of the current build directory in multiconfig build tools, this
* file is used to provide a db_dir_info build target to reference in CMake.
*/
int main() {
}
/*
* Local Variables:
* tab-width: 8
* mode: C
* indent-tabs-mode: t
* c-file-style: "stroustrup"
* End:
* ex: shiftwidth=4 tabstop=8
*/
+56 -5
View File
@@ -1,11 +1,62 @@
add_subdirectory(brlcad)
add_subdirectory(other)
set(ignore_files
set(dr_ignore_files
CMakeLists.txt
README
brlcad/brlcad-article-fo-stylesheet.xsl.in
brlcad/brlcad-article-xhtml-stylesheet.xsl.in
brlcad/brlcad-book-fo-stylesheet.xsl.in
brlcad/brlcad-book-xhtml-stylesheet.xsl.in
brlcad/brlcad-common.xsl.in
brlcad/brlcad-fo-stylesheet.xsl.in
brlcad/brlcad-fonts.xsl.in
brlcad/brlcad-gendata.xsl
brlcad/brlcad-lesson-fo-stylesheet.xsl.in
brlcad/brlcad-lesson-xhtml-stylesheet.xsl.in
brlcad/brlcad-man-fo-stylesheet.xsl.in
brlcad/brlcad-man-stylesheet.xsl.in
brlcad/brlcad-man-xhtml-stylesheet.xsl.in
brlcad/brlcad-presentation-fo-stylesheet.xsl.in
brlcad/brlcad-presentation-xhtml-stylesheet.xsl.in
brlcad/brlcad-specification-fo-stylesheet.xsl.in
brlcad/brlcad-specification-xhtml-stylesheet.xsl.in
brlcad/brlcad-xhtml-header-navigation.xsl
brlcad/brlcad-xhtml-stylesheet.xsl.in
brlcad/center-table-print.xsl
brlcad/images/brlcad-logo-669966.svg
brlcad/images/brlcad-logo-6699cc.svg
brlcad/images/brlcad-logo-blue.svg
brlcad/images/brlcad-logo-cc6666.svg
brlcad/images/brlcad-logo-cc9966.svg
brlcad/images/brlcad-logo-green.svg
brlcad/images/brlcad-logo-limegreen.svg
brlcad/images/brlcad-logo-red.svg
brlcad/images/logo-vm-gears.png
brlcad/images/logo-vm-gears.svg
brlcad/presentation.xsl.in
brlcad/tutorial-cover-template.xsl.in
brlcad/tutorial-template.xsl.in
brlcad/wordpress.xsl.in
other/README.schema
other/docbook-5.0.tar.bz2
other/docbook5xi.rnc
other/docbookxi.nvdl
other/expand.cmake
other/fonts/README
other/fonts/dejavu-lgc-fonts.tar.bz2
other/fonts/dejavu_COPYING.txt
other/fonts/stix-fonts.tar.bz2
other/fonts/stix_COPYING.txt
other/fonts/y14.5.tar.bz2
other/fonts/y14.5_COPYING.txt
other/offo/README.offo
other/offo/licenses.txt
other/offo/offo-2.0.tar.bz2
other/standard/README.svg
other/standard/README.xsl
other/standard/docbook-xsl-ns.tar.bz2
other/standard/met-fonts.xsl
other/standard/w3_svg_dtd.tar.bz2
)
CMAKEFILES(${ignore_files})
CMAKEFILES(${dr_ignore_files})
# Local Variables:
# tab-width: 8
@@ -1,68 +0,0 @@
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/resources/brlcad/)
# Rework CMake binary and source paths for DocBook templates - if we
# have spaces in the paths, they will cause a problem.
string(REPLACE " " "%20" DOCBOOK_BINARY_DIR "${CMAKE_BINARY_DIR}")
string(REPLACE " " "%20" DOCBOOK_SOURCE_DIR "${CMAKE_SOURCE_DIR}")
# Because the core resources for Docbook are not different between the various
# build configurations, we maintain one copy of the "set up" files for all
# configurations rather than building the entire resources setup per-config.
# Common xsl for all outputs
configure_file(brlcad-common.xsl.in ${CMAKE_CURRENT_BINARY_DIR}/brlcad-common.xsl)
# Fonts definition
configure_file(brlcad-fonts.xsl.in ${CMAKE_CURRENT_BINARY_DIR}/brlcad-fonts.xsl)
# Wordpress
configure_file(wordpress.xsl.in ${CMAKE_CURRENT_BINARY_DIR}/wordpress.xsl)
# Make sure distcheck knows about all files in directory
set(ignore_files
CMakeLists.txt
brlcad-article-fo-stylesheet.xsl.in
brlcad-article-xhtml-stylesheet.xsl.in
brlcad-book-fo-stylesheet.xsl.in
brlcad-book-xhtml-stylesheet.xsl.in
brlcad-common.xsl.in
brlcad-fo-stylesheet.xsl.in
brlcad-fonts.xsl.in
brlcad-gendata.xsl
brlcad-lesson-fo-stylesheet.xsl.in
brlcad-lesson-xhtml-stylesheet.xsl.in
brlcad-man-fo-stylesheet.xsl.in
brlcad-man-stylesheet.xsl.in
brlcad-man-xhtml-stylesheet.xsl.in
brlcad-presentation-fo-stylesheet.xsl.in
brlcad-presentation-xhtml-stylesheet.xsl.in
brlcad-specification-fo-stylesheet.xsl.in
brlcad-specification-xhtml-stylesheet.xsl.in
brlcad-xhtml-header-navigation.xsl
brlcad-xhtml-stylesheet.xsl.in
center-table-print.xsl
images/brlcad-logo-669966.svg
images/brlcad-logo-6699cc.svg
images/brlcad-logo-blue.svg
images/brlcad-logo-cc6666.svg
images/brlcad-logo-cc9966.svg
images/brlcad-logo-green.svg
images/brlcad-logo-limegreen.svg
images/brlcad-logo-red.svg
images/logo-vm-gears.png
images/logo-vm-gears.svg
presentation.xsl.in
tutorial-cover-template.xsl.in
tutorial-template.xsl.in
wordpress.xsl.in
)
CMAKEFILES(${ignore_files})
# Local Variables:
# tab-width: 8
# mode: cmake
# indent-tabs-mode: t
# End:
# ex: shiftwidth=2 tabstop=8
-117
View File
@@ -1,117 +0,0 @@
# Define the commands to expand the third party components we will need to handle
# DocBook processing from their archives into the build directory
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/docbook-schema)
DISTCLEAN(${CMAKE_CURRENT_BINARY_DIR}/docbook-schema)
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/fonts/dejavu-lgc)
DISTCLEAN(${CMAKE_CURRENT_BINARY_DIR}/fonts/dejavu-lgc)
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/fonts/stix)
DISTCLEAN(${CMAKE_CURRENT_BINARY_DIR}/fonts/stix)
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/offo)
DISTCLEAN(${CMAKE_CURRENT_BINARY_DIR}/offo/source)
DISTCLEAN(${CMAKE_CURRENT_BINARY_DIR}/offo/binary)
DISTCLEAN(${CMAKE_CURRENT_BINARY_DIR}/offo/README)
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/standard/svg)
DISTCLEAN(${CMAKE_CURRENT_BINARY_DIR}/standard/svg)
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/standard/xsl)
DISTCLEAN(${CMAKE_CURRENT_BINARY_DIR}/standard/xsl)
add_custom_command(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/docbook-schema/schema.sentinel
COMMAND ${CMAKE_COMMAND} -E tar xjf ${CMAKE_CURRENT_SOURCE_DIR}/docbook-5.0.tar.bz2
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/docbookxi.nvdl ${CMAKE_CURRENT_BINARY_DIR}/docbook-schema/docbookxi.nvdl
COMMAND ${CMAKE_COMMAND} -E touch ${CMAKE_CURRENT_BINARY_DIR}/docbook-schema/schema.sentinel
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/docbookxi.nvdl ${CMAKE_CURRENT_SOURCE_DIR}/docbook-5.0.tar.bz2
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
)
add_custom_target(schema-expand DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/docbook-schema/schema.sentinel)
SetTargetFolder(schema-expand "DocBook")
add_custom_command(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/fonts/dejavu-lgc/dejavu-lgc.sentinel
COMMAND ${CMAKE_COMMAND} -E tar xjf ${CMAKE_CURRENT_SOURCE_DIR}/fonts/dejavu-lgc-fonts.tar.bz2
COMMAND ${CMAKE_COMMAND} -E touch ${CMAKE_CURRENT_BINARY_DIR}/fonts/dejavu-lgc/dejavu-lgc.sentinel
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/fonts/dejavu-lgc-fonts.tar.bz2
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/fonts
)
add_custom_target(fonts-dejavu-expand DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/fonts/dejavu-lgc/dejavu-lgc.sentinel)
SetTargetFolder(fonts-dejavu-expand "DocBook")
add_custom_command(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/fonts/stix/stix.sentinel
COMMAND ${CMAKE_COMMAND} -E tar xjf ${CMAKE_CURRENT_SOURCE_DIR}/fonts/stix-fonts.tar.bz2
COMMAND ${CMAKE_COMMAND} -E touch ${CMAKE_CURRENT_BINARY_DIR}/fonts/stix/stix.sentinel
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/fonts/stix-fonts.tar.bz2
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/fonts
)
add_custom_target(fonts-stix-expand DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/fonts/stix/stix.sentinel)
SetTargetFolder(fonts-stix-expand "DocBook")
add_custom_command(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/offo/offo2_0.sentinel
COMMAND ${CMAKE_COMMAND} -E tar xjf ${CMAKE_CURRENT_SOURCE_DIR}/offo/offo-2.0.tar.bz2
COMMAND ${CMAKE_COMMAND} -E touch ${CMAKE_CURRENT_BINARY_DIR}/offo/offo2_0.sentinel
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/offo/offo-2.0.tar.bz2
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/
)
add_custom_target(offo-2-expand DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/offo/offo2_0.sentinel)
SetTargetFolder(offo-2-expand "DocBook")
add_custom_command(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/standard/svg/svg.sentinel
COMMAND ${CMAKE_COMMAND} -E tar xjf ${CMAKE_CURRENT_SOURCE_DIR}/standard/w3_svg_dtd.tar.bz2
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/standard/met-fonts.xsl ${CMAKE_CURRENT_BINARY_DIR}/standard/svg/met-fonts.xsl
COMMAND ${CMAKE_COMMAND} -E touch ${CMAKE_CURRENT_BINARY_DIR}/standard/svg/svg.sentinel
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/standard/met-fonts.xsl ${CMAKE_CURRENT_SOURCE_DIR}/standard/w3_svg_dtd.tar.bz2
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/standard
)
add_custom_target(svg-dtd-expand DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/standard/svg/svg.sentinel)
SetTargetFolder(svg-dtd-expand "DocBook")
add_custom_command(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/standard/xsl/xsl.sentinel
COMMAND ${CMAKE_COMMAND} -E tar xjf ${CMAKE_CURRENT_SOURCE_DIR}/standard/docbook-xsl-ns.tar.bz2
COMMAND ${CMAKE_COMMAND} -E touch ${CMAKE_CURRENT_BINARY_DIR}/standard/xsl/xsl.sentinel
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/standard/docbook-xsl-ns.tar.bz2
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/standard
)
add_custom_target(xsl-expand DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/standard/xsl/xsl.sentinel)
SetTargetFolder(xsl-expand "DocBook")
# Build up the set of targets defining resources, and write it to the cache
# immediately so targets in other directories can see it
set(DOCBOOK_RESOURCE_FILES schema-expand fonts-dejavu-expand fonts-stix-expand offo-2-expand svg-dtd-expand xsl-expand)
set(DOCBOOK_RESOURCE_FILES "${DOCBOOK_RESOURCE_FILES}" CACHE STRING "DocBook target list")
mark_as_advanced(DOCBOOK_RESOURCE_FILES)
set(ignore_files
CMakeLists.txt
README.schema
docbook-5.0.tar.bz2
docbook5xi.rnc
docbookxi.nvdl
fonts/README
fonts/dejavu-lgc-fonts.tar.bz2
fonts/dejavu_COPYING.txt
fonts/stix-fonts.tar.bz2
fonts/stix_COPYING.txt
fonts/y14.5.tar.bz2
fonts/y14.5_COPYING.txt
offo/README.offo
offo/licenses.txt
offo/offo-2.0.tar.bz2
standard/README.svg
standard/README.xsl
standard/docbook-xsl-ns.tar.bz2
standard/met-fonts.xsl
standard/w3_svg_dtd.tar.bz2
)
CMAKEFILES(${ignore_files})
# Local Variables:
# tab-width: 8
# mode: cmake
# indent-tabs-mode: t
# End:
# ex: shiftwidth=2 tabstop=8
+81
View File
@@ -0,0 +1,81 @@
# Define the commands to expand the third party components we will need to handle
# DocBook processing from their archives into the build directory
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/resources/other/docbook-schema)
DISTCLEAN(${CMAKE_CURRENT_BINARY_DIR}/resources/other/docbook-schema)
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/resources/other/fonts/dejavu-lgc)
DISTCLEAN(${CMAKE_CURRENT_BINARY_DIR}/resources/other/fonts/dejavu-lgc)
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/resources/other/fonts/stix)
DISTCLEAN(${CMAKE_CURRENT_BINARY_DIR}/resources/other/fonts/stix)
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/resources/other/offo)
DISTCLEAN(${CMAKE_CURRENT_BINARY_DIR}/resources/other/offo/source)
DISTCLEAN(${CMAKE_CURRENT_BINARY_DIR}/resources/other/offo/binary)
DISTCLEAN(${CMAKE_CURRENT_BINARY_DIR}/resources/other/offo/README)
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/resources/other/standard/svg)
DISTCLEAN(${CMAKE_CURRENT_BINARY_DIR}/resources/other/standard/svg)
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/resources/other/standard/xsl)
DISTCLEAN(${CMAKE_CURRENT_BINARY_DIR}/resources/other/standard/xsl)
add_custom_command(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/resources/other/docbook-schema/schema.sentinel
COMMAND ${CMAKE_COMMAND} -E tar xjf ${CMAKE_CURRENT_SOURCE_DIR}/resources/other/docbook-5.0.tar.bz2
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/resources/other/docbookxi.nvdl ${CMAKE_CURRENT_BINARY_DIR}/resources/other/docbook-schema/docbookxi.nvdl
COMMAND ${CMAKE_COMMAND} -E touch ${CMAKE_CURRENT_BINARY_DIR}/resources/other/docbook-schema/schema.sentinel
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/resources/other/docbookxi.nvdl ${CMAKE_CURRENT_SOURCE_DIR}/resources/other/docbook-5.0.tar.bz2
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/resources/other
)
add_custom_target(schema-expand DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/resources/other/docbook-schema/schema.sentinel)
SetTargetFolder(schema-expand "DocBook")
add_custom_command(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/resources/other/fonts/dejavu-lgc/dejavu-lgc.sentinel
COMMAND ${CMAKE_COMMAND} -E tar xjf ${CMAKE_CURRENT_SOURCE_DIR}/resources/other/fonts/dejavu-lgc-fonts.tar.bz2
COMMAND ${CMAKE_COMMAND} -E touch ${CMAKE_CURRENT_BINARY_DIR}/resources/other/fonts/dejavu-lgc/dejavu-lgc.sentinel
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/resources/other/fonts/dejavu-lgc-fonts.tar.bz2
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/resources/other/fonts
)
add_custom_target(fonts-dejavu-expand DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/resources/other/fonts/dejavu-lgc/dejavu-lgc.sentinel)
SetTargetFolder(fonts-dejavu-expand "DocBook")
add_custom_command(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/resources/other/fonts/stix/stix.sentinel
COMMAND ${CMAKE_COMMAND} -E tar xjf ${CMAKE_CURRENT_SOURCE_DIR}/resources/other/fonts/stix-fonts.tar.bz2
COMMAND ${CMAKE_COMMAND} -E touch ${CMAKE_CURRENT_BINARY_DIR}/resources/other/fonts/stix/stix.sentinel
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/resources/other/fonts/stix-fonts.tar.bz2
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/resources/other/fonts
)
add_custom_target(fonts-stix-expand DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/resources/other/fonts/stix/stix.sentinel)
SetTargetFolder(fonts-stix-expand "DocBook")
add_custom_command(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/resources/other/offo/offo2_0.sentinel
COMMAND ${CMAKE_COMMAND} -E tar xjf ${CMAKE_CURRENT_SOURCE_DIR}/resources/other/offo/offo-2.0.tar.bz2
COMMAND ${CMAKE_COMMAND} -E touch ${CMAKE_CURRENT_BINARY_DIR}/resources/other/offo/offo2_0.sentinel
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/resources/other/offo/offo-2.0.tar.bz2
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/resources/other/
)
add_custom_target(offo-2-expand DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/resources/other/offo/offo2_0.sentinel)
SetTargetFolder(offo-2-expand "DocBook")
add_custom_command(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/resources/other/standard/svg/svg.sentinel
COMMAND ${CMAKE_COMMAND} -E tar xjf ${CMAKE_CURRENT_SOURCE_DIR}/resources/other/standard/w3_svg_dtd.tar.bz2
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/resources/other/standard/met-fonts.xsl ${CMAKE_CURRENT_BINARY_DIR}/resources/other/standard/svg/met-fonts.xsl
COMMAND ${CMAKE_COMMAND} -E touch ${CMAKE_CURRENT_BINARY_DIR}/resources/other/standard/svg/svg.sentinel
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/resources/other/standard/met-fonts.xsl ${CMAKE_CURRENT_SOURCE_DIR}/resources/other/standard/w3_svg_dtd.tar.bz2
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/resources/other/standard
)
add_custom_target(svg-dtd-expand DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/resources/other/standard/svg/svg.sentinel)
SetTargetFolder(svg-dtd-expand "DocBook")
add_custom_command(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/resources/other/standard/xsl/xsl.sentinel
COMMAND ${CMAKE_COMMAND} -E tar xjf ${CMAKE_CURRENT_SOURCE_DIR}/resources/other/standard/docbook-xsl-ns.tar.bz2
COMMAND ${CMAKE_COMMAND} -E touch ${CMAKE_CURRENT_BINARY_DIR}/resources/other/standard/xsl/xsl.sentinel
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/resources/other/standard/docbook-xsl-ns.tar.bz2
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/resources/other/standard
)
add_custom_target(xsl-expand DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/resources/other/standard/xsl/xsl.sentinel)
SetTargetFolder(xsl-expand "DocBook")
set(DOCBOOK_RESOURCE_FILES schema-expand fonts-dejavu-expand fonts-stix-expand offo-2-expand svg-dtd-expand xsl-expand)
+1 -1
View File
@@ -346,7 +346,7 @@
coordinates, distances, or sizes are input. The units may be changed to accommodate
input files of differing units, but the output from a particular run will reflect
whatever the units were set to when the <command>execute</command> command was
given. One argument is expected out of the following list and must be spelled
given. One argument is expected out of the following list snd must be spelled
correctly: millimeters, centimeters, meters, inches and feet. The default units are
millimeters.
</para>
+2 -6
View File
@@ -56,10 +56,6 @@
<para>(three-way diff) Report objects that are different in left_model.g and/or right_model.g relative to ancestor.g</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-q</option></term>
<listitem><para>Decrease the verbosity of the output. Additional specifications will further decrease the output provided. (Opposite effect of <option>v</option> option.) All settings for this option will respect other constraints applied to the reporting output.</para></listitem>
</varlistentry>
<varlistentry>
<term><option>-u</option></term>
<listitem>
@@ -68,8 +64,8 @@
</listitem>
</varlistentry>
<varlistentry>
<term><option>-v</option></term>
<listitem><para>Increase the verbosity of the output. Additional specifications will further increase the output provided. (Opposite effect of <option>q</option> option.) All settings for this option will respect other constraints applied to the reporting output.</para></listitem>
<term><option>-v #</option></term>
<listitem><para>Control the verbosity of the output. Zero will suppress all reporting and only the return value of the program will contain information, one will provide categorized lists of objects but no details on what changed, two will list each changed object preceded by a modifier, three will print more details for changed objects, and four will print all available information. All settings for this option will respect other constraints applied to the reporting output.</para></listitem>
</varlistentry>
<varlistentry>
<term><option>-t #</option></term>
-1
View File
@@ -1,7 +1,6 @@
set(man3_EN
libfb.xml
libplot3.xml
libpkg.xml
librt.xml
libwdb.xml
redblack.xml
-489
View File
@@ -1,489 +0,0 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:id="libpkg" xmlns:xlink="http://www.w3.org/1999/xlink">
<refmeta>
<refentrytitle>LIBPKG</refentrytitle>
<manvolnum>3</manvolnum>
<refmiscinfo class='source'>BRL-CAD</refmiscinfo>
</refmeta>
<refnamediv>
<refname>libpkg</refname>
<refpurpose>
Message passing abstraction library supporting communication between
cooperating processes over TCP connections
</refpurpose>
</refnamediv>
<refsect1 xml:id='pkg_background'>
<title>BACKGROUND</title>
<para>
The following is a description of the libpkg routines kindly provided
by Peter B. Shames on 26 Sept 1986, and updated 14 Nov 1986 by PC Dykstra to reflect
BRL extensions since the first writing. It was intended that an RFC
be published at some point, but at this point this document (plus the
source code) is all we have. In the CAD distribution, the remote
framebuffer interface (libfb/if_remote.c) and server (fbserv),
communicate using this protocol.
</para>
</refsect1>
<refsect1 xml:id='pkg_overview'>
<title>Overview</title>
<para>
A prototype interface that implements a fairly simple message passing
abstraction between cooperating processes running over TCP connections
has been developed by Mike Muuss, Charles Kennedy, and Phillip Dykstra
at BRL. Some experiments have been run at STScI to implement this
interface on a DECnet link with good success. A few changes have been
suggested to improve network throughput for data flows that consist of
short message traffic or byte-stream traffic.
</para>
<para>
This note describes the motivation for developing such an interface and
describes the subroutine interfaces and functionality. The interface
routine descriptions and portions of the textual descriptions have been
taken directly from the source code provided by Muuss and Kennedy
which has been the only available description to date.
</para>
</refsect1>
<refsect1 xml:id='why_pkg'>
<title>Why a message interface?</title>
<para>
The interface - PKG provides a simple interface for managing
client/server connections in a distributed environment. A server task
is initialized to wait for incoming requests from clients. Clients open
a connection to the server task which executes on some host processor
waiting for incoming requests. Messages with identifying type codes are
passed between processes, with optional appended data blocks. The
interface is non-blocking and accepts arbitrary data messages of
arbitrary length.
</para>
<para>
An example - interaction with a remote data archive may require request
for services, user authentication, permission granting, index hierarchy
queries - with manipulation of results, archive request processing,
delivery of output products - electronically or otherwise. The archive
is a server that responds to service requests from clients, how many
may be served at one time and whether public access and private services
are supported is an implementation issue. Since no direct interactive
support is required (if smart client agents are in use) the message
paradigm can support the requirements.
</para>
<para>
A [counter] example - Athena's XWindow uses a client-server model to
provide screen/window management services for distributed processes.
XWindow is very permissive of different window management policies and
provides hooks for implementing various user interfaces. At the lowest
level, XWindow requires a reliable duplex byte-stream, which can be
implemented in many operating environments. Because XWindow wants to
manage all process-window communications directly, it builds its own block
stream protocol to manage the connection. This permits the interactive
update required by some processes, but basically is the same paradigm as
PKG, defined within the window system.
</para>
</refsect1>
<refsect1 xml:id='pkg_desc'>
<title>PKG Interface description</title>
<para>
The PKG interface implements an client-server network connection that
multiplexes synchronous and asynchronous messages across stream
connections. Connection control is provided by open/ close routines,
where the client authentication is handled prior to establishing the
connection. Server side actions include initialization, client connection,
and client request servicing. Client side actions include server request,
reply processing, possible connection negotiation, and data transfer
processing.
</para>
<para>
A connection is established when a client issues an open to a server,
running on some host. Which hosts provide required services must be
determined prior to connection requests, using some service directory.
Default connection processing is stream oriented, where a process may
get data as it is available on the connection. A blocking read may
also be issued, waiting for any complete message, or just for messages
of a specified type. The connection remains open until explicitly
closed by either client or server.
</para>
<para>
Once the connection is established it may be used to process a full-
duplex asynchronous byte stream, or a buffered, synchronous query/reply
exchange. Message type multiplexing supports user actions based upon
message type, where the multiplexing is handled in the interface.
Different message type streams may operate using different flow control
over the same connection. Multiplexing is handled in the interface by
pre-pending a header block to the message before transmitting it
to the reader. Data is transmitted as received, but the header is
transmitted in Internet network byte/bit order.
</para>
<para>
An package connection may incur significant overhead if
many short messages are passed between processes, so
a buffered stream connection may be requested. The
application calls the pkg_stream interface rather than the usual pkg_send
request, and PKG builds a message buffer and passes it to the
client as it gets filled. A stream buffer may be flushed with an
explicit call to the pkg_flush routine.
</para>
</refsect1>
<refsect1 xml:id='pkg_def'>
<title>PKG Interface Definition</title>
<para>
Control Interfaces:
<variablelist>
<varlistentry><term>PKG_OPEN - Open a connection to a host</term>
<listitem>
<literallayout>
pkg_open( host, service, protocol, uname, passwd, pkg_switch, errlog )
returns ptr_to_connection
</literallayout>
<para>
We are a client, make a connection to a server running on some host.
The return value is the connection handle. Protocol, username, and
password are optional.
</para>
</listitem>
</varlistentry>
<varlistentry><term>PKG_CLOSE - Close a connection</term>
<listitem>
<literallayout>
pkg_close( ptr_to_connection )
returns VOID
</literallayout>
<para>
We are a client or server wishing to gracefully close a connection.
</para>
</listitem>
</varlistentry>
<varlistentry><term>PKG_TRANSERVER - Become a one-time network server on the already accepted connection.</term>
<listitem>
<literallayout>
pkg_transerver( pkg_switch, errlog )
returns ptr_to_connection
</literallayout>
<para>
Given an established connection, this routine creates a pkg_conn
structure for it and initializes it to use the given pkg_switch
and error logging function. This routine is needed by servers
which get created by some other process after the connection is
established. Processes started by the UNIX "inetd" are one example.
</para>
</listitem>
</varlistentry>
<varlistentry><term>PKG_PERMSERVER - Create a network server and listen for connections</term>
<listitem>
<literallayout>
pkg_permserver( service, protocol, backlog )
returns listen_file_desc
</literallayout>
<para>
The service port is determined and a listen is hung on the port
that is bound to the socket. The return value is the file descriptor
of the socket. For this kind of server, pkg_getclient is used to
accept connections from clients.
</para>
</listitem>
</varlistentry>
<varlistentry><term>PKG_GETCLIENT - Used by a server to accept a client connection</term>
<listitem>
<literallayout>
pkg_getclient( listen_file_desc, pkg_switch, errlog, nodelay_flag )
returns ptr_to_connection or NULL or ERROR
</literallayout>
<para>
If possible, the connection request from the client is accepted,
a pkg_connection block is created and a ptr to it is returned to
the server. The server may request non-blocked service by
setting the nodelay_flag TRUE.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
<para>
I/O Interfaces:
<variablelist>
<varlistentry><term>PKG_GET - Read bytes from connection, assembling message</term>
<listitem>
<literallayout>
pkg_get( ptr_to_connection ) returns
returns message_arrived, more_data_coming or ERROR.
</literallayout>
<para>
Get waits until a message header is received and the calls the user
specified message handler for that message type. This routine
should be called by a program whenever there is data waiting on a
connection and the program is not otherwise waiting on a specific
message type. The routine will return directly to the caller if
no header is available or if only a partial message is received,
otherwise it calls the user specified message type handler.
</para>
</listitem>
</varlistentry>
<varlistentry><term>PKG_SEND - Send a message on the connection</term>
<listitem>
<literallayout>
pkg_send( message_type, data_buff, buff_len, ptr_to_connection )
returns bytes_sent or ERROR
</literallayout>
<para>
Send constructs a message header for the data buffer and transmits
it on the connection. If only part of the message can be sent the
actual number of bytes transmitted returned. Any data in the stream
buffer is first flushed. If the stream buffer needs flushing, and
the message is less than MAXQLEN (currently 512) bytes long, and
sufficient room is left in the stream buffer, this message gets
"piggybacked" on by copying it to the buffer before flushing. If
available, "writev" is used to send the header and data with one
syscall.
</para>
</listitem>
</varlistentry>
<varlistentry><term>PKG_2SEND - Send a two part message on the connection</term>
<listitem>
<literallayout>
pkg_2send( message_type, data_buff1, buff1_len, data_buff2, buff2_len, ptr_to_connection )
returns bytes_sent or ERROR
</literallayout>
<para>
2Send performs the same job as pkg_send except the data comes in
two parts. This is often the case for say a command followed by
user data. User data copies can be avoided while still allowing
a single trip in and out of the kernel on the receiving end.
</para>
</listitem>
</varlistentry>
<varlistentry><term>PKG_STREAM - Send a buffered data stream on the connection</term>
<listitem>
<literallayout>
pkg_stream( message_type, data_buff, buff_len, ptr_to_connection )
returns bytes_sent or ERROR
</literallayout>
<para>
Pkg_stream connections provide a low network overhead connection
where interactive responsiveness is not required.
</para>
<para>
Connections have a PKG_STREAMLEN (currently 4096) byte stream
buffer. If the current message is less than MAXQLEN (currently
512) bytes in length, and space remains for it, it will be
appended onto the end of this buffer. Otherwise the buffer is
implicitly flushed by sending this message via PKG_SEND.
</para>
</listitem>
</varlistentry>
<varlistentry><term>PKG_FLUSH - Flush the stream buffer out on the connection</term>
<listitem>
<literallayout>
pkg_flush( ptr_to_connection )
returns bytes_sent or ERROR
</literallayout>
<para>
Flush takes the current contents of the stream buffer being
constructed by stream and flushes it to the connection. This
allows programs explicit control over the stream interface
where required.
</para>
</listitem>
</varlistentry>
<varlistentry><term>PKG_BLOCK - Wait for a complete message of any type</term>
<listitem>
<literallayout>
pkg_block( ptr_to_connection )
returns message_arrived or ERROR
</literallayout>
<para>
This routine blocks, waiting for a complete message of ant type
to arrive on the connection. The user message handler is called
to process the message. This routine can be called in a loop
waiting for asynchronous messages or for the arrival of messages
of uncertain type.
</para>
</listitem>
</varlistentry>
<varlistentry><term>PKG_WAITFOR - Wait for a message of specific type, return in user buffer</term>
<listitem>
<literallayout>
pkg_waitfor( message_type, user_buff, buff_len, ptr_to_connection )
returns buff_len or ERROR
</literallayout>
<para>
This routine does a blocking read on the connection until a message
of message_type is received. Asynchronous messages and messages of
other types are processed while this routine waits. The message is
returned in the user's buffer.
</para>
</listitem>
</varlistentry>
<varlistentry><term>PKG_BWAITFOR - Wait for a message of specific type, return in allocated buffer</term>
<listitem>
<literallayout>
pkg_bwaitfor( message_type, ptr_to_connection )
returns ptr_to_buffer or ERROR
</literallayout>
<para>
This routine does a blocking read on the connection until a message
of message_type is received. Asynchronous messages and messages of
other types are processed while this routine waits. The message is
returned in a newly allocated buffer that the caller must free.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
<para>
User Message Handler Interface:
<variablelist>
<varlistentry><term>PKG_SWITCH - Table of User Message Handler Pointers</term>
<listitem>
<literallayout>
struct pkg_switch {
unsigned short pks_type; /* Type code */
int (*pks_handler)(); /* Message Handler */
char *pks_title; /* Description */
};
pks_handler( ptr_to_connection, message_buff )
returns ignored int
</literallayout>
<para>
The user may specify handlers for one or more message types. When
these routines are called they are passed a pointer to the connection
and a pointer to a buffer that contains the message. The user message
handler routine is responsible for freeing the message buffer after
processing it. If there is no message handler for that message type
the message is discarded and the buffered freed. The switch routine
uses an external message handler array, created by the caller, that
defines message types, handler entry points, and a message descriptor
field.
</para>
<para>
The pkg_switch list which is passed to some of the above functions
is a NULL terminated array of structures containing the message type,
a pointer to an function which handles messages of that type, and a
descriptive string. A separate pkg_switch array is kept for each
connection so that several entirely different PKG conversations can
be carried out by a single application at the same time.
</para>
</listitem>
</varlistentry>
<varlistentry><term>PKG_CONN - Connection block structure</term>
<listitem>
<literallayout>
struct pkg_conn {
pkg_file_desc, pkg_magic, mess_len, ptr_to_buffer,
curr_buffer_pos, pkg_switch, errlog, stream_buff,
curr_stream_pos
};
</literallayout>
<para>
Connection block structures are created by pkg_open or pkg_getclient
when a connection is established, and are freed when a connection is
closed. This connection block is used during all I/O requests and
contains the pointer to the start of the current buffer and to the
current position in the buffer for incomplete read or writes. The
mess_len field specifies the number of bytes expected by get. The
pkg_switch array, and a pointer to an error logging function for this
connection is included. The stream buffer is also contained in the
structure.
</para>
<para>
See pkg.h for the actual names of the structure elements.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 xml:id='pkg_impl_notes'><title>Implementation Notes</title>
<para>
At least two implementations of the PKG interface have been done, one based on
TCP/IP connections, the other based on DECnet connections. Future releases of
PKG will be layered on top of a virtual stream library known as NET.
</para>
<para>
The implementation running on 4.2BSD UNIX takes advantage of the "writev"
syscall which can output the header and data in a single syscall/TCP_PUSH
cycle. The advantage of the short data copy is realized only when writev
can not be used, or when a pkg_flush is not required (a la PKG_STREAM).]
</para>
</refsect1>
<refsect1 xml:id='pkg_future_devel'><title>Future Developments</title>
<para>
Further development of the lower levels of the interface will be provided
so that this message passing abstraction can be provided on top of both
DECnet and TCP/IP network layers, with other implementations provided as
required. The program interface layer is to be as described in the body
of this note, the lower layers will interface to the network layers using
whatever subroutine interfaces are most appropriate for the system hosting
the interface. A simple read/write/open/close abstraction may be provided
at a lower layer to further isolate the network layers from the message
handling layer.
</para>
<para>
Where it is necessary to cross network protocol boundaries, message relay
processes will be created to reside on a Janus host that straddles the two
domains. Domain routing and relay point information will be maintained
above the network layer within the extended PKG interface. Clients and
servers will need to determine server host id information from some available
database. Server names must either carry domain information or such
information must be available as part of the server database. Within the
extended PKG interface routing information for domain boundary transits
must be maintained, and appropriate Janus host systems connected to provide
relay services.
</para>
<para>
It is not anticipated that full asynchronous I/O implementation will work
particularly well across domain boundaries, but all other forms of message
transfer should work quite well. As already noted, buffered stream I/O
may be perfectly satisfactory for many applications where full interaction
is not required. Where applicable, this mode of interface is to be
preferred over full asynchronous I/O. Further development of this interface
layer on other protocol families is possible, perhaps even on low level
networks like BITNET and certainly on connection oriented X.25 or OSI
networks.
</para>
</refsect1>
<refsect1 xml:id='author'><title>AUTHOR</title>
<para>Peter B. Shames</para>
</refsect1>
<refsect1 xml:id='bug_reports'><title>BUG REPORTS</title>
<para>
Reports of inaccuracies should be submitted via electronic
mail to <email>devs@brlcad.org</email>
</para>
</refsect1>
</refentry>
-1
View File
@@ -22,7 +22,6 @@ set_target_properties(attr_std_list_xml PROPERTIES FOLDER "DocBook")
set(man5_EN
dsp.xml
${CMAKE_CURRENT_BINARY_DIR}/attributes.xml
benchmark.xml
burst_point_library.xml
burst_shotline_files.xml
bw.xml
File diff suppressed because it is too large Load Diff
-1
View File
@@ -184,7 +184,6 @@ set(mann_EN
rtcheck.xml
saveview.xml
sca.xml
screengrab.xml
search.xml
sed.xml
setview.xml
+6 -10
View File
@@ -18,32 +18,28 @@
<refsynopsisdiv xml:id="synopsis">
<cmdsynopsis sepchar=" ">
<command>eac</command>
<arg choice="req" rep="norepeat"><replaceable>air_code(s)</replaceable></arg>
<arg choice="opt" rep="norepeat">aircodes</arg>
<arg choice="req" rep="norepeat"><replaceable>aircodes</replaceable></arg>
</cmdsynopsis>
</refsynopsisdiv>
<refsection xml:id="description"><title>DESCRIPTION</title>
<para>Adds all the regions in the current model that have any of the
specified aircodes to the display list so that they will appear on
the <emphasis>MGED</emphasis> display. Regions that have nonzero
region identifiers will not be listed by this command. The
<command>whichair</command> command performs a similarsearch, but
just lists the results.
<para>Adds all the regions in the current model that have one of the aircodes in the argument list to the display list so that they will appear on the <emphasis>MGED</emphasis> display. Regions that have nonzero ident numbers will not be listed by this command. The <command>whichair</command> command will perform the same search, but just lists the results.
</para>
</refsection>
<refsection xml:id="examples"><title>EXAMPLES</title>
<para>The example shows the use of the <command>eac</command> command to draw all regions having particular air codes.
</para>
<example><title>Draw all regions having particular air codes.</title>
<variablelist>
<varlistentry>
<term><prompt>mged&gt;</prompt> <userinput>eac 1 2 3</userinput></term>
<listitem>
<para>Draws all regions with
<emphasis>aircodes</emphasis> 1, 2, or 3 in the
<emphasis>MGED</emphasis> display.</para>
<para>Draws all regions with <emphasis>aircodes</emphasis> 1, 2, or 3 in the <emphasis>MGED</emphasis> display.</para>
</listitem>
</varlistentry>
</variablelist>
+1 -1
View File
@@ -19,7 +19,7 @@
<command>edcomb</command>
<arg choice="req" rep="norepeat"><replaceable>combname</replaceable></arg>
<arg choice="opt" rep="norepeat"><replaceable>regionflag regionID airID los% materialID</replaceable></arg>
<arg choice="opt" rep="norepeat"><replaceable>regionflag region_id air_code los material_id</replaceable></arg>
</cmdsynopsis>
</refsynopsisdiv>
+4 -13
View File
@@ -17,19 +17,10 @@
<refsynopsisdiv xml:id="synopsis">
<cmdsynopsis sepchar=" ">
<command>item</command>
<arg choice="req" rep="norepeat"><replaceable>region_name</replaceable></arg>
<arg choice="req" rep="norepeat">
<replaceable>regionID</replaceable>
<arg choice="opt" rep="norepeat">
<replaceable>airID</replaceable>
<arg choice="opt" rep="norepeat">
<replaceable>materialID</replaceable>
<arg choice="opt" rep="norepeat">
<replaceable>los%</replaceable>
</arg>
</arg>
</arg>
</arg>
<arg choice="req" rep="norepeat"><replaceable>region_name ident_number</replaceable></arg>
<arg choice="opt" rep="norepeat"><replaceable>air_code</replaceable></arg>
<arg choice="opt" rep="norepeat"><replaceable>material_code</replaceable></arg>
<arg choice="opt" rep="norepeat"><replaceable>LOS</replaceable></arg>
</cmdsynopsis>
</refsynopsisdiv>
+17 -49
View File
@@ -21,7 +21,6 @@
<arg choice="opt" rep="norepeat">-C</arg>
<arg choice="opt" rep="norepeat">-M</arg>
<arg choice="opt" rep="norepeat">-I</arg>
<arg choice="opt" rep="norepeat">-F "filters"</arg>
<arg choice="opt" rep="norepeat"><replaceable>ObjectName</replaceable></arg>
</cmdsynopsis>
</refsynopsisdiv>
@@ -83,24 +82,27 @@
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-F</option>, <option>--filter</option></term>
<listitem>
<para>
Apply search command style filters to the set of objects to be tested. Allows,
(for example) a user to test only brep objects and not bot objects or only objects
matching a particular name pattern. Does not impact the checks for missing or
cylic geometry - the underlying search mechanism assumes inputs do not have those
particular categories of problem and thus can't be reliably applied in those cases.
</para>
</listitem>
</varlistentry>
</variablelist>
</refsection>
<refsection xml:id="examples"><title>EXAMPLES</title>
<example>
<example>
<title>Examine a single geometry object for validity</title>
<para>
<prompt>mged&gt; </prompt><userinput>lint -I nonsolid.bot</userinput>
<literallayout class="normal">
Checking for invalid objects...
Found invalid objects:
nonsolid.bot[bot] failed bot solid test
</literallayout>
</para>
</example>
<example>
<title>Examine entire database for all defect categories</title>
<para>
@@ -118,41 +120,7 @@ Found references to missing objects:
invalid_extrude_missing_sketch.s/missing_sketch.s
missingentry.c/missing.s
Found invalid objects:
nonsolid.bot[bot] failed solidity test, but BoT type is RT_BOT_SOLID
</literallayout>
</para>
</example>
<example>
<title>Check the validity of a single geometry object</title>
<para>
<prompt>mged&gt; </prompt><userinput>lint -I nonsolid.bot</userinput>
<literallayout class="normal">
Checking for invalid objects...
Found invalid objects:
nonsolid.bot[bot] failed solidity test, but BoT type is RT_BOT_SOLID
</literallayout>
</para>
</example>
<example>
<title>Examine all non-BoT objects in the database matching the name pattern "*_1.*" for invalidity</title>
<para>
<prompt>mged&gt; </prompt><userinput>lint -F "! -type bot -name *_1.*"</userinput>
<literallayout class="normal">
Checking for invalid objects...
Found invalid objects:
Brep_1.s[brep] failed OpenNURBS validity test
brep.m_L[27] loop is not valid.
end of brep.m_T[loop.m_ti[5]=147]=(0,-1.309) and start
of brep.m_T[loop.m_ti[6]=148]=(0,-5.63995e-08) do not match.
brep.m_F[25] face is not valid.
brep.m_L[face.m_li[0]=27] is not valid.
ON_Brep.m_F[25] is invalid.
nonsolid.bot[bot] failed bot solid test
</literallayout>
</para>
+52 -117
View File
@@ -1,132 +1,67 @@
<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:id="overlay">
<refmeta>
<refentrytitle>OVERLAY</refentrytitle>
<manvolnum>nged</manvolnum>
<refmiscinfo class="source">BRL-CAD</refmiscinfo>
<refmiscinfo class="manual">BRL-CAD User Commands</refmiscinfo>
</refmeta>
<refmeta>
<refentrytitle>OVERLAY</refentrytitle>
<manvolnum>nged</manvolnum>
<refmiscinfo class="source">BRL-CAD</refmiscinfo>
<refmiscinfo class="manual">BRL-CAD User Commands</refmiscinfo>
</refmeta>
<refnamediv xml:id="name">
<refname>overlay</refname>
<refpurpose>
Plots the specified UNIX <emphasis>plot_file</emphasis>
in the MGED display.
</refpurpose>
</refnamediv>
<refnamediv xml:id="name">
<refname>overlay</refname>
<refpurpose>Plots the specified UNIX <emphasis>plot_file</emphasis> in the MGED display.
</refpurpose>
</refnamediv>
<!-- body begins here -->
<refsynopsisdiv xml:id="synopsis">
<cmdsynopsis sepchar=" ">
<command>overlay</command>
<arg choice="opt" rep="norepeat"><replaceable>-s #</replaceable></arg>
<arg choice="req" rep="norepeat"><replaceable>plot_file</replaceable></arg>
<arg choice="opt" rep="norepeat"><replaceable>name</replaceable></arg>
</cmdsynopsis>
<cmdsynopsis sepchar=" ">
<command>overlay -F</command>
<arg choice="opt" rep="norepeat"><replaceable>-i</replaceable></arg>
<arg choice="opt" rep="norepeat"><replaceable>-c</replaceable></arg>
<arg choice="opt" rep="norepeat"><replaceable>-z</replaceable></arg>
<arg choice="opt" rep="norepeat"><replaceable>-X #</replaceable></arg>
<arg choice="opt" rep="norepeat"><replaceable>-Y #</replaceable></arg>
<arg choice="opt" rep="norepeat"><replaceable>-w #</replaceable></arg>
<arg choice="opt" rep="norepeat"><replaceable>-n #</replaceable></arg>
<arg choice="opt" rep="norepeat"><replaceable>-S #</replaceable></arg>
<arg choice="opt" rep="norepeat"><replaceable>--format fmt</replaceable></arg>
<arg choice="req" rep="norepeat"><replaceable>img_file</replaceable></arg>
</cmdsynopsis>
</refsynopsisdiv>
<!-- body begins here -->
<refsynopsisdiv xml:id="synopsis">
<cmdsynopsis sepchar=" ">
<command>overlay</command>
<arg choice="req" rep="norepeat"><replaceable>plot_file</replaceable></arg>
<arg choice="opt" rep="norepeat"><replaceable>name</replaceable></arg>
</cmdsynopsis>
</refsynopsisdiv>
<refsection xml:id="description"><title>DESCRIPTION</title>
<refsection xml:id="description"><title>DESCRIPTION</title>
<para>
Plots the specified UNIX <emphasis>plot_file</emphasis> in the current
application display or the specified <emphasis>image file</emphasis> in
the current application embedded framebuffer. When displaying plot
files, multiple files may be specified using a pattern match (e.g.,
<command>overlay</command> <emphasis>*.plot</emphasis>).
<para>Plots the specified UNIX <emphasis>plot_file</emphasis> in the
MGED display. Multiple files may be specified using a pattern match
(e.g., <command>overlay</command> <emphasis>*.plot</emphasis>).
</para>
<para>
When displaying plot files, phony object names are created for each
part of the plot file(s) with a unique color. The names are created
by adding a color to the specified <emphasis>name</emphasis>, or to
_PLOT_OVERLAY_ if no name is provided. The color suffix is built by
converting the RGB color to a six-digit hex number. Each color
corresponds to 2 hex digits, so that white becomes "ffffff," red
becomes "ff0000," green is "00ff00," etc.
<para>Phony object names are created for each part of the plot file
that is in a unique color. The names are created by adding a color
to the specified <emphasis>name</emphasis>, or to “_PLOT_OVER”
if no name is provided. The color suffix is built by converting the
RGB color to a six-digit hex number. Each color corresponds to 2 hex
digits, so that white becomes "ffffff," red becomes "ff0000," green
is "00ff00," etc.
</para>
</refsection>
<refsection xml:id="examples"><title>EXAMPLES</title>
<para>The example shows the use of the <command>overlay</command> command to plot a specified UNIX plot file in the MGED display.
</para>
<para>
Image files will be display in the currently active framebuffer. Currently
multiple images cannot be specified by a single <command>overlay</command>
command (but as the images would overrwrite each other this feature would
not be terribly useful in any case.) However, mulitiple images can be written
in succession to the same framebuffer using the <option>-X</option> and
<option>-Y</option> offset specification options to offset their positions
for simultaneous display. Alternately, if the user wishes to reset the framebuffer
before drawing the new image the <option>-c</option> option may be specified.
</para>
<example><title>Plot a UNIX plot file in the MGED display.</title>
<para>
The <option>-w</option>, <option>-n</option>, and <option>-S</option> options
are used to specify image size for formats such as PIX that do not encode the
image size in their own data. Similarly, <option>--format</option> may be
used to explicitly specify an image format if the filename does not make the
format clear.
</para>
<para>
By default, images are displayed in the framebuffer using their original size.
If the users wishes to use all available space in the image window to display
an image, the <option>-z</option> may be specified to focus the framebuffer on
the image. The <option>-i</option> option may be used to invert an image's
display in the y (vertical) direction.
</para>
</refsection>
<refsection xml:id="examples">
<title>EXAMPLES</title>
<example>
<title>Plot a UNIX plot file in the MGED display.</title>
<para>
<prompt>mged&gt;</prompt><userinput>overlay plot.upl tmp</userinput>
</para>
<para>
Plots the UNIX plot file <emphasis>plot.upl</emphasis> in the MGED
display, using <emphasis>tmp</emphasis> as the base for the phony
object names.
</para>
</example>
<example>
<title>Plot a PNG file in the MGED framebuffer.</title>
<para>
<prompt>mged&gt;</prompt><userinput>overlay -c -F image.png</userinput>
</para>
<para>
Plots the image file <emphasis>image.png</emphasis> in the MGED
framebuffer, first clearing any pre-existing images in the framebuffer.
</para>
</example>
</refsection>
<refsection xml:id="author">
<title>AUTHOR</title>
<para>
BRL-CAD Team
<prompt>mged&gt;</prompt><userinput>overlay plot.upl tmp</userinput>
</para>
</refsection>
<para>Plots the UNIX plot file <emphasis>plot.upl</emphasis> in the MGED display, using <emphasis>tmp</emphasis> as the base for the phony object names.
</para>
</example>
<refsection xml:id="bug_reports">
<title>BUG REPORTS</title>
<para>
Reports of bugs or problems should be submitted via electronic
mail to <email>devs@brlcad.org</email>
</para>
</refsection>
</refsection>
<refsection xml:id="author"><title>AUTHOR</title><para>BRL-CAD Team</para></refsection>
<refsection xml:id="bug_reports"><title>BUG REPORTS</title>
<para>
Reports of bugs or problems should be submitted via electronic
mail to <email>devs@brlcad.org</email>
</para>
</refsection>
</refentry>
+4 -4
View File
@@ -17,13 +17,13 @@
<refsynopsisdiv xml:id="synopsis">
<cmdsynopsis sepchar=" ">
<command>regdef</command>
<arg choice="req" rep="norepeat"><replaceable>regionID</replaceable></arg>
<arg choice="req" rep="norepeat"><replaceable>item</replaceable></arg>
<arg choice="opt" rep="norepeat">
<replaceable>airID</replaceable>
<replaceable>air </replaceable>
<arg choice="opt" rep="norepeat">
<replaceable>los%</replaceable>
<replaceable>los</replaceable>
<arg choice="opt" rep="norepeat">
<replaceable>materialID</replaceable>
<replaceable>material_code</replaceable>
</arg>
</arg>
</arg>
+9 -11
View File
@@ -23,17 +23,16 @@
<arg choice="plain" rep="norepeat"><replaceable>num</replaceable></arg>
</group>
</group>
<arg choice="req" rep="norepeat">comb</arg>
<arg choice="req" rep="norepeat">assembly</arg>
<arg choice="req" rep="norepeat">regionID</arg>
</cmdsynopsis>
</refsynopsisdiv>
<refsection xml:id="description"><title>DESCRIPTION</title>
<para>The 'reid' command sequentially assigns the 'region_id'
attribute value for all regions within a specified combination.
Optionally, the increment between consecutive 'region_id' can be
specified. Once the command is complete, the highest 'region_id' set
is reported.</para>
<para>The 'reid' command sequentially renumbers the 'region_id' attribute
of all regions within a group. Optionally the increment between consecutive
'region_id' can be specified. Once the command is complete, the highest
'region_id' set is reported.</para>
</refsection>
<refsection xml:id="options"><title>OPTIONS</title>
@@ -42,16 +41,15 @@
<term><option>-n num</option></term>
<listitem>
<para>
Increment to use between consecutive region identifiers.
The default is 1.
Increment between consecutive 'region_id'. The default is one.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>comb</option></term>
<term><option>assembly</option></term>
<listitem>
<para>
Name of the combination to search for regions.
Group name
</para>
</listitem>
</varlistentry>
@@ -59,7 +57,7 @@
<term><option>regionID</option></term>
<listitem>
<para>
Region ID to start re-numbering with.
Renumber start number
</para>
</listitem>
</varlistentry>
-73
View File
@@ -1,73 +0,0 @@
<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:id="screengrab">
<refmeta>
<refentrytitle>SCREENGRAB</refentrytitle>
<manvolnum>nged</manvolnum>
<refmiscinfo class="source">BRL-CAD</refmiscinfo>
<refmiscinfo class="manual">BRL-CAD User Commands</refmiscinfo>
</refmeta>
<refnamediv xml:id="name">
<refname>screengrab</refname>
<refpurpose>
Save the current MGED display visual or framebuffer contents to an image file.
</refpurpose>
</refnamediv>
<!-- body begins here -->
<refsynopsisdiv xml:id="synopsis">
<cmdsynopsis sepchar=" ">
<command>screengrab</command>
<arg choice="opt" rep="norepeat"><replaceable>-F</replaceable></arg>
<arg choice="opt" rep="norepeat"><replaceable>--format fmt</replaceable></arg>
<arg choice="req" rep="norepeat"><replaceable>image_file</replaceable></arg>
</cmdsynopsis>
</refsynopsisdiv>
<refsection xml:id="description"><title>DESCRIPTION</title>
<para>
Generates an image file containing either the current application display
manager's visual representation of the current scene or (when the
<option>-F</option> option is specified) the contents of the current
application embedded framebuffer.
</para>
<para>
The output format of the image file will be deduced from the filename, but
if the caller wishes to ensure a specific format the <option>--format</option>
may be used.
</para>
</refsection>
<refsection xml:id="examples">
<title>EXAMPLES</title>
<example>
<title>Write a PNG image file of the MGED framebuffer contents.</title>
<para>
<prompt>mged&gt;</prompt><userinput>screengrab -F fb.png</userinput>
</para>
<para>
Writes the contents of the active MGED framebuffer to the image file
<emphasis>fb.png</emphasis>.
</para>
</example>
</refsection>
<refsection xml:id="author">
<title>AUTHOR</title>
<para>
BRL-CAD Team
</para>
</refsection>
<refsection xml:id="bug_reports">
<title>BUG REPORTS</title>
<para>
Reports of bugs or problems should be submitted via electronic
mail to <email>devs@brlcad.org</email>
</para>
</refsection>
</refentry>
+15 -118
View File
@@ -9,7 +9,7 @@
<refnamediv xml:id="name">
<refname>whichid</refname>
<refpurpose>Reports information relating to usage of the region_id property on regions.
<refpurpose>Lists all the regions that use one of the idents specified.
</refpurpose>
</refnamediv>
@@ -17,135 +17,32 @@
<refsynopsisdiv xml:id="synopsis">
<cmdsynopsis sepchar=" ">
<command>whichid</command>
<arg choice="opt" rep="norepeat"><replaceable>options ...</replaceable></arg>
<arg choice="req" rep="repeat"><replaceable>ident[-ident]</replaceable></arg>
<arg choice="req" rep="norepeat"><replaceable>idents</replaceable></arg>
</cmdsynopsis>
</refsynopsisdiv>
<refsection xml:id="description"><title>DESCRIPTION</title>
<para>
Reports information about the usage of the <emphasis>region_id</emphasis> property
by regions in a .g file. Its default mode is to report which regions in a .g file
are using one or a range of region_id values. If a root object is specified, it
will report that result only for the regions in the tree of the root object.
<para>Lists all the regions that use one of the idents specified.
If the <option>U</option> is specified, the reporting is inverted and the command
will report the ranges of <emphasis>unused</emphasis> ids rather than the regions
using various ids.
</para>
</para>
</refsection>
<refsection xml:id="search_options"><title>OPTIONS</title>
<variablelist remap="TP">
<varlistentry>
<term><emphasis remap="B" role="bold">-U</emphasis></term>
<listitem>
<para>
Report unused id ranges.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis remap="B" role="bold">--root objname</emphasis></term>
<listitem>
<para>
Limit reporting to regions in the CSG tree below <emphasis>objname</emphasis>.
</para>
</listitem>
</varlistentry>
</variablelist>
</refsection>
<refsection xml:id="examples"><title>EXAMPLES</title>
<para>
For these examples the geometry file used is the standard <emphasis>ktank.g</emphasis>
included with BRL-CAD.
</para>
<para>The example shows the use of the <command>whichid</command> command to list all the regions that use one of the specified idents.
</para>
<example>
<title>Report all regions using region ids between 4000 and 7000.</title>
<para>
<prompt>mged&gt;</prompt><userinput>whichid 4000-7000</userinput>
<literallayout class="normal">
Region[s] with ident 4001:
r23
r25
Region[s] with ident 4050:
r24
r26
Region[s] with ident 6001:
r210
Region[s] with ident 6002:
r212
</literallayout>
</para>
</example>
<example><title>List all regions having the specified idents.</title>
<example>
<title>Report all regions using region ids between 1000-2000 and 4000-5000.</title>
<para>
<prompt>mged&gt;</prompt><userinput>whichid 1000-2000 4000-5000</userinput>
<literallayout class="normal">
Region[s] with ident 1010:
r213
Region[s] with ident 1011:
r214
Region[s] with ident 4001:
r23
r25
Region[s] with ident 4050:
r24
r26
</literallayout>
</para>
</example>
<example>
<title>Report all regions using region ids between 1000-2000 and 4000-5000, limiting
results to regions in the <emphasis>tank</emphasis> geomtry tree.</title>
<para>
<prompt>mged&gt;</prompt><userinput>whichid --root tank 1000-2000 4000-5000</userinput>
<literallayout class="normal">
Region[s] with ident 4001:
r23
r25
Region[s] with ident 4050:
r24
r26
</literallayout>
</para>
</example>
<example>
<title>Report all unused region_id ranges in the database between 1 and 1000.</title>
<para>
<prompt>mged&gt;</prompt><userinput>whichid -U 1-1000</userinput>
<literallayout class="normal">
Unused idents:
1
4
6-99
105-109
112-114
116-119
122-159
161-164
166-204
210-224
226-504
519-609
620-719
730-829
840-939
950-1000
</literallayout>
</para>
</example>
<para>
<prompt>mged&gt;</prompt><userinput>whichid 1002 1003</userinput>
</para>
<para>Lists all regions having idents of 1002 or 1003.
</para>
</example>
</refsection>
+1181
View File
File diff suppressed because it is too large Load Diff
+5
View File
@@ -71,6 +71,7 @@ set(manuals_mged_HTML
manuals/mged/brlcad_solids.html
manuals/mged/build_def_index.sh
manuals/mged/cmd_line_ed.html
manuals/mged/concl.html
manuals/mged/contents.html
manuals/mged/coord-axes.gif
manuals/mged/cup.g
@@ -94,6 +95,7 @@ set(manuals_mged_HTML
manuals/mged/handle.jpg
manuals/mged/index.html
manuals/mged/mged.html
manuals/mged/mged1.html
manuals/mged/mged2.html
manuals/mged/mged3.html
manuals/mged/mged_callbacks.html
@@ -108,6 +110,8 @@ set(manuals_mged_HTML
manuals/mged/mug_camo.jpg
manuals/mged/mug_green.gif
manuals/mged/mug_green.jpg
manuals/mged/notes.html
manuals/mged/outline
manuals/mged/peewee.gif
manuals/mged/peewee.jpg
manuals/mged/preface.html
@@ -115,6 +119,7 @@ set(manuals_mged_HTML
manuals/mged/rim.gif
manuals/mged/rim.jpg
manuals/mged/shaders.html
manuals/mged/skipped
manuals/mged/tex-html.tcl
)
ADD_DOC(manuals_mged_HTML html/manuals/mged)
File diff suppressed because it is too large Load Diff
+214 -222
View File
@@ -1,222 +1,214 @@
<!DOCTYPE html>
<html>
<head>
<title>BRL­CAD Primitive Solids</title>
<style type="text/css">
body {
background-color: #E0D8C8;
color: #000000;
}
a.c2 {font-style: italic}
a.c1 {font-weight: bold}
</style>
</head>
<body>
<h1>BRL­CAD Primitive Solids</h1>
<hr>
<dt>
<a class="c1" name="ARB" id="ARB">ARB</a>
</dt>
<dd>The <i>ARB</i> is a planar-faced convex solid with between
four and eight unique vertices. The specific type of <i>ARB</i>
is often referred to by adding the number of unique vertices to
the word <i>ARB</i>. For example, an <i>ARB8</i> is the usual
solid block, an <i>ARB4</i> is a tetrahedron, and an <i>ARB6</i>
may be a wedge shape.</dd>
<hr>
<dt>
<a class="c1" name="ARS" id="ARS">arbitrary faceted solid</a>
</dt>
<dd>The <i>arbitrary faceted solid</i> (Also referred to as
<i>ARS</i>) is a planar-faced solid defined by any number of
curves (more precisely closed polylines). These curves are
typically planar <i>waterline</i> or <i>station</i> curves, but
they are not restricted to being planar. Each curve in a
particular <i>ARS</i> must have the same number of points. The
first and last curves are normally degenerate, each consisting of
repetitions of a single point to make up the correct number of
points for a curve. Faces are built by connecting corresponding
points on adjacent curves. Since the curves are assumed to be
closed, the last point on any curve is implicitly connected to
the first point on the same curve</dd>
<hr>
<dt>
<a class="c1" name="ARBN" id="ARBN">ARBN</a>
</dt>
<dd>The <i>ARBN</i> is a planar faced convex solid defined by any
number of bounding planes.</dd>
<hr>
<dt>
<a class="c1" name="BOT" id="BOT">BOT</a>
</dt>
<dd>The <i>BOT</i> solid is a collection of triangular facets. It
may represent a zero thickness surface, a finite thickness plate,
or a solid volume bounded by the triangles. The surface normal
for each triangle may be unoriented, oriented according to the
right-hand rule, or oriented according to the left-hand
rule.</dd>
<hr>
<dt>
<a class="c1" name="ELL" id="ELL">ellipsoid</a>
</dt>
<dd>The <i>ellipsoid</i> is a solid defined by three mutually
perpendicular semi­axes. When the axes are of unequal length, an
ellipsoid is generated. When the axes are all the same length, a
sphere is generated.</dd>
<hr>
<dt>
<a class="c1" name="EHY" id="EHY">elliptical hyperboloid</a>
</dt>
<dd>The <i>elliptical hyperboloid</i> (also referred to as
<i>EHY</i>) is a solid with an elliptical base the remainder of
the surface of which is defined by hyperbolas that run from any
point on the ellipse through a common vertex at a specified
distance from the ellipse and back to the ellipse at the point
diametrically opposite the starting point. Further control of the
surface may be obtained by specifying the distance from the
hyperbolas to the vertex of the asymptotes.</dd>
<hr>
<dt>
<a class="c1" name="EPA" id="EPA">elliptical paraboloid</a>
</dt>
<dd>The <i>elliptical paraboloid</i> (also referred to as
<i>EPA</i>) is a solid with an elliptical base the remainder of
the surface of which is defined by parabolas that run from any
point on the ellipse through a common vertex at a specified
distance from the ellipse and back to the ellipse at a point
diametrically opposite the starting point.</dd>
<hr>
<dt>
<a class="c1" name="ETO" id="ETO">elliptical torus</a>
</dt>
<dd>The <i>Elliptical Torus</i> (Also referred to as <i>ETO</i>)
is defined by sweeping an ellipse through a circular path. The
plane of the ellipse and the plane of the circular path are
mutually perpendicular.</dd>
<hr>
<dt>
<a class="c1" name="EBM" id="EBM">extruded bitmap</a>
</dt>
<dd>The <i>extruded bitmap</i> (also referred to as <i>EBM</i>)
is a solid based on a greyscale bitmap. The bitmap is an array of
unsigned char values, see bw(5), and is extruded by some
distance. The <i>EBM</i> solid requires the dimensions of the
bitmap file (height and width in bytes), an extrusion length, and
a transformation matrix to position the <i>EBM</i>. Each byte in
the bitmap file is treated as the base of a cell that is extruded
by the specified extrusion length. If the value of the byte is
non­zero, then that cell is considered solid.</dd>
<hr>
<dt>
<a class="c1" name="HAF" id="HAF">half space</a>
</dt>
<dd>A <i>half space</i> is the portion of space on one side of a
plane. It is represented by its boundary (the plane) and its
outward-pointing normal vector.</dd>
<hr>
<dt>
<a class="c1" name="HF" id="HF">height field</a>
</dt>
<dd>The <i>height field</i> is a solid defined by a series of
height measurements on a regular grid. In addition to a file of
height measurements, this solid also requires a location vector,
width and height direction vectors, and some scale factors.</dd>
<hr>
<dt>
<a class="c1" name="NMG" id="NMG"><i>n</i>­manifold
geometry</a>
</dt>(also referred to as <i>NMG</i>)
<dd>
The <i>n­manifold geometry</i> solid, sometimes known as a
<i>non­manifold geometry</i>, is based on the description by
Kevin Weiler in ``The Radial Edge Structure: A Topological
Representation for Non­Manifold Geometric Modeling'' from
<i>Geometric Modeling for CAD Applications</i> (Springer
Verlag, 1987). A useful reference for the <i>NMG</i> solid is
<a class="c2" href=
"http://ftp.arl.army.mil/~mike/papers/90nmg">Combinatorial
Solid Geometry, Boundary Representations, and Non_Manifold
Geometry</a>.
</dd>
<hr>
<dt>
<a class="c1" name="PART" id="PART">particle</a>
</dt>
<dd>The <i>particle</i> solid is a lozenge-shaped object defined
by a vertex, a height vector and radii at both ends. The body of
the <i>particle</i> is either a cylinder or a truncated cone,
depending on the values of the radii. Each end of the
<i>particle</i> is a hemisphere of the specified radius.</dd>
<hr>
<dt>
<a class="c1" name="PIPE" id="PIPE">pipe</a>
</dt>
<dd>The <i>pipe</i> solid is defined by a sequence of control
points, each with values for inner radius, outer radius, and bend
radius. The actual <i>pipe</i> starts at the first control point
and ends at the last control point. The intervening control
points are replaced by circular bends with the specified bend
radius, so the <i>pipe</i> is not likely to actually pass through
these points. An inner radius of zero indicates a solid
<i>pipe</i> or wire.</dd>
<hr>
<dt>
<a class="c1" name="PG" id="PG">polysolid</a>
</dt>
<dd>The <i>polysolid</i> is defined by a set of planar polygons.
Each polygon may have up to 5 unique vertices. The vertices of
each polygon must be in counter­clockwise order when viewed from
outside the solid. The set of polygons must completely enclose
the interior of the <i>polysolid</i>.</dd>
<hr>
<dt>
<a class="c1" name="RHC" id="RHC">right hyperbolic cylinder</a>
</dt>
<dd>The <i>right hyperbolic cylinder</i> (also referred to as
<i>RHC</i>) is a solid built by extruding a truncated hyperbola
through a height vector.</dd>
<hr>
<dt>
<a class="c1" name="RPC" id="RPC">right parabolic cylinder</a>
</dt>
<dd>The <i>right parabolic cylinder</i> (also referred to as
<i>RPC</i>) is a solid built by extruding a truncated parabola
through a height vector.</dd>
<hr>
<dt>
<a class="c1" name="SPLINE" id="SPLINE">spline</a>
</dt>
<dd>The <i>spline</i> solid is defined by a set of non­uniform
rational <i>B</i>­spline surfaces (NURBs). There are no trimming
curves in the <i>spline</i> solid, so each NURB surface must
exactly adjoin its neighbor so that the interior of the
<i>spline</i> solid is completely enclosed and no parts of any
NURB surface are dangling outside the solid.</dd>
<hr>
<dt>
<a class="c1" name="TOR" id="TOR">torus</a>
</dt>
<dd>The <i>torus</i> is defined by sweeping one circle through a
larger circular path. The planes of the circles are mutually
perpendicular.</dd>
<hr>
<dt>
<a class="c1" name="TGC" id="TGC">truncated general cone</a>
</dt>(also referred to as <i>TGC</i>)
<dd>The <i>TGC</i> solid is a truncated cone with elliptical (or
circular) base and top. The base and top must be parallel, but
the height vector connecting the center of the base with the
center of the top does not need to be perpendicular to them.</dd>
<hr>
<dt>
<a class="c1" name="VOL" id="VOL">vol</a>
</dt>
<dd>The <i>vol</i> solid is defined by a 3-dimensional array of
unsigned char values. The solid requires a file of these values,
the extent of the file (in bytes) in each dimension, the size of
each cell, and high and low thresholds. Any value in the file
that is between the thresholds (inclusive) represents a solid
cell.</dd>
<hr>
</body>
</html>
<HTML>
<HEAD>
<TITLE>BRL&#173CAD Primitive Solids </Title>
</HEAD>
<BODY BGCOLOR="#E0D8c8" Text="#000000">
<H1>BRL&#173CAD Primitive Solids</H1>
<HR>
<DT><a NAME="ARB"><B>ARB</B></DT>
<DD>The <I>ARB</I> is a planar-faced convex solid with between four and eight unique vertices. The specific type of <I>ARB</I> is often referred
to by adding the number of unique vertices to the word <I>ARB</I>. For example, an <I>ARB8</I>
is the usual solid block, an <I>ARB4</I> is a tetrahedron, and an <I>ARB6</I>
may be a wedge shape.
</DD>
<HR>
<DT><a NAME="ARS"><B>arbitrary faceted solid</B></DT>
<DD>The <I>arbitrary faceted solid</I> (Also referred to as <I>ARS</I>)
is a planar-faced solid defined by any number of curves (more precisely closed polylines). These curves are typically
planar <I>waterline</I> or <I>station</I> curves, but they are not restricted to
being planar. Each curve in a particular <I>ARS</I> must have the same number of points.
The first and last curves are normally degenerate,
each consisting of repetitions of
a single point to make up the correct number of points for a curve. Faces are built
by connecting corresponding points on adjacent curves. Since the curves are assumed to be closed,
the last point on any curve is implicitly connected to the first point on the same curve
</DD>
<HR>
<DT><a NAME="ARBN"><B>ARBN</B></DT>
<DD>The <I>ARBN</I> is a planar faced convex solid defined by any number of
bounding planes.
</DD>
<HR>
<DT><a NAME="BOT"><B>BOT</B></DT>
<DD>The <I>BOT</I> solid is a collection of triangular facets. It may represent a zero thickness surface,
a finite thickness plate, or a solid volume bounded by the triangles. The surface normal for each triangle may be
unoriented, oriented according to the right-hand rule, or oriented according to the left-hand rule.
</DD>
<HR>
<DT><a NAME="ELL"><B>ellipsoid</B></DT>
<DD>The <I>ellipsoid</I> is a solid defined by three
mutually perpendicular semi&#173axes. When the axes are
of unequal length, an ellipsoid is generated. When the axes
are all the same length, a sphere is generated.
</DD>
<HR>
<DT><a NAME="EHY"><B>elliptical hyperboloid</B></DT>
<DD>The <I>elliptical hyperboloid</I> (also referred to as <I>EHY</I>)
is a solid with an elliptical base the remainder of the surface of which
is defined by hyperbolas that run from any point on the ellipse through
a common vertex at a specified distance from the ellipse and back to the ellipse
at the point diametrically opposite the starting point.
Further control of the surface may be obtained
by specifying the distance from the hyperbolas to the vertex of the asymptotes.
</DD>
<HR>
<DT><a NAME="EPA"><B>elliptical paraboloid</B></DT>
<DD>The <I>elliptical paraboloid</I> (also referred to as <I>EPA</I>)
is a solid with an elliptical base the remainder of the surface of which
is defined by parabolas that run from any point on the ellipse through
a common vertex at a specified distance from the ellipse and back to the ellipse
at a point diametrically opposite the starting point.
</DD>
<HR>
<DT><a NAME="ETO"><B>elliptical torus</B></DT>
<DD>The <I>Elliptical Torus</I> (Also referred to as <I>ETO</I>)
is defined by sweeping an ellipse through a circular path. The plane of the ellipse
and the plane of the circular path are mutually perpendicular.
</DD>
<HR>
<DT><a NAME="EBM"><B>extruded bitmap</B></DT>
<DD>The <I>extruded bitmap</I> (also referred to as <I>EBM</I>)
is a solid based on a greyscale bitmap. The bitmap is an array of unsigned char values,
see bw(5), and is extruded by some distance. The <I>EBM</I> solid requires
the dimensions of the bitmap file (height and width in bytes), an extrusion length,
and a transformation matrix to position the <I>EBM</I>. Each byte in the
bitmap file is treated as the base of a cell that is extruded by the specified
extrusion length. If the value of the byte is non&#173zero, then that cell is considered solid.
</DD>
<HR>
<DT><a NAME="HAF"><B>half space</B></DT>
<DD>A <I>half space</I> is the portion of space on one side of a plane.
It is represented by its boundary (the plane) and its outward-pointing normal vector.
</DD>
<HR>
<DT><a NAME="HF"><B>height field</B></DT>
<DD>The <I>height field</I> is a solid defined by a series of height measurements on
a regular grid. In addition to a file of height measurements, this solid also requires
a location vector, width and height direction vectors, and some scale factors.
</DD>
<HR>
<DT><a NAME="NMG"><B><I>n</I>&#173manifold geometry</B></DT> (also referred to as <I>NMG</I>)
<DD>The <I>n&#173manifold geometry</I> solid,
sometimes known as a <I>non&#173manifold geometry</I>,
is based on the description by
Kevin Weiler in ``The Radial Edge Structure: A Topological Representation
for Non&#173Manifold Geometric Modeling'' from <I>Geometric Modeling for CAD Applications</I>
(Springer Verlag, 1987).
A useful reference for the <I>NMG</I> solid
is
<a href="http://ftp.arl.army.mil/~mike/papers/90nmg"><I>Combinatorial
Solid Geometry, Boundary Representations, and Non_Manifold Geometry</I></a>.
</DD>
<HR>
<DT><a NAME="PART"><B>particle</B></DT>
<DD>The <I>particle</I> solid is a lozenge-shaped object defined by
a vertex, a height vector and radii at both ends. The body of the <I>particle</I>
is either a cylinder or a truncated cone, depending on the values of the radii.
Each end of the <I>particle</I> is a hemisphere of the specified radius.
</DD>
<HR>
<DT><a NAME="PIPE"><B>pipe</B></DT>
<DD>The <I>pipe</I> solid is defined by a sequence of control points, each
with values for inner radius, outer radius, and bend radius. The actual <I>pipe</I>
starts at the first control point and ends at the last control point.
The intervening control points are replaced by circular bends with the
specified bend radius, so the <I>pipe</I> is not likely to actually pass through
these points. An inner radius of zero indicates a solid <I>pipe</I> or wire.
</DD>
<HR>
<DT><a NAME="PG"><B>polysolid</B></DT>
<DD>The <I>polysolid</I> is defined by a set of planar polygons. Each polygon
may have up to 5 unique vertices. The vertices of each polygon must be in
counter&#173clockwise order when viewed from outside the solid. The set of polygons
must completely enclose the interior of the <I>polysolid</I>.
</DD>
<HR>
<DT><a NAME="RHC"><B>right hyperbolic cylinder</B></DT>
<DD>The <I>right hyperbolic cylinder</I> (also referred to as <I>RHC</I>)
is a solid built by extruding a truncated hyperbola through a height vector.
</DD>
<HR>
<DT><a NAME="RPC"><B>right parabolic cylinder</B></DT>
<DD>The <I>right parabolic cylinder</I> (also referred to as <I>RPC</I>)
is a solid built by extruding a truncated parabola through a height vector.
</DD>
<HR>
<DT><a NAME="SPLINE"><B>spline</B></DT>
<DD>The <I>spline</I> solid is defined by a set of non&#173uniform rational
<I>B</I>&#173spline surfaces (NURBs). There are no trimming curves in the <I>spline</I>
solid, so each NURB surface must exactly adjoin its neighbor so that the
interior of the <I>spline</I> solid is completely enclosed and no parts of any NURB
surface are dangling outside the solid.
</DD>
<HR>
<DT><a NAME="TOR"><B>torus</B></DT>
<DD>The <I>torus</I> is defined by sweeping one circle through a larger circular path.
The planes of the circles are mutually perpendicular.
</DD>
<HR>
<DT><a NAME="TGC"><B>truncated general cone</B></DT> (also referred to as <I>TGC</I>)
<DD>The <I>TGC</I> solid is a truncated cone with elliptical (or circular) base and top.
The base and top must be parallel, but the height vector connecting the center of
the base with the center of the top does not need to be perpendicular to them.
</DD>
<HR>
<DT><a NAME="VOL"><B>vol</B></DT>
<DD>The <I>vol</I> solid is defined by a 3-dimensional array of unsigned char values.
The solid requires a file of these values, the extent of the file (in bytes) in each dimension, the
size of each cell, and high and low thresholds. Any value in the file that is between the
thresholds (inclusive) represents a solid cell.
</DD>
<HR>
</BODY>
</HTML>
+117 -352
View File
@@ -1,355 +1,120 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
<title>Command Line Editing</title>
<style type="text/css">
body {
background-color: #E0D8C8;
color: #000000;
}
div.c1 {text-align: center}
</style>
</head>
<body>
<div class="c1">
<h2>Command Line Editing</h2>
</div><a name="emacs"></a>
<div class="c1">
<h3>Emacs Bindings</h3>
</div>
<table>
<tr>
<th align="left">Key Sequence</th>
<th align="left">Function</th>
</tr>
<tr>
<td align="left">BackSpace</td>
<td align="left">backward delete character</td>
</tr>
<tr>
<td align="left">Delete</td>
<td align="left">backward delete character</td>
</tr>
<tr>
<td align="left">Left</td>
<td align="left">backward character</td>
</tr>
<tr>
<td align="left">Right</td>
<td align="left">forward character</td>
</tr>
<tr>
<td align="left">Up</td>
<td align="left">previous command</td>
</tr>
<tr>
<td align="left">Down</td>
<td align="left">next command</td>
</tr>
<tr>
<td align="left">Home</td>
<td align="left">beginning of line</td>
</tr>
<tr>
<td align="left">End</td>
<td align="left">end of line</td>
</tr>
<tr>
<td align="left">C-a</td>
<td align="left">move to beginning of line</td>
</tr>
<tr>
<td align="left">C-b</td>
<td align="left">move back one character</td>
</tr>
<tr>
<td align="left">C-c</td>
<td align="left">interrupt</td>
</tr>
<tr>
<td align="left">C-d</td>
<td align="left">delete character at cursor</td>
</tr>
<tr>
<td align="left">C-e</td>
<td align="left">move to end of line</td>
</tr>
<tr>
<td align="left">C-f</td>
<td align="left">move forward one character</td>
</tr>
<tr>
<td align="left">C-h</td>
<td align="left">backward delete character</td>
</tr>
<tr>
<td align="left">C-k</td>
<td align="left">delete to end of line</td>
</tr>
<tr>
<td align="left">C-n</td>
<td align="left">next history command</td>
</tr>
<tr>
<td align="left">C-p</td>
<td align="left">previous history command</td>
</tr>
<tr>
<td align="left">C-t</td>
<td align="left">transpose characters</td>
</tr>
<tr>
<td align="left">C-u</td>
<td align="left">delete whole line</td>
</tr>
<tr>
<td align="left">C-w</td>
<td align="left">backward delete word</td>
</tr>
</table><br>
<hr>
<br>
<a name="vi"></a>
<div class="c1">
<h3>VI Bindings</h3>
</div>
<table>
<caption>
<strong>Insert and Command Mode</strong>
</caption>
<tr>
<th align="left">Key Sequence</th>
<th align="left">Function</th>
</tr>
<tr>
<td align="left">Delete</td>
<td align="left">backward delete character</td>
</tr>
<tr>
<td align="left">Up</td>
<td align="left">previous command</td>
</tr>
<tr>
<td align="left">Down</td>
<td align="left">next command</td>
</tr>
<tr>
<td align="left">Home</td>
<td align="left">beginning of line</td>
</tr>
<tr>
<td align="left">End</td>
<td align="left">end of line</td>
</tr>
<tr>
<td align="left">Control-a</td>
<td align="left">beginning of line</td>
</tr>
<tr>
<td align="left">Control-b</td>
<td align="left">backward character</td>
</tr>
<tr>
<td align="left">Control-c</td>
<td align="left">interrupt command</td>
</tr>
<tr>
<td align="left">Control-e</td>
<td align="left">end of line</td>
</tr>
<tr>
<td align="left">Control-f</td>
<td align="left">forward character</td>
</tr>
<tr>
<td align="left">Control-h</td>
<td align="left">backward delete character</td>
</tr>
<tr>
<td align="left">Control-k</td>
<td align="left">delete end of line</td>
</tr>
<tr>
<td align="left">Control-n</td>
<td align="left">next command</td>
</tr>
<tr>
<td align="left">Control-p</td>
<td align="left">previous command</td>
</tr>
<tr>
<td align="left">Control-t</td>
<td align="left">transpose</td>
</tr>
<tr>
<td align="left">Control-u</td>
<td align="left">delete to beginning of line</td>
</tr>
<tr>
<td align="left">Control-w</td>
<td align="left">backward delete word</td>
</tr>
</table>
<pre>
<HTML>
<HEAD>
<title>Command Line Editing</title>
</HEAD>
<BODY BGCOLOR="#E0D8c8" TEXT="#000000">
</pre>
<table>
<caption>
<strong>Insert Mode</strong>
</caption>
<tr>
<th align="left">Key Sequence</th>
<th align="left">Function</th>
</tr>
<tr>
<td align="left">Escape</td>
<td align="left">command</td>
</tr>
<tr>
<td align="left">Left</td>
<td align="left">backward character, command</td>
</tr>
<tr>
<td align="left">Right</td>
<td align="left">forward character, command</td>
</tr>
<tr>
<td align="left">BackSpace</td>
<td align="left">backward delete character</td>
</tr>
</table>
<pre>
<CENTER><H2>Command Line Editing</H2></CENTER>
</pre>
<table>
<caption>
<strong>Command Mode</strong>
</caption>
<tr>
<th align="left">Key Sequence</th>
<th align="left">Function</th>
</tr>
<tr>
<td align="left">Left</td>
<td align="left">backward character</td>
</tr>
<tr>
<td align="left">Right</td>
<td align="left">forward character</td>
</tr>
<tr>
<td align="left">BackSpace</td>
<td align="left">backward character</td>
</tr>
<tr>
<td align="left">Space</td>
<td align="left">forward character</td>
</tr>
<tr>
<td align="left">A</td>
<td align="left">end of line, insert (i.e. append to end of
line)</td>
</tr>
<tr>
<td align="left">C</td>
<td align="left">delete to end of line, insert</td>
</tr>
<tr>
<td align="left">D</td>
<td align="left">delete to end of line</td>
</tr>
<tr>
<td align="left">F</td>
<td align="left">search backward character</td>
</tr>
<tr>
<td align="left">I</td>
<td align="left">beginning of line, insert</td>
</tr>
<tr>
<td align="left">R</td>
<td align="left">overwrite</td>
</tr>
<tr>
<td align="left">X</td>
<td align="left">backward delete character</td>
</tr>
<tr>
<td align="left">0</td>
<td align="left">beginning of line</td>
</tr>
<tr>
<td align="left">$</td>
<td align="left">end of line</td>
</tr>
<tr>
<td align="left">;</td>
<td align="left">continue search in same direction</td>
</tr>
<tr>
<td align="left">,</td>
<td align="left">continue search in opposite direction</td>
</tr>
<tr>
<td align="left">a</td>
<td align="left">forward character, insert (i.e. append)</td>
</tr>
<tr>
<td align="left">b</td>
<td align="left">backward word</td>
</tr>
<tr>
<td align="left">c</td>
<td align="left">change</td>
</tr>
<tr>
<td align="left">d</td>
<td align="left">delete</td>
</tr>
<tr>
<td align="left">e</td>
<td align="left">end of word</td>
</tr>
<tr>
<td align="left">f</td>
<td align="left">search forward character</td>
</tr>
<tr>
<td align="left">h</td>
<td align="left">backward character</td>
</tr>
<tr>
<td align="left">i</td>
<td align="left">insert</td>
</tr>
<tr>
<td align="left">j</td>
<td align="left">next command</td>
</tr>
<tr>
<td align="left">k</td>
<td align="left">previous command</td>
</tr>
<tr>
<td align="left">l</td>
<td align="left">forward character</td>
</tr>
<tr>
<td align="left">r</td>
<td align="left">replace character</td>
</tr>
<tr>
<td align="left">s</td>
<td align="left">delete character, insert</td>
</tr>
<tr>
<td align="left">w</td>
<td align="left">forward word</td>
</tr>
<tr>
<td align="left">x</td>
<td align="left">delete character</td>
</tr>
</table>
</body>
</html>
<A NAME="emacs">
<CENTER><H3>Emacs Bindings</H3></CENTER>
<TABLE>
<TR><TH ALIGN=LEFT>Key Sequence</TH><TH ALIGN=LEFT>Function</TH>
<TR><TD ALIGN=LEFT>BackSpace</TD><TD ALIGN=LEFT>backward delete character</TD>
<TR><TD ALIGN=LEFT>Delete</TD><TD ALIGN=LEFT>backward delete character</TD>
<TR><TD ALIGN=LEFT>Left</TD><TD ALIGN=LEFT>backward character</TD>
<TR><TD ALIGN=LEFT>Right</TD><TD ALIGN=LEFT>forward character</TD>
<TR><TD ALIGN=LEFT>Up</TD><TD ALIGN=LEFT>previous command</TD>
<TR><TD ALIGN=LEFT>Down</TD><TD ALIGN=LEFT>next command</TD>
<TR><TD ALIGN=LEFT>Home</TD><TD ALIGN=LEFT>beginning of line</TD>
<TR><TD ALIGN=LEFT>End</TD><TD ALIGN=LEFT>end of line</TD>
<TR><TD ALIGN=LEFT>C-a</TD><TD ALIGN=LEFT>move to beginning of line</TD>
<TR><TD ALIGN=LEFT>C-b</TD><TD ALIGN=LEFT>move back one character</TD>
<TR><TD ALIGN=LEFT>C-c</TD><TD ALIGN=LEFT>interrupt</TD>
<TR><TD ALIGN=LEFT>C-d</TD><TD ALIGN=LEFT>delete character at cursor</TD>
<TR><TD ALIGN=LEFT>C-e</TD><TD ALIGN=LEFT>move to end of line</TD>
<TR><TD ALIGN=LEFT>C-f</TD><TD ALIGN=LEFT>move forward one character</TD>
<TR><TD ALIGN=LEFT>C-h</TD><TD ALIGN=LEFT>backward delete character</TD>
<TR><TD ALIGN=LEFT>C-k</TD><TD ALIGN=LEFT>delete to end of line</TD>
<TR><TD ALIGN=LEFT>C-n</TD><TD ALIGN=LEFT>next history command</TD>
<TR><TD ALIGN=LEFT>C-p</TD><TD ALIGN=LEFT>previous history command</TD>
<TR><TD ALIGN=LEFT>C-t</TD><TD ALIGN=LEFT>transpose characters</TD>
<TR><TD ALIGN=LEFT>C-u</TD><TD ALIGN=LEFT>delete whole line</TD>
<TR><TD ALIGN=LEFT>C-w</TD><TD ALIGN=LEFT>backward delete word</TD>
</TABLE>
<BR>
<HR>
<BR>
<A NAME="vi">
<CENTER><H3>VI Bindings</H3></CENTER>
<TABLE>
<CAPTION><STRONG>Insert and Command Mode</STRONG></CAPTION>
<TR><TH ALIGN=LEFT>Key Sequence</TH><TH ALIGN=LEFT>Function</TH>
<TR><TD ALIGN=LEFT>Delete</TD><TD ALIGN=LEFT>backward delete character</TD>
<TR><TD ALIGN=LEFT>Up</TD><TD ALIGN=LEFT>previous command</TD>
<TR><TD ALIGN=LEFT>Down</TD><TD ALIGN=LEFT>next command</TD>
<TR><TD ALIGN=LEFT>Home</TD><TD ALIGN=LEFT>beginning of line</TD>
<TR><TD ALIGN=LEFT>End</TD><TD ALIGN=LEFT>end of line</TD>
<TR><TD ALIGN=LEFT>Control-a</TD><TD ALIGN=LEFT>beginning of line</TD>
<TR><TD ALIGN=LEFT>Control-b</TD><TD ALIGN=LEFT>backward character</TD>
<TR><TD ALIGN=LEFT>Control-c</TD><TD ALIGN=LEFT>interrupt command</TD>
<TR><TD ALIGN=LEFT>Control-e</TD><TD ALIGN=LEFT>end of line</TD>
<TR><TD ALIGN=LEFT>Control-f</TD><TD ALIGN=LEFT>forward character</TD>
<TR><TD ALIGN=LEFT>Control-h</TD><TD ALIGN=LEFT>backward delete character</TD>
<TR><TD ALIGN=LEFT>Control-k</TD><TD ALIGN=LEFT>delete end of line</TD>
<TR><TD ALIGN=LEFT>Control-n</TD><TD ALIGN=LEFT>next command</TD>
<TR><TD ALIGN=LEFT>Control-p</TD><TD ALIGN=LEFT>previous command</TD>
<TR><TD ALIGN=LEFT>Control-t</TD><TD ALIGN=LEFT>transpose</TD>
<TR><TD ALIGN=LEFT>Control-u</TD><TD ALIGN=LEFT>delete to beginning of line</TD>
<TR><TD ALIGN=LEFT>Control-w</TD><TD ALIGN=LEFT>backward delete word</TD>
</TABLE>
<PRE>
</PRE>
<TABLE>
<CAPTION><STRONG>Insert Mode</STRONG></CAPTION>
<TR><TH ALIGN=LEFT>Key Sequence</TH><TH ALIGN=LEFT>Function</TH>
<TR><TD ALIGN=LEFT>Escape</TD><TD ALIGN=LEFT>command</TD>
<TR><TD ALIGN=LEFT>Left</TD><TD ALIGN=LEFT>backward character, command</TD>
<TR><TD ALIGN=LEFT>Right</TD><TD ALIGN=LEFT>forward character, command</TD>
<TR><TD ALIGN=LEFT>BackSpace</TD><TD ALIGN=LEFT>backward delete character</TD>
</TABLE>
<PRE>
</PRE>
<TABLE>
<CAPTION><STRONG>Command Mode</STRONG></CAPTION>
<CENTER>
<TR><TH ALIGN=LEFT>Key Sequence</TH><TH ALIGN=LEFT>Function</TH>
<TR><TD ALIGN=LEFT>Left</TD><TD ALIGN=LEFT>backward character</TD>
<TR><TD ALIGN=LEFT>Right</TD><TD ALIGN=LEFT>forward character</TD>
<TR><TD ALIGN=LEFT>BackSpace</TD><TD ALIGN=LEFT>backward character</TD>
<TR><TD ALIGN=LEFT>Space</TD><TD ALIGN=LEFT>forward character</TD>
<TR><TD ALIGN=LEFT>A</TD><TD ALIGN=LEFT>end of line, insert (i.e. append to end of line)</TD>
<TR><TD ALIGN=LEFT>C</TD><TD ALIGN=LEFT>delete to end of line, insert</TD>
<TR><TD ALIGN=LEFT>D</TD><TD ALIGN=LEFT>delete to end of line</TD>
<TR><TD ALIGN=LEFT>F</TD><TD ALIGN=LEFT>search backward character</TD>
<TR><TD ALIGN=LEFT>I</TD><TD ALIGN=LEFT>beginning of line, insert</TD>
<TR><TD ALIGN=LEFT>R</TD><TD ALIGN=LEFT>overwrite</TD>
<TR><TD ALIGN=LEFT>X</TD><TD ALIGN=LEFT>backward delete character</TD>
<TR><TD ALIGN=LEFT>0</TD><TD ALIGN=LEFT>beginning of line</TD>
<TR><TD ALIGN=LEFT>$</TD><TD ALIGN=LEFT>end of line</TD>
<TR><TD ALIGN=LEFT>;</TD><TD ALIGN=LEFT>continue search in same direction</TD>
<TR><TD ALIGN=LEFT>,</TD><TD ALIGN=LEFT>continue search in opposite direction</TD>
<TR><TD ALIGN=LEFT>a</TD><TD ALIGN=LEFT>forward character, insert (i.e. append)</TD>
<TR><TD ALIGN=LEFT>b</TD><TD ALIGN=LEFT>backward word</TD>
<TR><TD ALIGN=LEFT>c</TD><TD ALIGN=LEFT>change</TD>
<TR><TD ALIGN=LEFT>d</TD><TD ALIGN=LEFT>delete</TD>
<TR><TD ALIGN=LEFT>e</TD><TD ALIGN=LEFT>end of word</TD>
<TR><TD ALIGN=LEFT>f</TD><TD ALIGN=LEFT>search forward character</TD>
<TR><TD ALIGN=LEFT>h</TD><TD ALIGN=LEFT>backward character</TD>
<TR><TD ALIGN=LEFT>i</TD><TD ALIGN=LEFT>insert</TD>
<TR><TD ALIGN=LEFT>j</TD><TD ALIGN=LEFT>next command</TD>
<TR><TD ALIGN=LEFT>k</TD><TD ALIGN=LEFT>previous command</TD>
<TR><TD ALIGN=LEFT>l</TD><TD ALIGN=LEFT>forward character</TD>
<TR><TD ALIGN=LEFT>r</TD><TD ALIGN=LEFT>replace character</TD>
<TR><TD ALIGN=LEFT>s</TD><TD ALIGN=LEFT>delete character, insert</TD>
<TR><TD ALIGN=LEFT>w</TD><TD ALIGN=LEFT>forward word</TD>
<TR><TD ALIGN=LEFT>x</TD><TD ALIGN=LEFT>delete character</TD>
</CENTER>
</TABLE>
</BODY>
</HTML>
+6
View File
@@ -0,0 +1,6 @@
<HEAD></HEAD><BODY BGCOLOR="#E0D8c8" TEXT="#000000">
<h1>Conclusion</h1>
<p>Some pontifications
<hr>
<a href="chapt3.html"><-Previous</a>
</BODY>
+28 -80
View File
@@ -1,80 +1,28 @@
<!DOCTYPE html>
<html>
<head>
<title>Table of Contents</title>
<style type="text/css">
body {
background-color: #E0D8C8;
color: #000000;
}
div.c2 {text-align: center}
h1.c1 {color: #000080}
</style>
</head>
<body>
<div class="c2">
<h1 class="c1">Table of Contents</h1>
</div>
<dl>
<dt>
<a href="preface.html" target="doc">
<dl>
<dt>Preface</dt>
</dl></a> <a href="mged.html#csg" target="doc">
<dl>
<dt>Modeling_with_CSG</dt>
</dl></a> <a href="mged.html#starting" target="doc">
<dl>
<dt>Starting MGED</dt>
</dl></a> <a href="mged.html#coord" target="doc">
<dl>
<dt>Screen Coordinates</dt>
</dl></a> <a href="mged.html#create" target="doc">
<dl>
<dt>Creating Geometry: The Cup</dt>
</dl></a>
</dt>
<dt>
<br>
<a href="mged2.html#solidedit" target="doc">
<dl>
<dt>Editing Solids</dt>
</dl></a> <a href="mged2.html#handle" target="doc">
<dl>
<dt>Fixing the Handle</dt>
</dl></a> <a href="mged2.html#base" target="doc">
<dl>
<dt>Adding a Base</dt>
</dl></a> <a href="mged2.html#fillet" target="doc">
<dl>
<dt>Adding a Fillet</dt>
</dl></a>
</dt>
<dt>
<br>
<a href="mged_gui.html" target="doc">
<dl>
<dt>MGED's New GUI</dt>
</dl></a> <a href="cmd_line_ed.html" target="doc">
<dl>
<dt>Command Line Editing</dt>
</dl></a> <a href="mged_cmd_index.html" target="doc">
<dl>
<dt>MGED Commands</dt>
</dl></a> <a href="mged_tcl_vars.html" target="doc">
<dl>
<dt>MGED Tcl Variables</dt>
</dl></a> <a href="mged_env_vars.html" target="doc">
<dl>
<dt>MGED Environment Variables</dt>
</dl></a> <a href="mged_callbacks.html" target="doc">
<dl>
<dt>MGED Callbacks</dt>
</dl></a> <a href="brlcad_glossary.html" target="doc">
<dl>
<dt>Glossary</dt>
</dl></a>
</dt>
</dl>
</body>
</html>
<HEAD></HEAD>
<BODY BGCOLOR="#E0D8c8" TEXT="#000000">
<center><h1><font color="#000080">Table of Contents</font></h1></center>
<font size=-1>
<dl>
<a href="VolumeII-Introduction_to_MGED.pdf"> <dt>PDF Mged tutorial</a>
<a href="preface.html" target="doc"> <dt>Preface</a>
<a href="mged.html#csg" target="doc"> <dt>Modeling_with_CSG</a>
<a href="mged.html#starting" target="doc"> <dt>Starting MGED</a>
<a href="mged.html#coord" target="doc"> <dt>Screen Coordinates</a>
<a href="mged.html#create" target="doc"> <dt>Creating Geometry: The Cup</a>
<dt><br>
<a href="mged2.html#solidedit" target="doc"> <dt>Editing Solids</a>
<a href="mged2.html#handle" target="doc"> <dt>Fixing the Handle</a>
<a href="mged2.html#base" target="doc"> <dt>Adding a Base</a>
<a href="mged2.html#fillet" target="doc"> <dt>Adding a Fillet</a>
<dt><br>
<a href="mged_gui.html" target="doc"> <dt>MGED's New GUI</a>
<a href="cmd_line_ed.html" target="doc"> <dt>Command Line Editing</a>
<a href="mged_cmd_index.html" target="doc"> <dt>MGED Commands</a>
<a href="mged_tcl_vars.html" target="doc"> <dt>MGED Tcl Variables</a>
<a href="mged_env_vars.html" target="doc"> <dt>MGED Environment Variables</a>
<a href="mged_callbacks.html" target="doc"> <dt>MGED Callbacks</a>
<a href="brlcad_glossary.html" target="doc"> <dt>Glossary</a>
</dl>
</font>
</BODY>
+56 -247
View File
@@ -1,248 +1,57 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
<title>Default Key Bindings</title>
</head>
<body>
<h1>Default Key Bindings</h1>
<table cols="3" rules="all" border="1" cellpadding="3">
<tr>
<th align="left">Key</th>
<th align="left">Command</th>
<th align="left">Description</th>
</tr>
<tr>
<td align="left">a</td>
<td align="left">adc</td>
<td align="left">toggle adc cursor</td>
</tr>
<tr>
<td align="left">e</td>
<td align="left">set e_axes !</td>
<td align="left">toggle edit axes</td>
</tr>
<tr>
<td align="left">v</td>
<td align="left">set v_axes !</td>
<td align="left">toggle view axes</td>
</tr>
<tr>
<td align="left">w</td>
<td align="left">set w_axes !</td>
<td align="left">toggle world axes</td>
</tr>
<tr>
<td align="left">i</td>
<td align="left">aip f</td>
<td align="left">advance illumination pointer forward</td>
</tr>
<tr>
<td align="left">I</td>
<td align="left">aip b</td>
<td align="left">advance illumination pointer backward</td>
</tr>
<tr>
<td align="left">p</td>
<td align="left">M 1 0 0</td>
<td align="left">simulate mouse click</td>
</tr>
<tr>
<td align="left">3</td>
<td align="left">press 35,25</td>
<td align="left">set view azimuth/elevation to 35/25</td>
</tr>
<tr>
<td align="left">4</td>
<td align="left">press 45,45</td>
<td align="left">set view azimuth/elevation to 45/45</td>
</tr>
<tr>
<td align="left">f</td>
<td align="left">press front</td>
<td align="left">set view azimuth/elevation to 0/0</td>
</tr>
<tr>
<td align="left">t</td>
<td align="left">press top</td>
<td align="left">set view azimuth/elevation to -90/90</td>
</tr>
<tr>
<td align="left">b</td>
<td align="left">press bottom</td>
<td align="left">set view azimuth/elevation to -90/-90</td>
</tr>
<tr>
<td align="left">l</td>
<td align="left">press left</td>
<td align="left">set view azimuth/elevation to 90/0</td>
</tr>
<tr>
<td align="left">r</td>
<td align="left">press right</td>
<td align="left">set view azimuth/elevation to 270/0</td>
</tr>
<tr>
<td align="left">R</td>
<td align="left">press rear</td>
<td align="left">set view azimuth/elevation to 180/0</td>
</tr>
<tr>
<td align="left">s</td>
<td align="left">press sill</td>
<td align="left">solid illuminate</td>
</tr>
<tr>
<td align="left">o</td>
<td align="left">press oill</td>
<td align="left">object illuminate</td>
</tr>
<tr>
<td align="left">q</td>
<td align="left">press reject</td>
<td align="left">reject edit</td>
</tr>
<tr>
<td align="left">u</td>
<td align="left">svb</td>
<td align="left">set view reference base</td>
</tr>
<tr>
<td align="left">n</td>
<td align="left">nirt -b</td>
<td align="left">shoot NIRT ray at center of view</td>
</tr>
<tr>
<td align="left">&lt;F1&gt;</td>
<td align="left">dm set depthcue !</td>
<td align="left">toggle depth cue</td>
</tr>
<tr>
<td align="left">&lt;F2&gt;</td>
<td align="left">dm set zclip !</td>
<td align="left">toggle zclip</td>
</tr>
<tr>
<td align="left">&lt;F3&gt;</td>
<td align="left">dm set perspective !</td>
<td align="left">toggle perspective</td>
</tr>
<tr>
<td align="left">&lt;F4&gt;</td>
<td align="left">dm set zbuffer !</td>
<td align="left">toggle zbuffer</td>
</tr>
<tr>
<td align="left">&lt;F5&gt;</td>
<td align="left">dm set lighting !</td>
<td align="left">toggle lighting</td>
</tr>
<tr>
<td align="left">&lt;F6&gt;</td>
<td align="left">dm set set_perspective !</td>
<td align="left">next perspective angle</td>
</tr>
<tr>
<td align="left">&lt;F7&gt;</td>
<td align="left">set faceplate !</td>
<td align="left">toggle faceplate</td>
</tr>
<tr>
<td align="left">&lt;F8&gt;</td>
<td align="left">set orig_gui !</td>
<td align="left">toggle menu</td>
</tr>
<tr>
<td align="left">&lt;F9&gt;</td>
<td align="left">set send_key !</td>
<td align="left">toggle send_key mode</td>
</tr>
<tr>
<td align="left">&lt;F12&gt;</td>
<td align="left">knob zero</td>
<td align="left">zero knobs</td>
</tr>
<tr>
<td align="left">&lt;Left&gt;</td>
<td align="left">knob -i ay -$mged_rotate_factor</td>
<td align="left">negative rotation about the y axis</td>
</tr>
<tr>
<td align="left">&lt;Right&gt;</td>
<td align="left">knob -i ay $mged_rotate_factor</td>
<td align="left">positive rotation about the y axis</td>
</tr>
<tr>
<td align="left">&lt;Down&gt;</td>
<td align="left">knob -i ax $mged_rotate_factor</td>
<td align="left">positive rotation about the x axis</td>
</tr>
<tr>
<td align="left">&lt;Up&gt;</td>
<td align="left">knob -i ax -$mged_rotate_factor</td>
<td align="left">negative rotation about the x axis</td>
</tr>
<tr>
<td align="left">&lt;Shift-Left&gt;</td>
<td align="left">knob -i aX $mged_tran_factor</td>
<td align="left">positive translation in X</td>
</tr>
<tr>
<td align="left">&lt;Shift-Right&gt;</td>
<td align="left">knob -i aX -$mged_tran_factor</td>
<td align="left">negative translation in X</td>
</tr>
<tr>
<td align="left">&lt;Shift-Down&gt;</td>
<td align="left">knob -i aZ -$mged_tran_factor</td>
<td align="left">negative translation in Z</td>
</tr>
<tr>
<td align="left">&lt;Shift-Up&gt;</td>
<td align="left">knob -i aZ $mged_tran_factor</td>
<td align="left">positive translation in Z</td>
</tr>
<tr>
<td align="left">&lt;Control-Shift-Left&gt;</td>
<td align="left">knob -i az $mged_rotate_factor</td>
<td align="left">positive rotation about the z axis</td>
</tr>
<tr>
<td align="left">&lt;Control-Shift-Right&gt;</td>
<td align="left">knob -i az -$mged_rotate_factor</td>
<td align="left">negative rotation about the z axis</td>
</tr>
<tr>
<td align="left">&lt;Control-Shift-Down&gt;</td>
<td align="left">knob -i aY $mged_rotate_factor</td>
<td align="left">positive translation in Y</td>
</tr>
<tr>
<td align="left">&lt;Control-Shift-Up&gt;</td>
<td align="left">knob -i aY -$mged_rotate_factor</td>
<td align="left">negative translation in Y</td>
</tr>
<tr>
<td align="left">&lt;Control-n&gt;</td>
<td align="left">set view 1</td>
<td align="left">advance to next view</td>
</tr>
<tr>
<td align="left">&lt;Control-p&gt;</td>
<td align="left">set view 0</td>
<td align="left">advance to previous view</td>
</tr>
<tr>
<td align="left">&lt;Control-v&gt;</td>
<td align="left">set view !</td>
<td align="left">toggle between current view and previous
view</td>
</tr>
<tr>
<td align="left">&lt;Escape&gt;</td>
<td align="left">knob zero; press reject</td>
<td align="left">stop interactive rotation and reject any
edits</td>
</tr>
</table>
</body>
</html>
<HTML>
<HEAD>
<title>Default Key Bindings</title>
</HEAD>
<BODY>
<h1>Default Key Bindings</h1>
<TABLE COLS=3 RULES=all BORDER=1 CELLPADDING=3>
<TR><TH ALIGN=LEFT>Key<TH ALIGN=LEFT>Command<TH ALIGN=LEFT>Description
<TR><TD ALIGN=LEFT>a <TD ALIGN=LEFT>adc <TD ALIGN=LEFT>toggle adc cursor
<TR><TD ALIGN=LEFT>e <TD ALIGN=LEFT>set e_axes ! <TD ALIGN=LEFT>toggle edit axes
<TR><TD ALIGN=LEFT>v <TD ALIGN=LEFT>set v_axes ! <TD ALIGN=LEFT>toggle view axes
<TR><TD ALIGN=LEFT>w <TD ALIGN=LEFT>set w_axes ! <TD ALIGN=LEFT>toggle world axes
<TR><TD ALIGN=LEFT>i <TD ALIGN=LEFT>aip f <TD ALIGN=LEFT>advance illumination pointer forward
<TR><TD ALIGN=LEFT>I <TD ALIGN=LEFT>aip b <TD ALIGN=LEFT>advance illumination pointer backward
<TR><TD ALIGN=LEFT>p <TD ALIGN=LEFT>M 1 0 0 <TD ALIGN=LEFT>simulate mouse click
<TR><TD ALIGN=LEFT>3 <TD ALIGN=LEFT>press 35,25 <TD ALIGN=LEFT>set view azimuth/elevation to 35/25
<TR><TD ALIGN=LEFT>4 <TD ALIGN=LEFT>press 45,45 <TD ALIGN=LEFT>set view azimuth/elevation to 45/45
<TR><TD ALIGN=LEFT>f <TD ALIGN=LEFT>press front <TD ALIGN=LEFT>set view azimuth/elevation to 0/0
<TR><TD ALIGN=LEFT>t <TD ALIGN=LEFT>press top <TD ALIGN=LEFT>set view azimuth/elevation to -90/90
<TR><TD ALIGN=LEFT>b <TD ALIGN=LEFT>press bottom <TD ALIGN=LEFT>set view azimuth/elevation to -90/-90
<TR><TD ALIGN=LEFT>l <TD ALIGN=LEFT>press left <TD ALIGN=LEFT>set view azimuth/elevation to 90/0
<TR><TD ALIGN=LEFT>r <TD ALIGN=LEFT>press right <TD ALIGN=LEFT>set view azimuth/elevation to 270/0
<TR><TD ALIGN=LEFT>R <TD ALIGN=LEFT>press rear <TD ALIGN=LEFT>set view azimuth/elevation to 180/0
<TR><TD ALIGN=LEFT>s <TD ALIGN=LEFT>press sill <TD ALIGN=LEFT>solid illuminate
<TR><TD ALIGN=LEFT>o <TD ALIGN=LEFT>press oill <TD ALIGN=LEFT>object illuminate
<TR><TD ALIGN=LEFT>q <TD ALIGN=LEFT>press reject <TD ALIGN=LEFT>reject edit
<TR><TD ALIGN=LEFT>u <TD ALIGN=LEFT>svb <TD ALIGN=LEFT>set view reference base
<TR><TD ALIGN=LEFT>&lt;F1&gt; <TD ALIGN=LEFT>dm set depthcue ! <TD ALIGN=LEFT>toggle depth cue
<TR><TD ALIGN=LEFT>&lt;F2&gt; <TD ALIGN=LEFT>dm set zclip ! <TD ALIGN=LEFT>toggle zclip
<TR><TD ALIGN=LEFT>&lt;F3&gt; <TD ALIGN=LEFT>dm set perspective ! <TD ALIGN=LEFT>toggle perspective
<TR><TD ALIGN=LEFT>&lt;F4&gt; <TD ALIGN=LEFT>dm set zbuffer ! <TD ALIGN=LEFT>toggle zbuffer
<TR><TD ALIGN=LEFT>&lt;F5&gt; <TD ALIGN=LEFT>dm set lighting ! <TD ALIGN=LEFT>toggle lighting
<TR><TD ALIGN=LEFT>&lt;F6&gt; <TD ALIGN=LEFT>dm set set_perspective !<TD ALIGN=LEFT>next perspective angle
<TR><TD ALIGN=LEFT>&lt;F7&gt; <TD ALIGN=LEFT>set faceplate ! <TD ALIGN=LEFT>toggle faceplate
<TR><TD ALIGN=LEFT>&lt;F8&gt; <TD ALIGN=LEFT>set orig_gui ! <TD ALIGN=LEFT>toggle menu
<TR><TD ALIGN=LEFT>&lt;F9&gt; <TD ALIGN=LEFT>set send_key ! <TD ALIGN=LEFT>toggle send_key mode
<TR><TD ALIGN=LEFT>&lt;F12&gt; <TD ALIGN=LEFT>knob zero <TD ALIGN=LEFT>zero knobs
<TR><TD ALIGN=LEFT>&lt;Left&gt; <TD ALIGN=LEFT>knob -i ay -$mged_rotate_factor<TD ALIGN=LEFT>negative rotation about the y axis
<TR><TD ALIGN=LEFT>&lt;Right&gt; <TD ALIGN=LEFT>knob -i ay $mged_rotate_factor<TD ALIGN=LEFT>positive rotation about the y axis
<TR><TD ALIGN=LEFT>&lt;Down&gt; <TD ALIGN=LEFT>knob -i ax $mged_rotate_factor<TD ALIGN=LEFT>positive rotation about the x axis
<TR><TD ALIGN=LEFT>&lt;Up&gt; <TD ALIGN=LEFT>knob -i ax -$mged_rotate_factor<TD ALIGN=LEFT>negative rotation about the x axis
<TR><TD ALIGN=LEFT>&lt;Shift-Left&gt; <TD ALIGN=LEFT>knob -i aX $mged_tran_factor<TD ALIGN=LEFT>positive translation in X
<TR><TD ALIGN=LEFT>&lt;Shift-Right&gt; <TD ALIGN=LEFT>knob -i aX -$mged_tran_factor<TD ALIGN=LEFT>negative translation in X
<TR><TD ALIGN=LEFT>&lt;Shift-Down&gt; <TD ALIGN=LEFT>knob -i aZ -$mged_tran_factor<TD ALIGN=LEFT>negative translation in Z
<TR><TD ALIGN=LEFT>&lt;Shift-Up&gt; <TD ALIGN=LEFT>knob -i aZ $mged_tran_factor<TD ALIGN=LEFT>positive translation in Z
<TR><TD ALIGN=LEFT>&lt;Control-Shift-Left&gt; <TD ALIGN=LEFT>knob -i az $mged_rotate_factor<TD ALIGN=LEFT>positive rotation about the z axis
<TR><TD ALIGN=LEFT>&lt;Control-Shift-Right&gt; <TD ALIGN=LEFT>knob -i az -$mged_rotate_factor<TD ALIGN=LEFT>negative rotation about the z axis
<TR><TD ALIGN=LEFT>&lt;Control-Shift-Down&gt; <TD ALIGN=LEFT>knob -i aY $mged_rotate_factor<TD ALIGN=LEFT>positive translation in Y
<TR><TD ALIGN=LEFT>&lt;Control-Shift-Up&gt; <TD ALIGN=LEFT>knob -i aY -$mged_rotate_factor<TD ALIGN=LEFT>negative translation in Y
<TR><TD ALIGN=LEFT>&lt;Control-n&gt; <TD ALIGN=LEFT>set view 1 <TD ALIGN=LEFT>advance to next view
<TR><TD ALIGN=LEFT>&lt;Control-p&gt; <TD ALIGN=LEFT>set view 0 <TD ALIGN=LEFT>advance to previous view
<TR><TD ALIGN=LEFT>&lt;Control-v&gt; <TD ALIGN=LEFT>set view ! <TD ALIGN=LEFT>toggle between current view and previous view
<TR><TD ALIGN=LEFT>&lt;Escape&gt; <TD ALIGN=LEFT>knob zero; press reject<TD ALIGN=LEFT>stop interactive rotation and reject any edits
</TABLE>
</BODY>
</HTML>
+74 -264
View File
@@ -1,265 +1,75 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
<title>Default Mouse Bindings</title>
</head>
<body>
<h1>Default Mouse Bindings</h1>
<table cols="3" rules="all" border="1" cellpadding="3">
<tr>
<th align="left">Mouse Button</th>
<th align="left">Command</th>
<th align="left">Description</th>
</tr>
<tr>
<td align="left">&lt;1&gt;</td>
<td align="left">zoom 0.5</td>
<td align="left">zoom out</td>
</tr>
<tr>
<td align="left">&lt;2&gt;</td>
<td align="left">dm m %b %x %y</td>
<td align="left">slew view</td>
</tr>
<tr>
<td align="left">&lt;3&gt;</td>
<td align="left">zoom 2.0</td>
<td align="left">zoom in</td>
</tr>
<tr>
<td align="left"></td>
<td align="left"></td>
<td align="left"></td>
</tr>
<tr>
<td align="left">&lt;ButtonRelease&gt;</td>
<td align="left">dm idle</td>
<td align="left">stop drag operation</td>
</tr>
<tr>
<td align="left">&lt;KeyRelease-Control_L&gt;</td>
<td align="left">dm idle</td>
<td align="left">stop drag operation</td>
</tr>
<tr>
<td align="left">&lt;KeyRelease-Control_R&gt;</td>
<td align="left">dm idle</td>
<td align="left">stop drag operation</td>
</tr>
<tr>
<td align="left">&lt;KeyRelease-Shift_L&gt;</td>
<td align="left">dm idle</td>
<td align="left">stop drag operation</td>
</tr>
<tr>
<td align="left">&lt;KeyRelease-Shift_R&gt;</td>
<td align="left">dm idle</td>
<td align="left">stop drag operation</td>
</tr>
<tr>
<td align="left">&lt;KeyRelease-Alt_L&gt;</td>
<td align="left">dm idle</td>
<td align="left">stop drag operation</td>
</tr>
<tr>
<td align="left">&lt;KeyRelease-Alt_R&gt;</td>
<td align="left">dm idle</td>
<td align="left">stop drag operation</td>
</tr>
<tr>
<td align="left"></td>
<td align="left"></td>
<td align="left"></td>
</tr>
<tr>
<td align="left">&lt;Shift-ButtonPress-1&gt;</td>
<td align="left">dm am t %x %y</td>
<td align="left">start translation</td>
</tr>
<tr>
<td align="left">&lt;Shift-ButtonPress-2&gt;</td>
<td align="left">dm am t %x %y</td>
<td align="left">start translation</td>
</tr>
<tr>
<td align="left">&lt;Shift-ButtonPress-3&gt;</td>
<td align="left">dm am t %x %y</td>
<td align="left">start translation</td>
</tr>
<tr>
<td align="left">&lt;Control-ButtonPress-1&gt;</td>
<td align="left">dm am r %x %y</td>
<td align="left">start rotation</td>
</tr>
<tr>
<td align="left">&lt;Control-ButtonPress-2&gt;</td>
<td align="left">dm am r %x %y</td>
<td align="left">start rotation</td>
</tr>
<tr>
<td align="left">&lt;Control-ButtonPress-3&gt;</td>
<td align="left">dm am r %x %y</td>
<td align="left">start rotation</td>
</tr>
<tr>
<td align="left">&lt;Shift-Control-ButtonPress-1&gt;</td>
<td align="left">dm am s %x %y</td>
<td align="left">start scale</td>
</tr>
<tr>
<td align="left">&lt;Shift-Control-ButtonPress-2&gt;</td>
<td align="left">dm am s %x %y</td>
<td align="left">start scale</td>
</tr>
<tr>
<td align="left">&lt;Shift-Control-ButtonPress-3&gt;</td>
<td align="left">dm am s %x %y</td>
<td align="left">start scale</td>
</tr>
<tr>
<td align="left">&lt;Alt-Shift-ButtonPress-1&gt;</td>
<td align="left">dm con t x %x %y</td>
<td align="left">start constrained X translation</td>
</tr>
<tr>
<td align="left">&lt;Alt-Shift-ButtonPress-2&gt;</td>
<td align="left">dm con t y %x %y</td>
<td align="left">start constrained Y translation</td>
</tr>
<tr>
<td align="left">&lt;Alt-Shift-ButtonPress-3&gt;</td>
<td align="left">dm con t z %x %y</td>
<td align="left">start constrained Z translation</td>
</tr>
<tr>
<td align="left">&lt;Alt-Control-ButtonPress-1&gt;</td>
<td align="left">dm con r x %x %y</td>
<td align="left">start constrained X rotation</td>
</tr>
<tr>
<td align="left">&lt;Alt-Control-ButtonPress-2&gt;</td>
<td align="left">dm con r y %x %y</td>
<td align="left">start constrained Y rotation</td>
</tr>
<tr>
<td align="left">&lt;Alt-Control-ButtonPress-3&gt;</td>
<td align="left">dm con r z %x %y</td>
<td align="left">start constrained Z rotation</td>
</tr>
<tr>
<td align="left">&lt;Alt-Shift-Control-ButtonPress-1&gt;</td>
<td align="left">dm con s x %x %y</td>
<td align="left">start constrained X scale</td>
</tr>
<tr>
<td align="left">&lt;Alt-Shift-Control-ButtonPress-2&gt;</td>
<td align="left">dm con s y %x %y</td>
<td align="left">start constrained Y scale</td>
</tr>
<tr>
<td align="left">&lt;Alt-Shift-Control-ButtonPress-3&gt;</td>
<td align="left">dm con s z %x %y</td>
<td align="left">start constrained Z scale</td>
</tr>
</table><br>
<br>
<h3>Custom Mouse Bindings for the Angle Distance Cursor</h3>
<table cols="3" rules="all" border="1" cellpadding="3">
<tr>
<th align="left">Mouse Button</th>
<th align="left">Command</th>
<th align="left">Description</th>
</tr>
<tr>
<td align="left">&lt;Shift-ButtonPress-1&gt;</td>
<td align="left">dm adc t %x %y</td>
<td align="left">translate</td>
</tr>
<tr>
<td align="left">&lt;Shift-ButtonPress-2&gt;</td>
<td align="left">dm adc t %x %y</td>
<td align="left">translate</td>
</tr>
<tr>
<td align="left">&lt;Shift-ButtonPress-3&gt;</td>
<td align="left">dm adc d %x %y</td>
<td align="left">move tick</td>
</tr>
<tr>
<td align="left">&lt;Control-ButtonPress-1&gt;</td>
<td align="left">dm adc 1 %x %y</td>
<td align="left">move angle 1</td>
</tr>
<tr>
<td align="left">&lt;Control-ButtonPress-2&gt;</td>
<td align="left">dm adc 2 %x %y</td>
<td align="left">move angle 2</td>
</tr>
<tr>
<td align="left">&lt;Control-ButtonPress-3&gt;</td>
<td align="left">dm adc d %x %y</td>
<td align="left">move tick</td>
</tr>
<tr>
<td align="left">&lt;Shift-Control-ButtonPress-1&gt;</td>
<td align="left">dm adc d %x %y</td>
<td align="left">move tick</td>
</tr>
<tr>
<td align="left">&lt;Shift-Control-ButtonPress-2&gt;</td>
<td align="left">dm adc d %x %y</td>
<td align="left">move tick</td>
</tr>
<tr>
<td align="left">&lt;Shift-Control-ButtonPress-3&gt;</td>
<td align="left">dm adc d %x %y</td>
<td align="left">move tick</td>
</tr>
<tr>
<td align="left">&lt;Alt-Shift-ButtonPress-1&gt;</td>
<td align="left">dm con a x %x %y</td>
<td align="left">constrained translate in X</td>
</tr>
<tr>
<td align="left">&lt;Alt-Shift-ButtonPress-2&gt;</td>
<td align="left">dm con a y %x %y</td>
<td align="left">constrained translate in Y</td>
</tr>
<tr>
<td align="left">&lt;Alt-Shift-ButtonPress-3&gt;</td>
<td align="left">dm con a d %x %y</td>
<td align="left">constrained tick movement</td>
</tr>
<tr>
<td align="left">&lt;Alt-Control-ButtonPress-1&gt;</td>
<td align="left">dm con a 1 %x %y</td>
<td align="left">constrained angle 1 movement</td>
</tr>
<tr>
<td align="left">&lt;Alt-Control-ButtonPress-2&gt;</td>
<td align="left">dm con a 2 %x %y</td>
<td align="left">constrained angle 2 movement</td>
</tr>
<tr>
<td align="left">&lt;Alt-Control-ButtonPress-3&gt;</td>
<td align="left">dm con a d %x %y</td>
<td align="left">constrained tick movement</td>
</tr>
<tr>
<td align="left">&lt;Alt-Shift-Control-ButtonPress-1&gt;</td>
<td align="left">dm con a d %x %y</td>
<td align="left">constrained tick movement</td>
</tr>
<tr>
<td align="left">&lt;Alt-Shift-Control-ButtonPress-2&gt;</td>
<td align="left">dm con a d %x %y</td>
<td align="left">constrained tick movement</td>
</tr>
<tr>
<td align="left">&lt;Alt-Shift-Control-ButtonPress-3&gt;</td>
<td align="left">dm con a d %x %y</td>
<td align="left">constrained tick movement</td>
</tr>
</table>
</body>
</html>
<HTML>
<HEAD>
<title>Default Mouse Bindings</title>
</HEAD>
<BODY>
<h1>Default Mouse Bindings</h1>
<TABLE COLS=3 RULES=all BORDER=1 CELLPADDING=3>
<TR><TH ALIGN=LEFT>Mouse Button<TH ALIGN=LEFT>Command<TH ALIGN=LEFT>Description
<TR><TD ALIGN=LEFT>&lt;1&gt;<TD ALIGN=LEFT>zoom 0.5<TD ALIGN=LEFT>zoom out
<TR><TD ALIGN=LEFT>&lt;2&gt;<TD ALIGN=LEFT>dm m %b %x %y<TD ALIGN=LEFT>slew view
<TR><TD ALIGN=LEFT>&lt;3&gt;<TD ALIGN=LEFT>zoom 2.0<TD ALIGN=LEFT>zoom in
<TR><TD ALIGN=LEFT><TD ALIGN=LEFT><TD ALIGN=LEFT>
<TR><TD ALIGN=LEFT>&lt;ButtonRelease&gt;<TD ALIGN=LEFT>dm idle<TD ALIGN=LEFT>stop drag operation
<TR><TD ALIGN=LEFT>&lt;KeyRelease-Control_L&gt<TD ALIGN=LEFT>dm idle<TD ALIGN=LEFT>stop drag operation
<TR><TD ALIGN=LEFT>&lt;KeyRelease-Control_R&gt<TD ALIGN=LEFT>dm idle<TD ALIGN=LEFT>stop drag operation
<TR><TD ALIGN=LEFT>&lt;KeyRelease-Shift_L&gt<TD ALIGN=LEFT>dm idle<TD ALIGN=LEFT>stop drag operation
<TR><TD ALIGN=LEFT>&lt;KeyRelease-Shift_R&gt<TD ALIGN=LEFT>dm idle<TD ALIGN=LEFT>stop drag operation
<TR><TD ALIGN=LEFT>&lt;KeyRelease-Alt_L&gt<TD ALIGN=LEFT>dm idle<TD ALIGN=LEFT>stop drag operation
<TR><TD ALIGN=LEFT>&lt;KeyRelease-Alt_R&gt<TD ALIGN=LEFT>dm idle<TD ALIGN=LEFT>stop drag operation
<TR><TD ALIGN=LEFT><TD ALIGN=LEFT><TD ALIGN=LEFT>
<TR><TD ALIGN=LEFT>&lt;Shift-ButtonPress-1&gt<TD ALIGN=LEFT>dm am t %x %y<TD ALIGN=LEFT>start translation
<TR><TD ALIGN=LEFT>&lt;Shift-ButtonPress-2&gt<TD ALIGN=LEFT>dm am t %x %y<TD ALIGN=LEFT>start translation
<TR><TD ALIGN=LEFT>&lt;Shift-ButtonPress-3&gt<TD ALIGN=LEFT>dm am t %x %y<TD ALIGN=LEFT>start translation
<TR><TD ALIGN=LEFT>&lt;Control-ButtonPress-1&gt<TD ALIGN=LEFT>dm am r %x %y<TD ALIGN=LEFT>start rotation
<TR><TD ALIGN=LEFT>&lt;Control-ButtonPress-2&gt<TD ALIGN=LEFT>dm am r %x %y<TD ALIGN=LEFT>start rotation
<TR><TD ALIGN=LEFT>&lt;Control-ButtonPress-3&gt<TD ALIGN=LEFT>dm am r %x %y<TD ALIGN=LEFT>start rotation
<TR><TD ALIGN=LEFT>&lt;Shift-Control-ButtonPress-1&gt<TD ALIGN=LEFT>dm am s %x %y<TD ALIGN=LEFT>start scale
<TR><TD ALIGN=LEFT>&lt;Shift-Control-ButtonPress-2&gt<TD ALIGN=LEFT>dm am s %x %y<TD ALIGN=LEFT>start scale
<TR><TD ALIGN=LEFT>&lt;Shift-Control-ButtonPress-3&gt<TD ALIGN=LEFT>dm am s %x %y<TD ALIGN=LEFT>start scale
<TR><TD ALIGN=LEFT>&lt;Alt-Shift-ButtonPress-1&gt<TD ALIGN=LEFT>dm con t x %x %y<TD ALIGN=LEFT>start constrained X translation
<TR><TD ALIGN=LEFT>&lt;Alt-Shift-ButtonPress-2&gt<TD ALIGN=LEFT>dm con t y %x %y<TD ALIGN=LEFT>start constrained Y translation
<TR><TD ALIGN=LEFT>&lt;Alt-Shift-ButtonPress-3&gt<TD ALIGN=LEFT>dm con t z %x %y<TD ALIGN=LEFT>start constrained Z translation
<TR><TD ALIGN=LEFT>&lt;Alt-Control-ButtonPress-1&gt<TD ALIGN=LEFT>dm con r x %x %y<TD ALIGN=LEFT>start constrained X rotation
<TR><TD ALIGN=LEFT>&lt;Alt-Control-ButtonPress-2&gt<TD ALIGN=LEFT>dm con r y %x %y<TD ALIGN=LEFT>start constrained Y rotation
<TR><TD ALIGN=LEFT>&lt;Alt-Control-ButtonPress-3&gt<TD ALIGN=LEFT>dm con r z %x %y<TD ALIGN=LEFT>start constrained Z rotation
<TR><TD ALIGN=LEFT>&lt;Alt-Shift-Control-ButtonPress-1&gt<TD ALIGN=LEFT>dm con s x %x %y<TD ALIGN=LEFT>start constrained X scale
<TR><TD ALIGN=LEFT>&lt;Alt-Shift-Control-ButtonPress-2&gt<TD ALIGN=LEFT>dm con s y %x %y<TD ALIGN=LEFT>start constrained Y scale
<TR><TD ALIGN=LEFT>&lt;Alt-Shift-Control-ButtonPress-3&gt<TD ALIGN=LEFT>dm con s z %x %y<TD ALIGN=LEFT>start constrained Z scale
</TABLE>
<BR><BR>
<h3>Custom Mouse Bindings for the Angle Distance Cursor</h3>
<TABLE COLS=3 RULES=all BORDER=1 CELLPADDING=3>
<TR><TH ALIGN=LEFT>Mouse Button<TH ALIGN=LEFT>Command<TH ALIGN=LEFT>Description
<TR><TD ALIGN=LEFT>&lt;Shift-ButtonPress-1&gt<TD ALIGN=LEFT>dm adc t %x %y<TD ALIGN=LEFT>translate
<TR><TD ALIGN=LEFT>&lt;Shift-ButtonPress-2&gt<TD ALIGN=LEFT>dm adc t %x %y<TD ALIGN=LEFT>translate
<TR><TD ALIGN=LEFT>&lt;Shift-ButtonPress-3&gt<TD ALIGN=LEFT>dm adc d %x %y<TD ALIGN=LEFT>move tick
<TR><TD ALIGN=LEFT>&lt;Control-ButtonPress-1&gt<TD ALIGN=LEFT>dm adc 1 %x %y<TD ALIGN=LEFT>move angle 1
<TR><TD ALIGN=LEFT>&lt;Control-ButtonPress-2&gt<TD ALIGN=LEFT>dm adc 2 %x %y<TD ALIGN=LEFT>move angle 2
<TR><TD ALIGN=LEFT>&lt;Control-ButtonPress-3&gt<TD ALIGN=LEFT>dm adc d %x %y<TD ALIGN=LEFT>move tick
<TR><TD ALIGN=LEFT>&lt;Shift-Control-ButtonPress-1&gt<TD ALIGN=LEFT>dm adc d %x %y<TD ALIGN=LEFT>move tick
<TR><TD ALIGN=LEFT>&lt;Shift-Control-ButtonPress-2&gt<TD ALIGN=LEFT>dm adc d %x %y<TD ALIGN=LEFT>move tick
<TR><TD ALIGN=LEFT>&lt;Shift-Control-ButtonPress-3&gt<TD ALIGN=LEFT>dm adc d %x %y<TD ALIGN=LEFT>move tick
<TR><TD ALIGN=LEFT>&lt;Alt-Shift-ButtonPress-1&gt<TD ALIGN=LEFT>dm con a x %x %y<TD ALIGN=LEFT>constrained translate in X
<TR><TD ALIGN=LEFT>&lt;Alt-Shift-ButtonPress-2&gt<TD ALIGN=LEFT>dm con a y %x %y<TD ALIGN=LEFT>constrained translate in Y
<TR><TD ALIGN=LEFT>&lt;Alt-Shift-ButtonPress-3&gt<TD ALIGN=LEFT>dm con a d %x %y<TD ALIGN=LEFT>constrained tick movement
<TR><TD ALIGN=LEFT>&lt;Alt-Control-ButtonPress-1&gt<TD ALIGN=LEFT>dm con a 1 %x %y<TD ALIGN=LEFT>constrained angle 1 movement
<TR><TD ALIGN=LEFT>&lt;Alt-Control-ButtonPress-2&gt<TD ALIGN=LEFT>dm con a 2 %x %y<TD ALIGN=LEFT>constrained angle 2 movement
<TR><TD ALIGN=LEFT>&lt;Alt-Control-ButtonPress-3&gt<TD ALIGN=LEFT>dm con a d %x %y<TD ALIGN=LEFT>constrained tick movement
<TR><TD ALIGN=LEFT>&lt;Alt-Shift-Control-ButtonPress-1&gt<TD ALIGN=LEFT>dm con a d %x %y<TD ALIGN=LEFT>constrained tick movement
<TR><TD ALIGN=LEFT>&lt;Alt-Shift-Control-ButtonPress-2&gt<TD ALIGN=LEFT>dm con a d %x %y<TD ALIGN=LEFT>constrained tick movement
<TR><TD ALIGN=LEFT>&lt;Alt-Shift-Control-ButtonPress-3&gt<TD ALIGN=LEFT>dm con a d %x %y<TD ALIGN=LEFT>constrained tick movement
</TABLE>
</BODY>
File diff suppressed because it is too large Load Diff
+12 -17
View File
@@ -1,19 +1,14 @@
<!DOCTYPE html>
<html>
<head>
<title>MGED Overview</title>
</head>
<HTML><HEAD><TITLE>Frames</TITLE></HEAD>
<!-- Target names:
_blank (new, unnamed window)
_self (same frame as element that refers to target)
_parent
_top (Full, original window)
_blank (new, unnamed window)
_self (same frame as element that refers to target)
_parent
_top (Full, original window)
-->
<frameset cols="23%, 77%">
<frame name="toc" src="contents.html">
<frame name="doc" src="preface.html">
<noframes>
<!--#include file="mged.html" -->
</noframes>
</frameset>
</html>
<FRAMESET cols="23%, 77%">
<FRAME name="toc" src="contents.html">
<FRAME name="doc" src="preface.html" >
<NOFRAMES>
<!--#include file="mged.html" -->
</NOFRAMES>
</FRAMESET>
File diff suppressed because it is too large Load Diff
+880
View File
@@ -0,0 +1,880 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<TITLE>Mged User's Manual</TITLE>
</HEAD><BODY BGCOLOR="#E0D8c8" Text="#000000">
<h1 align=center><font size="+3" color="#4040ff">Mged User's Manual</font></h1>
<A NAME="csg"><H2>Modeling With CSG</H2></a>
In BRL-CAD objects are constructed using a technique known as ``Combinatorial
Solid Geometry'' or ``Constructive Solid Geometry'' or simply ``CSG''
In the CSG approach to modeling
This technique involves creating objects
by combining primitive shapes together to form complex objects.&nbsp;
The primitive shapes are called ``solids''.&nbsp;
Each one occupies a volume of three dimensional space.&nbsp;
BRL-CAD currently has many primitive solid types.&nbsp;
These include:
<P>
<center>
<table border>
<tr><th>Primitive Shape</th> <th>BRL-CAD Name</th>
</tr>
<tr><td>Arbitrary Convex Polyhedron</td> <td>arbn</td>
<tr><td>Arbitrary Convex Polyhedron (8pt or less)</td> <td>arb</td>
<tr><td>Extruded Bitmap *</td> <td>ebm * </td>
<tr><td>Elliptical Hyperboloid</td> <td>ehy</td>
<tr><td>Ellipsoid</td> <td>ell</td>
<tr><td>Elliptical Paraboloid</td> <td>epa</td>
<tr><td>Elliptical Torus</td> <td>eto</td>
<tr><td>Halfspace</td> <td>half</td>
<tr><td>Height-Field *</td> <td>hf *</td>
<tr><td>N-Manifold Geometry *</td> <td>nmg *</td>
<tr><td>Non-Uniform Rational B-spline *</td> <td>nurb *</td>
<tr><td>particle *</td> <td>part *</td>
<tr><td>polygonal object</td> <td>polygon</td>
<tr><td>pipe *</td> <td>pipe *</td>
<tr><td>Right Elliptical Cylinder</td> <td>rec</td>
<tr><td>Right Hyperbolic Cylinder</td> <td>rhc</td>
<tr><td>Right Parabolic Cylinder</td> <td>rpc</td>
<tr><td>Sphere</td> <td>sph</td>
<tr><td>Truncated General Cone</td> <td>tgc</td>
<tr><td>Torus</td> <td>tor</td>
<tr><td>Volume/Voxel *</td> <td>vol *</td>
<caption align=bottom>* = Implementation known to be incomplete as of this writing</caption>
</table>
</center>
<P>
<center><img src="prims.gif" alt="primitive solids"></center>
<p>
These primitives can be combined using boolean operators to create complex
shapes.&nbsp; The three boolean operations supported are union, difference
(or subtraction), and
intersection.&nbsp; Any number of primitives may be combined to produce a shape.&nbsp;
The union (u) of two solids is defined as the volume in either of the solids.&nbsp;
The difference (-) of two solids is the volume of the first solid which is not
in the volume of the second solid.&nbsp; The intersection (+) of two solids is
the volume that is contained in both solids.&nbsp;
<center><img src="bool.gif" alt="boolean operations"></center>
<p>
The result of performing a set of boolean operations is a new
shape.&nbsp;
In BRL-CAD this new shape is known as a ``<a href="brlcad_glossary.html#COMBINATION">combination</a>''.&nbsp;
This is frequently abbreviated as ``comb''.&nbsp;
A ``comb'' can be further combined with other shapes
to create still more complex shapes.&nbsp; For example, the shape of a simple
cup might be created by subtracting a cylinder from a slightly larger
cylinder.&nbsp;
From this ``comb'' shape, the shape of a mug
could be created by adding a handle.&nbsp; The handle might be
composed of an elliptical torus with the part of the torus that would
be inside the cup removed.&nbsp;
Logically this is:
<p>
<a name="cup.sh">
<center>
Cup = Outside - Inside<br><br>
Handle = Ring - Outside<br><br>
Mug = Cup <i>union</i> Handle
</center></a>
<p>
<center>
<a href="cup_and_mug.gif"><img src="cup_and_mug_small.gif" alt="cup and mug">
</a></center>
<p>
In this way the shape of objects are built up from components.&nbsp;
<p>
When the desired shape of an object is attained,
a special combination called a ``<a href="brlcad_glossary.html#REGION">region</a>'' is created.&nbsp;
A ``<a href="brlcad_glossary.html#REGION">region</a>'' represents an actual material component of the model.&nbsp;
It represents an item which is made from a homogeneous type of material.&nbsp;
In the example above two combinations are created: Cup and Handle.&nbsp;
These two are brought together to form an object (Mug)
which is made of a single
material (such as ceramic or bone china).&nbsp;
Material properties such as color, texture, transparency, reflectivity, etc.
are assigned to regions.
<p>
The model is built up as a tree-like structure known as a <i><a
href="brlcad_glossary.html#DAG">Directed Acyclic Graph</a></i> or
<i>DAG</i>.&nbsp; It is permissible for a node to be referenced by different
parts of the model.&nbsp; In the mug example, the solid "Outside" is a part of
two different combinations: Cup and Handle.&nbsp; In this example the graph of
the mug object looks like this:
<pre>
Torus
/
Handle (-)
/ \
Mug (u) Cylinder
\ /
Cup -- (-)
\
Insides
</pre>
It is possible to refer to combinations and regions multiple times as
well.&nbsp; For example, if a modeler were trying to create a cupboard
containing three separate identical mugs, he might create a structure as
follows:
<pre>
Mug 1 Ring
/ \ /
/ \ Handle (-)
(u) \ / \
Mugs (u)- Mug 2--Mug (u) Outside
(u) / \ /
\ / Cup -- (-)
\ / \
Mug 3 Inside
</pre>
<p>
Users familiar with other CAD software may prefer to think of the ``region''
as a ``part''.&nbsp; Combinations containing of ``regions'' may be thought of as
``assemblies''.&nbsp;
<a name="starting"><H2>Starting MGED</H2></a>
<p>
All the geometry for a particular model or application
is generally stored in a single file
called a <i>database</i>.&nbsp; Each database may contain many different objects.&nbsp;
By convention, the files containing BRL-CAD
geometry have an extension of ``.g''.&nbsp;
<p>
Before starting mged the user should assure that the X-Windows <B>DISPLAY</B>
environment variable has been properly set.&nbsp; This indicates where applications
should display the windows they create.&nbsp;
<p>
We use the following conventions for denoting text:
<pre>
<B><FONT color="#20a020">Text typed by the user</FONT></B>
<tt>Text output by the program</tt>
</pre>
To edit or create a geometry file,
the user starts mged from the shell by giving the command:
<pre>
<tt>%</tt> <B><FONT color="#20a020">mged -c cup.g</FONT></B>
</pre>
The filename is required.&nbsp; Unlike many programs which allow the user to create
a new document or database in memory, mged always keeps everything on disk.&nbsp;
After each user command, the contents of the disk file are brought up to date.&nbsp;
By doing this, the amount of work lost in the event of a system crash is
minimized.&nbsp;
<p>
When mged is started, it prints out the release number and date of
compilation. When multiple versions of mged are installed on a machine, this
allows the user to verify that the proper version is being started.&nbsp;
<p>
If the file specified does not exist when mged is started,
it will stop and ask if the user wishes to create a new database:
<pre>
<tt>%</tt> <B><FONT color="#20a020">mged -c cup.g</FONT></B><tt>
BRL-CAD Release 4.5 Graphics Editor (MGED)
Mon May 19 16:31:32 EDT 1997, Compilation 5377
bparker@vapor.arl.mil:/m/cad/.mged.6d
cup.g: No such file or directory
Create new database (y|n)[n]? </tt>
</pre>
At this point pressing the ``y'' key followed by a return will create the new
database.&nbsp; Any other (non-y) keys (followed by a return)
will cause mged to quit without creating the database.&nbsp;
<pre>
<tt>%</tt> <B><FONT color="#20a020">mged -c cup.g</FONT></B><tt>
BRL-CAD Release 4.5 Graphics Editor (MGED)
Mon May 19 16:31:32 EDT 1997, Compilation 5377
bparker@vapor.arl.mil:/m/cad/.mged.6d
cup.g: No such file or directory
Create new database (y|n)[n]? </tt><B><FONT color="#20a020">y</FONT></B><tt>
Creating new database "cup.g"
Untitled MGED Database (units=mm)
attach (nu|X|ogl|glx)[nu]? </tt>
</pre>
<A name="#foobar">At</a> this point, mged is asking what type of geometry display window you
would like.&nbsp; The default is always ``nu'' for Null or ``no geometry display''.&nbsp;
If you are creating geometry, it is desirable to be able to see it.&nbsp;
The common choices are:
<center>
<table border>
<tr><th colspan=2>MGED Geometry Display Types</td></tr>
<tr><th>Name</th><th>Display Type</th></tr>
<tr><td align=center>X</td><td>X Windows</td></tr>
<tr><td align=center>glx</td><td>Iris gl under X Windows</td></tr>
<tr><td align=center>ogl</td><td>OpenGL under X Windows</td></tr>
</table></center>
Enter one of the names listed followed by a return.&nbsp;
<pre>
<tt>%</tt> <B><FONT color="#20a020">mged -c cup.g</FONT></B><tt>
BRL-CAD Release 4.5 Graphics Editor (MGED)
Mon May 19 16:31:32 EDT 1997, Compilation 5377
bparker@vapor.arl.mil:/m/cad/.mged.6d
cup.g: No such file or directory
Create new database (y|n)[n]? </tt><B><FONT color="#20a020">y</FONT></B><tt>
Creating new database "cup.g"
Untitled MGED Database (units=mm)
attach (nu|X|ogl|glx)[nu]? </tt><B><FONT color="#20a020">ogl</FONT></B><tt>
mged> </tt>
</pre>
At this point you should have a window that looks something like this:
<center><a href="faceplate.gif"><img src="faceplate_sm.gif" alt="faceplate"></a></center><br>
When the MGED program has a display window or device attached, it
displays a border around the region of the screen being used
along with some ancillary status information.&nbsp; Together, this
information is termed the editor ``faceplate''.&nbsp;
<p>
In the upper left corner of the window is a small enclosed area which
is used to display the current editor state. The current editor state
indicates whether objects are selected for editing and what modeling
operations are allowed.&nbsp;
<p>
Underneath the state display is a zone in which three ``pop-up'' menus
may appear.&nbsp;
The top menu is termed the ``button menu,'' as it
contains menu items which duplicate many functions which
were originally available via an external <a href="button box">button box</a>
peripheral.&nbsp;
Having these frequently used
functions available on a pop-up menu
can greatly decrease the number of times that the user needs to remove
his hand from the pointing device (either mouse or tablet puck)
to reach for the buttons.&nbsp;
<p>
Below is an example of the
faceplate and first level menu.&nbsp;
<center><a href="faceplate_menu.gif"><img src="faceplate_menu_sm.gif" alt="faceplate with menu"></a></center>
<p>
The second menu is used primarily for the various editing states,
at which time it contains all the editing operations which are generic
across all objects (scaling, rotation, and translation).&nbsp;
The third menu contains selections for object-specific editing operations.&nbsp;
The choices on these menus are <a href="Edit Menus">detailed below</a>.&nbsp;
<p>
Running across the entire bottom of the faceplate is a thin rectangular
display area which holds two lines of text.&nbsp;
The first line always contains a numeric display of the model-space
coordinates of the center of the view and the current size of
the viewing cube, both of which are displayed in the currently
selected editing units.&nbsp;
The first line also contains the current rotation rates.&nbsp;
<p>
The second line has several uses, depending on editor mode.&nbsp;
In various editing states this second line will
contain certain path selection information.&nbsp;
When the angle/distance cursor function is activated, the second
line will be used to display the current settings of the cursor.&nbsp;
<p>
All numeric interaction between
the user and the editor are in terms of user-selected
display units.&nbsp;
The user may select from millimeters, centimeters, meters, inches, and
feet, and the currently active display units are noted in the first
display line.&nbsp;
One important implementation detail is that all numeric values are stored
in the database in millimeters. When MGED interacts with the user, it converts
values from the database into the units selected by the user before displaying
them.&nbsp; Likewise, values that the user enters are converted to millimeters
before being written to the database.&nbsp;
<p><a name="coord"><H2>The Screen Coordinate System</H2></a>
<p>
Objects drawn on the screen are clipped in X, Y, and Z, to the size
indicated on the first status line.&nbsp;
This creates a conceptual ``viewing cube''.&nbsp; Only objects inside this
cube are visible.&nbsp;
This feature allows objects within the cube to be seen, without cluttering
the display with objects which are
within view
in X and Y, but quite far away in the Z direction.&nbsp;
This is especially useful when the display is zoomed
in on a small portion of the geometry.&nbsp;
On some displays Z axis clipping can be selectively enabled and disabled
as a viewing aid.&nbsp;
<p>
The MGED editor uses the standard right-handed
screen coordinate system shown in the figure below.&nbsp;
<p>
<CENTER>
<IMG SRC="coord-axes.gif" ALT="coord-axes"><br>
<B><FONT color="#20a020"> The Screen Coordinate System.</FONT></B>
</CENTER>
<p>
The Z axis is perpendicular to the screen and the positive Z direction is
out of the screen towards the viewer.&nbsp; The directions of positive (+) and negative (-) axis
rotations are also indicated.&nbsp; For these rotations, the ``Right
Hand Rule'' applies: Point the thumb of the right hand along the direction
of +X axis and the other fingers will describe the sense of positive
rotation.&nbsp;
<H2>Creating Geometry: The Cup</h2>
<p>
Let's look at the commands needed to build the
<a href="mged.html#cup">cup geometry</a>
described in the first section.&nbsp; The following MGED editing session
contains all the commands needed to create the mug.&nbsp;
Each command will be explained below.&nbsp;
<pre>
<tt>% </tt><B><FONT color="#20a020">newmged Mug.g</FONT></B><tt>
BRL-CAD Release 4.5 Graphics Editor (MGED)
Tue May 20 10:33:44 EDT 1997, Compilation 5378
jra@vapor.arl.mil:/m/cad/.mged.6d
Mug.g: No such file or directory
Create new database (y|n)[n]? </tt><B><FONT color="#20a020">y</FONT></B><tt>
Creating new database "Mug.g"
Untitled MGED Database (units=mm)
attach (nu|X|ogl|glx)[nu]? </tt><B><FONT color="#20a020">ogl</FONT></B><tt>
mged> </tt><B><FONT color="#20a020">title MGED Tutorial Geometry</FONT></B><tt>
mged> </tt><B><FONT color="#20a020">units in</FONT></B><tt>
New editing units = 'in'
mged> </tt><B><FONT color="#20a020">in outside.s rcc</FONT></B><tt>
Enter X, Y, Z of vertex: </tt><B><FONT color="#20a020">0 0 0</FONT></B><tt>
Enter X, Y, Z of height (H) vector: </tt><B><FONT color="#20a020">0 0 3.5</FONT></B><tt>
Enter radius: </tt><B><FONT color="#20a020">1.75</FONT></B><tt>
42 vectors in 0.006435 sec
mged> </tt><B><FONT color="#20a020">in inside.s rcc 0 0 0.25 0 0 3.5 1.5</FONT></B><tt>
42 vectors in 0.006435 sec
mged> </tt><B><FONT color="#20a020">in ring.s eto 0 2.5 1.75 1 0 0</FONT></B><tt>
Enter X, Y, Z, of vector C: </tt><B><FONT color="#20a020">.6 0 0</FONT></B><tt>
Enter radius of revolution, r: </tt><B><FONT color="#20a020">1.45</FONT></B><tt>
Enter elliptical semi-minor axis, d: </tt><B><FONT color="#20a020">0.2</FONT></B><tt>
2479 vectors in 0.087375 sec
mged> </tt><B><FONT color="#20a020">comb cup.c u outside.s - inside.s</FONT></B><tt>
mged> </tt><B><FONT color="#20a020">comb handle.c u ring.s - outside.s</FONT></B><tt>
mged> </tt><B><FONT color="#20a020">r mug.r u cup.c u handle.c</FONT></B><tt>
Defaulting item number to 1002
Creating region id=1001, air=0, los=100, GIFTmaterial=1</tt>
</pre>
<p>
<p>
The first step in preparing a new database is to provide a title which
describes the contents of the database.&nbsp; This is an important opportunity
to describe the contents and purpose of the database.&nbsp; Setting the title
is done with the <a href="mged_cmds.html#title">title</a> command in MGED.&nbsp;
<pre>
<tt>mged> </tt><B><FONT color="#20a020">Title MGED Tutorial Geometry</FONT></B>
</pre>
<p>
When the database is first created, the default editing units are set to millimeters.&nbsp;
For this example, we want to specify the dimensions of the object in inches.&nbsp;
To arrange this, the <a href="mged_cmds.html#units">units</a> command
<pre>
<tt>mged> </tt><B><FONT color="#20a020">units in</FONT></B>
</pre>
<!-- XXX We need to continue describing line-by-line here -->
<p>
Now we can create our first solid.&nbsp; There are two techniques for creating
geometry in MGED.&nbsp; The commands for these two techniques are
<a href="mged_cmds.html#make"><em>make</em></a>
and <a href="mged_cmds.html#in"><em>in</em></a> (for ``insert'').&nbsp;
For precision modeling the <em>in</em> command offers the greatest control
over the definition of the solid.&nbsp; This is the approach we will use.&nbsp;
<p>
The ``in'' command can take all of its arguments on the command line,
or it will prompt you for any missing portions.&nbsp;
Remembering what parameters need to be specified for each solid can be
difficult at best.&nbsp; All that you really need to enter is the command
name.&nbsp; Mged will prompt you for the rest of the parameters.&nbsp;
<p>
In the first example
above we specify the name of the solid we are creating (``outside.s'') and the
type of solid to create (``rcc''). Then mged prompts for the remaining
arguments (vertex, height vector, and radius):
<pre><tt>
mged> </tt><B><FONT color="#20a020">in outside.s rcc</FONT></B><tt>
Enter X, Y, Z of vertex: </tt><B><FONT color="#20a020">0 0 0</FONT></B><tt>
Enter X, Y, Z of height (H) vector: </tt><B><FONT color="#20a020">0 0 3.5</FONT></B><tt>
Enter radius: </tt><B><FONT color="#20a020">1.75</FONT></B>
</tt></pre>
<p> For the solid ``inside.s'' we specify all the parameters on the command
line, so mged does not prompt us for additional arguments.&nbsp; In the case
of the solid ``ring.s'' we specify some, but not all of the parameters, and
mged prompts us for the missing ones:
<pre>
<tt>
mged> </tt><B><FONT color="#20a020">in inside.s rcc 0 0 0.25 0 0 3.5 1.5</FONT></B><tt>
42 vectors in 0.006435 sec
mged> </tt><B><FONT color="#20a020">in ring.s eto 0 2.5 1.75 1 0 0</FONT></B><tt>
Enter X, Y, Z, of vector C: </tt><B><FONT color="#20a020">.6 0 0</FONT></B><tt>
Enter radius of revolution, r: </tt><B><FONT color="#20a020">1.45</FONT></B><tt>
Enter elliptical semi-minor axis, d: </tt><B><FONT color="#20a020">0.2</FONT></B><tt>
2479 vectors in 0.087375 sec
</tt>
</pre>
<p>
As a minimal example, if we wanted to create a sphere called ``ball.s''
we could simply type the ``in'' command and let mged prompt us for
everything else:
<pre>
<tt>mged> </tt><B><FONT color="#20a020">in</FONT></B><tt>
Enter name of solid:</tt> <B><FONT color="#20a020">ball.s</FONT></B><tt>
Enter solid type: </tt> <B><FONT color="#20a020">sph</FONT></B><tt>
Enter X, Y, Z of vertex: </tt> <B><FONT color="#20a020">0 0 0</FONT></B><tt>
Enter radius: </tt> <B><FONT color="#20a020">3</FONT></B><tt>
51 vectors in 0.117187 sec</tt>
</pre>
<p> The three boolean operators supported are union, subtraction and
intersection. These operations are denoted by the operators <em>u, -</em> and
<em>+</em> respectively.&nbsp; Mged uses these in a sort of prefix notation.&nbsp; In
this notation the union operator has higher precedence than either subtraction
or intersection.&nbsp; Hence the following boolean sequence
<pre>
(A union B) subtract C
is written as
u A - C u B - C
</pre>
<p>
The <em>comb</em> command creates a boolean combination.&nbsp; In our example
we use this to create the shape of the outside of the cup called ``cup.s''
Reading the command above that creates cup.c, we note that cup.c is formed
from the <em>union</em> of the volume defined by the solid ``outside.s'' and
the <em>subtraction</em> of the volume defined by the solid ``inside.s''.&nbsp;
<p> The <a href="mged_cmds.html#r">r</a> command creates a
``<a href="brlcad_glossary.html#REGION">region</a>''.&nbsp;
It is just like creating a
<a href="brlcad_glossary.html#COMBINATION">combination</a>,
but the results are a volume of one logical material type.&nbsp;
<p>
Assigning material properties is done with the
<em><a href="mged_cmds.html#mater">mater</a></em>
or
<em><a href="mged_cmds.html#shader">shader</a></em>
command.&nbsp; Here
we define which <a href="brlcad_glossary.html#SHADER">shader</a> should be used when rendering the object, and the
parameters for the shader.&nbsp; The simplest shader is the ``<a href="shaders.html#plastic">plastic</a>'' shader
which uses a Phong lighting model.&nbsp; For our mug this will be fine.&nbsp;
We specify the plastic shader and set the color to a shade of green.&nbsp;
<pre>
<tt> mged> </tt><B><FONT color="#20a020">mater mug.r</FONT></B><tt>
Shader =
Shader? ('del' to delete, CR to skip) </tt><B><FONT color="#20a020">plastic</FONT></B><tt>
Color = (No color specified)
Color R G B (0..255)? ('del' to delete, CR to skip) </tt><B><FONT color="#20a020">32 128 32</FONT></B><tt>
Inherit = 0: lower nodes (towards leaves) override
Inheritance (0|1)? (CR to skip) <B><FONT color="#20a020">0</FONT></B>
</tt>
</pre>
The Inheritance option should be left 0.&nbsp;
This option will be discussed later.&nbsp;
<p> Once we have created our geometry, it would be nice to look at the
wireframe from a variety of angles.&nbsp; By clicking on the button menu
box a set of options is displayed.&nbsp;
The buttons labeled "35,25", "Top", "Right", "Front", and "45,45" offer
a set of standard views.&nbsp;
<p> It is possible to raytrace the current view from within mged.&nbsp;
But to do so we need a place to display the image.&nbsp; We start up a
framebuffer server (number 1) to accommodate this:
<pre> <tt>
mged> </tt><B><FONT color="#20a020">exec fbserv 1 /dev/sgip &</FONT></B>
</pre>
<p>This runs the ``fbserv'' program which will maintain a framebuffer window
for us.&nbsp; Now we are ready to raytrace an image.&nbsp; First we'll clear the
geometry window of all the primitives and combinations and regions we've
created.&nbsp; Then we display the region we want to raytrace with the
``<a href="mged_cmds.html#e">draw</a>'' command.&nbsp;
Finally, we'll select a nice viewing angle of azimuth 35 elevation 25.&nbsp;
<pre>
<tt>
mged> </tt><B><FONT color="#20a020">Z</FONT></B><tt>
mged> </tt><B><FONT color="#20a020">draw mug.r</FONT></B><tt>
mged> </tt><B><FONT color="#20a020">ae 35 25</FONT></B>
</pre>
Now we are ready to raytrace an image.&nbsp; The ``rt'' command starts the
raytracer on the geometry.&nbsp; We must tell it where we want the pixels displayed
with the ``-F'' option, and the size of the image with the -s option:
<pre>
<tt> mged> </tt><B><FONT color="#20a020">rt -F:1 -s 512</FONT></B>
</pre>
The rt program prints a variety of information when it runs:
<pre><font size=-2>
rt -F:0 -s 512
rt -s50 -M -F:0 -s 512 cup.g mug.r
mged> BRL-CAD Release 4.4 Ray-Tracer
Thu Jan 5 10:08:14 EST 1995, Compilation 1
mike@wilson.arl.mil:/vld/src/brlcad/rt
db title: MGED Tutorial Geometry
initial dynamic memory use=131072.
GETTREE: cpu = 0.001619 sec, elapsed = 0.004842 sec
parent: 0.0user 0.0sys 0:00real 0% 0i+0d 2100maxrss 0+27pf 0+1csw
children: 0.0user 0.0sys 0:00real 0% 0i+0d 0maxrss 0+0pf 0+0csw
Additional dynamic memory used=0. bytes
...................Frame 0...................
PREP: cpu = 0.001296 sec, elapsed = 0.003973 sec
parent: 0.0user 0.0sys 0:00real 0% 0i+0d 2100maxrss 0+7pf 1+0csw
children: 0.0user 0.0sys 0:00real 0% 0i+0d 0maxrss 0+0pf 0+0csw
Additional dynamic memory used=0. bytes
Tree: 3 solids in 1 regions
Model: X(-45,45), Y(-45,116), Z(-8,97)
View: 35 azimuth, 25 elevation off of front view
Orientation: 0.248097, 0.476591, 0.748097, 0.389435
Eye_pos: 87.6646, 90.5654, 97.5286
Size: 236.164mm
Grid: (0.461258, 0.461258) mm, (512, 512) pixels
Beam: radius=0.230629 mm, divergence=0 mm/1mm
Dynamic scanline buffering
Lighting: Ambient = 40%
Implicit light 0: (155.394, -35.3438, 49.9036), aimed at (0, 0, -1)
Implicit light 0: invisible, no shadows, 1000 lumens (83%), halfang=180
SHOT: cpu = 6.66068 sec, elapsed = 7.33342 sec
parent: 6.6user 0.0sys 0:07real 91% 0i+0d 2100maxrss 0+20pf 0+251csw
children: 0.0user 0.0sys 0:07real 0% 0i+0d 0maxrss 0+0pf 0+0csw
Additional dynamic memory used=0. bytes
154520 solid/ray intersections: 94456 hits + 60064 miss
pruned 61.1%: 151248 model RPP, 0 dups skipped, 50361 solid RPP
Frame 0: 262144 pixels in 6.66 sec = 39356.94 pixels/sec
Frame 0: 262144 rays in 6.66 sec = 39356.94 rays/sec (RTFM)
Frame 0: 262144 rays in 6.66 sec = 39356.94 rays/CPU_sec
Frame 0: 262144 rays in 7.33 sec = 35746.50 rays/sec (wallclock)
</font></pre>
If all goes well, you will get an image of a green mug on a black
background.&nbsp;
<br>
<center><a href="mug_green.jpg"><img src="mug_green.gif" alt="green mug"></a></center>
<p>
Now let's improve on our basic cup.&nbsp;
The lip of this cup looks a little too squared off.&nbsp;
To fix this, we'll add a rounded top to the lip.&nbsp;
To do this we create a circular torus solid positioned
at exactly the top of the cup.&nbsp; Then we can
add it to the combination ``cup.c''.
<pre><tt>
mged> </tt><B><FONT color="#20a020">in rim.s tor 0 0 3.5 0 0 1 1.625 0.125</FONT></B><tt>
214 vectors in 0.001814 sec
mged> </tt><B><FONT color="#20a020">comb cup.c u rim.s</FONT></B>
</pre>
Now we have a unique condition.&nbsp; The solid rim.s was added to the list
of objects being displayed when it was created.&nbsp;
However, now it is also a part of mug.r (via cup.c).&nbsp;
<!-- XXX mged should update the display of combinations when they are changed too -->
If we raytrace the current view we will have 2 copies of this
solid.&nbsp;
The raytracer will complain that they overlap.&nbsp;
The best way to fix this is to clear the display, redisplay the new,
complete object, and then raytrace.&nbsp;
The ``<a href="mged_cmds.html#Z">Z</a>'' command clears all
objects from the display. Then we can redisplay the objects we want to raytrace
with the ``<a href="mged_cmds.html#e">draw</a>'' command.
<pre><tt>
mged> </tt><B><FONT color="#20a020">Z</FONT></B><tt>
mged> </tt><B><FONT color="#20a020">draw mug.r</FONT></B>
</pre>
Since this is a frequent operation (clear the display list and draw something new)
there is a shortcut:
<pre><tt>
mged> </tt><B><FONT color="#20a020">B mug.r</FONT></B>
</pre>
The ``<a href="mged_cmds.html#B">B</a>'' is not very easy to remember, (one
suggested mnemonic is "blast") but it is quite useful.
<p>
Now we are ready to raytrace again.
<pre><font size=-2><tt>
mged> </tt><B><FONT color="#20a020">rt -F:1 -s 512</FONT></B><tt>
rt -s50 -M -F:1 -s 512 mug.g mug.r
BRL-CAD Release 4.4 Ray-Tracer
Thu Jan 5 10:08:14 EST 1995, Compilation 1
mike@wilson.arl.mil:/vld/src/brlcad/rt
db title: MGED Tutorial Geometry
initial dynamic memory use=131072.
GETTREE: cpu = 0.001785 sec, elapsed = 0.005385 sec
parent: 0.0user 0.0sys 0:00real 0% 0i+0d 2152maxrss 0+31pf 0+1csw
children: 0.0user 0.0sys 0:00real 0% 0i+0d 0maxrss 0+0pf 0+0csw
Additional dynamic memory used=0. bytes
...................Frame 0...................
PREP: cpu = 0.001468 sec, elapsed = 0.004084 sec
parent: 0.0user 0.0sys 0:00real 0% 0i+0d 2152maxrss 0+7pf 1+0csw
children: 0.0user 0.0sys 0:00real 0% 0i+0d 0maxrss 0+0pf 0+0csw
Additional dynamic memory used=0. bytes
Tree: 4 solids in 1 regions
Model: X(-45,45), Y(-45,116), Z(-8,97)
View: 35 azimuth, 25 elevation off of front view
Orientation: 0.248097, 0.476591, 0.748097, 0.389435
Eye_pos: 87.6646, 90.5654, 116.579
Size: 236.164mm
Grid: (0.461258, 0.461258) mm, (512, 512) pixels
Beam: radius=0.230629 mm, divergence=0 mm/1mm
Dynamic scanline buffering
Lighting: Ambient = 40%
Implicit light 0: (155.394, -35.3438, 49.9036), aimed at (0, 0, -1)
Implicit light 0: invisible, no shadows, 1000 lumens (83%), halfang=180
SHOT: cpu = 7.26825 sec, elapsed = 7.94901 sec
parent: 7.2user 0.0sys 0:07real 92% 0i+0d 2152maxrss 0+22pf 1+270csw
children: 0.0user 0.0sys 0:07real 0% 0i+0d 0maxrss 0+0pf 0+0csw
Additional dynamic memory used=0. bytes
170747 solid/ray intersections: 99501 hits + 71246 miss
pruned 58.3%: 151252 model RPP, 0 dups skipped, 64892 solid RPP
Frame 0: 262144 pixels in 7.27 sec = 36067.02 pixels/sec
Frame 0: 262144 rays in 7.27 sec = 36067.02 rays/sec (RTFM)
Frame 0: 262144 rays in 7.27 sec = 36067.02 rays/CPU_sec
Frame 0: 262144 rays in 7.95 sec = 32978.18 rays/sec (wallclock)
</font></tt></pre>
<center><a href="rim.jpg"><img src="rim.gif" alt="rounded rim cup"></a></center>
<hr>
<center><font size=+3>Under Construction</font></center>
<a name="solidedit"><h2>Editing Solids</h2></a>
<p>
So far we've focused on creating primitive solids and combinations.&nbsp; Now
let's look at ways of altering and deleting things that already exist.&nbsp;
We'll continue with our example mug geometry.&nbsp; There are a number of
changes that need to be made to make it more realistic.
<ul>
<li>
The handle for the mug is a little awkward.&nbsp;
It sticks out too far from the
side of the mug, and it is too wide.&nbsp;
<li>
The bottom is perfectly flat.&nbsp;
If this were a real cup, any imperfection in the table top would cause it
to wobble.
<li>
The inside bottom corner is too sharp. We need to create a "fillet" at the
seam between side and bottom.
</ul>
<a name="solid
<p>
<p>
<a name="ListingObjects"><h3>Listing Objects</h3></a>
Now let's take a look at what we have. The
``<a href="mged_cmds.html#l">l</a>''
command lists the definition of a combination
or primitive solid.
<pre><tt>
mged> </tt><B><FONT color="#20a020">l mug.r</FONT></B><tt>
mug.r: REGION id=1000 (air=0, los=100, GIFTmater=1) --
Shader 'plastic'
Color 32 128 32
u cup.c
handle.c
</tt></pre>
This tells us that mug.r is a <a href="brlcad_glossary.html#REGION">region</a>
and that it uses the <a href="shaders.html#plastic">plastic</a> shader.
The color of the object is "32 128 32", and it is made up of the union of two
objects: cup.c and handle.c
<p>
If we look at cup.c we get:
<pre><tt>
mged> </tt><B><FONT color="#20a020">l cup.c</FONT></B><tt>
cup.c: --
u - outside.s
inside.s
rim.s
</tt></pre>
Note that this is not a <a href="brlcad_glossary.html#REGION">region</a>
so there are no material properties. The boolean tree indicates that the
object consists of: (outside.s - inside.s) u rim.s which in graph form looks
like:
<pre>
outside.s
/
(-)
/ \
/ inside.s
cup.c -- (u)
\
rim.s
</pre>
The text output of the boolean tree lines up the indentation of the operands
with the operator.&nbsp; So here, because outside.s and inside.s are indented
together, they are the operands to the subtraction operator.&nbsp;
The subtraction operator and rim.s are indented the same amount, so the
result of the subtraction, and rim.s are the operands of the union operator.
<a name="shaders1"><H2>An Introduction to Shaders</h2></a>
<p>
In the example above, we specified that the mug should be rendered with
the ``plastic'' shader.&nbsp; This implements a simple ``phong'' lighting model.
The result can be altered by adjusting parameters that define how the shader
operates.&nbsp; These parameters are:
<center><table border=1>
<tr><th align=left>Parameter</th> <th>Abbrev</th><th>Type</th><th>Range</th><th>default</th></tr>
<tr><th align=left>Shine</th> <th>sh</th><td>int</td> <td>4 ..&nbsp;20</td><td>10</td></tr>
<tr><th align=left>diffuse</th> <th>di</th><td>float</td><td>0 ..&nbsp;1</td><td>0.3</td></tr>
<tr><th align=left>specular</th> <th>sp</th><td>float</td><td>0 ..&nbsp;1</td><td>0.7</td></tr>
<tr><th align=left>transmission</th><th>tr</th><td>float</td><td>0 ..&nbsp;1</td><td>0.0</td></tr>
<tr><th align=left>reflection</th> <th>re</th><td>float</td><td>0 ..&nbsp;1</td><td>0.0</td></tr>
</table></center>
We can alter the look of our mug a bit by specifying some of the parameters to
the plastic shader:
<pre>
<tt>mged> </tt><B><FONT color="#20a020">mater mug.r</FONT></B><tt>
Shader =
Shader? ('del' to delete, CR to skip) </tt><B><FONT color="#20a020">plastic di=.9 sh=4</FONT></B><tt>
Color = (No color specified)
Color R G B (0..255)? ('del' to delete, CR to skip) </tt><B><FONT color="#20a020">32 128 32</FONT></B><tt>
Inherit = 0: lower nodes (towards leaves) override
Inheritance (0|1)? (CR to skip)
mged></tt>
</pre>
<p>If we raytrace the mug now, it has a different appearance.
<!--- XXX raytrace and show --->
<p> Sometimes it is useful to combine the effects of two shaders.&nbsp; The
``stack'' shader was created for this situation.&nbsp; For example, we might want
to apply a blotchy camouflage-like color pattern to the mug.&nbsp; The ``camo''
shader provides the color pattern, while the ``plastic'' shader provides the
lighting model.&nbsp;
<pre>
<tt>mged> </tt><B><FONT color="#20a020">mater mug.r</FONT></B><tt>
Shader = plastic
Shader? ('del' to delete, CR to skip) </tt><B><FONT
color="#20a020">stack camo s=10;plastic</FONT></B><tt>
Color = 32 128 32
Color R G B (0..255)? ('del' to delete, CR to skip)
Inherit = 0: lower nodes (towards leaves) override
Inheritance (0|1)? (CR to skip)
mged> </tt>
</pre>
The ``camo'' shader creates a color pattern using a procedural noise
technique.&nbsp; It computes a fBm value based upon the point being shaded.&nbsp; To
compute this value it needs to be able to map coordinates in model space
into a noise space.&nbsp; The most important parameter to specify is ``size''.&nbsp;
This tells the shader what the spacing is (in millimeters) of grid points
from the noise space.&nbsp; It also gives us a rough bound on the size of the blobs
of color it creates.&nbsp;
<center>
<table border=1>
<tr><th align=left>Parameter</th> <th>abbrev</th><th>type</th><th>default</th></tr>
<tr><th align=left>Lacunarity</th> <th>l</th> <td>float</td><td>2.1753974</td></tr>
<tr><th align=left>H_value</th> <th>H</th> <td>float</td><td>1.0</td></tr>
<tr><th align=left>octaves</th> <th>o</th> <td>int</td><td>4</td></tr>
<tr><th align=left>delta</th> <th>d</th> <td>float vector</td><td>1000.0, 1000.0, 1000.0</td></tr>
<tr><th align=left>Threshold 1</th><th>t1</td><td>float</td><td>-0.25</td></tr>
<tr><th align=left>Threshold 2</th><th>t2</td><td>float</td><td>0.25</td></tr>
<tr><th align=left>size</th> <th>s</th> <td>float</td><td>1.0</td></tr>
<tr><th align=left>color 1</th> <th>c1</td><td>int vector</td><td>97, 74, 41</td></tr>
<tr><th align=left>color 2</th> <th>c2</td><td>int vector</td><td>26, 77, 10</td></tr>
<tr><th align=left>color 3</th> <th>c3</td><td>int vector</td><td>38, 38, 38</td></tr>
</table></center>
<p>This time we will raytrace the image with a grey background instead of
black.&nbsp; We specify this with the -C option:
<pre>
<tt> mged> </tt><B><FONT color="#20a020">rt -F:1 -s 128 -C100/100/100</FONT></B>
</pre>
<a href="mug_camo.jpg"><img src="mug_camo.gif" alt="camouflage mug"></a>
<p>
Mged can save a shell script to raytrace the current view.&nbsp; This is done with
the ``saveview'' command.&nbsp;
<pre>
<tt> mged> </tt><B><FONT color="#20a020">saveview mug_camo</FONT></B>
</pre>
If we exit mged we will find a file called ``mug_camo'' in the current
directory.&nbsp; Running this script will start the ``rt'' program to create a file
called mug_camo.pix.&nbsp; If you do not specify the size of the image on the
command line, it will default to a 512x512 image.&nbsp; This file can be displayed
in your framebuffer server window using the ``pix-fb'' command.&nbsp;
<pre>
<tt> % </tt><B><FONT color="#20a020">./mug_camo</FONT></B>
<tt> % </tt><B><FONT color="#20a020">pix-fb mug_camo.pix</FONT></B>
</pre>
<p>When you are done with the framebuffer, you can dismiss the window with
the ``fbfree'' command.&nbsp;
</BODY></HTML>
+37 -38
View File
@@ -1,32 +1,28 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
<title>Mged User's Manual</title>
<style type="text/css">
body {
background-color: #E0D8C8;
color: #000000;
}
</style>
</head>
<body>
<h2><a name="solidedit">Editing Solids</a></h2>
<p>So far we've focused on creating primitive solids and
combinations.&nbsp; Now let's look at ways of altering and
deleting things that already exist.&nbsp; We'll continue with our
example mug geometry.&nbsp; There are a number of changes that
need to be made to make it more realistic.</p>
<ul>
<li>The handle for the mug is a little awkward.&nbsp; It sticks
out too far from the side of the mug, and it is too
wide.&nbsp;</li>
<li>The bottom is perfectly flat.&nbsp; Any imperfection in the
table top would cause it to wobble.</li>
<li>The inside bottom corner is too sharp. We need to create a
"fillet" at the seam between side and bottom.</li>
</ul>
<h3><a name="handle">Fixing the Handle</a></h3>
<pre>
<HTML>
<HEAD><TITLE>Mged User's Manual</TITLE></HEAD>
<BODY BGCOLOR="#E0D8c8" Text="#000000">
<a name="solidedit"><h2>Editing Solids</h2></a>
<p>
So far we've focused on creating primitive solids and combinations.&nbsp; Now
let's look at ways of altering and deleting things that already exist.&nbsp;
We'll continue with our example mug geometry.&nbsp; There are a number of
changes that need to be made to make it more realistic.
<ul>
<li>
The handle for the mug is a little awkward.&nbsp;
It sticks out too far from the side of the mug, and it is too wide.&nbsp;
<li>
The bottom is perfectly flat.&nbsp;
Any imperfection in the table top would cause it to wobble.
<li>
The inside bottom corner is too sharp. We need to create a "fillet" at the
seam between side and bottom.
</ul>
<a name="handle"><h3>Fixing the Handle</h3></a>
<pre>
kill handle.c
kill ring.s
in handle_01.s eto 0 2.25 1.25 1 0 0 .75 0.3 0 0 .15
@@ -36,10 +32,11 @@ in handle_04.s eto 0 2.25 2.5 1 0 0 .75 0.3 0 0 .15
comb handle.c u handle_01.s - handle_02.s - outside.s u handle_04.s - handle_02.s - outside.s u handle_03.s
</pre><a href="handle.jpg"><img src="handle.gif" alt=
"new handle"></a>
<h3><a name="base">Adding a Base</a></h3>
<pre>
</pre>
<a href="handle.jpg"><img src="handle.gif" alt="new handle"></a>
<a name="base"><h3>Adding a Base</h3></a>
<pre>
mvall outside.s outside_01.s
in outside_02.s tor 0 0 0 0 0 1 1.6875 .0625
comb cup.c u outside_02.s
@@ -55,8 +52,10 @@ ae 170 -52 120
rt -s 512 -F :1
<a href="base.jpg"><img src="base.gif" alt="new base"></a>
</pre>
<h3><a name="fillet">Adding a fillet</a></h3>
<pre>
<a name="fillet"><h3>Adding a fillet</h3></a>
<pre>
mvall inside.s inside.c
mv inside.c inside_01.s
solid edit bottom of inside_01.s up to 0 0 0.3125
@@ -67,7 +66,7 @@ B mug.r
ae 35 85
size 5
rt -s 512 -F :1
</pre><a href="fillet.jpg"><img src="fillet.gif" alt=
"inside fillet"></a>
</body>
</html>
</pre>
<a href="fillet.jpg"><img src="fillet.gif" alt="inside fillet"></a>
</BODY></HTML>
+155 -220
View File
@@ -1,243 +1,178 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
<title>Mged User's Manual</title>
<style type="text/css">
body {
background-color: #E0D8C8;
color: #000000;
}
div.c2 {text-align: center}
span.c1 {color: #20A020}
</style>
</head>
<body>
<h3><a name="ListingObjects">Listing Objects</a></h3>Now let's
take a look at what we have. The ``<a href=
"mged_cmd_index.html#l">l</a>'' command lists the definition of a
combination or primitive solid.
<pre><tt>
mged&gt; </tt><b><span class="c1">l mug.r</span></b><tt>
<HTML>
<HEAD><TITLE>Mged User's Manual</TITLE></HEAD>
<BODY BGCOLOR="#E0D8c8" Text="#000000">
<a name="ListingObjects"><h3>Listing Objects</h3></a>
Now let's take a look at what we have. The
``<a href="mged_cmds.html#l">l</a>''
command lists the definition of a combination
or primitive solid.
<pre><tt>
mged> </tt><B><FONT color="#20a020">l mug.r</FONT></B><tt>
mug.r: REGION id=1000 (air=0, los=100, GIFTmater=1) --
Shader 'plastic'
Color 32 128 32
u cup.c
handle.c
</tt></pre>This tells us that mug.r is a <a href=
"brlcad_glossary.html#REGION">region</a> and that it uses the
<a href="shaders.html#plastic">plastic</a> shader. The color of the
object is "32 128 32", and it is made up of the union of two
</tt></pre>
This tells us that mug.r is a <a href="brlcad_glossary.html#REGION">region</a>
and that it uses the <a href="shaders.html#plastic">plastic</a> shader.
The color of the object is "32 128 32", and it is made up of the union of two
objects: cup.c and handle.c
<p>If we look at cup.c we get:</p>
<pre><tt>
mged&gt; </tt><b><span class="c1">l cup.c</span></b><tt>
<p>
If we look at cup.c we get:
<pre><tt>
mged> </tt><B><FONT color="#20a020">l cup.c</FONT></B><tt>
cup.c: --
u - outside.s
inside.s
rim.s
</tt></pre>Note that this is not a <a href=
"brlcad_glossary.html#REGION">region</a> so there are no material
properties. The boolean tree indicates that the object consists of:
(outside.s - inside.s) u rim.s which in graph form looks like:
<pre>
outside.s
/
(-)
/ \
/ inside.s
</tt></pre>
Note that this is not a <a href="brlcad_glossary.html#REGION">region</a>
so there are no material properties. The boolean tree indicates that the
object consists of: (outside.s - inside.s) u rim.s which in graph form looks
like:
<pre>
outside.s
/
(-)
/ \
/ inside.s
cup.c -- (u)
\
rim.s
</pre>The text output of the boolean tree lines up the indentation
of the operands with the operator.&nbsp; So here, because outside.s
and inside.s are indented together, they are the operands to the
subtraction operator.&nbsp; The subtraction operator and rim.s are
indented the same amount, so the result of the subtraction, and
rim.s are the operands of the union operator.
<h2><a name="shaders1">An Introduction to Shaders</a></h2>
<p>In the example above, we specified that the mug should be
rendered with the ``plastic'' shader.&nbsp; This implements a
simple ``phong'' lighting model. The result can be altered by
adjusting parameters that define how the shader operates.&nbsp;
These parameters are:</p>
<div class="c2">
<table border="1">
<tr>
<th align="left">Parameter</th>
<th>Abbrev</th>
<th>Type</th>
<th>Range</th>
<th>default</th>
</tr>
<tr>
<th align="left">Shine</th>
<th>sh</th>
<td>int</td>
<td>4 ..&nbsp;20</td>
<td>10</td>
</tr>
<tr>
<th align="left">diffuse</th>
<th>di</th>
<td>float</td>
<td>0 ..&nbsp;1</td>
<td>0.3</td>
</tr>
<tr>
<th align="left">specular</th>
<th>sp</th>
<td>float</td>
<td>0 ..&nbsp;1</td>
<td>0.7</td>
</tr>
<tr>
<th align="left">transmission</th>
<th>tr</th>
<td>float</td>
<td>0 ..&nbsp;1</td>
<td>0.0</td>
</tr>
<tr>
<th align="left">reflection</th>
<th>re</th>
<td>float</td>
<td>0 ..&nbsp;1</td>
<td>0.0</td>
</tr>
</table>
</div>We can alter the look of our mug a bit by specifying some
of the parameters to the plastic shader:
<pre>
<tt>mged&gt; </tt><b><span class="c1">mater mug.r</span></b><tt>
\
rim.s
</pre>
The text output of the boolean tree lines up the indentation of the operands
with the operator.&nbsp; So here, because outside.s and inside.s are indented
together, they are the operands to the subtraction operator.&nbsp;
The subtraction operator and rim.s are indented the same amount, so the
result of the subtraction, and rim.s are the operands of the union operator.
<a name="shaders1"><H2>An Introduction to Shaders</h2></a>
<p>
In the example above, we specified that the mug should be rendered with
the ``plastic'' shader.&nbsp; This implements a simple ``phong'' lighting model.
The result can be altered by adjusting parameters that define how the shader
operates.&nbsp; These parameters are:
<center><table border=1>
<tr><th align=left>Parameter</th> <th>Abbrev</th><th>Type</th><th>Range</th><th>default</th></tr>
<tr><th align=left>Shine</th> <th>sh</th><td>int</td> <td>4 ..&nbsp;20</td><td>10</td></tr>
<tr><th align=left>diffuse</th> <th>di</th><td>float</td><td>0 ..&nbsp;1</td><td>0.3</td></tr>
<tr><th align=left>specular</th> <th>sp</th><td>float</td><td>0 ..&nbsp;1</td><td>0.7</td></tr>
<tr><th align=left>transmission</th><th>tr</th><td>float</td><td>0 ..&nbsp;1</td><td>0.0</td></tr>
<tr><th align=left>reflection</th> <th>re</th><td>float</td><td>0 ..&nbsp;1</td><td>0.0</td></tr>
</table></center>
We can alter the look of our mug a bit by specifying some of the parameters to
the plastic shader:
<pre>
<tt>mged> </tt><B><FONT color="#20a020">mater mug.r</FONT></B><tt>
Shader =
Shader? ('del' to delete, CR to skip) </tt><b><span class=
"c1">plastic di=.9 sh=4</span></b><tt>
Shader? ('del' to delete, CR to skip) </tt><B><FONT color="#20a020">plastic di=.9 sh=4</FONT></B><tt>
Color = (No color specified)
Color R G B (0..255)? ('del' to delete, CR to skip) </tt><b><span class="c1">32 128 32</span></b><tt>
Color R G B (0..255)? ('del' to delete, CR to skip) </tt><B><FONT color="#20a020">32 128 32</FONT></B><tt>
Inherit = 0: lower nodes (towards leaves) override
Inheritance (0|1)? (CR to skip)
mged&gt;</tt>
mged></tt>
</pre>
<p>If we raytrace the mug now, it has a different appearance.
<!--= XXX raytrace and show =--></p>
<p>Sometimes it is useful to combine the effects of two
shaders.&nbsp; The ``stack'' shader was created for this
situation.&nbsp; For example, we might want to apply a blotchy
camouflage-like color pattern to the mug.&nbsp; The ``camo''
shader provides the color pattern, while the ``plastic'' shader
provides the lighting model.&nbsp;</p>
<pre>
<tt>mged&gt; </tt><b><span class="c1">mater mug.r</span></b><tt>
<p>If we raytrace the mug now, it has a different appearance.
<!--- XXX raytrace and show --->
<p> Sometimes it is useful to combine the effects of two shaders.&nbsp; The
``stack'' shader was created for this situation.&nbsp; For example, we might want
to apply a blotchy camouflage-like color pattern to the mug.&nbsp; The ``camo''
shader provides the color pattern, while the ``plastic'' shader provides the
lighting model.&nbsp;
<pre>
<tt>mged> </tt><B><FONT color="#20a020">mater mug.r</FONT></B><tt>
Shader = plastic
Shader? ('del' to delete, CR to skip) </tt><b><span class=
"c1">stack camo s=10;plastic</span></b><tt>
Shader? ('del' to delete, CR to skip) </tt><B><FONT
color="#20a020">stack camo s=10;plastic</FONT></B><tt>
Color = 32 128 32
Color R G B (0..255)? ('del' to delete, CR to skip)
Inherit = 0: lower nodes (towards leaves) override
Inheritance (0|1)? (CR to skip)
mged&gt; </tt>
</pre>The ``camo'' shader creates a color pattern using a
procedural noise technique.&nbsp; It computes a fBm value based
upon the point being shaded.&nbsp; To compute this value it needs
to be able to map coordinates in model space into a noise
space.&nbsp; The most important parameter to specify is
``size''.&nbsp; This tells the shader what the spacing is (in
millimeters) of grid points from the noise space.&nbsp; It also
gives us a rough bound on the size of the blobs of color it
creates.&nbsp;
<div class="c2">
<table border="1">
<tr>
<th align="left">Parameter</th>
<th>abbrev</th>
<th>type</th>
<th>default</th>
</tr>
<tr>
<th align="left">Lacunarity</th>
<th>l</th>
<td>float</td>
<td>2.1753974</td>
</tr>
<tr>
<th align="left">H_value</th>
<th>H</th>
<td>float</td>
<td>1.0</td>
</tr>
<tr>
<th align="left">octaves</th>
<th>o</th>
<td>int</td>
<td>4</td>
</tr>
<tr>
<th align="left">delta</th>
<th>d</th>
<td>float vector</td>
<td>1000.0, 1000.0, 1000.0</td>
</tr>
<tr>
<th align="left">Threshold 1</th>
<th>t1</th>
<td>float</td>
<td>-0.25</td>
</tr>
<tr>
<th align="left">Threshold 2</th>
<th>t2</th>
<td>float</td>
<td>0.25</td>
</tr>
<tr>
<th align="left">size</th>
<th>s</th>
<td>float</td>
<td>1.0</td>
</tr>
<tr>
<th align="left">color 1</th>
<th>c1</th>
<td>int vector</td>
<td>97, 74, 41</td>
</tr>
<tr>
<th align="left">color 2</th>
<th>c2</th>
<td>int vector</td>
<td>26, 77, 10</td>
</tr>
<tr>
<th align="left">color 3</th>
<th>c3</th>
<td>int vector</td>
<td>38, 38, 38</td>
</tr>
</table>
</div>
<p>This time we will raytrace the image with a grey background
instead of black.&nbsp; We specify this with the -C option:</p>
<pre>
<tt> mged&gt; </tt><b><span class=
"c1">rt -F:1 -s 128 -C100/100/100</span></b>
</pre><a href="mug_camo.jpg"><img src="mug_camo.gif" alt=
"camouflage mug"></a>
<p>Mged can save a shell script to raytrace the current
view.&nbsp; This is done with the ``saveview'' command.&nbsp;</p>
<pre>
<tt> mged&gt; </tt><b><span class=
"c1">saveview mug_camo</span></b>
</pre>If we exit mged we will find a file called ``mug_camo'' in
the current directory.&nbsp; Running this script will start the
``rt'' program to create a file called mug_camo.pix.&nbsp; If you
do not specify the size of the image on the command line, it will
default to a 512x512 image.&nbsp; This file can be displayed in
your framebuffer server window using the ``pix-fb'' command.&nbsp;
<pre>
<tt> % </tt><b><span class="c1">./mug_camo</span></b>
<tt> % </tt><b><span class="c1">pix-fb mug_camo.pix</span></b>
mged> </tt>
</pre>
<p>When you are done with the framebuffer, you can dismiss the
window with the ``fbfree'' command.&nbsp;</p>
</body>
</html>
The ``camo'' shader creates a color pattern using a procedural noise
technique.&nbsp; It computes a fBm value based upon the point being shaded.&nbsp; To
compute this value it needs to be able to map coordinates in model space
into a noise space.&nbsp; The most important parameter to specify is ``size''.&nbsp;
This tells the shader what the spacing is (in millimeters) of grid points
from the noise space.&nbsp; It also gives us a rough bound on the size of the blobs
of color it creates.&nbsp;
<center>
<table border=1>
<tr><th align=left>Parameter</th> <th>abbrev</th><th>type</th><th>default</th></tr>
<tr><th align=left>Lacunarity</th> <th>l</th> <td>float</td><td>2.1753974</td></tr>
<tr><th align=left>H_value</th> <th>H</th> <td>float</td><td>1.0</td></tr>
<tr><th align=left>octaves</th> <th>o</th> <td>int</td><td>4</td></tr>
<tr><th align=left>delta</th> <th>d</th> <td>float vector</td><td>1000.0, 1000.0, 1000.0</td></tr>
<tr><th align=left>Threshold 1</th><th>t1</td><td>float</td><td>-0.25</td></tr>
<tr><th align=left>Threshold 2</th><th>t2</td><td>float</td><td>0.25</td></tr>
<tr><th align=left>size</th> <th>s</th> <td>float</td><td>1.0</td></tr>
<tr><th align=left>color 1</th> <th>c1</td><td>int vector</td><td>97, 74, 41</td></tr>
<tr><th align=left>color 2</th> <th>c2</td><td>int vector</td><td>26, 77, 10</td></tr>
<tr><th align=left>color 3</th> <th>c3</td><td>int vector</td><td>38, 38, 38</td></tr>
</table></center>
<p>This time we will raytrace the image with a grey background instead of
black.&nbsp; We specify this with the -C option:
<pre>
<tt> mged> </tt><B><FONT color="#20a020">rt -F:1 -s 128 -C100/100/100</FONT></B>
</pre>
<a href="mug_camo.jpg"><img src="mug_camo.gif" alt="camouflage mug"></a>
<p>
Mged can save a shell script to raytrace the current view.&nbsp; This is done with
the ``saveview'' command.&nbsp;
<pre>
<tt> mged> </tt><B><FONT color="#20a020">saveview mug_camo</FONT></B>
</pre>
If we exit mged we will find a file called ``mug_camo'' in the current
directory.&nbsp; Running this script will start the ``rt'' program to create a file
called mug_camo.pix.&nbsp; If you do not specify the size of the image on the
command line, it will default to a 512x512 image.&nbsp; This file can be displayed
in your framebuffer server window using the ``pix-fb'' command.&nbsp;
<pre>
<tt> % </tt><B><FONT color="#20a020">./mug_camo</FONT></B>
<tt> % </tt><B><FONT color="#20a020">pix-fb mug_camo.pix</FONT></B>
</pre>
<p>When you are done with the framebuffer, you can dismiss the window with
the ``fbfree'' command.&nbsp;
</BODY></HTML>
+43 -42
View File
@@ -1,43 +1,44 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
<title>MGED Callbacks</title>
<style type="text/css">
body {
background-color: #E0D8C8;
color: #000000;
}
div.c1 {text-align: center}
</style>
</head>
<body>
<div class="c1">
<h2>MGED Callbacks</h2>
</div>MGED has several callbacks that get called at strategic
times in order to give the GUI a chance to update itself after
something important has happened.
<ul>
<li>opendb_callback - this is called after opening a database
to update the command windows' title bar and to update the
raytrace control panel.</li>
<li>begin_edit_callback - this is called at the start of an
edit to reconfigure the GUI's edit menus and to initialize
other parts of the GUI with information about the solid/object
being edited.</li>
<li>active_edit_callback - this is called during an active
edit, after MGED perceives a change to the solid/object being
edited, to continuously update GUI components during an
edit.</li>
<li>end_edit_callback - this is called at the end of an edit to
reconfigure the GUI to a non-edit configuration.</li>
<li>output_callback - this is called when things need to be
printed to the command window(s) (i.e. after issuing a
command).</li>
<li>solid_list_callback - this is called whenever MGED's
internal solid list changes. Note - the solid list changes
whenever solids/objects are <a href=
"mged_cmd_index.html#e">e'd</a> up or when they are <a href=
"mged_cmd_index.html#d">deleted</a> from the display.</li>
</ul>
</body>
</html>
<HTML>
<HEAD>
<TITLE>MGED Callbacks</Title>
</HEAD>
<BODY BGCOLOR="#E0D8c8" Text="#000000">
<CENTER><H2>MGED Callbacks</H2></CENTER>
MGED has several callbacks that get called at strategic
times in order to give the GUI a chance to update itself
after something important has happened.
<UL>
<LI>opendb_callback - this is called after opening a database
to update the command windows' title bar and
to update the raytrace control panel.
<LI>begin_edit_callback - this is called at the start of an edit
to reconfigure the GUI's edit menus and to initialize
other parts of the GUI with information about the solid/object
being edited.
<LI>active_edit_callback - this is called during an active edit,
after MGED perceives a change to the solid/object being edited,
to continuously update GUI components during an edit.
<LI>end_edit_callback - this is called at the end of an edit
to reconfigure the GUI to a non-edit configuration.
<LI>output_callback - this is called when things need to be printed
to the command window(s) (i.e. after issuing a command).
<LI>solid_list_callback - this is called whenever MGED's internal
solid list changes. Note - the solid list changes whenever
solids/objects are
<a href="mged_cmd_index.html#e">e'd</a>
up or when they are
<a href="mged_cmd_index.html#d">deleted</a>
from the display.
</UL>
</BODY>
</HTML>
File diff suppressed because it is too large Load Diff
+49 -55
View File
@@ -1,38 +1,31 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
<title>MGED Environment Variables</title>
<style type="text/css">
body {
background-color: #E0D8C8;
color: #000000;
}
a.c2 {font-weight: bold}
div.c1 {text-align: center}
</style>
</head>
<body>
<div class="c1">
<h2>MGED Environment Variables</h2>
</div>
<dl>
<dt><a class="c2" name="DISPLAY">DISPLAY</a></dt>
<dd><a name="DISPLAY"><i>DISPLAY</i> specifies where to draw
the windows.</a></dd>
<dt><a name="DISPLAY"><br>
<br></a></dt>
<dt><a class="c2" name="BRLCAD_ROOT">BRLCAD_ROOT</a></dt>
<dd><a name="BRLCAD_ROOT"><i>BRLCAD_ROOT</i> specifies where to
find the root directory of the installed BRL-CAD
package.</a></dd>
<dt><a name="BRLCAD_ROOT"><br>
<br></a></dt>
<dt><a class="c2" name="EDITOR">EDITOR</a></dt>
<dd><a name="EDITOR"><i>EDITOR</i> specifies which external
editor to use when one is required.</a></dd>
<dt><a name="EDITOR"><br>
<br>
<!--
<HTML>
<HEAD>
<TITLE>MGED Environment Variables</Title>
</HEAD>
<BODY BGCOLOR="#E0D8c8" Text="#000000">
<CENTER><H2>MGED Environment Variables</H2></CENTER>
<DT><a NAME="DISPLAY"><B>DISPLAY</B></DT>
<DD><I>DISPLAY</I> specifies where to draw the windows.
</DD>
<BR><BR>
<DT><a NAME="BRLCAD_ROOT"><B>BRLCAD_ROOT</B></DT>
<DD><I>BRLCAD_ROOT</I> specifies where to find the root
directory of the installed BRL-CAD package.
</DD>
<BR><BR>
<DT><a NAME="EDITOR"><B>EDITOR</B></DT>
<DD><I>EDITOR</I> specifies which external editor to use
when one is required.
</DD>
<BR><BR>
<!--
<DT><a NAME="MGED_RCFILE"><B>MGED_RCFILE</B></DT>
<DD><I>MGED_RCFILE</I> specifies the full path of an
MGED startup file. If this file exists, it is
@@ -54,24 +47,25 @@
for viewing documentation.
</DD>
<BR><BR>
--></a></dt>
<dt><a class="c2" name="FB_FILE">FB_FILE</a></dt>
<dd><a name="FB_FILE"><i>FB_FILE</i> specifies the framebuffer
to use when using applications that require a
framebuffer.</a></dd>
<dt><a name="FB_FILE"><br>
<br></a></dt>
<dt><a class="c2" name="TCL_LIBRARY">TCL_LIBRARY</a></dt>
<dd><a name="TCL_LIBRARY"><i>TCL_LIBRARY</i> specifies where to
look for Tcl files.</a></dd>
<dt><a name="TCL_LIBRARY"><br>
<br></a></dt>
<dt><a class="c2" name="TK_LIBRARY">TK_LIBRARY</a></dt>
<dd><a name="TK_LIBRARY"><i>TK_LIBRARY</i> specifies where to
look for Tk files.</a></dd>
<dt><a name="TK_LIBRARY"><br>
<br></a></dt>
<dt><a name="TK_LIBRARY"></a></dt>
</dl>
</body>
</html>
-->
<DT><a NAME="FB_FILE"><B>FB_FILE</B></DT>
<DD><I>FB_FILE</I> specifies the framebuffer to use when
using applications that require a framebuffer.
</DD>
<BR><BR>
<DT><a NAME="TCL_LIBRARY"><B>TCL_LIBRARY</B></DT>
<DD><I>TCL_LIBRARY</I> specifies where to look for
Tcl files.
</DD>
<BR><BR>
<DT><a NAME="TK_LIBRARY"><B>TK_LIBRARY</B></DT>
<DD><I>TK_LIBRARY</I> specifies where to look for
Tk files.
</DD>
<BR><BR>
</BODY>
</HTML>
File diff suppressed because it is too large Load Diff
+240 -295
View File
@@ -1,296 +1,241 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
<title>MGED Tcl Variables</title>
<style type="text/css">
body {
background-color: #E0D8C8;
color: #000000;
}
a.c2 {font-weight: bold}
div.c1 {text-align: center}
</style>
</head>
<body>
<div class="c1">
<h2>MGED Tcl Variables</h2>
</div>The use of <i>pathName</i> in this document refers to the
Tcl/Tk pathname of a display manager window.<br>
<br>
<dl>
<dt><a class="c2" name="local2base">local2base</a></dt>
<dd><a name="local2base"><i>local2base</i> specifies the
conversion factor that converts local units to base units (i.e.
millimeters).</a></dd>
<dt><a name="local2base"><br>
<br></a></dt>
<dt><a class="c2" name="base2local">base2local</a></dt>
<dd><a name="base2local"><i>base2local</i> specifies the
conversion factor that converts base units (i.e. millimeters)
to local units.</a></dd>
<dt><a name="base2local"><br>
<br></a></dt>
<dt><a class="c2" name="localunit">localunit</a></dt>
<dd><a name="localunit"><i>localunit</i> indicates the local
units.</a></dd>
<dt><a name="localunit"><br>
<br></a></dt>
<dt><a class="c2" name="edit_class">edit_class</a></dt>
<dd><a name="edit_class"><i>edit_class</i> specifies the class
of edit that is in effect. For example, 0 signifies none, 1
signifies translation, 2 signifies rotation and 3 signifies
scale.</a></dd>
<dt><a name="edit_class"><br>
<br></a></dt>
<dt><a class="c2" name=
"edit_solid_flag">edit_solid_flag</a></dt>
<dd><a name="edit_solid_flag"><i>edit_solid_flag</i> specifies
the type of edit to perform on the solid being edited.
<i>edit_solid_flag</i> is linked to MGED's internal variable
es_edflag.</a></dd>
<dt><a name="edit_solid_flag"><br>
<br></a></dt>
<dt><a class="c2" name=
"edit_object_flag">edit_object_flag</a></dt>
<dd><a name="edit_object_flag"><i>edit_object_flag</i>
specifies the type of edit to perform on the object being
edited. <i>edit_object_flag</i> is linked to MGED's internal
variable edobj.</a></dd>
<dt><a name="edit_object_flag"><br>
<br></a></dt>
<dt><a class="c2" name="edit_info">edit_info</a></dt>
<dd><a name="edit_info"><i>edit_info</i> contains detailed
information about the current solid/object being
edited.</a></dd>
<dt><a name="edit_info"><br>
<br></a></dt>
<dt><a class="c2" name=
"glob_compat_mode">glob_compat_mode</a></dt>
<dd><a name="glob_compat_mode"><i>glob_compat_mode</i>
indicates whether or not to perform globbing against the
database.</a></dd>
<dt><a name="glob_compat_mode"><br>
<br></a></dt>
<dt><a class="c2" name=
"mged_display(state)">mged_display(state)</a></dt>
<dd><a name="mged_display(state)"><i>mged_display(state)</i>
specifies the state of MGED. The state string will be one of
the six values listed below.</a></dd>
</dl>
<ul>
<li>VIEWING</li>
<li>SOL PICK</li>
<li>SOL EDIT</li>
<li>OBJ PICK</li>
<li>OBJ PATH</li>
<li>OBJ EDIT</li>
</ul>
<dl>
<dd><br>
<br></dd>
<dt><a class="c2" name=
"mged_display(pathName,fps)">mged_display(pathName,fps)</a></dt>
<dd><a name=
"mged_display(pathName,fps)"><i>mged_display(pathName,fps)</i>
specifies the frames per second that MGED is able to
display.</a></dd>
<dt><a name="mged_display(pathName,fps)"><br>
<br></a></dt>
<dt><a class="c2" name=
"mged_display(pathName,aet)">mged_display(pathName,aet)</a></dt>
<dd><a name=
"mged_display(pathName,aet)"><i>mged_display(pathName,aet)</i>
specifies the current azimuth, elevation and twist for
<i>pathName</i>.</a></dd>
<dt><a name="mged_display(pathName,aet)"><br>
<br></a></dt>
<dt><a class="c2" name=
"mged_display(pathName,ang)">mged_display(pathName,ang)</a></dt>
<dd><a name=
"mged_display(pathName,ang)"><i>mged_display(pathName,ang)</i>
indicates the rates of view rotation.</a></dd>
<dt><a name="mged_display(pathName,ang)"><br>
<br></a></dt>
<dt><a class="c2" name=
"mged_display(pathName,center)">mged_display(pathName,center)</a></dt>
<dd><a name=
"mged_display(pathName,center)"><i>mged_display(pathName,center)</i>
indicates the view center.</a></dd>
<dt><a name="mged_display(pathName,center)"><br>
<br></a></dt>
<dt><a class="c2" name=
"mged_display(pathName,size)">mged_display(pathName,size)</a></dt>
<dd><a name=
"mged_display(pathName,size)"><i>mged_display(pathName,size)</i>
indicates the view size.</a></dd>
<dt><a name="mged_display(pathName,size)"><br>
<br></a></dt>
<dt><a class="c2" name=
"mged_display(pathName,adc)">mged_display(pathName,adc)</a></dt>
<dd><a name=
"mged_display(pathName,adc)"><i>mged_display(pathName,adc)</i>
specifies information about the angle distance cursor.</a></dd>
<dt><a name="mged_display(pathName,adc)"><br>
<br></a></dt>
<dt><a class="c2" name=
"mged_display(path_lhs)">mged_display(path_lhs)</a></dt>
<dd><a name=
"mged_display(path_lhs)"><i>mged_display(path_lhs)</i>
indicates the left hand side path.</a></dd>
<dt><a name="mged_display(path_lhs)"><br>
<br></a></dt>
<dt><a class="c2" name=
"mged_display(path_rhs)">mged_display(path_rhs)</a></dt>
<dd><a name=
"mged_display(path_rhs)"><i>mged_display(path_rhs)</i>
indicates the right hand side path.</a></dd>
<dt><a name="mged_display(path_rhs)"><br>
<br></a></dt>
<dt><a class="c2" name=
"mged_display(units)">mged_display(units)</a></dt>
<dd><a name="mged_display(units)"><i>mged_display(units)</i>
indicates the local units.</a></dd>
<dt><a name="mged_display(units)"><br>
<br></a></dt>
<dt><a class="c2" name=
"mged_display(keypoint)">mged_display(keypoint)</a></dt>
<dd><a name=
"mged_display(keypoint)"><i>mged_display(keypoint)</i>
indicates the point from which edits will take place.</a></dd>
<dt><a name="mged_display(keypoint)"><br>
<br></a></dt>
<dt><a class="c2" name=
"mged_default(geom)">mged_default(geom)</a></dt>
<dd><a name="mged_default(geom)"><i>mged_default(geom)</i> is
used to specify the size and position of the command
window.</a></dd>
<dt><a name="mged_default(geom)"><br>
<br></a></dt>
<dt><a class="c2" name=
"mged_default(ggeom)">mged_default(ggeom)</a></dt>
<dd><a name="mged_default(ggeom)"><i>mged_default(ggeom)</i> is
used to specify the size and position of the geometry
window.</a></dd>
<dt><a name="mged_default(ggeom)"><br>
<br></a></dt>
<dt><a class="c2" name=
"mged_default(id)">mged_default(id)</a></dt>
<dd><a name="mged_default(id)"><i>mged_default(id)</i>
indicates the base id to use if the user didn't provide an id
to the</a><a name="mged_default(id)"></a> <a href=
"mged_cmd_index.html#gui">gui</a> command. For example, if
mged_default(id) is set to myId, then the following id's will
be created as needed: myId_0, myId_1, myId_2 etc.</dd>
<dd><br>
<br></dd>
<dt><a class="c2" name=
"mged_default(pane)">mged_default(pane)</a></dt>
<dd><a name="mged_default(pane)"><i>mged_default(pane)</i>
indicates the initial active pane. The keywords, ul, ur, ll,
and lr are the only acceptable values. The keywords refer to
''upper left'', ''upper right'', ''lower left'' and ''lower
right'' respectively.</a></dd>
<dt><a name="mged_default(pane)"><br>
<br></a></dt>
<dt><a class="c2" name=
"mged_default(multi_pane)">mged_default(multi_pane)</a></dt>
<dd><a name=
"mged_default(multi_pane)"><i>mged_default(multi_pane)</i>
indicates whether to show four smaller geometry windows at the
same time or to show one larger geometry window.</a></dd>
<dt><a name="mged_default(multi_pane)"><br>
<br></a></dt>
<dt><a class="c2" name=
"mged_default(config)">mged_default(config)</a></dt>
<dd><a name="mged_default(config)"><i>mged_default(config)</i>
indicates the initial configuration of the MGED GUI. A value of
''g'' indicates that only the geometry window is shown, ''c''
indicates that only the command window is shown, and ''b''
indicates that both the geometry and command windows are shown.
Note - this initial configuration specification only has affect
when the command window and geometry windows are combined
together in a single top level window. See the</a><a name=
"mged_default(config)"></a> <a href=
"mged_tcl_vars.html#mged_default(comb)">mged_default(comb)</a>
variable.</dd>
<dd><br>
<br></dd>
<dt><a class="c2" name=
"mged_default(display)">mged_default(display)</a></dt>
<dd><a name=
"mged_default(display)"><i>mged_default(display)</i> indicates
where to display the command window and other tools.</a></dd>
<dt><a name="mged_default(display)"><br>
<br></a></dt>
<dt><a class="c2" name=
"mged_default(gdisplay)">mged_default(gdisplay)</a></dt>
<dd><a name=
"mged_default(gdisplay)"><i>mged_default(gdisplay)</i>
indicates where to display the geometry window if not combined
with the command window. See the</a><a name=
"mged_default(gdisplay)"></a> <a href=
"mged_tcl_vars.html#mged_default(comb)">mged_default(comb)</a>
variable.</dd>
<dd><br>
<br></dd>
<dt><a class="c2" name=
"mged_default(dm_type)">mged_default(dm_type)</a></dt>
<dd><a name=
"mged_default(dm_type)"><i>mged_default(dm_type)</i> indicates
the default display manager type.</a></dd>
<dt><a name="mged_default(dm_type)"><br>
<br></a></dt>
<dt><a class="c2" name=
"mged_default(comb)">mged_default(comb)</a></dt>
<dd><a name="mged_default(comb)"><i>mged_default(comb)</i>
indicates whether or not to combine the command window with the
geometry window in a single top level window.</a></dd>
<dt><a name="mged_default(comb)"><br>
<br></a></dt>
<dt><a class="c2" name=
"mged_default(edit_style)">mged_default(edit_style)</a></dt>
<dd><a name=
"mged_default(edit_style)"><i>mged_default(edit_style)</i>
indicates the initial edit style. The edit style determines the
behavior of command line editing. The two possible values are
''emacs'' and ''vi''.</a></dd>
<dt><a name="mged_default(edit_style)"><br>
<br></a></dt>
<dt><a class="c2" name=
"mged_default(num_lines)">mged_default(num_lines)</a></dt>
<dd><a name=
"mged_default(num_lines)"><i>mged_default(num_lines)</i>
indicates the number of lines to use in the command
window.</a></dd>
<dt><a name="mged_default(num_lines)"><br>
<br></a></dt>
<dt><a class="c2" name=
"mged_default(tearoff_menus)">mged_default(tearoff_menus)</a></dt>
<dd><a name=
"mged_default(tearoff_menus)"><i>mged_default(tearoff_menus)</i>
indicates whether or not to use tearoff menus. A tearoff menu
is one that has the ability to become a top level window. That
is, it can remain active and be placed anywhere on the
screen.</a></dd>
<dt><a name="mged_default(tearoff_menus)"><br>
<br></a></dt>
<dt><a class="c2" name=
"mged_default(html_dir)">mged_default(html_dir)</a></dt>
<dd><a name=
"mged_default(html_dir)"><i>mged_default(html_dir)</i>
indicates the directory wherein to look for the MGED
manual.</a></dd>
<dt><a name="mged_default(html_dir)"><br>
<br></a></dt>
<dt><a class="c2" name=
"mged_default(web_browser)">mged_default(web_browser)</a></dt>
<dd><a name=
"mged_default(web_browser)"><i>mged_default(web_browser)</i>
indicates the web browser to use for viewing
documentation.</a></dd>
<dt><a name="mged_default(web_browser)"><br>
<br></a></dt>
<dt><a name="mged_default(web_browser)"></a></dt>
</dl>
</body>
</html>
<HTML>
<HEAD>
<TITLE>MGED Tcl Variables</Title>
</HEAD>
<BODY BGCOLOR="#E0D8c8" Text="#000000">
<CENTER><H2>MGED Tcl Variables</H2></CENTER>
The use of <I>pathName</I> in this document refers to the Tcl/Tk pathname of
a display manager window.<br><br>
<DT><a NAME="local2base"><B>local2base</B></DT>
<DD><I>local2base</I> specifies the conversion factor that converts local units
to base units (i.e. millimeters).
</DD>
<BR><BR>
<DT><a NAME="base2local"><B>base2local</B></DT>
<DD><I>base2local</I> specifies the conversion factor that converts base units (i.e. millimeters)
to local units.
</DD>
<BR><BR>
<DT><a NAME="localunit"><B>localunit</B></DT>
<DD><I>localunit</I> indicates the local units.
</DD>
<BR><BR>
<DT><a NAME="edit_class"><B>edit_class</B></DT>
<DD><I>edit_class</I> specifies the class of edit that is in effect.
For example, 0 signifies none, 1 signifies translation, 2
signifies rotation and 3 signifies scale.
</DD>
<BR><BR>
<DT><a NAME="edit_solid_flag"><B>edit_solid_flag</B></DT>
<DD><I>edit_solid_flag</I> specifies the type of edit to perform on
the solid being edited. <I>edit_solid_flag</I> is linked to
MGED's internal variable es_edflag.
</DD>
<BR><BR>
<DT><a NAME="edit_object_flag"><B>edit_object_flag</B></DT>
<DD><I>edit_object_flag</I> specifies the type of edit to perform on
the object being edited. <I>edit_object_flag</I> is linked to
MGED's internal variable edobj.
</DD>
<BR><BR>
<DT><a NAME="edit_info"><B>edit_info</B></DT>
<DD><I>edit_info</I> contains detailed information about the current
solid/object being edited.
</DD>
<BR><BR>
<DT><a NAME="glob_compat_mode"><B>glob_compat_mode</B></DT>
<DD><I>glob_compat_mode</I> indicates whether or not to perform
globbing against the database.
</DD>
<BR><BR>
<DT><a NAME="mged_display(state)"><B>mged_display(state)</B></DT>
<DD><I>mged_display(state)</I> specifies the state of MGED. The state string
will be one of the six values listed below.
<UL>
<LI>VIEWING
<LI>SOL PICK
<LI>SOL EDIT
<LI>OBJ PICK
<LI>OBJ PATH
<LI>OBJ EDIT
</UL>
</DD>
<BR><BR>
<DT><a NAME="mged_display(pathName,fps)"><B>mged_display(pathName,fps)</B></DT>
<DD><I>mged_display(pathName,fps)</I> specifies the frames per second that MGED
is able to display.
</DD>
<BR><BR>
<DT><a NAME="mged_display(pathName,aet)"><B>mged_display(pathName,aet)</B></DT>
<DD><I>mged_display(pathName,aet)</I> specifies the current azimuth, elevation and
twist for <I>pathName</I>.
</DD>
<BR><BR>
<DT><a NAME="mged_display(pathName,ang)"><B>mged_display(pathName,ang)</B></DT>
<DD><I>mged_display(pathName,ang)</I> indicates the rates of view rotation.
</DD>
<BR><BR>
<DT><a NAME="mged_display(pathName,center)"><B>mged_display(pathName,center)</B></DT>
<DD><I>mged_display(pathName,center)</I> indicates the view center.
</DD>
<BR><BR>
<DT><a NAME="mged_display(pathName,size)"><B>mged_display(pathName,size)</B></DT>
<DD><I>mged_display(pathName,size)</I> indicates the view size.
</DD>
<BR><BR>
<DT><a NAME="mged_display(pathName,adc)"><B>mged_display(pathName,adc)</B></DT>
<DD><I>mged_display(pathName,adc)</I> specifies information about the angle distance cursor.
</DD>
<BR><BR>
<DT><a NAME="mged_display(path_lhs)"><B>mged_display(path_lhs)</B></DT>
<DD><I>mged_display(path_lhs)</I> indicates the left hand side path.
</DD>
<BR><BR>
<DT><a NAME="mged_display(path_rhs)"><B>mged_display(path_rhs)</B></DT>
<DD><I>mged_display(path_rhs)</I> indicates the right hand side path.
</DD>
<BR><BR>
<DT><a NAME="mged_display(units)"><B>mged_display(units)</B></DT>
<DD><I>mged_display(units)</I> indicates the local units.
</DD>
<BR><BR>
<DT><a NAME="mged_display(keypoint)"><B>mged_display(keypoint)</B></DT>
<DD><I>mged_display(keypoint)</I> indicates the point from which
edits will take place.
</DD>
<BR><BR>
<DT><a NAME="mged_default(geom)"><B>mged_default(geom)</B></DT>
<DD><I>mged_default(geom)</I> is used to specify the size and
position of the command window.
</DD>
<BR><BR>
<DT><a NAME="mged_default(ggeom)"><B>mged_default(ggeom)</B></DT>
<DD><I>mged_default(ggeom)</I> is used to specify the size and
position of the geometry window.
</DD>
<BR><BR>
<DT><a NAME="mged_default(id)"><B>mged_default(id)</B></DT>
<DD><I>mged_default(id)</I> indicates the base id to use if
the user didn't provide an id to the
<a href="mged_cmd_index.html#gui">gui</a>
command. For example, if mged_default(id) is set to myId,
then the following id's will be created as needed: myId_0,
myId_1, myId_2 etc.
</DD>
<BR><BR>
<DT><a NAME="mged_default(pane)"><B>mged_default(pane)</B></DT>
<DD><I>mged_default(pane)</I> indicates the initial active pane. The
keywords, ul, ur, ll, and lr are the only acceptable values.
The keywords refer to ''upper left'', ''upper right'',
''lower left'' and ''lower right'' respectively.
</DD>
<BR><BR>
<DT><a NAME="mged_default(multi_pane)"><B>mged_default(multi_pane)</B></DT>
<DD><I>mged_default(multi_pane)</I> indicates whether to show
four smaller geometry windows at the same time or to show
one larger geometry window.
</DD>
<BR><BR>
<DT><a NAME="mged_default(config)"><B>mged_default(config)</B></DT>
<DD><I>mged_default(config)</I> indicates the initial configuration
of the MGED GUI. A value of ''g'' indicates that only the
geometry window is shown, ''c'' indicates that only the
command window is shown, and ''b'' indicates that both the
geometry and command windows are shown.
Note - this initial configuration specification
only has affect when the command window and geometry windows are
combined together in a single top level window. See the
<a href="mged_tcl_vars.html#mged_default(comb)">mged_default(comb)</a> variable.
</DD>
<BR><BR>
<DT><a NAME="mged_default(display)"><B>mged_default(display)</B></DT>
<DD><I>mged_default(display)</I> indicates where to display the
command window and other tools.
</DD>
<BR><BR>
<DT><a NAME="mged_default(gdisplay)"><B>mged_default(gdisplay)</B></DT>
<DD><I>mged_default(gdisplay)</I> indicates where to display the
geometry window if not combined with the command window. See the
<a href="mged_tcl_vars.html#mged_default(comb)">mged_default(comb)</a> variable.
</DD>
<BR><BR>
<DT><a NAME="mged_default(dm_type)"><B>mged_default(dm_type)</B></DT>
<DD><I>mged_default(dm_type)</I> indicates the default display manager type.
</DD>
<BR><BR>
<DT><a NAME="mged_default(comb)"><B>mged_default(comb)</B></DT>
<DD><I>mged_default(comb)</I> indicates whether or not to combine the
command window with the geometry window in a single top level
window.
</DD>
<BR><BR>
<DT><a NAME="mged_default(edit_style)"><B>mged_default(edit_style)</B></DT>
<DD><I>mged_default(edit_style)</I> indicates the initial edit style.
The edit style determines the behavior of command
line editing. The two possible values are ''emacs'' and ''vi''.
</DD>
<BR><BR>
<DT><a NAME="mged_default(num_lines)"><B>mged_default(num_lines)</B></DT>
<DD><I>mged_default(num_lines)</I> indicates the number of lines to
use in the command window.
</DD>
<BR><BR>
<DT><a NAME="mged_default(tearoff_menus)"><B>mged_default(tearoff_menus)</B></DT>
<DD><I>mged_default(tearoff_menus)</I> indicates whether or not
to use tearoff menus. A tearoff menu is one that has the
ability to become a top level window. That is, it can
remain active and be placed anywhere on the screen.
</DD>
<BR><BR>
<DT><a NAME="mged_default(html_dir)"><B>mged_default(html_dir)</B></DT>
<DD><I>mged_default(html_dir)</I> indicates the directory wherein
to look for the MGED manual.
</DD>
<BR><BR>
<DT><a NAME="mged_default(web_browser)"><B>mged_default(web_browser)</B></DT>
<DD><I>mged_default(web_browser)</I> indicates the web browser to use
for viewing documentation.
</DD>
<BR><BR>
</BODY>
</HTML>
+13
View File
@@ -0,0 +1,13 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<TITLE>Mged Notes</TITLE>
</HEAD>
<BODY BGCOLOR="#E0D8c8" Text="#000000">
<H1>Mged Notes</H1>
<UL>
<LI>Long lines in a Tk text widget are very expensive.
This flaw/feature gets passed on to MGED's command window.
</UL>
</BODY>
</HTML>

Some files were not shown because too many files have changed in this diff Show More