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
|