[Search for users] [Overall Top Noters] [List of all Conferences] [Download this site]

Conference kepnut::euclid

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.RTitleUserPersonal
Name
DateLines
26.1Differences between Parasolid and Euclid16138::DOTYRuss Doty, CTCWed Sep 27 1989 11:4764
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.