ESP: The Engineering Sketch Pad 1. Prerequisites The most significant prerequisite for this software is OpenCASCADE at release 6.3.0 or greater (which now includes the OpenCASCADE Community Edition). This can be found at http://www.opencascade.org/getocc/download/loadocc or https://github.com/tpaviot/oce. Prebuilt versions are available at these sites for Windows using various versions of Visual Studio and for MAC OSX at 64-bits. Any other configuration must be built from source (unless you are using a Debian variant of LINUX, such as Ubuntu, where there are available prebuilt packages as part of the LINUX distribution). Note that 6.5 is recommended but there are SBO robustness problems at 6.5.3, so currently ESP works best with 6.5.2. Another prerequisite is a WebGL/Websocket capable Browser. In general these include Mozilla's FireFox and Google Chrome. Apple's Safari works at rev 6.0 or greater. Note that there is some problems with Intel Graphics and some WebGL Browsers with Linux. 1.1 Source Distribution Layout In the discussions that follow, $DISTROOT will be used as the name of the directory that contains: README.txt - this file bin - a directly that will contain executables config - files that allow for automatic configuration data - test and example scripts doc - documentation ESP - Web code for the Engineering Sketch Pad lib - a directly that will contain libraries, shared objects and DLLs src - source files (contains EGADS, wvServer & OpenCSM) wvClient - simple examples of Web viewing 2. Building the Software The config subdirectory contains scripts that need to be used to generate the environment both to build and run the software here. There are two different procedures based on the OS: 2.1 Linux and Mac OSX The configuration is built using the path where where the OpenCASCADE runtime distribution can be found. The pointer size (32 or 64bit) is determined from the shared objects/dynamic libraries found in the distribution. This path can be located in an OpenCASCADE distribution by looking for a subdirectory that includes an "inc" or "include" directory and either a "lib" or "$ARCH/lib" (where $ARCH is the name of your architecture) directory. For Debian prebuilt packaged installs this location is "/usr/include/opencascade". Once that is found, execute the commands: % cd $DISTROOT/config % makeEnv **name_of_directory_containing_inc_and_lib** An optional second argument to makeEnv is required if the distribution of OpenCASCADE has multiple architectures. In this case it is the subdirectory name that contains the libraries for the build of interest (CASARCH). This procedure produces 2 files at the top level: GEMenv.sh and GEMenv.csh. These are the environments for both sh (bash) and csh (tcsh) respectively. The appropriate file can be "source"d or included in the user's startup scripts. This must be done before either building and/or running the software. For example, if using the csh or tcsh: % cd $DISTROOT % source GEMenv.csh or if using bash: $ cd $DISTROOT $ source GEMenv.sh 2.2 Windows Configuration The configuration is built from the path where where the OpenCASCADE runtime distribution can be found. The pointer size (32 or 64bit) is determined from the MS Visual Studio environment in a command shell (the C/C++ compiler is run). This is executed simply by going to the config subdirectory and executing the script "winEnv" in a bash shell (run from the command window): C:\> cd $DISTROOT\config C:\> bash winEnv D:\OpenCASCADE6.5.2\ros winEnv (like makeEnv) has an optional second argument that is only required if the distribution of OpenCASCADE has multiple architectures. In this case it is the subdirectory name that contains the libraries for the build of interest (CASARCH). This procedure produces a single file at the top level: GEMenv.bat. This file needs to be executed before either building and/or running the software. This is done with: C:\> cd $DISTROOT C:\> GEMenv 2.3 The Build For any of the operating systems, after properly setting the environment in the command window (or shell), follow this simple procedure: % cd $DISTROOT/src % make or C:\> cd $DISTROOT\src C:\> make You can use "make clean" which will clean up all object modules or "make cleanall" to remove all objects, executables, libraries, shared objects and dynamic libraries. 2.3.1 Note on compiling 32-bit on MACs using gcc 4.2.1 There appears to be a bug in the compiler that is tripped up by the file "src/OpenCSM/OpenCSM.c". Follow the above build instructions, then in $DISTROOT/src: 1) remove "OpenCSM/OpenCSM.o" 2) edit "../EGADS/include/DARWIN" on line 18 change "-O" to "-O0" and save 3) again type "make" 3.0 Running To execute any of these programs, first ensure that the appropriate environment variables are set (from above). For example in Linux or Mac OS: % cd $DISTROOT/bin % serveCSM ../data/OpenCSM/bottle2 and in Windows: C:\> cd $DISTROOT\bin C:\> serveCSM ..\data\OpenCSM\bottle2 3.1 serveCSM and ESP The Tutorial starts with a pre-made part that is defined by the file tutorial.csm. To start ESP there are two steps: (1) start the "server" and (2) start the "browser". This can be done in a variety of ways, but the two most common follow. First get into the ESP directory. 3.1.1 On a Mac Issue the two commands: setenv WV_START "open -a /Applications/Firefox.app ESP.html" or export WV_START="open -a /Applications/Firefox.app ESP.html" depending on the shell in use. ../bin/serveCSM ../data/tutorial The first of these tells serveCSM to open FireFox on the file /ESP.html when serveCSM has generated a graphical representation of the configuration. The second of these actually starts the serveCSM server. As long as the browser stays connected to serveCSM, serveCSM will stay alive and handle requests sent to it from the browser. Once the last browser that is connected to serveCSM exits, serveCSM will shut down. 3.1.2 Issue the command: ../bin/serveCSM ../data/tutorial Once the server starts, start a browser (for example: FireFox, GoogleChrome or Safari at Rev 6) and open the page ESP.html. As above, serveCSM will stay alive as long as there is a browser attached to it. Note that the default "port" used by serveCSM is 7681. One can change the port in the call to serveCSM with a command such as: ../bin/serveCSM ../data/tutorial -port 7788 Once the browser starts, you will be prompted for a "hostname:port". Make the appropriate responce depending on the network situation. Once the ESP GUI is functional, press the "help" button in the upper left and continue with the tutorial. 3.2 egads2cart This example takes an input geometry file and generates a Cart3D "tri" file. The acceptable input is STEP, EGADS or OpenCASCADE BRep files (which can all be generated from an OpenCSM "dump" command). % egads2cart geomFilePath [angle relSide relSag] 3.3 vTess and wvClient vTess allows for the exanimation of geometry through its discrete representation. Like egads2cart, the acceptable geometric input is STEP, EGADS or OpenCASCADE BRep files. vTess acts like serveCSM and wvClient should be used like ESP in the descussion in Section 3.1 above. % vTess geomFilePath [angle maxlen sag]