ESP: The Engineering Sketch Pad Rev 1.07 -- July 2015 1. Prerequisites The most significant prerequisite for this software is OpenCASCADE at release 6.5 or greater (which 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. Also prebuilt releases can be found at: http://acdl.mit.edu/ESP. 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.8 is recommended (except for 64-bit OSX) and there are SBO robustness problems at 6.5.3-6.5.5, so ESP works best at 6.5.2 if you are going to use 6.5. OpenCASCADE 6.7.0 displays problems in mapping attributes after using SBOs, so it is not recommended. In 6.7.1 this has been corrected but the SBOs are not as robust as in 6.6.0 or 6.8.0. OCC 6.9.0 has been released, and has been found to be slightly less reliable than 6.8.0. 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. Internet Explorer is NOT supported because of a problem in its Websockets. Also, note that there are some problems with Intel Graphics and some WebGL Browsers. For LINUX, "zlib" development is required. CAPS is optionally built and has a dependency on UDUNITS2 (see Section 4). 1.1 Source Distribution Layout In the discussions that follow, $DISROOT will be used as the name of the directory that contains: README.txt - this file RELEASEnotes.txt - ESP bug fixes, list of enhancements and etc. bin - a directly that will contain executables config - files that allow for automatic configuration data - test and example scripts doc - documentation ESP - Web client code for the Engineering Sketch Pad lib - a directly that will contain libraries, shared objects and DLLs src - source files (contains EGADS, CAPS, wvServer & OpenCSM) SlugsClinet - the browser code for Slugs wvClient - simple examples of Web viewing used by EGADS 1.2 Release Notes CAPRI is no longer supported serveCSM now returns 1 if running in batch and an error is encountered A warning is issued if a SolidBody has a non-positive volume 1.2.1 Changes to OpenCSM scripting language since v1.06: All lists are now semicolon-separated (including in "blend", "chamfer", "connect", "fillet", "hollow", and "union") A bug in the expression evaluator associated with expressions such as x[i+1] was fixed Functions "seglen", "incline", "radius", "sweep", and "dip" were added to the expression evaluator More checks were added for invalid arguments in the "box", "cylinder", "cone", "sphere", "torus", "extrude", and "revolve" commands ----- An "arc" statement was added as an alternative to the cirarc statement In an "attribute" statement, if the attrValue is a multi-valued parameter, then multiple values will be assigned Errors are raise if trying to apply attributes to an assert, despmtr, dimension, end, interface, lbound, macbeg, macend, mark, patbeg, project, set, skbeg, solbeg, store, ubound, or udparg statement Tessellation parameters can be specified in a .tParams attribute at either the global, Body, Face, or Edge level (for use by the internal tessellator) A "bezier" statement was added to create Bezier curves A "connect" statement was added to create a new Body from two old Bodys with certain faces "connected" by a local set of Faces (see flapz.udc for an example use) The "interface" statement now supports multi-valued parameters Tolerances can be relaxed in "intersect" statement The "join" command has an optional "tolerance" argument A "patbreak" statement was added to allow one to break out of a patbeg/patend A "reorder" statement has been added to reorient faces (such as might be needed before a rule of blend) Warnings are generated if the "revolve" statement yields a possibly-inside-out Body Analytic sensitivities have been added to the "rule" statement A reorder option was added to "rule" and "blend" to allow OpenCSM to automatically reorder loops so as to minimize the chance of twist A "skcon" statement was added to allow constraints to be defined for the sketch solver The number of Edges are reported when executing the "skend" statement A "skvar" statement was added to initialize sketcher variables A "keep" option was added to the "store" command Tolerances can be relaxed in "subtract" statement Added optional "trimList" to "union" operation to allow a user to union "up to" the closest intersection to the given point Tolerances can be relaxed in "union" statement commands 1.2.2 Additional OpenCSM user-defined primitives since v1.06: kulfan to to create CST airfoils. supell creates super-ellipses (to assist in creating fuselages) 1.2.3 Additional OpenCSM user-defined component since v1.06: biconvex.udc was added to create a biconvex airfoil diamond.udc was added to create a diamond-shaped airfoil flapz.udc to add a (possibly-deflected) flap to a body popupz.udc generates a pop-up from a surface 1.2.4 Changes to ESP since v1.06: If the server (serveCSM) dies, the Messages window turns pink and no alert is issued Rolling the middle -mouse button zooms in/out An interactive sketcher was added Add H, L, R, B, T, +, and - buttons as an alternative to , , , , , and (since some browsers steal some of these control sequences) The spectrum was changed from blue-green-red to blue-white-red The environment variable WV_START was changed to ESP_START (although WV_START still works) 1.2.4 Known issues in v1.07: When using 64-bit OSX 10.8 or higher, you should use OpenCASCADE 6.6.0 (as opposed to 6.8.0). There is an error somewhere that causes "serveCSM tutorial1_new" to sometimes produce a segmentation fault during rebuilds. Edges are not drawn in ESP when running a LINUX64 virtual machine under VMware with OSX 10.8 or higher as the host operating system. In some Browsers, the configuration is always drawn in grey; this is likely due to the graphics card installed on the computer. If color shading is needed, use a computer with a different display driver. Some of the keyboard shortcuts are intercepted by some of the Browsers. Therefore a third line of buttons have been added to the left side of ESP; pressing the "L" button does the same thing as pressing . Test cases with the "hollow" command do not work when using the prebuilt versions of OpenCASCADE 6.6.0 or 6.8.0 for Windows. In OpenCASCADE 6.8.0, the tolerances associated with the "sew" operation cause cases with loose tolerances to no longer work. The "Edit" command in ESP can only be used to edit the .csm file; any .udc files that are opened cannot be edited. 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. CAPS is not currently built by default, See section 4. There are two different build procedures based on the OS: If using Windows, skip to section 2.2. 2.1 Linux and Mac OSX The configuration is built using the path 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 $DISROOT/config % ./makeEnv **name_of_OpenCASCADE_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: ESPenv.sh and ESPenv.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 $DISROOT % source ESPenv.csh or if using bash: $ cd $DISROOT $ source ESPenv.sh Skip to section 2.3. 2.2 Windows Configuration IMPORTANT: The ESP distribution MUST be unpackaged into a location ($DISROOT) that has NO spaces in the path! 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). Currently MS VS 2008, 2010, 2012 and 2013 are supported. The Windows environment is built simply by going to the config subdirectory and executing the script "winEnv" in a bash shell (run from the command window): C:\> cd $DISROOT\config C:\> bash winEnv D:\OpenCASCADE6.6.0\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: ESPenv.bat. This file needs to be executed before either building and/or running the software. This is done with: C:\> cd $DISROOT C:\> ESPenv Check that the method that you used to unzip the distribution created directories named $DISTROOT\bin and $DISTROOT\lib If it did not, create them using the commands: C:\> cd $DISTROOT C:\> mkdir bin C:\> mkdir lib 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 $DISROOT/src % make or C:\> cd $DISROOT\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. Note that if a compiler option is not available for the version of the compiler that you are using (for example, gcc 4.0.1 does not support -Wno-unused-result), you can edit the file: $DISROOT/src/EGADS/include/$ESP_ARCH to remove the offending options. 3.0 Running For Windows OpenCASCADE distributions taken from the OpenCASCADE site, you may need to copy a file and put it in "$DISROOT\lib". This is required if you attempt to execute serveCSM and are told that "tbbmalloc.dll" cannot be found. If this is the case, go to the top level of the OpenCASCADE distribution and into the directory "3rdparty". There should be a subdirectory starting with "tbb", go into that directory. There are now different variants where you may need to select the architecture and then find a "bin" subdirectory with the possibility of additional levels based on the version of Visual C. Select the appropriate "tbbmalloc.dll" file (if there is a choice) and copy it into "$DISROOT\lib". 3.1 serveCSM and ESP 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. 3.1.1 Procedure 1: have ESP automatically started from serveCSM If it exists, the ESP_START environment variable contains the command that should be executed to start the browser once the server has created its scene graph. On a Mac, you can set this variable with commands such as % setenv ESP_START "open -a /Applications/Firefox.app ../ESP/ESP.html" or % export ESP_START="open -a /Applications/Firefox.app ../ESP/ESP.html" depending on the shell in use. The commands in other operating systems will differ slightly, depending on how the browser can be started from the command line. To run the program, use: % cd $DISROOT/bin % ./serveCSM ../data/tutorial1 3.1.2 Procedure 2: start the browser manually If the ESP_START environment variable does not exist, issuing the commands: % cd $DISROOT/bin % ./serveCSM ../data/tutorial1 will start the server. The last lines of output from serveCSM tells the user that the server is waiting for a browser to attach to it. This can be done by starting a browser (FireFox and GoogleChrome have been tested) and loading the file: $DISROOT/ESP/ESP.html Whether you used procedure 1 or 2, 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. 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: % cd $DISROOT/bin % ./serveCSM ../data/tutorial1 -port 7788 Once the browser starts, you will be prompted for a "hostname:port". Make the appropriate response depending on the network situation. Once the ESP GUI is functional, press the "help" button in the upper left if you want to execute 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). % cd $DISROOT/bin % ./egads2cart geomFilePath [angle relSide relSag] 3.3 vTess and wvClient vTess allows for the examination 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 discussion in Section 3.1 above. % cd $DISROOT/bin % ./vTess geomFilePath [angle maxlen sag] 4.0 Building CAPS (Computational Aircraft Prototype Syntheses) CAPS requires the use of the Open Source Project UDUNITS2 for all unit conversions. Since there are no prebuilt package distributions for the Mac and Windows, the CAPS build procedure copies prebuilt DLL/DyLibs to the lib directory of ESP. Because most Linux distributions contain a UDUNITS2 package, this is not done under Linux and that package must be installed by the system procedure (based on the Linux flavor). This is done to avoid having two differing versions on the same system (which would only cause problems). For any of the operating systems, after properly setting the environment in the command window (or shell) and Building the core ESP, follow this simple procedure: % cd $DISROOT/src % make CAPS or C:\> cd $DISROOT\src C:\> make CAPS