A Tour of SansGUI Examples

Welcome to the SansGUI Quick Tour. We will guide you through some of the examples that demonstrate the useful features available to you in the SansGUI environment. All the examples in this section can be found in the samples subdirectory under the SansGUI installation directory. Each project has its own directory containing all of the related files and source code. Normally, the SansGUI installation process sets samples as the default working directory. If your Windows default document directory is set to My Document, you will have to navigate through the SansGUI installation directory and find the samples subdirectory.

It is recommended that you follow through the Points of Attraction in order because the first two examples are shown in greater details than the later ones.

Please consult the Installation Procedures if you haven't had SansGUI installed.

Starting SansGUI

Run SansGUI by double clicking on the SansGUI icon on the Windows desktop, or selecting SansGUI from the start menu Start>Programs>SansGUI 1.0>SansGUI. We use this typographical convention to indicate menu selection paths throughout the SansGUI manuals. The SansGUI 1.0 in the path is the folder name decided during the installation. It may be different depending on your choice.

The following picture shows the controls in the SansGUI Modeling and Simulation Environment. The Title Bar identifies the SansGUI environment and is also used to indicate the currently active document, when there is one or more opened. The Menu Bar contains pull-down menus for operations. The available Toolbars are: File, View, Build, and Run. You can dock the toolbars (default), or make them float by dragging their handles and moving them about the environment.


The major portion of the SansGUI window is the Document Area where Project Models, Object Libraries, and Schema Definitions can be opened. There will be a tab created at the bottom of the document area for each opened document. Below the document area is a docked Object Toolbox, which contains most-recently selected component objects for parts creation. This toolbox can be made floating just as the toolbars. At the very bottom is the Status Bar where the usage of each menu bar item or toolbar button is displayed. When you don't know the operation of a particular toolbar button, you can move the mouse pointer to the button and let it sit there for a second or two. A tool tip will be displayed with a longer description shown in the status bar.

For the following Points of Attraction, you will open the specific files by selecting the Open menu item in the File menu (Open>File, in our typographical convention) or click on the Open button on the File Toolbar. A pop-up dialog will be displayed for you to select the file to be opened.


Point of Attraction 1: Cool


When a cup of hot coffee is place in the room temperature, it cools down according to the shape and material of the cup and the temperature of the surrounding air. The physics involved are convection, radiation, evaporation, and conduction. In this beginning example, however, we simulate the cooling effect of a cup of coffee in a very simplistic manner:

Temperature(T+dT) = Temperature(T) + (-R) × (Temperature(T) - RoomTemperature) × dT

where T is the simulated time, dT is the time step, R is the cooling constant, Temperature(T) is the temperature of the coffee at time T and RoomTemperature is an input attribute, which will stay constant throughout the simulation. At each time step, the difference of the coffee temperature and the room temperature is taking into account; therefore, when the difference is smaller, the cooling effect will also be smaller.

Hands-On Session

Locate and open the Coffee.sgp file under the samples\Cool directory. Each SansGUI file is displayed by a tri-pane document window:

If the Bottom Pane is invisible, you can drag the horizontal splitter up to reduce the heights of the Left and Right Panes to reveal it. The widths of the Left and Right Panes can be adjusted by moving the vertical splitter. If you don't see the coffee cup icon on the Canvas View, click on the empty canvas to activate the view so that the buttons on the View Toolbar are activated, or turned into color buttons, and then click on the toolbar button Center on the View Toolbar to display the center area of the TOP assembly.




Throughout the SansGUI manuals, we use a period . as the delimiter between a class and its subclass and an underscore _ as the delimiter between a class identifier and the name of an object that is derived from the class. Each object in the Tree View has a small light blue color square at the lower left corner of its icon and each part has a small dark blue square at the same corner.

Once you have the three panes in the document window, examine the default simulation control object by either double clicking on the SimControl.Cycle.Cool_Default object or by right clicking on the default object to get the Context Menu and then select (left click) Properties from the menu items. Later on, we will simplify this and other similar actions by describing them in the form of Context Menu>Properties. An Object Properties dialog is displayed for the simulation control object. The time step is preset to 0.1 and the current time is 0. The room temperature is set to 22 degrees Centigrade. Please notice that there is a blue square to the right of the Current Time attribute. This indicates that the value of the Current Time will be logged to the Result View at each evaluation cycle during the simulation. You can change the values if you like, but for now, let's just continue on by clicking on the OK button.

Now, let's run the simulation by clicking on the Run In-Process button located on the Run Toolbar. A few operations are shown in the Operation View of the Bottom Pane. The last two lines indicate that the end of the cycle-driven simulation is reached with a time stamp. Switching to the Result View at the Bottom Pane by clicking on its tab, you will find a Grid View with three columns: the cycle number, the simulated time, and the temperature of the coffee. You can see the long names of these attributes by moving the mouse pointer to the column headers.

There are [L] and [Y] appended to the Current Time and the Temperature attribute names, respectively. They are the indicators for the SansGUI plotting tool to know that we use the values in Current Time as the X-axis labels and the values in Temperature as the Y-axis data. Click on the Plot Results button on the Run Toolbar to obtain a data curve plotted in a pop-up window. You can convert the temperature measuring unit to Fahrenheit by clicking on the degC unit label of the column, clicking on the drop-down button (an upside down triangle) to reveal the list of units, and then selecting degF. Once it is selected, replot the curve by clicking on the Plot Results button again.

Close the Plot Results window by clicking on the X button on the title bar of the window. We will now move on to the multiple cups of coffee simulation.

Multiple Cups of Coffee

Let's create three cups of coffee for the next simulation. Please follow the directions below:

There is a five coffee cups example project Coffee5.sgp in the same directory. Load it and see if you can get to the point of plotting the data curves.

Developer's Corner

The Developer's Corner sections in this tour require the SansGUI Development Environment for hands-on practices. If you have the SansGUI Demonstration (SGdemo) or Run-Time (SGrun) license option installed, indicated in the Help>About SansGUI... dialog, you can obtain a full featured SGpro evaluation license key by filling up a registration form on-line. If you are not a developer, you can either skim through this section or skip to the next Point of Attraction.

There are three classes in simulator Cool. The Schema Definition is in the file Cool.sgs in the samples\Cool directory. Use File>Open menu selection to obtain the Open dialog and then choose Schema Definition from the Files of Type drop-down list. Click on the Cool.sgs file with a blue SansGUI icon, indicating that it is a Schema Definition. There are three tabbed Tree Views in the Left Pane:





contains simulation control classes and unit objects


contains component classes for parts and links on Canvas Views


contains reference classes for named references


Click on a class name to reveal the attributes in a Grid View in the Right Pane. The classes introduced in this Schema Definition are:

In addition to the attributes in the Grid View, a class contains some other properties accessible by double clicking on the class name in the Tree View, or selecting from the Context Menu, Context Menu>Properties. There is a DLL tab in the Component and Reference classes' properties. It contains the specifications of Dynamic Link Library function entry points for SansGUI to call during the simulation. For CoffeeCup and Clock classes, verify that the Call column has a check mark in the Evaluation row.

For the behavior of the CoffeeCup and Clock classes, you can start up Microsoft Visual C++ (MSVC++) or Compaq Visual Fortran (CVF) Interactive Development Environment (IDE) and then load the project workspace from samples\Cool\Cool_1_0\Cool_1_0.dsw (for MSVC++) or samples\Cool\Cool_1_0F\Cool_1_0F.dsw (for CVF).

Take a look at the code in functions SG_xEval_Base_CoffeeCup() and SG_xEval_Collection_Clock() to see how simple they are implemented for tightly coupling with SansGUI. The skeleton of the functions in the source files are generated by SansGUI. The manually added on codes are after the TODO comments. Because all the data values in SansGUI Data Objects are in arrays, all Fortran variables in this example have an array subscript 1.

The calculation formula stated previously is implemented in SG_xEval_Base_CoffeeCup()and the clock advancing function simply implements:

CurrentTime = CurrentTime + dT

The SansGUI Data Object format and the API prototype can be found in inc\SGdll.h for C/C++ and in inc\SGdllf.h for Fortran. Consult the Developer's Guide for more details. Here we just list out a few notes related to simulator Cool:

Advanced Developer's Corner -- Tracing codes

The DLL project is a Win32 Dynamic-Link Library (MSVC++) or a Fortran Dynamic Link Library (CVF). For C/C++ developers, do not use the Debug mode to create DLLs for SansGUI because your version of SansGUI is built with the Release mode and with multi-thread (MT) class library enabled. Instead, create a Trace mode by copying the Release mode parameters and manually turn on the debug information in the settings. See the Trace mode of project Cool for an example. To trace the program in your MSVC++ or CVF IDE, load the corresponding project workspace described above.


Gould, Harvey and Tobochnik, Jan. 1988. An Introduction to Computer Simulation Methods, Part I, Addison-Wesley Publishing Company, Reading, Massachusetts.


Point of Attraction 2: MatPlot


In this example, we show how to generate the data for one circular cycle (360 degrees) of a sine and a cosine waves and store them in a two column matrix. We then run two circular cycles (720 degrees) to look up the data from the matrix and calculate the sum of the two curves. At each degree of angle, the amplitude of the sine and cosine wave and their sum are logged in the simulation control object for plotting. Please note that the cycle control attributes in the simulation control object refer to the evaluation of all objects in the model at each degree of angle, not the theoretic cycle in the sine or cosine waves.

Hands-On Session

Open the Project Model MatTest.sgp from the samples\MatPlot directory. There is no component object in this model; therefore, there is no part on the Canvas View of the TOP assembly. Looking into the Left Pane, if the Object tab is not selected, click on it to reveal the SimControl classes. In the Tree View, two objects are of primary concern:

To show you the dynamic memory allocation feature in SansGUI while the Object Properties dialog of the MatrixInstance object is opened:

To run the simulation and plot the results:

An interesting operation is to zoom in the chart by clicking on a point in the chart and dragging the mouse while holding down the button to create a zoom bounding box. After releasing the mouse button, the zoom operation will be in effect with a scroll bar revealed at the bottom of the Plot Results dialog for you to scroll through the horizontal ranges. Click on the left or right arrow button of the scroll bar to see a continuous scrolling effect. To restore the original chart, right click on the chart and select Undo Zoom from the context menu.

Another interesting operation is to use the sine wave data as the X-axis values. Move the plot aside so that you can see the header of the Result View in the Bottom Pane. Right click on the fData1 [Y] header and select Set As X Data from the context menu. The header is now changed to fData1 [X]. Click on the Plot Results button again to refresh the chart. Two ellipses are shown, one for the cosine wave values and the other one for the sum. The sine wave values are now used as X axis data values.

Advanced User's Corner

In this section, we examine the implementation of the MatPlot example to get a better understanding of the SansGUI Run-Time Environment. The operations in this section do not require the SansGUI Development Environment; therefore, you can follow through the procedures with any level of SansGUI license (even with the demo version -- SGdemo).

The primary class we will look into is the Matrix.MyMatrix class. With the MatTest.sgp Project Model loaded into the SansGUI environment:

With the DLL function entry points displayed, let's examine what they mean in this particular project. Each row represents a function entry point and there are two columns of check boxes. The first column of check boxes is labeled as Call and the second column is labeled Override. A check mark in the Call column means the developer has supplied a function for SansGUI to call in a certain situation and a check mark in the Override column means the developer allows the users to override such function by supplying an overriding DLL. Users can override the class function on a per function and per object (or per part) basis. Consult Chapter 6 Overriding Simulator Routines of the SansGUI User's Guide for more details. The four function entry points from the developer supplied DLL (the Call Column) in this example are:

The source code for the implementation can be found in the MatPlot_1_0_a_4 subdirectory of the MatPlot sample directory. There are two source files implementing class MyMatrix DLL functions:

Separated from the source code directory, the DLL projects are located in MatPlot_1_0 and MatPlot_1_0F for C/C++ and Fortran, respectively. If you have Microsoft Developer Studio (MSVC) or Compaq Visual Fortran (CVF), you can load the workspace (with a .dsw file extension) from either of these directories and open the source file within the development environment. You can even modify the code and recompile the DLL to see how SansGUI works together with the development environments. For example, lets display a message when the user click on the Check Data button in the MatrixInstance Object Properties dialog. Before loading the project workspace into the IDE, you need to include the inc subdirectory of the SansGUI installation directory in your include file search path:

For CVF:

To test your message from the new DLL, do the following:

As an exercise, you can modify the DLL to generate different data sets with different sizes and plot the curves.

Developer's Corner

This section shows how to create the MatPlot project from scratch. You will need the SansGUI Development Environment in order to perform the tasks. If your license option is SGdemo or SGrun, please visit http://protodesign-inc.com/register.htm to obtain an evaluation license key or skip over to the next Point of Attraction.

For the new project, we will use MyPlot as its name throughout.

Now, the Schema Definition has been created. We can generate an Object Library and the source code for implementing the class behavior:

Once the source files of skeleton code are generated, you can create a DLL project and insert the files into it. We will not show the details of creating the DLL in this tour. Instead, we refer you to the Preparing Development Environments section in Chapter 4 Developing In-Process Simulators in the SansGUI Developer's Guide as the starting point. Basically, what you will need to do are to set up your programming environment, create an empty DLL project, insert the source files, customize the source code, and build the DLL.


Point of Attraction 3: Feel


In this example, we model a person pushing a ball. The velocity of the ball gives a signal to the person as a feedback on how well he is doing, captured by the progress center in the person's feeling system. There is also a surprise center in the feeling system that takes an input from the progress center. A sudden change of progress results in a jerk in the surprise center. The surprise center is modeled with two leaky capacitors to represent the fading signal levels of such feeling in the person's memory.

At some point of the simulated time, 0.5 minute in this example, the ball is blocked by an obstacle and the velocity is suddenly dropped. This, in turn, blocks out the feeling of progress and causes a jerk to be sent to the surprise center. The signal levels in the progress and surprise centers record the two feelings of the person throughout the event. Each signal passed from a source to a target is carried by a link on the Canvas View. The links are created by using the New Link button on the Build Toolbar.

Hands-On Session

Open the Project Model Progress.sgp from the samples\Feel directory. There are three parts in the TOP assembly, namely, Ball-17, MyProgress and MySurprise.

Developer's Corner

The Schema Definition file is Feel.sgs in the same directory. Click on the Component tab to find out the classes Base.Feeling.Progress, Base.Feeling.Surprise, and Base.Object.


Thanks to Dr. Peter H. Greene of Illinois Institute of Technology, Chicago, Illinois, for providing this interesting example.


Point of Attraction 4: IAC


This artificial neural network example implements an Interactive Activation and Competition (IAC) network for inexact, associative, contents-driven database search. It models the profiles of 27 members of two gangs, Jets and Sharks. Each member has five attributes: name, age, marital status, educational level, and occupation. The neural network model has all the possible values in these attributes represented by nodes (Neurons) in clusters. There are 27 "hidden" nodes representing the 27 members, identified by h-Names as the node names. The other 27 nodes cluster represents the name strings of the 27 members. There are clusters for other attributes of the members. For example, the age cluster contains in20s, in30s, and in40s nodes and the educational level cluster contains JuniorHigh, HighSchool, and College nodes. Each attribute cluster is completely connected with inhibition links, meaning that when one is on, or with a high activation level, the others should be suppressed (mutual exclusion). These inhibition links are marked with thin black lines. Each hidden node is connected by excitation links to all the attribute value nodes that match the person's properties. For example, the hidden node h-Ken is connected to the name node Ken, the Sharks node, the in20s node, and so on. These excitation links are marked by thick green lines.

When any node is stimulated, such as Ken with the external input value 1.0, it will generate a "ripple" and propagate through the network according to these excitation and inhibition links. Once the ripple settles, the activation level of each node shows the strength of the relation it has with the ripple originator. Thus, when we set Ken's external input to 1.0 and run 100 cycles, the activation levels shown in the Result tab indicate how strong the nodes are in relation with Ken. You can set in30s and Married to 1.0 and see which gang members are most likely in this group. Before doing so, use Edit>Clear Override Values to clean up the values from the previous simulation run.

Hands-On Session

Run SansGUI and open JetShark.sgp from samples\IAC directory. Because of the complexity of the network (68 nodes and about 1000 links), it will take a few seconds to load. Maximizing SansGUI and the JetShark document windows will give you a better view of the demonstration.

Once the projected is loaded, you can scroll the Canvas View by

The Pan Window can be activated by pressing the Pan Win button located on the View Toolbar. If it is grayed out, or disabled, simply click on the canvas once to enable all the toolbar buttons related to the Canvas View. Now we are prepared to run the IAC simulator:

If you check the Neuron tab in the Right Pane, you may find a lot of red colored numbers showing part override values (because they are set as In/Out attributes). These values can be cleared by the menu selection Edit>Clear Override Values. Set the external inputs to some of the neurons to 1.0, run the simulation again, and then rationalize the results.

Advanced User's Corner

There is also a JSgb.sgp Project Model which implements a different IAC update function, as in the original Grossberg's publication. The function is implemented as a user override DLL located in the override subdirectory. Load the JSgb.sgp project and you can find the DLL override values are specified in each objects under Neuron.

Because SansGUI executes simulations in separate threads, multiple simulations from different Project Models can be executed at the same time. Therefore, you don't need to close JetShark.sgp in order to load JSgb.sgp. In fact, you can let the two project tiled against each other via Window>Tiled Horizontally and launch simulations one after the other without waiting for the first one being completed.

Developer's Corner

The Visual C++ implementation of IAC is similar to that of Cool, except that there are two subcycles in each cycle -- pre-evaluation cycle and evaluation cycle. In the pre-evaluation cycle, the neuron basically sums up all the input levels from all its input links and store the result locally. During the evaluation cycle, the neuron calculates the output according to its transformation function and puts the output level to all its output links. Please consult the references for more descriptions of the IAC model and its mathematical details.

To test the Fortran implementation of IAC, use JetShark.sgp and modify the Default simulation control object by:

The doc\IAC subdirectory of the SansGUI installation directory contains a set of hand-crafted documentation files written in the Hyper-Text Markup Language (HTML). These files demonstrate one means to incorporate on-line, context-sensitive help document into the SansGUI environment. The HTML file names serve as the document entry points of the simulator classes and are entered in the Class Properties dialogs in the Schema Definition of IAC.


Thanks to Dr. James L. McClelland of Carnegie Mellon University, Pittsburgh, Pennsylvania, for giving the permission to use his Jets and Sharks model in this example.


McClelland, James L. 1981. Retrieving General and Specific Knowledge from Stored Knowledge of Specifics, Proceedings of the Third Annual Conference of the Cognitive Science Society, pp. 170-172.

McClelland, James L. and Rumelhart, David E. 1988. Explorations in Parallel Distributed Processing, The MIT Press, Cambridge, Massachusetts.

Rumelhart, David E., McClelland, James L., and the PDP Research Group. 1986. Parallel Distributed Processing, Volume 1: Foundations, The MIT Press, Cambridge, Massachusetts.


Point of Attraction 5: Solid


In this example, we explore the new interactive 3D graphics features in the SansGUI Modeling and Simulation Environment and demonstrate how SansGUI supports OpenGL® graphics programming directly in Microsoft Visual C++ and Compaq Visual Fortran. With the new Graphics class introduced in SansGUI version 1.2, simulators can incorporate 3-dimensional graphics for scientific or engineering visualization and data exploration.

The Solid simulator contains a class named Solid, which is derived from the new Graphics class. The code in Solid simply calls the OpenGL Auxiliary Library routines aux{Solid|Wire}* to draw 3-dimensional objects. The shapes of the objects can be Tetrahedron, Cube, Octahedron, Dodecahedron, Icosahedron, Box, Cylinder, Cone, Sphere, Torus, or Teapot. They can be displayed in either solid rendering form, or simply in wire frame. Three primitive colors, cyan, magenta, and yellow, can be applied to the objects by the user.

The Solid simulator uses the cycle simulation mechanism in SansGUI to control simulation runs. It rotates the displaying object along the vertical (Y) axis by a hard-coded 5 degree increment each time. The simulation control object has its Ending Cycle Number set to 0, meaning that the simulation will run forever. You will need to use the control buttons in the Run toolbar to stop or pause a simulation.

Hands-On Session

To quickly try out the new 3D graphics features, open the Shapes Project Model located in the samples\Solid subdirectory of the SansGUI installation directory to load it into the SansGUI environment. The Execution dialogs, including three Graphics dialogs and the Plot Results dialog, will be automatically opened. You can click on the Run In-Process button in the Run toolbar to start the simulation. Should the Execution dialogs not displayed automatically, you can open them manually with the following procedures:

The simulator in this example rotates the graphic objects about the vertical (Y) axis with a specific increment. The Plot Results dialog shows the trace of the Y-rotation angles through time. The horizontal scroll bar has its scroll box running from left to right, corresponding with the rotation angles that are ranged from -180 to +180 degrees. While it is moving, you can grab the scroll box and drag it to any position in the scroll bar to see how the strip chart in the Plot Results dialog responds to your change. With this feature, the simulator can be implemented to allow users to fine tune control variables even when the simulation is running.

Now, let's explore a few more SansGUI run-time features and change some of the 3D object properties:

Please consult the User Interface Controls section of Class Graphics in the SansGUI Reference Manual for a summary of the default user interface operations implemented in the Solid simulator. In the next demonstration, we will explore the user selection feature in the Graphics windows. In this Solid example project, it simply echoes the selection points in the Message View. Other applications may handle the user selections differently.

In order to capture the 3D graphics images for publication purposes, SansGUI supports hard-copy printing, copying to Windows clipboard, and exporting images to Bitmap (.BMP) or JPEG (.JPG) files. All of these functions can be performed by selecting the corresponding menu items from the right-click context menus in the Graphics windows. For more details, please consult the Solid simulator on-line manual, which can be accessed from the About SansGUI dialog box:

On-line manual pages specific to Solid classes and objects can also be accessed by clicking on the large icon buttons at the upper-left corner of the associated Properties dialogs.

Developer's Corner

Once you have the SansGUI Professional Edition license key installed, you can open the Schema Definition file of Solid (Solid.sgs) from the samples\Solid subdirectory of the SansGUI installation directory. In addition to the regular In-Process and External Process simulation control classes, there is only one class, <Reference>Graphics.Solid, created for this particular simulator. You can find its definitions with the following procedures:

The project workspaces for building the Solid simulator DLL in Microsoft Visual C++ 6.0 and Compaq Visual Fortran 6.x are included in the samples\Solid\Solid_1_0 and samples\Solid_Solid_1_0F subdirectories, respectively. You can load any one of the two project workspaces to access the source code, modify them, and the rebuild the DLLs. There is only one source file associated with the <Reference>Graphics.Solid class in each project workspace. It is the only one needed in the Solid simulator. Please read the comments in the source code and consult the Class Graphics reference pages to find out how to set up the rendering context, respond to window resizing messages, render scene, and respond to user selections. If you would like to rebuild the DLL, please read the OpenGL Auxiliary Library bug fixes information in the Acknowledgements section right after the Developer's Corner.

The intrinsic attributes in class Graphics are defined as hidden; they are hidden from the user in the SansGUI Run-Time Environment with a password protection. The password for the Solid simulator is actually not set (or set as a blank string). You can enter a Service Session by selecting Tools>Service Session... from the pull-down menu in the Shapes Project Model and click on the OK button without entering anything in the Enter Password field. Once a service session is entered, all the hidden attributes associated the the Graphics objects can be revealed in the Right Pane and in the Object Properties dialogs.

The doc\Solid subdirectory of the SansGUI installation directory contains a set of hand-crafted documentation files written in the Hyper-Text Markup Language (HTML). These files demonstrate one means to incorporate on-line help document into the SansGUI environment. The HTML file names serve as the document entry points of the simulator classes and are entered in the Class Properties dialogs in the Schema Definition of Solid.


The Solid example uses aux{Wire|Solid}* 3D object drawing routines in the OpenGL Auxiliary Library from Silicon Graphics, Inc. The original GLAUX.LIB distributed with Microsoft Windows contains quite a few bugs in these drawing routines and was compiled and linked with using single-threaded libraries option. It caused abnormal drawing behavior and C run-time library routine conflicts in the Solid example. We would like to thank Richard S. Wright, Jr., the author of OpenGL SuperBible, for sending us the GLAUX source code with his bug fixes and his permission to redistribute the fixed code.

We have created a project workspace in Microsoft Visual Studio and rebuilt the library with the Multi-threaded DLL option set so that the C run-time library will not be conflicted. The newly built GLAUX.LIB can be found in the sys subdirectory of the SansGUI installation directory. You should backup the old GLAUX.LIB and use the new one if you would like to rebuild Solid or create any project that uses GLAUX. The source files of GLAUX are included in a zip file named GLAUXM.ZIP, which can also be found in the sys subdirectory.


Fosner, R. 1997. OpenGL Programming for Windows 95 and Windows NT, Addison-Wesley, Reading, Massachusetts.

Lawrence, N. 2002. Compaq Visual Fortran: A Guide to Creating Windows Applications, Digital Press, Boston, Massachusetts.

Woo, M., Neider, J., Davis, T., and Shreiner, D., OpenGL Architecture Review Board. 1999. OpenGL Programming Guide: The Official Guide to Learning OpenGL, Version 1.2, 3/e, Addison-Wesley, Reading, Massachusetts.

Wright, R. S., Jr., and Sweet, M. R. 1999. OpenGL SuperBible, 2/e, Waite Group Press, Corte Madera, California.


Point of Attraction 6: Salty (For Developer's Only)


This example demonstrates a few classes with special properties and the schema evolution process when there are class attribute changes. The Schema Definition file of interest is located at samples\Salty\Salty.sgs. You need to open it by File>Open to obtain the Open file dialog. Notice that the default file type is Project Model; therefore, you need to change it to Schema Definition in the Files of Type field. We will examine the following classes:

Hands-On Session

Once you have the Salty.sgs Schema Definition loaded, please examine the above classes by clicking on the class names. A list of attributes is shown in the Grid View in the Right Pane for each class. You can also double click on the class name, or use Context Menu>Properties to obtain a pop-up Class Properties dialog to view its Identity, DLL specifications, Port definitions, and Connectivity specifications. The last two views are only available to component classes, except for the link class. The DLL specifications are available to both reference and component classes, except, again, for the link class. In the Identity tab, the Column-Major Data Storage field indicates the data storage compatibility in that class. The Class Properties dialog is non-modal, meaning that you don't need to close one in order to open another.

For this hands-on session, we will create an Object Library and a Project Model using the Object Library. During the whole session, we can leave Salty.sgs open.

We will now create a Project Model from the newly created Object Library:

For schema version evolution, we will introduce a Depth from the Sea Level attribute in the Whale class:

Now the new Object Library is created, we will update MyMarine.sgo and MyOcean.sgp:


The End of the Tour

Congratulations. You have finished the tour in the SansGUI's Getting Started guide. The next thing to do is to check the To Go Further section and learn more about the wonderful features in the SansGUI software that you can benefit from.


C:\FH_Suite\htmlgifs\home.gif Permanent License Key To Go Further

SansGUI Modeling and Simulation Environment Version 1.2

Copyright © 2000-2003 ProtoDesign, Inc. All rights reserved.