This is the README file of this software:

S O L M O D : The Solid Modeller - version 1.0

This program takes in 3D objects, defined in terms of simple primitives like cuboid, star, cylinder, etc. and then display, the objects on the screen. Further, in fact this is the most awesome part, it can do general boolean operations viz.: UNION, INTERSECTION and DIFFERENCE, on the given set of Polygons (Polylist to be more precise). Although, the entire computation and displaying uses Boundary Representation, realizing the fact that a user is more comfortable with a Combinatorial Solid Geometrical (CSG for short) model, the UI (user-input and display) makes the user feel as if its a CSG model.

The CSG model, in spite of being easy to deal with, is not a very good model computationally. It further has the disadvantage of lossing the detail if the object is viewed highly magnified. This is not a problem with B-rep. The program has been coded very flexibly, that is it is very easy to modify the source to add new objects, show only boundaries of the objects if the user wishes so. Exploiting B-rep's power to deal with complex objects very efficiently, the user can define almost anything ranging from a CAR, to FANCY FURNITURE, to BUILDINGS, ... See sample.dat file, try plotting it, make changes, defines your own shapes, give your own 'plots', try combinations of boolean operations, ... the list goes on.

The program not only display's the object, it allows the user to change his view-point (Vpoint, Up and Origin) to all possible configurations, and that too by simply using the "Arrow-Keys" !! Try it. Its fun. Pressing Shift+Arrows / Control+Arrows / Arrows-Alone, places you in a 3-D environment, where you are in the driver's seat. Just remember, its you who it moving, not the object while using arrow keys for directions.

As for portability, the entire program is coded in C/C++ and will be portable to any platform, except for the Graphics (gui.c) part. The routines in this module use the X-lib and X-Toolkit routines, and if the desired routines are provided on a non X-system (in other words gui.c re-written), one can use it on that system. In plain english, run it on X-windows.

Compilation and Execution:

Check to see if you have all of these files in the current directory.

readme.txt

Makefile

classes.h

sample.dat

express.c

solmod.h

express.h

gui.c

gui.h

gui_link.c

gui_link.h

objects.c

objects.h

oper_3d.c

solmod.c

parse.c

pointline.c

polygon.c

polylist.c

Then type

$ make

, thats it. You should get an executable by the name of solmod. Run it by,

$ solmod sample.dat.

Limitations:

Although, this is a solid modeller, its actually a models 2.5-D objects, i.e. all the "walls" (the surfaces shown in red) are vertical, and cannot have slants. Also the objects are made of straight edges, i.e. no splines, curves, etc.

Attribution:

This software has been developed as a CAED (Computer Aided Engineering Design) project at IIT Kanpur, India.