PADL-1(ID:5287/pad004)


for Part and Assembly Description Language

CSG (Constructive Solid Geometry) language for CAD/CAM

2nd version of PADL

Production Automation Project, The University of Rochester New York 1978


Related languages
PADL => PADL-1   Implementation
PADL-1 => PADL-2   Evolution of

Samples:
References:
  • A. A. G. Requicha and H. B. Voelcker, "Constructive solid geometry", Tech. Memo. No. 25, Production Automation Project, Univ. of Rochester, November 1977 view details
  • A. A. G. Requicha, "Mathematical models of rigid solid objects", Tech. Memo. No. 28, Production Automation Project, Univ. of Rochester, November 1977 view details
  • H. B. Peirce and H. B. Voelcker, "Dissemination of the PADL-1.0/n processor", PADL Admin. Doc. No. 01, Production Automation Project, Univ. of Rochester, October 1977 view details
  • H. B. Voelcker and A. A. G. Requicha, "Boundary evaluation procedures for objects defined via constructive solid geometry", Tech. Memo. No. 26, Production Automation Project, Univ. of Rochester, 1978 view details
  • H. B. Voelcker and A. A. G. Requicha, "Geometric modelling of mechanical parts and processes", COMPUTER, Vol. 10, No. 12, December 1977; also published as Tech. Memo. No. 23, Production Automation Project, Univ. of Rochester, October 1977 view details
  • R. B. Tilove, "A study of geometric set-membership classification", Tech. Memo. No. 30, Production Automation Project, Univ. of Rochester, November 1977 view details
  • W. B. Fisher, E. E. Hartquist, A. A. G. Requicha, and H. B. Voelcker, "The PADL-1.0/n processor: Overview & system documentation", System Doc. No. 01, Production Automation Project, Univ. of Rochester, October 1977. view details
  • A. A. G. Requicha and R. B. Tilove, "Mathematical foundations of constructive solid geometry: General topology of closed regular sets", Tech. Memo. No. 27, Production Automation Project, Univ. of Rochester, March 1978 view details
  • A. A. G. Requicha, "Representations of rigid solid objects", Tech. Memo. No. 29, Production Automation Project, Univ. of Rochester, 1978 view details
  • Voelcker, H. et al "The PADL-1.0/2 system for defining and displaying solid objects" pp257-263 view details Abstract: PADL (Part and Assembly Description Language) is a language for defining solid objects via constructive solid geometry, i.e. as (regularized) set-theoretical compositions of primitive solid ?building blocks?. The current processor for Version 1.0 of the language accepts PADL statements either in batch or in keyboard-interactive mode and produces line drawings of objects on CRT's and plotting devices. A variety of drawing styles is available: dimensioned orthographics, perspectives, section views, interference drawings, etc. Novel characteristics of the PADL-1.0/2 system include 1) general combinational operators that may be applied to any part defined in PADL, 2) correct handling of ?pathologies? that occur when (for example) two objects have partially coincident boundaries, 3) maintenance of consistent multiple representations of the same object, and 4) automatic posting on drawings of dimensions to reflect user-defined geometric relations between features of objects. This paper provides an overview of both the language and the current processor's capabilities and organization. Detailed discussions of the underlying mathematics, algorithms, and implementation are presented elsewhere. DOI Extract: INTRODUCTION
    INTRODUCTION
    PADL (Part and Assembly Description Language) is a language for defining and manipulating solid objects. It is primarily directed towards Mechanical Engineering applications but may also be of interest in Architecture, Civil Engineering, Computer Vision and other fields where the geometry of solids is important.
    The language is based on Constructive Solid Geometry (CSG), a formal representation scheme in which complex solids may be defined as combinations of primitive solid "building blocks" via the regularized set operators. [I] (The regularized set operators are defined as the closure of the interior of their usual counterparts. Regularity plays a central role in the correct handling of operations on solids that have partially coincident boundaries. )
    This paper provides an overview of Version 1.0 of the PADL language (i.e. PADL-I.O), and of a PADL- 1.O processor that produces drawings: see Fig. 1. Additional information on the language and processor may be found in [2] and [3]. Applications of PADL in the context of design and manufacturing automation are discussed in [~], which also contains references to related work by others. Finally, the underlying mathematics and the processor's key algorithms are discussed in a suite of papers Ill, [5-9]. Extract: OVERVIEW OF THE PADL-I.0 LANGUAGE

    OVERVIEW OF THE PADL-I.0 LANGUAGE


    We shall open the discussion of the language with an example: the definition of the object shown in Fig. 2 via the PADL "program" shown in Fig. 3. (Statements preceded by semicolons are comments.)


    Figure 2:  A Simple Object


    Figure 3: PADL Definition and a Display  Command

      

    As the example indicates, PADL admits two kinds of statements: definitional  statements in assignment format, and commands (Statement 170) in imperative  format. Statements 10, 50, and 110 define primitive solids. Numeric nominal  values and tolerances are assigned to symbolic "dimensions" in Statements 20,  30, 40, 60, 70, 120, 130, and 140. Composite solids are defined via regularized  set operations in Statements 100 and 150.


    The following sections discuss the language "bottom-up" by first introducing the  language's data types and operators, and then explaining how these are used to  create definitional statements and commands.

    Extract: Data types, objects, commands etc

    Data Types


    Table I shows PADL"s data types. An entity's type may be determined from its symbolic name by means of a prefix symbol. Names in PADL are not "variables";  only one value may be associated to each name in a definition. The "meaning"  ("semantics") of data types other than d-chains (distance chains) should be  evident. D-chains define locations; their semantics are discussed below.
































    Data Type

    Value

    Prefix

    number

    real

    #

    distance

    {non-negative real, tolerance)

    (none)

    distance-chain

    sequence of directed distances

    @

    tolerance specification

    (+real, -real) or Basic or Reference

    (cannot be named)

    object

    solid

    &



    Primitive Solids


    PADL-1.0 offers two primitive solids: blocks and (three versions of) cylinders,  whose axes must be parallel to the system's (X,Y,Z) master coordinate system.  They are defined as follows.


    $B(<d-chain>,<d-chain>,,<d-chain>) AT (<d-chain>,<d-chain>,<d-chain>)

    defines a block; the first three d-chains specify the X, Y, Z "sizes" of the  block while the AT arguments specify the location of a comer of the block. More  precisely, the AT <d-chain>'s specify the position of three planar faces of the  block while the others define the position of the remaining three faces with  respect to the first.



    X

    $CY(<distance >, <d-chain>) AT

    Z



    (<d-chain>,<d-chain>,<d-chain>)


    defines a cylinder; the "suffix" X, Y, Z specifies the direction of the cylinder's axis. The <distance> is the diameter and the first <d-chain> is the  length of the cylinder. The AT arguments locate the cylinder.


    The syntax above is a simplified version of the actual PADL syntax. Thus, e.g., PADL admits primitive arguments that syntactically are not <d-chain>'s but may  be coerced into d-chain data types. Space precludes a discussion of the coercion  rules [2] in this paper.


    Operators



    Four types of operators are available in PADL.



    1) Positional operators (rigid motions): MOV(<object>) BY (<d-chain>,<d-chain>,<d-chain>) translates a solid by the specified <d-chain>  arguments. (PADL-1.0 does not contain a general rotational operator.)


    2) Combinational operators on solids: the three regularized set-theoretical operators .UN., .INT., .DIF., plus the assembly operator .ASB. Which collects  objects under a single name. Combinational operators are written in infix form;  assembly has precedence higher than the other three, which have their  conventional set-theoretical precedences. The regularized set operators are  general, and may be applied to primitives as well as to any parts defined in  PADL. Assemblies may not be combined via the set operators .


    3) Arithmetic operators: the usual +, -, /, *, which operate on numbers (or other entities through type conversion).


    4) Distance and d-chain operators: unary +' and -' and binary ":". The unary operators assign a positive or negative direction to distances, which have  positive "nominal" values per Table I. Directed distances are (simple) d-chains.  More complex d-chains may be constructed by catenating simple (or complex)  d-chains; syntactically, catenation is accomplished merely by writing the  d-chains one after another (see LENGTH -' XLOC in Statement 110 of fig, 3). The  operator ":" constructs a distance from a number and a tolerance specification;  see Statement 130, which assigns a nominal value of 0.75 and a tolerance of plus  or minus 0.001 to the distance XLOC. Note that tolerances are bound not to  d-chains but to the individual distances which form d-chains, and thus the  "uncertainty" or "tolerance zone" associated with a d-chain depends on the  tolerances of its constituent distances. (In Mechanical Engineering this  phenomenon is called "tolerance stacking".)

    Definitional Statements



    There are two kinds of definitional statements: object definitional statements,  and value assignment statements.


    Object definitional statements are of the form

    &<name> = <obj>

    where <obj> is any expression that has a "solid" value. Statements 10, $0, 100, 110, and 150 in Fig. 3 provide examples. Value assignment statements associate  values with numbers, distances, and d-chains: see Statements 20, 30, 4.0, 60,
    70, 120, 130, and 140.


    The order of definitional statements in PADL is immaterial; a name may be used  (as in Fig. 3) before it has a value.



    The Semantics of D-chains



    Conventional (plus/minus) Mechanical Engineering dimension and tolerancing  practices require that tolerances be associated with the "sizes" of objects  (e.g. the diameter of cylinder primitives) as well as with relative distances  between object features. PADL's facilities for assigning tolerances to its  distance entities were discussed earlier.


    D-chains are the syntactical constructs used by the PADL-1,0 language for  representing relative positions. We shall explain the meaning of d-chains by  means of a simple example: see Fig. 2.


    Observe that the hole in Fig. 2 is located relative to the back and right  surfaces of the L-shaped object. In the PADL-1.0 system relativity of position  is represented via "dimensional trees" whose nodes correspond to positional  parameters of faces of the object and whose arcs are directed distances. Figure  4 shows the X-dimensional tree which corresponds to the object of Fig. 2. Each  node of the dimensional tree has an associated d-chain constructed by traversing  the tree from the origin to the node. Thus the X-location of the hole center in  the example has the associated d-chain LENGTH -' XLOC. It is easy to see that by  using appropriate d-chains as arguments of primitive solids and MOV operators  one can define unique dimensional trees.
     





    Figure 4:  Dimensional Tree



    Commands


    Commands may appear anywhere in a PADL definition and are executed immediately
    if possible. PADL-1.0 has three types of commands.



    1) Utility commands, e.g. to SAVE and USE files containing definitions.


    2) Editing commands: editing is done in the style of BASIC, by replacing old statements with new statements having the same number. Note that simple edits  may have far-reaching effects. For example if we make LENGTH = 3 in the  definition of Fig. 3 both the right face of the object and the hole move left by  one unit.


    3) Graphic commands: PADL's high-level graphic commands were designed to relieve users of the burden of specifying the multitude of parameters needed to ensure  that displays fit on the screen, "look nice", etc. The basic syntax is

    DISP(<graphic object>), <qualifiers>

    DRAW(<graphic object>), <qualifiers>.



    DISP indicates a CRT display and DRAW a hardcopy plotter output.


    Graphic objects may be named solids or two special constructs used to display  sections and interference between parts in an assembly. PADL's sectioning  capabilities are shown in Fig. 2; for an illustration of interference  capabilities see [4],


    Qualifiers may be strung together in any order; if they are omitted default  values are used. Qualifiers control the number and type of views (single- or  three-view orthographies, perspectives, isometrics), the paper size, the  magnification (zoom) factor, the posting of dimensions and tolerances, the  treatment of hidden lines, and so forth. The following two examples show the  flavor of PADL commands.


    1) DISP(&PART) displays a default wireframe perspective on the CRT.


    2) DRAW(&PART), 03R, DLABEL : AUX(SECT(&PART, $Z, 0.75)) draws a three-view orthographic with right profile (03R) with dimensions labelled (DLABEL) plus an  auxiliary view, which is a default perspective view of the object sectioned by a  plane perpendicular to the z-axis and passing through the center of the hole.  Figure 2 shows a hardcopy of a Tektronix 4010 display produced by the DISP  version of this command.
     



    Extensions

    Desirable extensions of the PADL language may be categorized as follows.

    1) Nominal geometric coverage. A larger class of objects may be defined if one provides other prim- itive solids (cones, spheres, ...) and a rotation- al  operator.

    2) Modern ("geometric" or "true-position") dimensioning and tolerancing facilities [10]. PADL's modem D&T facilities are tentatively specified in [2]  but have not been implemented yet. Essentially they amount to a scheme for  "naming" object features and for assigning attributes to named features. These  facilities will introduce additional data types: surfaces, edges, points, and  datum systems.

    3) User conveniences. The most important of these is probably the provision of "macro" facilities to enable users to define objects with uninstantiated  parameters; such parametric objects may be viewed as customized "primitives".  Macros may be implemented in PADL by standard text-expan- sion techniques. Note  that a PADL-defined parametric object always corresponds to a valid solid  regardless of the parameter values; the surface/edge/vertex structures often  used in Computer Graphics to represent solids do not possess this property ?  they may correspond to "nonsense solids" for certain parameter values.

    4) A processor for a version of the language with graphic input facilities (dubbed GPADL) is under development. One of the important requirements imposed  on GPADL is that it be possible to translate, automatically and unambiguously,  definitions cast in GPADL into PADL.
     


          in Computer Graphics Volume 14, Number 3, July, 1980 (Proceedings of the 7th International Conference on Computer Graphics and Interactive Techniques Seattle, Washington, United States SIGRAPH 80) view details
  • W. B. Fisher, A. A. G. Requicha, N. M. Samuel, and H. B. Voelcker, "Part and assembly description languages II: Definitional facilities in PADL-1.n and command facilities in the PADL-1.0/2 processor" Tech. Memo. No. 20b, Production Automation Project, Univ. of Rochester, 1978 view details
          in Computer Graphics Volume 14, Number 3, July, 1980 (Proceedings of the 7th International Conference on Computer Graphics and Interactive Techniques Seattle, Washington, United States SIGRAPH 80) view details