Prototyping a feature based modelling system for automated process planning

Prototyping a feature based modelling system for automated process planning

Journalof MechanicalWorkingTechnology,20 (1989) 195-204 Elsevier SciencePublishers B.V., Amsterdam - Printed inThe Netherlands 195 PROTOTYPING A FEA...

547KB Sizes 0 Downloads 179 Views

Journalof MechanicalWorkingTechnology,20 (1989) 195-204 Elsevier SciencePublishers B.V., Amsterdam - Printed inThe Netherlands

195

PROTOTYPING A FEATURE BASED MODELLING SYSTEM FOR AUTOMATED PROCESS PLANNING S.K. SIM1 and K.F. LEONG2 lSenior Lecturer, Applied Mechanics Division, School of Mechanical and Production Engineering, Nanyang Technological Institute, Nanyang Avenue (Singapore) 2Lecturer, Engineering Production Division, School of Mechanical and Production Engineering, Nanyang Technological Institute Nanyang Avenue (Singapore)

SUMMARY In recent years, there have been tremendous amount of interest in manufacturing automation and Computer-integrated Manufacturing (CIM). To attain a high level of automation in CIM, there has been relentless effort in trying to integrate the islands of automation in manufacturing. These are often fraught with much frustrations and difficulties. The main calamity in integration is due to the mismatch of information available from the CAD system and that required by CAPP system. The geometric information generated by the solid modellers in most CAD systems are low level whilst the CAPPs will operate efficiently only at a higher level of abstraction. CAPP systems thrives on feature information but such information in CAD databases are rather implicit and at times not even available. Although there has been much research and development work in making these feature information in CAD databases more explicit through feature recognition and extraction, this is really a regressive step. A much better approach is to define features as they exist right at the start at the modelling stage and store these feature definitions in a feature database which can be assessed directly by CAPP. In this way the likelihood of making errors in interpretation is minimized as the feature information are derived at source. This paper describes the prototyping of a feature-based modelling system in an AI logic language, Prolog. Feature hierarchy depicting the part-feature relationships can be defined by the designer when he is making the design of the part. By defining features as objects and through object oriented programming, generic and specialized feature properties can be defined or inherited through a child/parent relationship. These constituent features are composed semantically and meaningfully through a bottom-up strategy based on feature composition rules and feature primitives. The result of the parsing exercise is a solid representation of the global model depicted as a CSG tree of features. This solid model will ultimately be translated into solid modeller specific commands and further evaluated to give active boundaries representing geometric and topological information for rendering. INTRODUCTION Computer-aided Design (CAD), Computer-aided Manufacturing (CAM) and Computer-aided Process Planning (CAPP) are important components in improving the overall efficiency and performance in the automation of manufacturing.

To attain a high level of automation in

computer integrated manufacturing (CIM) and widespread use in manufacturing applications, it is desirable to integrate these islands of automation together. Process planning is that function within a manufacturing facility that establishes which machining process and parameters are to be 0378-3804/89/$03.50 ©1989 EIsevierSciencePublishersBN.

used to convert a piece part from its initial from to a final form pre-determined from an engineering drawing. (ref. 1) It therefore seem obvious that the key to integration is to use CAPP as the link up between CAD and CAM. Thus much effort has been put into the development of effective CAPP systems that will be capable of this link up.

Unfortunately, even with the

application of artificial intelligence, manual intervention has not been totally eliminated thus not achieving total automation. (ref. 2-3) The main calamity in full integration and automation of these systems is due to the mismatch of the information available from the CAD systems and that required by the CAPP systems. Geometric information generated by the solid modellers in most CAD systems are low level 2D, 2-and-a-half-D CAD systems, wireframe systems are in even deeper predicament as far as total integration is concerned. CAPPs operate effectively only at a higher level of abstraction where features information are important. (ref. 4-5) To understand why this is so, it is necessary to first understand the characteristics and limitations of the existing CAD solid modelling systems. SOLID MODELLING SYSTEM FOR CAPP The Solid Modelling Systems The term geometric modelling refers to a collection of methods used to define the shape and other geometric characteristics of an object. (ref. 6) There are three distinct aspects of geometric modelling: 1.

Representation: Computing a mathematical approximation of the physical shape of an object.

2.

Design: Creating a new shape to satisfy some operational or aesthetics objectives. The variables defining the shape is manipulated until the objectives are met.

3.

Rendering: Generating the image of the model so that it can be interpreted visually.

Solid modelling centered more on the first two aspects of geometric modelling. It is a branch of geometric modelling that emphasizes the general applicability of models, and insists on creating only complete representation of physical solid models. There are several approaches to achieve this goal of which two of these representation schemes are most popular: boundary representation (B-rep) and constructive solid geometry (CSG). (ref. 6) a.

Boundary Representation, (B-rep) : B-rep modellers store the evaluated geometry as a redundant hierarchy of topological entities (face, edges, vertices) with pointers to geometric entities (surfaces, curves, points).

Euler-Poincar~ equations are used to

ensure the validity of the objects (ie. that they are solids). Point sets are classified as inside, on or outside the object, using a convention for the direction of surface normals. b.

Constructive Solid Geometry. (CSG) :

CSG is a modelling method that defines

complex solids as compositions of simpler solids (called primitives). operators are used to execute the composition.

Boolean

CSG representations of objects are

ordered binary trees whose terminal nodes are either primitives or transformation data

197 for rigid-body motions.

The nonterminal nodes are either regularized Boolean

operators (union, difference, and intersect) or rigid-body motions (translation and/or rotation) that operate on their two subnodes. Each subtree of a node represents a solid resulting from the combination and transformation operations indicated below it. The root represents the final object. If valid primitives are used with Boolean operations, then no validity check is required. A boundary evaiuator is used to determined the active boundaries of the final object. These two solid modellers (as well as the others) have two major deficiencies (ref.4) : 1.

Insufficient product definition : Only the complete representation of the geometric model is defined; specific precision data like tolerances and surface finishes and technological data like material specifications and surface treatments are not represented in the system. Such information are important and essential in process planning.

2.

Low-level product representation : Part and product representation are in low-level details, ie. geometry and topology for B-rep and primitives and operators in CSG. The data only become comprehensible when an image is displayed. Thus the interpretation of the data is done by the human viewer. High level information, such as form features, which should be available is missing.

Therefore it is very difficult to use these existing solid modelling systems alone to drive automated applications such as process planning because the information essential to these tasks is virtually absent from the solid modeller databases. Work has to be done to gather these information in order to work the CAPP systems. The Need for Feature-Based Modelling System A feature is a set of information related to a part's description. The description could be for design purposes, or manufacturing and inspection or even for administration purposes. It is convenient to classify features relating to the product as follows: (ref. 4) 1.

form features : functional, aesthetic, assembly aids.

2.

material features : properties, specifications, treatment (materials and surfaces).

3.

precision features : tolerances, surface finishes.

4.

technological features : constraints.

performance parameters, operating variables, design

Since designers and engineers utilize these features for their work, it is therefore necessary that they are supported in a fully integrated engineering system, like in CIM. The first three categories of features are especially important in supporting process planning systems. Thus any automated CAPP systems that is to be used with a solid modelling CAD system must have the means to get these feature information from that CAD system. There are three fundamental approaches which can achieve this, namely human-assisted feature recognition, automated feature recognition and extraction, and feature based modelling.

198 Human-assisted feature recognition in CAPP is rather primitive and does not qualify for total automation. Automated feature recognition and extraction is a step that attempts to make explicit, usually by the application of artificial intelligence techniques, the features information that are available in the CAD databases.

This is in essence a regressive step in automation. A much

better approach is to define features as they exist right at the start at the modelling stage and store these feature definitions in a feature database which can be assessed directly by the CAPP system. This is a feature based modelling approach.

In this way the likelihood of making errors in

interpretation is minimized as the feature information are derived at source. It also makes better engineering sense that the designer's efforts will have to be more attuned to manufacturing needs, thus providing the opportunity to implement simultaneous engineering. (ref. 7) Hence a feature based modelling system is essential to the implementation of total integration of these systems. THE FEATURE BASED MODELLING SYSTEM The Feature based Modelling System contains all the necessary facilities for creating a product database at multi-levels of abstraction. A distribution system approach is adopted where each subsystem supports one type of feature. Essentially there are four subsystems : 1.

solid modeller.

2.

form feature modeller.

3.

precision feature modeller.

4.

material feature modeller.

The underlying knowledge representation scheme is framed-based system where generic features such as user-defined parameters, inheritance rules and solid representation specifications can be defined. The Solid Modeller The solid modeller serves the function of representing the physical solid models of the product to be manufactured. The CSG modeller is used here because it can effectively represents knowledge of the product at a higher level of abstraction and thus better able to support feature modelling and extraction. It also provides the means for user interface and interpretation of the model. The Form Feature Modeller The form feature modeller allows the definition of the nominal part geometry through a three tier database. At the top level is a feature relationship graph which depicts both adjacency links and child-parent links or primary feature-subfeature links. Primary features are major shapes modified by subfeatures. Primary features therefore do not inherit any parameters from any other features while subfeature inherit parameters from one or more features. The second level in the form feature modeller database is the definition of each form feature consisting of generic properties and instance data. The third level is the solid representation of the

199 form feature stored as a CSG tree of features producing volume of all features constructed through Boolean operation. This is expressed in a context free grammar for CSG which is later converted to solid modeller interface. Such a form feature database can be extracted directly by a CAPP for process planning without the need for an interface for feature extraction and feature recognition. Feature-Based }dodelling System

Product Database

Solid Modeller I

i

.

' Form Feature Modeller I

User Interface

Precision Feature [ Modeller I ]

[ Material ModellerFeature I

lntelli ent Computer-Ai_ded Process Planning System

_~

, Process Selection

Technological l)aLabase

I

Machine Tools ] Selection l User Interface

Sequencing Operations Selection of Holding Devices Operations and Machines Data Process Optimization

I

I I

I I

I Cost and Time [ Analysis Process Plan Output

1

Fig. 1 : Schematic diagram of the modelling system, the planning system and the databases.

200 Th.e Precision Feature Modener The purpose of the precision feature modeller is to enable the definition of allowable deviations from nominal form and size i.e dimensional tolerances and surface finish by creating a library for generic precision features. These generic features can be instanced and attached to form features and their geometric entities. The Material Feature Modeller The purpose of the material feature modeller is to associate material information with form features.

These information can be the material name, type, composition, physical and

mechanical properties, material processing and treatment, etc. Material features can be defined and stored in a library. This again can be linked to a form feature. Fig. 1 shows the main subsystems of the Feature based modelling system and the modules of the intelligent generative process planner to be developed. PROTOTYPE OF FEATURE BASED SYSTEM Because of the complexities in the feature based modelling system, it is necessary to first develop this system by prototyping with due consideration to multiple level representation (ref.9). Several ideas for the prototype are proposed and tested. One of the most successful is discussed in the following sections. Part Fcalme Grammar The part-feature structure can be described formally by a context free grammar for CSG, G( Vn, Vt, P, S) where: Vn denotes the set of non-terminals = { , , ,, , } Vt denotes the set of terminals =

{ cube, cylinder, cone, sphere,

torus,

wedge,

union,

intersect, difference,

x-translation, y-translation, z-translation, x-rotation, y-rotation, z-rotation } S is the start symbol. The set of P contains the following context-free productions listed as below:

: :=





::=

I I I



::=

cube I cylinder I cone I sphere I torus I wedge



::=

union I intersect I difference



::= ::=

I x-translation I y-translation I z-translation I



::=

x-rotation I y-rotation I z-rotation primitive

201 The def'mition of CSG in context free grammar lends itself to parsing in building a tree structure that defines the constituents of the part. A parser uses a parsing algorithm along with the CSG grammar and the universal primitive set to produce a CSG tree that corresponds to a given sequence of compositions. A bottom-up parsing strategy begins with the primitives and looks for productions rules whose right-hand sides match sequence of adjacent objects that can be combined into a constituent as identified by the left-hand side. Under an appropriate parsing algorithm such as the Chart Parser, (ref. 8) the CSG tree for form feature can be derived. BUILDING THE CSG TREE USING CHART PARSING. For automatic process planning, the very basic geometric requirement is that the planning system must know the type of feature as well as its dimension and orientation. By feature base modelling approach, these features are defined by the designer at the beginning. These features must be composed into a CSG tree so that geometric relationships between features are clearly defined. The CSG tree is however not a unique representation scheme. A designer can arbitrary create two or more different CSG trees to represent an identical object (ref. 9). A similar problem also exists in the area of natural language processing (NLP) expressed in CSG notation. Ambiguous syntactic structures do exist. In order to capture these syntactic structures, a good parsing algorithm is necessary. Amongst the many parsing algorithms developed (ref. 8), chart parsing offers a strategy that derives single or multiple syntactic structures without the overhead of backtracking. Chart Parsing Often a parsing strategy tries to analyze a string as a constituent of a certain category in natural language or primitive in solid modelling parlance.

While doing so it recognizes the

categories of substrings. If it turns out that the whole string is not of the category hoped for, so that the main parsing effort has to be abandoned, all the perfectly valid categories of the substrings get forgotten too. Chart parsing tries to avoid wasting that effort. The central idea is that all possible syntactic structures are represented in a data structure called a chart as soon as they are found. (ref. 10) A chart is a directed graph consisting of ordered collection of edges or arcs. Each edge has two vertices, a starting and ending vertex and is denoted by a label. Each label depicts what the syntactic category of the substring between the starting and ending vertex of the arc are and comprises of two parts known as 'Found' or 'Unfound'; found part represents (parts of) constituents already discovered and unfound part represents constituents which must still be found to complete a partial analysis. In general, the label of an arc is: TotalCat = FoundCat... I UnFoundCat...

in NLP or

Part

in Solid Modelling (SM).

-- FoundPrimitive... I UnFoundt~mitive...

202 Either FoundPrimitive... or UnFoundPrimitive... may be null as are FoundCat..+ or UnFoundCat... in NLP. Arcs without UnFoundPrimitive in their label are said to be inactive; all others are active. The Parsing Process A parse has been found when there is an inactive arc of the sought category from the beginning to the end of the entire string. The complete parsing process consists of iterations between two basic operations, namely combine or fundamental event and the propose event. Before describing these operations the following terminology are defined: Let I, J, K ..... be integer variables over vertices in the chart. Let X, Y, Z ..... be variables over constituents of the grammar. Let [A], [B], [C],... be variables over (possibly null, []) strings of constituents. The two basic operations, the fundamental event and the propose event, are discussed in the following sections. Fundamental Event The fundamental event rule is stated as follows: (i) x (J) Y .

.

.

.

.

.

.

.

= [A] J Y [B] =[C]I[] .

.

.

(I) X

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

(J) (K) .

.

.

.

.

.

.

.

.

=[A]YI[B]

.

.

.

(K)

unless the resulting edge is already present. When an active edge from vertex I to J, looking for a constituent Y in its remainder meets a complete edge from vertex J to K whose label bears a constituent Y then the two edges combine. The result is a new edge from vertex I to vertex K whose remainder is the remainder of the active edge reduced by the constituent Y. Propose Event The chart initially contains only inactive arcs, from the primitive elements of the sentence that were fed in. For the fundamental event to take place there must be some active edges. An active edge corresponds to a hypothesis about what may be present in the string. Hypothesis can be formed either top-down or bottom-up. For natural language processing either strategy can be used. But for composing mechanical parts, the bottom-up strategy of defining what the primitives are and composing them by the composition grammar is more appropriate. Formally, the bottom-up propose rule is stated as follows: (I) X Y .

.

.

.

.

.

.

.

(I) Y

=[A]I[] ::=X [C] .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

(J) .

.

=[]IX[C]

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

(I)

unless the resulting edge is already present.

203 IMPLEMENTATION The chart parsing strategy has been implemented in Pmlog. From the definition of the solid modelling primitives, a CSG tree of the mechanical part is derived through the parsing process. The CSG tree defines hierarchically the composition of the mechanical part. The details of each primitive is spelled out by the set-up mode in which feature class/name is defined together with geometrical properties and orientation with respect the world coordinates. The expert system for automatic process planning can directly access the feature set-up database and generate process plans from these feature definitions. The sample consultation in the attached appendix illustrates the derivation a CSG tree for a mechanical part as defined by the following CSG phrase: cube union cylinder intersect wedge. The spanning arc from the starting vertex to the end vertex is given by the fourth argument of the edge predicate. It defines in Prolog list notation the final CSG tree that is being built from the primitives according to the CSG phrase. CONCLUSION The use of a chart parser in developing CSG tree is elegant. However the work done towards the building of a feature based modelling system for automatic process planning is still somewhat incomplete. In order that ambiguities that arises from the parsing effort can be resolved, the system has m be supported by a geometric reasoner which checks the geometric relationships of the various primitives. The features defined in the set-up model can then successfully drives the automated process planning system. REFERENCES 1

T.C. Chang, R.A. Wysk, An Introduction to Automated Process Planning System, PrenticeHall, Englewood, NJ, 1985. 2 H.P. Wang, R.A. Wysk, Intelligent Reasoning for Process Planning, Computers in Industries, 8(1987), pp 293-309. 3 S. Joshi, N.N. Vissa, T.C. Chang, Expert Process Planning Systems with Solid Model Interface, International Journal of Production Research, 1988, Vo126 No 5, pp 863-885. 4 J.J. Shah, M.T. Rogers, Functional Requirements and Conceptual Design of Feature-Based Modelling System, Computer-Aided Engineering Design Journal, Feb. 1988, pp 9-15. 5 S.K. Sim, K.F. Leong, The Role of Solid Modelling in the Development of a Generative Process Planning System, MANUTECH 88, NTI Symposium on Manufacturing Technology, 1988, ppl 1-20. 6 M.E. Mortensen, Geometric Modelling, John Wiley & Sons, NY, 1985. 7 J.M. Martin, The Final Piece to the Puzzle, Special Report, Manufacturing Engineering, Sept 1988, pp 46-51. 8 T. Winograd, Language as a Cognitive Process, Vol 1, Addison Wesley Publishing Co., 1983. 9 Y.C. Ime, K.S. Fu, Machine Understanding of CSG: Extraction and Unification of Manufacturing Features, IEEE Computer Graphics & Applications, 1987, Vol 7 No 1, pp 2031. 10 S. Steel, A. De Roeck, Bidirectional Chart Parsing, Cognitive Science Centre, Department of Computer Science, University of Essex, Colchester CO4 3SQ, UK, 1986.

Systems,

Inc.

All

rights

PA~S ~ NG

CHART

CSG phrase

n wedge,

reserved•

edge (l,prim, [] , (prim(cube) ] ,2) edge (2, operator, [ ] , [operator (u)) . 3) edge (3~ prlm. [] , [pr~m(cylinder[ I . 4) edge (4, operator, [) ~ ]operator(n) ] . 5) edge (5, prim, [] . [prim (wedge) ] . 6) edge (1, feature. [prim[, ] ] , 1 ) edge (I, feature, [ ) , [feature ( [prim (cube) ) ) ] , 2 ) edge (i. Object. [prim] . [] , I ) edge (I, object, [ ) , [object ( [prim (cube) ] ) ) , 2) edge (3, feature. [prim}. [ ] , 3) edge [3, feat=re. [I , [feature( [prim (cylinder) ] ) ] . 4) edge (3, object, [prim], [[ . 3) edge (3, object. [ ] , [object ( [prim (cy I inde r ) ) ) ] . 4 ) edge (5, feature. [prim] . [ ] , 5) edge (5, feature, [] , [feature [ ]prim]wedge) ] ) ] . 6) edge (5, Object, [prim}, [) , 5) edge (5, object, [] , [object ( [prim (wedge)) ) ] , 6 ) edge (I, feature, [feature,0perator, sub feature) , [) , i) edge (I, feature, [operatOr, sub feature~, [ Ifeature ( [prim (cube) ] ) ] ] , 2) edge (i, feature, [sub feature ) , [ [ [feature ( [prim (cube) 1 ) ] , operator (u) ~ , edge (1,part, [objectY, [), i) edge (I, part. [ ] . [part ( [object ( [pr im (cube)) ) ) I ~ , 2) edge (l,object, {object,movement 1 , [] , i) edge (I, object, [movement) , [ [object ( [prim (cube) I ) I ] ~ 2) edge (1, object , Iobject, movement, ob j oct ] , [ ] , 1 ) edge (1, object, [movement, object ] , [ [object ( [prim (cube) ~ ) ] ] , 2) edge (1, object, [Object, operator, object ) , [ ] , 1 ) edge (1, object, [operator, ~bject ] , [ [object ( [prim (cube) ] ) ] ] , 2) edge (i, object, [object) , [ [ [object ( [prim (cube) ]) ] , operator (u) [ ) , 3) edge (I, object, [] , [object ( [ [ [object ( [prim (cube) ] ) ] , operator (u) [ , object ( [pri~ (c5'i inder) ]))) ],4) edge (I, part, [~ , [part ( [object ( [ [ [object ( [prim (cubel ] ) ] , operator (u) i , object < [prim (cylinder) 1 ) ] ) ] ) ] , 4) edge(l,object, (object,operator, feature], [3,i) edge (i, objmct, [operator, featurel , I 1object ( Iprim (cube)) ) ] ] , 2) edge (i, object, [feature[ , [ [ [object ( [prim (cube[ ] ) ] , operator (u) ] ] ~ 3) edge (1, object , [ 1 , [object ( [ [ [object ( [prim (cube)) ) ] , operator (u) I . feature ( !przm (cy finder) ]) ]) 1,4) edge(l, part, [) , [part ( [object ( [ [ [object ( [prim (cube) ] ) ) , operator (u) ] , ~eatuze ( [pri m (cylinder) ] ) ) ) ] ) ] , 4) edge(3, feature, (feature.operate(, sub featurel, ~I, Z) edge (3, feature, [operator, sub featu~e~. [ Ifeature ~ [pr~m Icyl~nder! ~) ! ~ ~ ~) edge(3,feature, (sub feature[ [~ feature{ pri~ c},li~e~l} ~cpe;at:~ : i ~ eJge!3~p~rt i o D ~ e c t ~ [~ ~3}

FINAL CHART

Bottom up parse

cube u cylinder

Parse the following

parse (up) ,

let•

I ?- [chartl,comprule,prim]. [LMPE:[MSKSIM~CHARTI.PL consulted (1.040 sec 6052 bytes)) [LMPE: [MSKSIM)COMPRULE.PL consulted (0.080 sec 576 bytes)] [LMPE: [MSKSIM]PKIM.PL consulted (0.130 sec 748 bytes))

Quintus Prclog Release 1.5 {VAX/VM.S) Copyright (C) 1986, Quintus C o m p u t e r

o~eratc~r~u

i,chject

yes i ?-

ject([pri~(cylinder) il~cperatcr{n)],feature[[prir~;wedge)!i))~!~;~,~)

edge(l,part,[),[part([ob3ecti[[[object([prim(cube)!)]

S p a n n i n g Arc edge(l,part,[],[part([object([[[ob3ect([prim(cube)]}],operatcr[ui,~,ch~eqti[c! ject([prim(cylinder)])],operator(n)],object([prim(wedgel]}])!l]l~,6!

edge(3,part,[],[part([object([prim(cylinder}])])],4} edge(3,object,[object,movement],[],3) edge(3,object,[movement],[[object([prim(cylinder)])]],4) e d g e ( 3 , o b j e c t , lobject,movement,object],[],3) edge(3,object,[movement,object],[[object([prim(cylinder)])]],4) edge{3,object,[objeet,operator,object],[],3) edge(3,object,[operator,object],(Iobject([prim(cylinder)])]],4) edge(3,obJect,[ebJect],[[[object([prim(cylinder)])),operator(n)]];5) edge(3,object,[],[object([[[object([prim(cylinder)))],operator(n)],object([prim (wedge)[)[)],6] edge(l,obJect,[),[object([[[object([prim(cube)])],operator(u)],object([[[object ([pri~(cyllnder)])],operatoz(n)),obj~ct(~primlwedge)])])])],6) edge(l,part,[],[part([object([[[object([prim(cube)])),operator(u)],object{[[[ob ject([prim[cylinder]])],operator(n)],object([prim(wedge)])))])])],6) edge(3,object,[object,operator, feature],[],3) edge(3,object,[operator, feature],[[object([prim(cylinder)])]],4) edgQ(3,obJect,[feature],[[[object([prim(cylinder)))],operator(n)]],5) edge(3,obJect,[[,[dbject([[[object([prim(cylinder)])~,operator(nll,~e~ture{[pr~ m(.edge)][])[,~) edge(1,object,[],[object([[[object([prim(cube)))].operator(u)].object([[[ob~ect ([prim(cylinder)])),operator(n)],feature[[prim(wedge)))))])],6) edge(l,part,[[,[part([object([[[object([prim(cube)])],operator(u)],object([[[ob Ject([prim(cylinder)])].operator(n)].feature([prim(wedge)])])])])).6) edge(5.feature,[feature,operator, sub feature[.]).5) e~Q(5.foature,~operator,eubfeature~,[[feature([prim(wedge)])]].6) edge(5,part,[obJect],[],5) edge(5,part,[],[part([object([prim(wedge )])] 6) edge(5,obJect,[obJect.movement].[],5) edge[5,obJect,[movement],[[object([prim(wedge)])]],6) e d g e (5,ob~ect. [object, movement,object). [).5) e~e(5,ob~ect,(movement,obJect],[~object([prim(wedge)~))[,6) edgi(5,obj~ct,[obJectroperator,object],[],5) e d g e ( 5 , o b j e c t , (operator,object), [[object([prim(wedge)))iB,6) edge(5,obJect,[object,operator,feature],[],5) edge(5,obJect,[operator, feature],[[object([prim(wedge)~l]].6!

[[~t

>

O

~#~

>

>

O

>

~w~