embodiments of the invention provide a method , apparatus , and article of manufacture for creating a computer - generated three - dimensional model ( 3d model ) of a utility network that is composed from many network part objects ( or more simply , just “ parts ”). each part inserted into a 3d model may correspond to a real - world component of a utility network . for example , embodiments of the invention may be used to model a utility network such as a gravity pipe system , etc using network parts such as pipes , manholes , catch basins and storm sewers . however , embodiments of the invention are not limited to modeling utility networks of any single type and may be extended to other utility networks . for example , embodiments of the invention described herein may be adapted to model utility networks such as telecommunications networks , pipeline networks , power grid networks etc . in one embodiment , users of a cad application may be provided with a catalog of network parts or part families that may be used to compose the 3d model . the cad application may be configured to allow a user to dynamically size and resize the network parts within the 3d model . typically , the network parts themselves , represent real - world constructs ( e . g ., pipes , catch basins , manholes , etc .). further , many 2d graphical views may be generated using a 3d model , such as various , plan , profile , and section views . when the properties for one part are modified , other parts in the 3d model may be automatically updated . any part visible from a given view may be selected and modified . when a user modifies a part within one view , other views are also dynamically updated to reflect these modifications . similarly , the attributes and annotations regarding a given part may be modified from a single view , and every view of the model that includes the part may also be updated without requiring any further actions by the user . fig1 is a functional block diagram illustrating an exemplary cad environment 100 for generating a 3d computer model 120 of a utility network . in one embodiment , the components illustrated in environment 100 include computer software applications executing on existing computer systems , e . g ., desktop computers , server computers , laptop computers , tablet computers , and the like . the software applications described herein , however , are not limited to any currently existing computing environment or programming language , and may be adapted to take advantage of new computing systems as they become available . additionally , the components illustrated in fig1 may be executing on distributed systems communicating over computer networks including local area networks or large , wide area networks , such as the internet . for example , a graphical user interface 110 may include a software program executing on a client computer system communicating with a cad application 105 and a network parts catalog 130 residing on a networked server computer . as shown , the cad environment 100 includes , without limitation , cad application program 105 , graphical user interface 110 , 3d model 120 , user input devices 145 , display device 115 , and network parts catalog 130 . in one embodiment , the cad application 105 is a computer program configured to allow a user interacting with gui interface 110 to generate a 3d model 120 . preferably , the civil 3d ® application program and associated utilities available from autodesk ®, inc . may be used . cad application 105 stores the all the data , attributes , properties , and geometry data regarding to the real world structure being modeled in 3d model 120 . the graphical user interface 110 may provide gui elements that allow a user to select , add , and modify the network parts ( and part attributes ) included in the 3d model 120 . as a user specifies the characteristics of the utility network being modeled , 3d display device 115 provides a visual representation of the 3d model 120 . the data for the 3d model 120 may be used as to generate the various views or graphical representations of the 3d model 120 as well as to generate 2d engineering and construction documentation for the 3d model 120 . although distinct from one another , each view ( e . g ., profile , plan or a cross - section view ) is generated from a common set of network parts data . input devices 145 allow a user to interact with the 3d model 120 and gui interface 110 . typically , user input devices 145 include a mouse pointing device and a keyboard , and display device 115 is a crt monitor or lcd display . the network parts catalog 130 provides a master collection of parts available for use in composing a 3d model 120 of a utility network . parts in the catalog may be fixed , single - size parts or part of a parametric part family . each network part in catalog 130 provides an individual component that may be selected as an entity for inclusion in 3d model 120 . importantly , parts may themselves be defined as a composite of multiple parts that may be managed as a single entity . in one embodiment , the parts catalog 130 may include network parts representing the pipes , structures , and fittings of a gravity based utility network . a “ pipe ” is a network part serving to move fluids from one point to another . in one embodiment , the cad application 105 models a pipe network part by sweeping the cross - sectional shape of the pipe along a base curve , which may be a line for a straight pipe , or a more complex curve . examples of “ pipe ” network parts include : circular pipes , elliptical pipes , rectangular pipes , egg - shaped pipes , etc . “ pipe ” network parts may be used to connect structures , and a “ structure ” is a network part serving a specific engineering function in the system . examples of “ structure ” network parts include manholes , catch basins , headwalls , flared end sections , etc . “ fittings ” and “ junctions ” are network parts serving to branch pipe flow or alter flow direction , examples include , elbow , wye , tee , cross , etc . to model other utility networks , a different parts catalog may be provided . in one embodiment , a 3d model 120 may include from one or more utility networks . in turn , each utility network may be constructed using a collection of network part elements . further , in some cases a given network part element may itself comprise a composite of two or more network parts that may be manipulated by a user as a single entity . each of these elements used to construct a 3d model of a utility network is discussed more fully below in fig2 - 4 . fig2 is a block diagram 200 illustrating data elements used to define a network part that may be added to 3d model of a utility network , according to one embodiment of the invention . illustratively , network part 210 may include data elements such as network part size data 220 , part connection data 230 , part sub components 240 and part body 250 . each network part 210 may be defined using some or all of these data elements ( 220 - 250 ). further , each network part reflects properties of the real - world object corresponding to the part . therefore , the 3d model 120 composed from the network parts has characteristics mirroring those of a real world utility network . the part size data 220 may include a data record used to store all size parameters and location parameters of a network part 210 that has been added to a 3d model 120 . the part size data may be fixed for a given network part or may be parametric . for example , parametric data may include size values selected from a pre - defined list or selected from a given range . alternatively , multiple parameters may be grouped in a table and be selected together as a row , or size values may be defined as a calculation dependent on other parameter values . once a network part 210 is integrated into a particular 3d model 120 , part connection data may be used to manage connections between the parts 210 and other parts in the 3d model 120 . for example , each network part 210 may have one or more connections to other parts in the 3d model . in one embodiment , a network part 210 may itself be composed of other network parts . accordingly , subcomponent data 240 may provide a list of one or more other parts integrated as a single entity . such a network part may be provided by the catalog 120 . alternatively , the user interface 110 may allow users to group multiple network parts together , and subsequently manipulate the group as a single network part entity . the part body 250 provides a 3d graphical image representing the part that may be used in the 3d model . the part body 250 may also include model data such as part - part interference , part volume , connection rules , etc . in one embodiment , the graphical representation may include data defining a bounding shape that provides an approximate 3d body representing the part as a cylinder , box , or spherical solid , or an indication of a routine used to generate the approximate 3d body from part size data 220 . the graphical representation provides an approximation of the real world appearance of a particular network part . additionally , one individual part may itself be composed from other parts provided by the parts catalog 130 . fig3 shows a graphical representation of a catch basin 300 defined as a composite of other network parts , including a barrel section 310 , an eccentric barrel cap 320 , and a manhole cover 325 . additionally , the barrel section 310 includes input / outlet ports 330 and 340 . each of these components may itself be a network part that may be individually manipulated . further , the catch basin 300 may be selected as a composite network part and inserted into a 3d model 120 . the coordinates in the 3d model where the catch basin 300 is inserted may be selected by the user creating the utility model . when placed at a particular location , the user may also select to connect the catch basin 300 with other network parts already present in the 3d model . for example , a user may specify an existing pipe structure be connected to inlet 330 . in doing so , the size and position of the existing pipe structure may be modified by the cad application 105 to reflect the new connection . fig4 is a block diagram illustrating data elements used to define a 3d model 120 , according to one embodiment of the invention . the 3d model 120 includes one or more utility network systems 410 , each including the network parts of the particular utility network being modeled . in one embodiment , the individual network parts allow a user to compose a 3d model 120 of a utility network from individual parts , much like a real - world utility network . regardless of the particular utility network , each network system 410 includes a collection of inter - connected parts . in addition , the 3d model 120 includes model geometry 450 , terrain model 460 , and network parts list 470 . network parts list 470 may indicate a collection of parts 3d that may be used to compose a particular utility network 410 . depending on the real - world utility network being modeled , network parts list 270 may be used to limit the parts available for inclusion in a particular 3d model 120 . in addition , as the 3d model 120 provides a graphical representation of a corresponding to a real world utility network , the model geometry 450 and terrain model data 460 may define the geography present for a particular location . typically , the geography represents the real - world location being modeled . depending on the application , a 3d model may include one or more terrain models 470 and geometry data 460 that may each be used to represent sections of both existing ground surfaces ( and sub - surfaces ). fig5 illustrates a portion of a 3d model utility network composed from a collection of network parts 310 , according to one embodiment of the invention . in this example , the view 500 in fig5 , illustrates a 3d view of a model 120 zoomed in to focus on a catch basin 300 and pipe 510 . perspective indicator 520 indicates that the view 500 illustrates the 3d model 120 from a 3d perspective using the x and y axes to represent a grid - based location of a part element in the 3d model and the z axis to represent an elevation . any of the catch basin elements may be selected and modified , or other parts may be selected and added to the 3d model . for example , a user may click on one more components of the catch basin 300 , or may select individual components from the list . illustratively , barrel section 310 has been selected , as indicated by the dashed lines . the view 500 also displays part label annotation 530 for the catch basin 300 . the part label corresponds to the network part data for barrel section 310 . the annotation 530 displays parametric values 540 selected for this network part , along with instance data specifying the location 550 of the catch basin 300 in a particular 3d model . this data may be included in documentation generated for the 3d model . further , by modifying any of these values , the user can alter the 3d model without having to manually edit the graphical representation provided for catch basin 300 , or having to edit the same network part in multiple views . fig6 illustrates a profile view 600 of a utility network composed from a collection of network parts , according to one embodiment of the invention . the profile view 600 may be generated directly from the network parts present in 3d model 120 . thus , the 2d profile view 600 is generated from the same collection of network parts ( e . g ., structures 420 , fittings 430 and pipes 440 ) included in the 3d model 120 . further , a 2d view created from the 3d model may be easily edited by changing the attributes associated with a network part , or by changing data values associated with an instance of the network part within the 3d model ( e . g ., data values specifying the location of the part using coordinates of the terrain model 460 ). as changes are made to the model 120 , the profile view 600 may be updated , accordingly . as illustrated , the profile view 600 includes a data display area 610 . the data display area 610 provides a list of network parts available for in the 3d model . for example , utility networks 620 shows a list of one or more utility networks defined for the 3d model . the model display area 630 shows a profile view of the 3d model 120 . perspective indicator 605 has changed to indicate a two dimensional perspective . ground surface boundary 640 is based on the model geometry 250 and terrain model data 460 . illustratively , profile view 600 includes four “ structure ” network parts 650 1 - 4 connected by three pipe network parts 660 1 - 3 . as shown , the network part 650 4 corresponds to the catch basin 300 illustrated in fig3 and plan view 500 . in one embodiment , the cad application 105 may allows a user to select any of the network parts displayed in profile view 600 . in response , the cad application may highlight the selected part and display any data values ( e . g ., part data 220 - 250 ). if a user elects to modify the part , the cad application may be calculate changes throughout parts connected to the one being modified ( e . g ., resizing pipe lengths or repositioning pipe connections ). thus , if after modifying an attribute of catch basin 650 4 , the user selects to return to the plan view 500 , the cad application may regenerate the plan view 500 and display a representation of the utility network that includes changes specified using the profile view 600 . fig7 - 9 illustrate different actions a user interacting with cad application 105 may perform to create display and modify a 3d model of a utility network . in these methods , it is assumed that the user is interacting with a cad application 105 is configured according to an embodiment of the invention , as described above . thus , the cad application 105 may be configured to provide a collection of network parts that may be selected and integrated into a 3d model 120 ; the cad application may allow a user to switch between multiple views , such as plan , profile , and perspective views ; and as network parts are inserted , the cad application 105 may be configured to update the 3d model 120 to reflect which parts are connected to one another . when switching from one view to another , the display of the 3d model 120 remains updated , and construction and engineering documentation may be generated from the data associated with the network parts in the 3d model . first , fig7 illustrates a method 700 for composing a 3d model of a utility network , according to one embodiment of the invention . the method begins at step 710 where a user selects a network part from a parts list . first , the user may select a part from a given part family ( e . g ., a family of similar pipes , or a family of catch basins ). each family provides a group of related network parts . next , at step 720 , the user selects the particular network part family member . at step 730 , the user interface 110 may display the current ( or default ) set of attributes for the selected network part . in response , the user may accept these values or modify them as desired . once the network part to be added to the 3d model is fully specified , at step 740 the cad application 105 generates the appropriate size and instance data for a network part instance included in the 3d model . at step 750 , the cad application 105 integrates the instance of the network parts into the 3d model . at step 760 , the instance of the network part is attached to others , and data values for the part being added , as well as other parts may be adjusted . the method 700 may be repeated for an arbitrary number of network parts allowing users to add as many parts as required to complete a particular 3d model 120 . fig8 illustrates a method for modifying the attributes of utility network parts , according to one embodiment of the invention . the method 800 begins at step 810 where the cad application receives an indication that a user has selected a particular part , or group of parts , to modify . for example , from any view of the 3d model 120 ( e . g ., model view 500 or profile view 600 ), a user may select a given part by clicking on a graphical representation 350 of the part using a mouse cursor . in addition , the display area 630 may provide a list of all network parts included in a given 3d model , whether visible in the current view or not . once selected , at step 820 , the cad application may be configured to display the attributes , or annotation data for the selection . for example , a table of attribute / value pairs may be displayed . once displayed , individual properties may be modified . alternatively , the graphical interface 110 may allow a user to add ( or move ) a network part by dragging and dropping an image of the network part from a catalog display into the currently displayed view of the 3d utility network . doing so triggers the cad application 105 to generate the appropriate network part size and position data 220 . after the user has selected a location within the current view to place the network part , the cad application 105 integrates the part into the geometry of the overall utility network being modeled . at step 830 , the user confirms the modifications for a given network part . in one embodiment , changes are not automatically updated until a user confirms a given action . for example , a user may have carefully positioned a group of parts and not wish the position to be continually disrupted by other changes , until confirming that a given change should be propagated throughout the 3d model of a utility network . if the user rejects the modifications , the 3d model may be revered to a prior state at step 840 , and the method 800 terminates . otherwise , at step 850 if the user confirms the modifications , then the modified values for the network part selected at step 810 are saved . at step 860 , the cad application evaluates any parts connected to the network part just modified to determine if the data for any connected part must also be modified . fig9 illustrates a method for generating engineering or construction documentation from a 3d model of a utility network , according to one embodiment of the invention . the method 900 begins at step 910 where a user interacting with cad application 105 selects to open an existing 3d model or to create a new 3d model ( e . g ., according to the methods illustrated in fig7 and 8 ). once completed , the user specifies a segment of the 3d model and a desired view to use in generating construction or engineering documentation for the model . at step 920 , the cad application retrieves the network part data associated with the selected section and view . in addition , the user may specify that the attributes , labels and annotations should be generated with the requested documentation . for example , labels and part annotations may be included in the requested documentation . at step 930 , the documentation corresponding to the user selection is generated . the disclosed cad application and methods for composing a 3d model of a utility network allow users to construct a utility network from a collection of network parts . further , the network parts are defined to include attributes that mirror the attributes of their real - world counterparts . further , the described methods improve the reliability and speed of editing or revising a 3d model of a utility network . for example , modifications to one network part may trigger updates to occur to any connected parts . users may edit the attributes of the utility network in a 3d model view and subsequently , when 2d construction or engineering documentation is generated , such changes are automatically reflected . similarly , users may also edit attributes regarding network parts appearing in a 2d view such as a plan view or a profile view and the overall 3d model may be automatically updated without the user intervention required by current systems .