Introduction

SMLib Introduction

SMLib is a full scale library of NURBS and polygonal modeling tools. In other words, it is an engine or kernel upon which a variety of 3D applications can be built. SMLib.dll contains both the legacy library NMTLib and NLib . SMLib includes non manifold topological structures, geometry construction functions, curve and surface intersections, and evaluation functions. SMLib is our all inclusive flagship product which includes advanced functions like boolean operations, fillets, shelling, feature removal, etc. SMLib is built on top of NLib, a curve and surface NURBS library by Wayne Tiller and Les Piegel, as its foundation.

SMLib Installation

SMLib is distributed as a source code library which can be compiled on any platform. Upon receiving access to the GitHub repo, unzip the distributed zip file into a folder called SMLib. After installing SMLib, please refer to our documentation and examples. For the purposes of this manual, we will use Windows instructions as an example. If any questions remain, please contact support@smlib.com.

Directory Structure

  • SMLib
    • inc (include files)
    • src (source code distribution only)
    • Project files (.sln, .vcxproj ) (source code distribution only)
  • Sms_examples
    • inc
    • src
    • Project Files
  • Ui_test (Windows only)
      • inc (include files)
      • src (source files)
      • Project files (.sln, .vcxproj )

Winlibs/Winlibs64
Debug
Release (resulting dlls and license file)

** All symbols have migrated from Iw to Sm after SMLib version 9.0

Build for Windows using Visual Studio C++ (source code license)

  • Enter the SMLib directory and open the project file (SMLib.sln). Compile and link all files.
  • Enter the ui_test directory and open the project file (ui_test.sln). Compile and link all files. You can execute the ui_test program, and make selections with the mouse from the interactive window.
  • Each project will place their result (.dll, .lib, .exe) in Winlibs / Winlibs64.

Project Settings:
All projects must be built with consistent settings. Project files are distributed with the following default settings in bold:

Debug / Release

32 / 64

UNICODE / Multibyte Character set

  • Compiler definitions: In the project settings for each project there are two candidates for removal/inclusion:

    SM_NOT_USING_OPENGL should be removed if you are running OpenGL on a PC using our ui_test,  and

    SM_NO_HWLIBS  should be removed if you are using any Harmonyware translators.

  • SmConfig.h: contains several definitions of common interest:

#define SM_VERSION_NUMBER displays SMLib/NLib version
#define SM_NO_HWLIBS_IGES 1 should be commented out if you are using the Iges translator

#define SM_NO_HWLIBS_STEP 1 should be commented out if you are using the Step translator

#define SM_NO_HWLIBS_SAT 1 should be commented out if you are using the Sat translator

#define SM_NO_HWLIBS_VDAFS 1 should be commented out if you are using the Vdafs translator

Build for UNIX / LINUX (source code license)

The process of building on Unix / Linux requires using makefiles to build each library. Each project directory contains an example makefile designed to compile and link all the source files and place the resulting lib in the same directory. They are distributed as a starting point. Your specific compiler/environment may require modifications.

Building on Unix / Linux requires a few modifications to definitions in the source code.

MSWINDOWS and BUILDING_MS_DLL should not be defined.

If building a release version, DEBUG, SM_DEBUG_CODE should not be defined.

If not using our graphics, SM_GFX_CODE should not be defined.

**All NMTLib symbols have migrated from Iw to Sm after SMLib version 9.0

Last updated on Apr 29, 2024.