[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 15: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 10: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.
 |