[Search for users]
[Overall Top Noters]
[List of all Conferences]
[Download this site]
Title: | EUCLID |
Notice: | CONFERENCE MOVING TO NODE KEPNUT 12/3/89 |
Moderator: | KEPNUT::LAMOUREUX |
|
Created: | Wed Oct 12 1988 |
Last Modified: | Fri Jan 20 1995 |
Last Successful Update: | Fri Jun 06 1997 |
Number of topics: | 43 |
Total number of notes: | 147 |
26.0. "Parasolid and Euclid" by 21514::VERMA (Virendra, MRO4-3/H10, DTN 297-5913) Wed Sep 13 1989 16:11
1 INTRODUCTION
Han Hsu and Virendra attended a 3-day programming class offered
by John Vel of Shape Data, Cambridge, England. The course was
arranged by CTC. This report briefly describes Parasolid features,
its strengths and weaknesses, and comparison with Euclid based on the
class material. This report is not intended as a technical evaluation
of Parasolid and Euclid. It is rather an impression after taking both
Euclid and Parasolid programming classes.
The class material consisted of 18 units covering wide range of
geometric functions such as bodies, boolean operations, creation and
transformation, enquiry functions, integration decisions, rollback,
snapshots and bulletin borads, attributes and features, local
operations, blends, parametric curves and surfaces, kernel interface
driver and frustrum. Due to lack of time, we didn't have chance to
work out all exercises. This, of course, would have given further
insight into the "user-friendliness" of the programming interface.
2 AN OVERVIEW OF PARASOLID TOOLKIT
2.1 Architecture
Parasolid is a library of subroutines supporting solid modeling
functions. These functions are called through strictly FORTRAN
compatible Kernel Interface. Kernel Interface is layered on top of
Parasolid modeler which is written in standard C language. Parasolid
modeler interfaces with user written frustrum. The frustrum handles
files, manages virtual memory, processes the graphical output, is
machine dependent and is layered on the operating system. The
application program may also call frustrum directly if required. The
interface requirements for frustrum are stable and dependent on
Parasolid modeler.
2.2 Parasolid Entities
Parasolid supports topology and geometry entities. These
entities can have system and user specified attributes. System
attributes are recognized by parasolid. User attributes are not
recognized by parasolid, but, are maintained by it. Attribute fields
are dynamically allocated. In addition to attributes, parasolid also
allows the programmer to assiociate user field of arbitrary length to
each of the entities. Length of user field is fixed for all entities.
High level topology supports world entity that includes all
bodies and assemblies.
Topology and geometry entities are separately stored in the
Parasolid data structure.
Page 2
Geometry entities include point, curve (straight, circle,
ellipse, intersection-curve, and parametric-curve), surface (plane,
cylinder, cone, sphere, torus, parametric-surface, blending-surface,
offset-surface, swept-surface, swung-surface), and transform.
Topology entities include vertex, edge, loop, shell, body,
instance and assembly.
Creation of absurd solid bodies is not allowed. For example, an
edge cannot be common to more than two faces. Body is the minimum
entity for archive purpose. For example, if a point entity is
created, the archive file will contain one body, shell, face, loop and
vertex. A body can be minimal (zero dimensional), wire(one rubber
face), sheet (at least one non-rubber face) and solid (no rubber
face).
Functions for consistency checking of data structure, clash
detection and mass properties are supported.
There are two types of Entity identifiers. One, called tag, is
used for runtime operations and the other, called node identifier, is
used internally for archiving and assembly structures.
2.3 Creation And Transformation
Kernel Interface supports creation of all geometric and
topological entities mentioned earlier. Translation, rotation,
reflection and scaling are supported by the transform entity. Complex
transforms can be created by combining other transform entities.
Transforms can be applied to topology, geometry and other transform
entities.
2.4 Boolean Operations
Unite, subtract, intersect and section operations are supported.
Unite operation is excluded for sheet-solid, and solid-sheet
combinations because an edge can not be common to more than two faces.
Intersect is excluded for solid-sheet combination. In addition,
boolean operations are excluded for sheet bodies having opposite sense
and non-manifold result bodies. Boolean operation modifies the target
entity and destroys the tool entity.
2.5 Local Operations
Local operations are generally used on solids and change a face
or faces. These operations are more localized than boolean and
therefore quicker. Checking can be temporarily disabled making
operations faster. Some operations do not change topology (e.g.,
tweak, transform and tapering faces) while others change topology
Page 3
(e.g., swing, sweep, creating sheet body from face, merge entity).
Sweep cannot be performed on arbitrary paths. It is only supported
for line and circular paths.
2.6 Blending
Blending operation is used to smooth off an edge and usually
results in addition or removal of material. There are two types of
blends: unfixed and fixed. An unfixed blend remembers the original
edge of the body while in fixed blend topology is changed. Unfixed
blends include chamfer, rolling ball, and offset blends. Following
enquiries exist for unfixed blends: checking the unfixed blend,
enquire about the blend, removing the unfixed blend from edge, enquire
which faces are affected.
2.7 Parametric Curves And Surfaces
Following operations are supported for parametric curves and
surfaces: sweeping, swinging, B-spline, splining or meshing a set of
points, piecewise parametric curve, lofting, sewing, tweaking, and
subtracting.
2.8 Assemblies And Instances
An assembly is a collection of instances. Instance comprises a
part (body or assembly) and a transformation. Parts may be instanced
any number of times. Assemblies are created empty and instances added
later on. Assembly and instances can be copied and transformed.
Entire or partial assemblies can be saved into a file. Archiving
uses keys (filenames or database entries) which are understood by the
user written frustrum. A partial assembly can be unloaded and the
memory can be freed. The state of the part can be one of the
following: new, stored, anonymous, modified and unloaded. User
program can set and enquire the status of the part.
2.9 Rendering
Rendering routines generate graphical data which is output
through the graphical interface of KI. A call is made to a KI routine
but the data is returned through the Frustrum (supplied by the user).
Following rendering functions are provided:
o Generate view independent wireframe image.
Page 4
o Generate view dependent silhouettes.
o Generate hidden images.
o Generate pixel image.
o Generate facetted output.
2.10 Enquiries
Enquiries for entity type, body type, edge type, loop type, shell
type and vertex type are supported. Identification of connections is
a very useful function supported by Kernel Interface. It identifies
the faces of a surface, the curve of edge, point of vertex, single
connected entity, and connected entities. Functions are also provided
for defining, and deleting connections. Orphans can be automatically
deleted.
General enquiry supports extreme point of entity by specifying
three directions, containment of point within face, edge, shell, body
or assembly determining if the point lies inside, outside or on the
boundary of the entity. It is also possible to determine if two
geometries are equivalent.
There are quite a few functions for determining parameter of
point and evaluation of point on curves, and surfaces. Entity
selection in 3-D is supported by firing a thin ray with bodies as well
as by specifying a cylinderical volume. Those entities interesecting
the ray or the cylinder are returned into a list data structure.
2.11 Rollback, Snapshots And Bulletin Board
Rollbacks are used to recover from non-zero ifail. This may
include user and Parasolid errors. To use rollbacks, the user sets
regular rollmarks, rolls back to last mark after non-zero ifail. User
can use both roll backwards and forwards. Forward marks are lost when
a mark is set.
Snapshots are used to dump memory resident data structure on to
the disk. This capability allows the user to partially recover from
machine crashes and pausing a session and returning later. The
restoration time of snapshots is faster as compared to archive.
Snapshots files are larger than its archive counterpart.
Bulletin boards are used for incremental graphics, keeping
application data structure up to date, recording creation, deletion of
bodies and assemblies, recording creation, deletion, and changes to
faces, edges and vertices.
Page 5
2.12 Attributes And Features
The attributes belong to three major classes: Class I attributes
are independent of physical size (e.g., density, surface finish),
Class II attributes are dependent on size but not position (e.g.,
mass, volume, area), and Class III attributes vary with position or
orientation (e.g., moment of inertia).
Features are used to group entities together in a part. Features
are kept up to date by Parasolid during boolean operation and are
transmitted with the model (lists are not).
2.13 Kernel Interface Driver
KID is object oriented Lisp based interactive tool that is used
for prototyping, testing, learning and fault reporting. It supports
reGIS and Tektronix graphics terminals.
2.14 Programming Considerations
Kernel programming interface is consistent. Data is passed to
the Kernel Modeler via parameters of the subroutines by reference.
The parameters are arranged such that all input parameters are first,
and last parameter is always "ifail" returning the status code of the
subroutine. Zero value of status code is always a success.
Data types include tag (entity identifier), tokens or constants,
and lists. Tokens are referred to by symbolic names. Lists provide
dynamic arrays storing such data types as tag, real, and integer
values.
3 STRENGTHS
o Parasolid has open architecture allowing easy integration
with other file system or database management systems. User
interface, graphical output and archiving functions have been
clearly separated from the Kernel Interface.
o Recovery from system crash and error handling mechanisms are
very useful and powerful.
o Supports functions allowing the application programmer to set
and examine the status of bodies within assembly structure.
The programmer can also store arbitrary and partial assembly
structure in a file.
Page 6
o Documentation is very good.
o Parasolid has a consistent programming interface.
o Supports commonly available geometric modeling functions.
4 WEAKNESSES
o If user attaches user field to just one entity, Parasolid
allocates user field space to all entities. We consider this
as misuse of memory and disk space when the part is archived.
It will be desirable if memory can be allocated dynamically
for the user field and attached to the entity on user
request.
o Parasolid does not have reasonable support for math library
functions such as vector operations, projection of points on
curves and planes, computation of minimum distance between
entities, computation of tangent points, angle between
entities, bisectors and perpendiculars.
o Parasolid uses a box enveloping the solid model. The
dimension of this box is specified before creating the model.
The size of the box is used in many boolean operations to
speed up algorithms. Currently, Parasolid does not allow to
change the dimensions of the box in the middle of the
modeling process.
o In a sweeping operation, the path can be only a line or a
circle. It would be nice if Parasolid allows to select an
arbitrary path such as any curve entity or a group of
connected curves (wire body).
o Parasolid does not provide functions to examine assembly
structure. This puts additional burden on the programmer to
keep track of the relationships between bodies in the
assembly as well as a mapping between bodies and the files
containing them outside of Parasolid. Integration of a
Parasolid based application such as Unigraphics into another
database may be a potential problem if the application
generates assembly data.
5 COMPARISON WITH EUCLID
o ARCHITECTURAL. Euclid has a tightly coupled architecture
consisting of database, user interface, graphics output,
solid modeling functions and geometry algorithms. Parasolid
Page 7
architecture is modular but inadequate support exists in the
areas of user interface and database management
functionality. This means that with the given Parasolid and
Euclid functionality, it will be quicker to develop an
application using the later than the former.
In addition, however, tight coupling between geometry
algorithms and solid modeling functions is viewed as a
strength and Euclid has done a very good job of that compared
with Parasolid.
o GEOMETRY LIBRARY. Parasolid does not have extensive library
of functions for supporting vector operations, projection of
points on curves and planes, computation of minimum distance
between entities, computation of tangent points, angle
between entities, bisectors and perpendiculars. Euclid has
better support for these functions.
o APPLICATIONS. Euclid toolkit has a large number of
application as compared to Parasolid.
o RICHNESS OF FUNCTIONS. Euclid provides a number of options
for creating primitives and modeling operations. For
example, a cylinder can be created in a number of ways. From
programming view point this is important because in most
cases the user does not have to do extra work to use Euclid
routines. On the other hand, a Parasolid programmer will
have to make frequent and expensive calls to the Parasolid
data structure for implementing such multiple options. In
addition, most parameters on Euclid functions are entity tags
which are handy and does not bother the programmer with
mathematical details.
In addition, Euclid provides most multiple options in a
very general sense using the same routine. For example, ARC
routine has four formats. The formats are distinguished by
the nature and type of parameters on the routine. Since
parameters are consistent (e.g, center is always defined
first argument), less number of routines need be remembered
with a given number of options and functionality.
o DOCUMENTATION. Parasolid has better documentation. Euclid
documentation for geometry functions is reasonably good. The
documentation is inadequate for database, decoding and coding
of data structure.
o ATTRIBUTES. Parasolid provide better support for attaching
attributes to entities. Programming interface is direct and
easy to use in a non-interactive session. Supports both
system and user defined attributes. System attributes are
understood by Parasolid and can be read and modified by the
programmer.
Page 8
Euclid, on the other hand, allows the user to define
attributes via doc entities. This is done only through an
interactive session. There are no system attributes. There
can be only 100 doc entities per database. Each doc entity
can contain as many fields (attributes) as possible. System
attributes such as color, line style are not accessible to
the programmer. These doc entities and associated attribute
values can be assigned to Euclid objects in both interactive
as well as non-interactive programming session.
o OBJECT-ORIENTED.It is not possible to add a new entity into
Parasolid. An object-oriented system will provide such a
feature in a consistent and standard way. Euclid seems to be
going into the object-oriented direction with its top-gun
project.
o ACCURACY. Parasolid supports real numbers in double
precision whereas Euclid uses single precision for real
numbers.
o DATA STRUCTURE. Both systems use hybrid (B-rep and schema to
regenerate B-rep if required) data structure. However,
Euclid view of the data structure is very simple. All
entities are represented in terms of 3-dimensional point
array, a 2-dimensional array called link which stores
pointers to point array, and element, a coded structure of
three fields.
o Euclid allows sweep operations on arbitrary path. In
Parasolid, sweep operations are performed only on straight
and circular paths.
o Parasolid has better methods at the disposal of application
programmers for recovering from system crash and unexpected
errors from Kernel Interface and application programs.
T.R | Title | User | Personal Name | Date | Lines |
---|
26.1 | Differences between Parasolid and Euclid | 16138::DOTY | Russ Doty, CTC | Wed Sep 27 1989 11:47 | 64 |
| In general, the comments in the previous note are accurate and valid.
The primary area not addressed is the fundamental philosophical
difference Euclid and Parasolid: the difference between a full
fledged CAD/CAM system and a Kernal Solid Modeler.
The difference between a foundation and an embedded technology:
applications are built ON a CAD/CAM system, but can be built
AROUND a kernal solid modeler.
An application built ON a CAD/CAM system will extend the
capabilities of the CAD/CAM system, but will find it difficult to
change the basic characteristics of the CAD/CAM system. Users
will be aware of the underlying CAD/CAM system.
An application built AROUND a kernal solid modeler will use the
solid modeler for certain internal functions, but the application
will remain the most important piece. The application can
determine its own characteristics, and can completely hide the
presence of the kernal solid modeler from the user.
There are advantages to both approaches: if you are building a
specialized vertical application, a CAD/CAM system will provide a
complete foundation. On the other hand, if you are building a
larga application or a complete system, it is easier to
incorporate a kernal that is designed for integration.
As one example, if an application needs a database, then Euclid
is the clear choice. On the other hand, if the use of an
existing DBMS (perhaps a relational or object-oriented DBMS) is
desired, then Parasolid would be the clear choice.
At a more detailed level, some other comparisons can be made:
Euclid is primarily a faceted solid modeler (solid operations and
booleans) with some precise solid modeling capabilities, whereas
Parasolid is a precise solid modeler with the ability to produce
faceted models for display (if desired).
Euclid uses single-precision floating point numbers, where
Parasolid uses double-precision floating point. Aerospace and
automotive companies generally consider single-precision accurach
insufficient.
Euclid is working to address both the faceted model/precise
model and the single-precision/double-precision issues, but will
not be able to resolve them in the short term.
Neither Euclid nor Parasolid is Object Oriented today. Both
companies are working in this direction. It would be feasible to
embed Parasolid technology in an Object-Oriented system, if we
desired.
In summary, both Euclid and Parasolid are powerful systems that
can be productively applied to engineering problems. There are
major philosophical differences in the systems: a more reasonable
comparison would be between Euclid and Unigraphics II version
7.0, which integrates the Unigraphics CAD/CAM system with the
Parasolid kernal solid modeler.
Parasolid can be used as an embedded technology in other
applications. If the goal is to develop applications that extend
the capabilities of a CAD/CAM system, Euclid or Unigraphics II
version 7 would be more appropriate foundations.
|