You are on page 1of 40

AU Autodesk University 2011 learn.connect, explore Create Subassemblies That Think utside the !

ox "ith Subassembly Composer #or AutoCA$% Civil &$% 'ati (. )ercier, *.+. ,-athan (. .acobson / Associates, 0nc. C01222 0ntended #or existin3 AutoCA$ Civil &$ users, this class explores the potential o# Subassembly Composer #or AutoCA$ Civil &$ 2011 and 2012, available in the Subscription Center. Subassembly Composer provides users 4ith an easy,to,use inter#ace to visually create complex subassemblies 4ithout the need #or advanced pro3rammin3 kno4led3e. "ith #orethou3ht and in3enuity, users can create custom subassemblies to meet their speci#ic needs that can be used a3ain and a3ain once they are imported into Civil &$. (earn 4hat it takes 4ith these in,depth, step,by,step instructions that 4ill 3ive you the skills to 3o back to the o##ice and 4o4 your co4orkers 4ith your o4n custom subassemblies speci#ic to your standards. "ith the subassemblies already available in the Civil &$ tool palette and the subassemblies you create 4ith the tool box in the Subassembly Composer, your corridors 4ill have endless possibilities. Attendees should be #amiliar 4ith the subassemblies available in Civil &$ and ho4 to utili5e them in assembly and corridor creation. (earnin3 b6ectives At the end o# this class, you 4ill be able to7 8 $e#ine appropriate input and tar3et parameters that allo4 #or end user customi5ation once they are imported into Civil &$ 8 Create a complex #lo4chart built 4ith subassembly lo3ic tools available in the tool box 8 0denti#y 9isual !asic expressions and other settin3s that are available #or use 4hen creatin3 subassembly 3eometry or constructin3 conditionals 8 +valuate a #lo4chart and previe4 a subassembly to con#irm that all scenarios have been analy5ed About the Speaker 'ati )ercier, earned her !.S. in civil en3ineerin3 #rom 9ir3inia Tech in 2001. Since then she has 4orked as a pro6ect en3ineer at -athan (. .acobson / Associates, 0nc., a consultin3 civil and environmental en3ineerin3 #irm in Chester, Connecticut. The #irm speciali5es in providin3 en3ineerin3 consultation, revie4, and desi3n to local municipalities and private clients. 'ati has earned her *ro#essional +n3ineerin3 license in the states o# Connecticut and -e4 :ork. ;ecently she has played a si3ni#icant role in transitionin3 the #irm #rom (and $esktop to Civil &$. 'ati is an AutoCA$ Civil &$ 2011 Certi#ied *ro#essional and a contributor to the civil1d.com blo3. She is also an active participant in the Autodesk Subassembly Composer #or AutoCA$ Civil &$ 2011 discussion 3roup. katimercier<3mail.com 444.t4itter.com='$in CT*+ Create Subassemblies That Think utside the !ox "ith Subassembly Composer #or AutoCA$% Civil &$% Autodesk Subassembly Composer #or AutoCA$ Civil &$ The >Subassembly Composer% #or AutoCA$ Civil &$%> ?herea#ter re#erred to as Subassembly Composer@ pro3ram is used to create subassemblies to supplement the stock subassemblies that come 4ith Civil &$. !e#ore composin3 any subassembly, one o# the #irst documents you should examine is the AAutoCA$ Civil &$ Subassembly ;e#erence documentA ?scan B; code at ri3ht or 3o to http7==ima3es.autodesk.com=adsk=#iles=c&dstocksubassemblyhelp.pd# @. 0# you can>t #ind a stock subassembly that 4ill solve your problem, this document 4ill be a bene#icial aid in usin3 terminolo3y and namin3 conventions that are already standard to Civil &$ users. :ou may think that 4hen you make your o4n subassembly that these conventions are not important. !ut you may 4ish to share the assembly 4ith co4orkers and collea3ues in the #uture, or you may return to it a#ter a 4hile and it 4ill be easier to understand i# you use already established namin3 conventions.

The Subassembly Composer consists o# #ive individual 4indo4 panels7 the CTool !oxD, the CElo4chartD, the C*revie4D, the C*ropertiesD, and the CSettin3s and *arametersD. +ach o# these 4indo4 panels may be moved around independently usin3 the dockin3 controls ?icon sho4n at ri3ht@ to serve the user>s needs. At any time the de#ault position can be re3ained by 3oin3 to the 9ie4 menu and selectin3 A;estore $e#ault (ayout.A

2 o# 1& Create Subassemblies That Think utside the !ox "ith Subassembly Composer #or AutoCA$% Civil &$% The CTool !oxD The CTool !oxD is the stora3e location #or elements available #or constructin3 the subassembly. This panel 4ill provide all o# the elements used to build your #lo4chart. There are #ive sections7 Feometry, Advanced Feometry, Auxiliary, "ork#lo4, and )iscellaneous. To use any o# these elements you simply click on the desired element and dra3 and drop it over into the CElo4chartD. The CElo4chartD The CElo4chartD is 4orkspace used to build and or3ani5e the subassembly lo3ic and elements. A #lo4chart could be a simple strai3ht line o# lo3ic or it can be a complex tree o# branchin3 decisions either 4ay al4ays be3innin3 at the Start element. 0# there is a problem 4ith your subassembly a small red circle 4ith an exclamation point 0 4ill be displayed in the upper ri3ht hand corner o# this panel. The C*revie4D

The C*revie4D allo4s you to vie4 your current 3eometry. There are t4o previe4 modes7 8 ;oad4ay )ode 4hich sho4s the subassembly built usin3 any tar3et sur#aces, tar3et elevations, and=or tar3et o##setsG and 8 (ayout )ode 4hich sho4s the subassembly built usin3 only the input parameters ?no tar3ets@. At the bottom o# this panel are t4o checkboxes #or Codes 4hich are sho4n in brackets CD and Comments 4hich are sho4n in parentheses ?@. 0# any Codes or Comments 4ere entered in the properties #or the points, links, or shapes then this in#ormation 4ill be listed next to the applicable 3eometry. The C*ropertiesD The C*ropertiesD is the input location o# the parameters that de#ine each 3eometry element. The CSettin3s and *arametersD The CSettin3s and *arametersD consists o# #ive tabs that de#ine the subassembly7 *acket Settin3s, 0nput= utput *arameters, Tar3et *arameters, Superelevation, and +vent 9ie4er. The Typical "ork#lo4 The typical 4ork#lo4 #or creatin3 a subassembly is broken into six steps. This is the process 4e 4ill be usin3 #or all o# our examples. Eor the purposes o# this handout 4e 4ill re#er to the user o# Civil &$ 4ho is usin3 the subassembly as the A+nd UserA and the user o# the Subassembly Composer 4ho is makin3 the subassembly as the AUserA. The six steps are7 1. Sketch the subassembly or Athe problemA 2. $e#ine the C0nput= utput *arametersD #or the +nd User &. $e#ine the CTar3et *arametersD #or the +nd User 1. !uild the subassembly usin3 the CTool !oxD 2. +valuate your subassembly and modi#y as necessary H. 0mport into AutoCA$% Civil &$% & o# 1& Create Subassemblies That Think utside the !ox "ith Subassembly Composer #or AutoCA$% Civil &$%

+xample 17 9aryin3 Shoulder 1. Sketch the subassembly or Athe problemA7 0n a typical shoulder and dayli3ht scenario, 4e could have a constant shoulder and the dayli3ht location on the tar3et sur#ace is calculated. 0n this #irst example, ho4ever, 4e instead have a kno4n dayli3ht tar3et location ? ##set@ and the shoulder 4idth is variable based on the shoulder slope and dayli3ht slope. This scenario allo4s the +nd User to provide a lar3e shoulder #or #uture development 4ithin a pre,established ri3ht o# 4ay. There may be some instances 4here the +nd User 4ants to maintain a minimum shoulder 4idth due to excessive cuts=#ills. 0n 4hich case, the o##set tar3et 4ill not be used and an easement 4ould be reIuired. Usin3 current Civil &$ #unctionality this could be obtained by #indin3 the intersection 3enerated #rom t4o sur#aces ?one temporary sur#ace usin3 a 3radin3 ob6ect 4ith a #eature line at *1 and 3eneratin3 the shoulder slope extended beyond the intersection, and one temporary sur#ace usin3 a 3radin3 ob6ect #rom a #eature line at the desired dayli3ht location 4ith the tar3et sur#ace elevations and 3eneratin3 the dayli3ht slope beyond the intersection@. To #ind the intersection you 4ould 3enerate a volume tin bet4een these t4o temporary sur#aces and usin3 the 0 elevation volume contour as the tar3et #or the #inished sur#ace>s shoulder location and then manually ad6ust #or the minimum shoulder. This procedure is cumbersome and reIuires reanaly5in3 the shoulder tar3et at every chan3e in desi3n. 0nstead, 4e can create a sin3le dynamic corridor model usin3 Subassembly Composer that 4ill save us a 3reat deal o# time. "e 4ill #irst de#ine the C*acket Settin3sD, 4hich includes the Subassembly -ame, $escription, Jelp Eile, and 0ma3e. This in#ormation 4ill be sho4n on the Tool *alette once

imported into Civil &$. The Jelp Eile and 0ma3e are optional ho4ever to add them simply click on the C...D button to the ri3ht o# the entry #ield to bro4se to the location.

1 o# 1& Create Subassemblies That Think utside the !ox "ith Subassembly Composer #or AutoCA$% Civil &$% 2. $e#ine the C0nput= utput *arametersD #or the +nd User7 Eor each variable that 4e 4ant the +nd User in Civil &$ to have ability to chan3e 4e must de#ine an input parameter. The #irst line in the 0nput= utput *arameters tab 4ill al4ays be #illed in #or you 4ith ASide.A 0# you 4ish to disable this parameter #or the +nd User, set the $e#ault 9alue as A-one.A 0n this example 4e 4ill dra4 the curb as i# it is on the ri3ht side and i# the +nd User s4itches the Side to (e#t then the subassembly 4ill mirror itsel# as de#ined. The #irst #our columns ?-ame, Type, $irection, and $e#ault 9alue@ must be #illed in. The last t4o columns ?$isplay-ame and $escription@ are optional. 0# no $isplay-ame is provided, the -ame 4ill be displayed #or the +nd User in Civil &$. There are a total o# ei3ht 0nput= utput *arameter Types provided in the pro3ram ?you can make more types usin3 +numeration 4hich 4e 4ill discuss later@. 0n this example 4e 4ill be usin3 $ouble numbers, 4hich allo4 #or decimal precision, alternatively you could limit the +nd User to inputtin3 0nte3er numbers, 4hich allo4s only 4hole number values. "e 4ill also be usin3 Slope ?Jori5ontal79ertical@, Frade ?K@, and Strin3 ?text@. Eor this example 4e 4ill not be de#inin3 any utput *arameters. To add a parameter, click the 4ords ACreate parameterA. 0# you inadvertently add too many parameters, select the one you 4ould like to delete and press the $elete key on your keyboard.

2 o# 1& Create Subassemblies That Think AutoCA$% Civil &$%

utside the !ox "ith Subassembly Composer #or

&. $e#ine the CTar3et *arametersD #or the +nd User7 There are three types o# Tar3ets that can be used7 ##set, +levation, and Sur#ace. 0n this example 4e have t4o reIuired tar3ets that the +nd User must use. The #irst is the tar3et o##set #or the dayli3ht, and the second is the tar3et sur#ace. The o##set tar3et can be an ali3nment, polyline, #eature line, or survey #i3ure. .ust like 4ith the 0nput= utput *arameters, to add a parameter click the 4ords ACreate parameterA. 0# you inadvertently add too many parameters, select the one you 4ould like to delete and press the $elete key on your keyboard.

-ame Tar3et ##cet Tar3etSur#ace

Type ##set Sur#ace

*revie4 9alue 10 2

$isplay -ame Tar3et $ayli3ht Tar3et Sur#ace ##set

Create parameter *acket Settin3s 0nput= utput,,. Superelevation +vent 9ie4er Tar3et *a ram 1. !uild the subassembly usin3 the CTool !oxD7 The #ull Elo4chart is available at the end o# the buildin3 procedure on pa3e 11 #or your re#erence. The buildin3 procedure has been provided in t4o columns, at le#t is the step by step procedure and at ri3ht is a commentary. a. $ra3 and drop a SeIuence element #rom the "ork#lo4 section o# the CTool !oxD to the CElo4chartD. 0t 4ill automatically connect to the Start element. :ou 4ill notice that all elements have multiple connection nodes, at any time you can click on a connection arro4 and dra3 it to an alternate connection node. $ouble,dick to vie4 2 o# 1&

Create Subassemblies That Think utside the !ox "ith Subassembly Composer #or AutoCA$% Civil &$% b. ;ename the SeIuence by clickin3 once on the name o# the element and chan3in3 it to *ositive9ariables. The double click into the SeIuence to add elements. c. $ra3 and drop a $e#ine 9ariable element ?$ayli3htSlope@ #rom the )iscellaneous section o# the CTool !oxD to the *ositive9ariables seIuence and set the properties as sho4n7

d. $ra3 and drop a $e#ine 9ariable element ?)inShoulder@ #rom the )iscellaneous section o# the CTool !oxD to the *ositive9ariables seIuence and set the properties as sho4n7

e. +xit out o# the SeIuence click the Elo4chart in the nest links at the top o# the CElo4chartD panel. 0n this example there are t4o 0nput *arameters 4hich the +nd User must enter as positive values. 0n order to avoid any lo3ic errors 4e are #irst 3oin3 to #ind the absolute value o# these t4o inputted parameters and use those in the remainder o# the calculations. A variable is similar to an input parameter, ho4ever it is de#ined by you instead o# the Civil &$ +nd User. )ath.abs?@ is one o# many math 9isual !asic ?9!@ expressions that can be used in calculations. Additional math 9! expressions can be #ound in the Appendix o# this handout. The Cut=Eill $ayli3ht Slope should be positive since in this subassembly the same slope 4ill be used #or cut and #ill there#ore the lo3ic 4ill de#ine the L or , and not by the +nd User. The )inimum Shoulder "idth should be positive since the side is bein3 de#ined by the Side parameter.

H o# 1& Create Subassemblies That Think utside the !ox "ith Subassembly Composer #or AutoCA$% Civil &$% $ra3 and drop a $ecision element #rom the "ork#lo4 section o# the CTool !oxD to the #lo4chart belo4 the *ositive9ariables SeIuence. 0t 4ill automatically connect to the SeIuence element. 3. $e#ine the Condition #or the $ecision as #ollo4s7 )ise

Condition Tn6e(abel

#Tar3et ##set.s9alid.A-$rar3etSur#ace.0s9alid@ B Ealie(abel Tn6e

Ealte

h. $ra3 and drop a ;eport )essa3e element #rom the )iscellaneous section o# the CTool !oxD to the ri3ht ?#alse@ side o# the $ecision element and de#ine as #ollo4s7

0# it connects to or #rom the 4ron3 connection node, simply click on the connection arro4 and press the $elete key on your keyboard, then hover over the $ecision element and click on the Ealse connection node and dra3 it to connect to the ;eport +rror. Since the t4o tar3et parameters are reIuired, 4e 4ill provide an error messa3e to the *anorama in Civil &$ alertin3 the +nd User i# they try to run the corridor 4ithout these tar3ets provided. To do this 4e 4ill Iuery 4hether the both tar3ets have valid input. 0n order to test t4o elements at the same time 4e are usin3 the ?@A-$?@ expression. 0n each set o# parenthesis 4e are 3oin3 to use a Subassembly Composer Application *ro3ram 0nter#ace ?A*0@ #unction called A0s9alidA 4hich is available #or all o# the Tar3et classes. Additional A*0 expressions are available in the Appendix o# this handout. -ote that i# you click on the trian3le #la3 in the upper ri3ht hand corner o# the $ecision element the Condition expression 4ill remain visible. 0# you hover over the $ecision element you 4ill see that the True is on the le#t and the Ealse is on the ri3ht. An easy 4ay to remember 4hat side is true or #alse #or a decision element is to think >;i3ht side means it>s 4ron3>. "e 4ill 4ant to 3ive the +nd User an error i# one or both o# the tar3ets are not valid. There are three types o# +rror (evels7 +rror, 0n#ormational, and "arnin3 #. M o# 1& Create Subassemblies That Think utside the !ox "ith Subassembly Composer #or AutoCA$% Civil &$% $ra3 and drop a *oint element ?*1@ #rom the Feometry section o# the CTool !oxD to the le#t ?true@ side o# the $ecision element and let it keep its de#aults o# bein3 located at the ri3in and bein3 named *1.

$ra3 and drop an Auxiliary *oint element ?A*1 @ #rom the Auxiliary Feometry section o# the CTool !oxD to belo4 *1 and de#ine as #ollo4s7

The ori3in is the 3eometry point that your subassembly 4ill attach to 4hen 3eneratin3 an assembly in Civil &$. There are nine di##erent *oint Feometry Types.

An auxiliary point or an auxiliary link are used #or subassembly 3eneration but are not displayed in Civil &$. They are use#ul #or intermediate 3eometry such as this case. 0n this example 4e 4ill be placin3 the #irst auxiliary point at the minimum shoulder location and have added a Comment re#lectin3 that. These Comments can be vie4able in the C*revie4D panel. -ote that you can expand or collapse any o# the *roperty elements by clickin3 on the trian3le to the le#t ?ex. (ink@. Eor any o# the ima3es provided in this handout that have a property collapsed, you can assume that the de#ault values 4ere utili5ed. i. 6. N o# 1& Create Subassemblies That Think utside the !ox "ith Subassembly Composer #or AutoCA$% Civil &$% k. $ra3 and drop an Auxiliary *oint element ?A*2@ to belo4 A*1 and de#ine as #ollo4s7 O *oint *oint -umber A*2 A *oint Feometrv Type Type $elta P on Sur#ace . *oint Feometry *roperties Erom *oint ri3in $elta P 1C Sur#ace Tar3et 0T Tar3etSur#ace ##set Tar3et ?overrid CTar3et ##setQ R (ink 1 )iscellaneous

Comment TestTan3et $elta: #or (ayout )oi 0 l. $ra3 and drop a $ecision element to belo4 A*2 and de#ine as #ollo4s7

The second auxiliary point is located on the tar3et sur#ace at the tar3et o##set. "e do not 4ant to put a normal point at this location yet because 4e do not kno4 i# this point 4ill be used or i# it 4ill be overridden 4ith the minimum shoulder test. -ote that the $elta P is purely #or layout purposes and 4ill not be used since this element is in a branch that has already tested that the Tar3et ##set is valid. This decision element tests to #ind i# the slope bet4een A*1 and A*2 ?de#ined by the *oint Class SlopeTo A*0 Eunction A*l.SlopeTo ?AA*2A@@ is steeper than the dayli3ht slope provided by the +nd User. 0# it is not steeper, 4e 4ill calculate the shoulder location usin3 the tar3et location. 0# it is steeper than the $ayli3htSlope variable, that means that the minimum shoulder value should be used and a ne4 dayli3ht location must be calculated. 0n order to provide a visual cue to the vie4er o# the #lo4chart, you can edit the True and Ealse labels to act as a reminder o# 4hat the true and #alse mean. 0n this example, the #alse 4ill calculate the hin3e point and the true 4ill use the minimum shoulder as the hin3e point. S o# 1& Create Subassemblies That Think utside the !ox "ith Subassembly Composer #or AutoCA$% Civil &$% m. $ra3 and drop a *oint element ?*2@ to the le#t ?true@ side o# the )inimum Shoulder $ecision element and de#ine as #ollo4s7

n. $ra3 and drop a *oint element ?*&@ to belo4 *2 ?)in Shoulder@ and de#ine as #ollo4s7

-ote that the Slope expression reads as #ollo4s7 0E?*2.distancetosur#ace?Tar3etSur#ace@R0, ,$ayli3htSlope, $ayli3htSlope@ "e 4ill #irst de#ine the lo3ic usin3 the minimum shoulder. Since 4e already have an auxiliary point at the minimum shoulder hin3e location, there is no need to recalculate the location, so 4e 4ill simply match the location o# A*1. Since the $ayli3htSlope variable is positive, 4e 4ill ad6ust the slope to be positive or ne3ative usin3 an 0E statement. This statement tests to see i# the vertical distance #rom point *2 to the tar3et sur#ace is 3reater than 5ero, i# true then it is in #ill and the ne3ative slope should be used, i# #alse then it is in cut and the positive slope should be used. 0# an expression becomes too lon3 to be #ully visible, simply click the C...D button to the ri3ht o# the expression to open the +xpression +ditor 4indo4 to see the #ull expression.

10 o# 1& Create Subassemblies That Think utside the !ox "ith Subassembly Composer #or AutoCA$% Civil &$% o. $ra3 and drop a *oint element ?renamed to also be *&@ to the ri3ht side o# the )inimum Shoulder $ecision element and de#ine as #ollo4s7

p. $ra3 and drop an 0ntersection *oint element ?renamed to also be *2@ #rom the Advanced Feometry section o# the CTool !oxD to belo4 *& ?Tar3et $ayli3ht@ and de#ine as #ollo4s7

-ote that the Slope 2 expression reads in #ull as #ollo4s7 0E?A *1. Slopeto ?AA *2A@ RShoulderFrade, $ayli3htSlope, ,$ayli3htSlope@ This point is located at the tar3et dayli3ht. Since 4e already have an auxiliary point A*2 at that location, the point location does not need to be recalculated. The Subassembly Composer 4ill not allo4 you to duplicate a point number in a branch o# lo3ic but you are allo4ed to duplicate a point number i# they are in separate branches o# lo3ic. 0n order to maintain consistency 4e 4ill continue to use *& #or the dayli3ht point and *2 #or the hin3e point. An intersection point allo4s you to #ind the location 4here t4o slopes intersect 4hich is per#ect #or this example. "e 4ant the #irst slope to be the shoulder 3rade and 4e 4ant to second slope to be the dayli3ht 3rade ?either positive or ne3ative as appropriate #or i# the situation is cut or #ill respectively@. Eor Slope 2 4e have used an 0E statement to test i# the slope #rom A*1 to A*2 is 3reater than the shoulder 3rade. 0# true a positive dayli3ht slope 4ill be used and i# #alse a ne3ative dayli3ht slope 4ill be used. Slope 2 ?the dayli3ht slope@ is extended meanin3 that it extends out o# both sides o# *oint 2 and not 6ust in one direction. +xperiment 4ith the extendin3 and reversin3 slopes to #ind the combination that 4orks best #or your situation. 11 o# 1& Create Subassemblies That Think utside the !ox "ith Subassembly Composer #or AutoCA$% Civil &$% I. s. $ra3 and drop a SeIuence element to belo4 the current lo3ic. 0t should automatically connect to either o# the end elements, *& ?$ayli3ht verride@ or *2 ?Calc Shoulder@. Add an additional connection arro4 so that the branched lo3ic both uses the same seIuence. ;ename the SeIuence as (inks and double click into the SeIuence to add elements.

r. $ra3 and drop a (ink element ?(1@ #rom the Feometry section o# the CTool !oxD into the (inks SeIuence and de#ine as #ollo4s7

$ra3 and drop a (ink element ?(2@ to belo4 (1 in the (inks SeIuence and de#ine as #ollo4s7

+ach element can only have one exitin3 connection arro4 ?4ith the exception o# $ecisions and S4itches@ but it can have multiple incomin3 connection arro4s to combine lo3ic. Since 4e maintained consistency o# point *2 bein3 the hin3e point, 4e can use the same link to de#ine the shoulder #or all scenarios. 0n this example 4e allo4ed the +nd User to de#ine the (ink Codes throu3h an 0nput *arameter strin3, i# 4e 4ere hard enterin3 the (ink Codes here 4e 4ould need to include the Iuotation marks ?ex. ATopA, A$atumA@ (ike link (1, by maintainin3 consistent point numbers, 4e can use the same link to de#ine the dayli3ht link #or all scenarios. The *'T #ile 4ill be available #or do4nload #rom the AU2011 C01222 class 4ebsite a#ter the associated lecture is 3iven. 12 o# 1& Create Subassemblies That Think utside the !ox "ith Subassembly Composer #or AutoCA$% Civil &$%

2. +valuate your subassembly and modi#y as necessary7 !e#ore #inali5in3 a subassembly it is important to pay attention to some key components in the C*revie4D panel. 0n this example, the #irst thin3 that 4e 4ant to do is select the checkbox #or Codes. This 4ill allo4 the codes 4hich are assi3ned to the points, links, and shapes to display. Eor each example you 4ant to check to make sure that the links have the desired link codes, that any points have the desired point codes, and that the shapes have the desired shape codes. 1& o# 1& Create Subassemblies That Think utside the !ox "ith Subassembly Composer #or AutoCA$% Civil &$% *revie4 *revie4 3eometries in C ;oad4ay, mo# .Tar3et ##set TQQ,,,,,, QQQQU,, ,,A (lpop, $atumD *S,#yin3,eD

(2V#apr $atumD & C$ayli3 htD WX1 Codes n Comments Eit to Screen The next thin3 to check #or any subassembly 4ith tar3ets is that the subassembly is #unctional #or all potential tar3et values. :ou can easily assess the tar3ets by either chan3in3 the previe4 value in the CTar3et *arametersD tab or by dra33in3 the various tar3ets in the C*revie4D panel. )ake certain you are previe4in3 the 3eometry in ;oad4ay )ode. 0n this example 4e 4ill #irst make certain that the Tar3et ##set is overridden 4hen the minimum shoulder decision is tri33ered. -ote that 0 have turned on the Comments to con#irm 4hich points are bein3 used #rom the di##erent branches o# lo3ic. *revie4 *revie4 3eometries in W ;oad4ay mode TD .Tar3et ##e+t Y)tZ .lk(iulr.er@ T[v.i*2CTest Tar3et@ *& ?Tar3et $ayli3ht@ Eit to Screen Tan3etSu r#ace

QQQQQQQQQQQQQQQQQQ(0 R Tar3etSu r#ace J0 Codes J Comments *revie4 *revie4 ;oad4ay 3eometries in mode T 6Tar3st ##eet \[7 ,,,,(0

Tar3etSu r#ace J0 Codes 0 Comments

Q..*l#Test )ir Shoulder@ QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ......A*2lTTt Tar3et@ QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ QQQQQQQQQQQQQQQQQQQQQQQQQQQQQ *&C$ayli3ht verrids] WEit to Screen

11 o# 1& Create Subassemblies That Think utside the !ox "ith Subassembly Composer #or AutoCA$% Civil &$% "e 4ill also test di##erent values o# the Tar3etSur#ace. 0 have sho4n t4o examples belo4. 0 recommend #or all subassemblies tryin3 a lar3e positive value, a lar3e ne3ative value, and then on either L=, side o# every point, since these tend to be the areas 4here decision ran3es are most likely to have errors.

H. 0mport into AutoCA$% Civil &$%7 nce you are ready to import your subassembly into the Civil &$ Tool *alette. Save your *'T #ile and open up Civil &$. To import the subassembly 3o to the 0nsert tab in Civil &$, expand the 0mport panel, and select 0mport Subassemblies. The 0mport Subassemblies 4indo4 as sho4n on the #ollo4in3 pa3e 4ill open. !ro4se to your *'T #ile and add it to a Tool *alette ?in this example, 0>ve made a custom tool palette #or all o# my AU subassemblies@.

12 o# 1& Create Subassemblies That Think AutoCA$% Civil &$%

utside the !ox "ith Subassembly Composer #or

Jere is the road assembly created usin3 the stock Civil &$ subassemblies #or the road ?(aneSuperelevationA ;@, curb ?UrbanCurbFutterFeneral@, and our custom 9aryin3Shoulder subassembly7

0n this picture o# the corridor usin3 this subassembly you can see on the northerly side o# the road ho4 the minimum shoulder 4as maintained and the tar3et o##set line ?sho4n as a dashed red line@ is overridden 4hile on the southerly side o# the road the tar3et o##set 4as maintained and the shoulder 4idth varies.

1H o# 1& Create Subassemblies That Think utside the !ox "ith Subassembly Composer #or AutoCA$% Civil &$% +xample 27 *recast Concrete Curb 1. Sketch the subassembly or Athe problemA7 This is a construction detail #or concrete curbin3 that our o##ice #reIuently uses and 4hile 4e can 3enerate a proposed top sur#ace that is similar, it does not include the radius at the top 3utter ed3e. There#ore this is a 3ood candidate #or a Subassembly Composer 3enerated subassembly. (ike the previous example 4e 4ill #irst de#ine the C*acket Settin3sD.

Subassembly Subassembly -ame StandardConcreteCuib $escription Standard precast concrete curb 4ith optional tar3et elevation. Jelp #ile B 0ma3e C7ZU tersZ'atiZ$ropbo'ZAU 201 lZSu basse m bli et #or classy rna3esv*recastConcreteCurb6p3 ?ATTW *acket Settin3s 0nput= utput *arameters Tar3et *arameters Superelevation +vent 9ie4er 2. $e#ine the C0nput= utput *arametersD #or the +nd User7 The Subassembly Composer is unitlessG ho4ever, once you import a #ile into Civil &$ it 4ill use the de#ault units ?#eet or meters@ that Civil &$ is usin3 4hen the subassembly is imported. 0n this example 0 4ill assume that it 4ill be used in Civil &$ 0mperialG ho4ever, you 4ill notice 0 am 3oin3 to ask the +nd User #or the len3th and depth dimensions in inches instead o# #eetG pay attention 4hen 4e are buildin3 the 3eometry because each o# these values 4ill be divided by 12 to build the subassembly in #eet as reIuired by the de#ault units. As a reminder to mysel#, 0 like to su##ix any variables that 0 am askin3 the +nd User to provide in inches 4ith A0-A to remind mysel# to convert back into #eet in the #lo4chart. -ame Type $irection $e#ault 9alue $isplay-arne Side Side 0nput ;i3ht TopCurb"idth0- $ouble 0nput H Top o# Curb "idth ?in@ !ottom Curb"idth0Eront;adius0!ack ;ad ius0$oub e . $ouble $oub e 0nput 0nput 0nput 0nput 0nput 0nput U 1 0 22 r 2C W1S.0071 !ottom o# Curb "idth ?in@ ;adius o# Curb Futter +d3e ?in@ ;adius o# Curb !ack +d3e ?in@ Jei3ht o# Curb ;eveal ?in@ Total Jei3ht o# Curb ?in@ WTop o# Curb Slope

;eveal J ei3htl- . $ouble TotalCurbJei3h^ $oub e TopCurbSlope Slope Create parameter

1M o# 1& Create Subassemblies That Think utside the !ox "ith Subassembly Composer #or AutoCA$% Civil &$% &. $e#ine the CTar3et *arametersD #or the +nd User7 Eor this example there are no Tar3et *arameters 4hich makes this step o# the process simple. 1. !uild the subassembly usin3 the CTool !oxD7 !e#ore buildin3 the lo3ic #or your subassembly, it is sometimes help#ul to dra4 in the points on your ori3inal sketch and number them seIuentially ?6ust like a AConnect The $otsA dra4in3@ and similarly label each link bet4een a pair o# points. :ou 4ill 4ant a point at every chan3e in direction o# a link. As you can see by the #inished seIuence at

ri3ht, 4e can>t al4ays de#ine the points seIuentially in the lo3ic but it 4ill make much more sense i# your point numbers are continuous around a shape.

Similar to the last example, the buildin3 procedure has been provided in t4o columns, at le#t is the step by step procedure and at ri3ht is a commentary.

1S o# 1& Create Subassemblies That Think utside the !ox "ith Subassembly Composer #or AutoCA$% Civil &$% a. $ra3 and drop a SeIuence element to belo4 the Start element. $ouble click into the SeIuence to add elements. b. $ra3 and drop a *oint element ?*1@ into the SeIuence and de#ine as #ollo4s7

c. $ra3 and drop an Auxiliary *oint element ?A*1 @ to belo4 *1 in the SeIuence and de#ine as #ollo4s includin3 the creation o# Auxiliary (ink element ?A(1@7

!ecause this is Astrai3ht line lo3icA ?no decisions, al4ays the same 3eometry@ 4e are 3oin3 to build the entire subassembly lo3ic inside o# a SeIuence. As previously stated, the Subassembly ;e#erence is a 3ood place to 3et help in decidin3 point codes. Unlike the last example, because the code is bein3 de#ined by the +nd User and is not a strin3 input parameter, 4e must place the Iuotes around the 4ord to convert it into a strin3. *oint A*1 4ill be placed at the point o# intersection #or the #ront radius curve. 0n order to dra4 the radius 4e 4ill need to remember that since all o# the 0nput *arameters are in inches, 4e are dividin3 the dimensions by 12 to convert the subassembly into #eet. "ith each point or auxiliary point there is the option to add a link or auxiliary link #rom the AErom *ointA to the point or auxiliary point bein3 3enerated. 0n this case 4e 4ill soon be de#inin3 the #ront radius link bet4een t4o links so 4e 4ill take this opportunity to de#ine the #irst o# these t4o auxiliary links needed later. 20 o# 1& Create Subassemblies That Think utside the !ox "ith Subassembly Composer #or AutoCA$% Civil &$% d. $ra3 and drop an Auxiliary *oint element ?A*2@ to belo4 A*1/A(1 in the SeIuence and de#ine as #ollo4s includin3 the creation o# Auxiliary (ink element ?A(2@7 e.

$ra3 and drop a Eillet Arc element ?renamed (2@ #rom the Advanced Feometry section o# the CTool !oxD to belo4 A*2/A(2 in the SeIuence and de#ine as #ollo4s includin3 the creation o# *oint elements ?renamed *2 and *&@7

Similar to A*1, this 4ill be the point o# vertical intersection #or the back radius curve. 0n addition, 4e 4ill once a3ain create an auxiliary link to be used in de#inin3 both the #ront and back radius links. -o4 that 4e have an auxiliary link #or each tan3ent o# the #ront radius 4e can de#ine the #illet arc link bet4een the t4o auxiliary links and at the same time 3enerate the points at the points o# tan3ency The tessellation o# an arc is the number o# se3ments that are 3enerated to create the arc.

21 o# 1& Create Subassemblies That Think utside the !ox "ith Subassembly Composer #or AutoCA$% Civil &$% $ra3 and drop a (ink element ?renamed (1@ to belo4 (2/*2/*& in the SeIuence and de#ine as #ollo4s7

3. $ra3 and drop a *oint element ?renamed *H@ to belo4 (1 in the SeIuence and de#ine as #ollo4s7

h. $ra3 and drop an Auxiliary (ink element ?A(&@ to belo4 *H in the SeIuence and de#ine as #ollo4s7

This 3enerates a link at the #ace o# curb. This point is located at the back bottom o# curb. "e are not 3eneratin3 a link at this time #rom A*2 to *H because 4e do not need=4ant the link to extend above the radius instead 4e 4ant to 3enerate an auxiliary link. :ou cannot create an auxiliary link at the same time as a point, or a link at the same time as an auxiliary point. This 4ill create the auxiliary link re#erenced in the previous step. A(2 and A(& 4ill be used to 3enerate the back radius link. #. 22 o# 1& Create Subassemblies That Think utside the !ox "ith Subassembly Composer #or AutoCA$% Civil &$% $ra3 and drop a Eillet Arc element ?renamed (1@ to belo4 A(& in the SeIuence and de#ine as #ollo4s includin3 the creation o# *oint elements ?renamed *1 and *2@7

$ra3 and drop a (ink element ?renamed (&@ to belo4 (1/*1/*2 in the SeIuence and de#ine as #ollo4s7

k. $ra3 and drop a (ink element ?(2@ to belo4 (& in the SeIuence and de#ine as #ollo4s7

This step 4ill 3enerate the #illet arc link #or the back o# the curb 6ust like the #illet arc link (2 4as 3enerated #or the #ront o# the curb. 0n this example 0 have chosen to de#ine this back arc 4ith the ATopA link code and anticipate connectin3 a shoulder sur#ace to point *2.

"e 4ill continue to add the points and links as ori3inally sketched. i. 6. 2& o# 1& Create Subassemblies That Think utside the !ox "ith Subassembly Composer #or AutoCA$% Civil &$% $ra3 and drop a *oint element ?renamed *M@ to belo4 (2 in the SeIuence and de#ine as #ollo4s includin3 the creation o# (ink element ?(H@7

m. $ra3 and drop a (ink element ?(M@ to belo4 *M/(H in the SeIuence and de#ine as #ollo4s7

n. $ra3 and drop a Shape element ?S1@ #rom the Feometry section o# the CTool !oxD to belo4 *M/(H in the SeIuence and de#ine as #ollo4s7

"hen addin3 a shape element you must have a closed set o# links. To pick the shape, do not take time to #i3ure out the name o# each link and try to Add (ink and type in the links, instead click the 3reen selection icon 8 to the ri3ht o# the entry #ield and click on the shape in the C*revie4D panel, 6ust like you 4ould 4hen de#inin3 a hatch in AutoCA$. 0# you 4ant to chan3e to a di##erent shape simply select the 3reen selection icon a3ain and reselect the ne4 shape, the list o# links 4ill update #or you. The *'T #ile 4ill be available #or do4nload #rom the AU2011 C01222 class 4ebsite a#ter the associated lecture is 3iven. l. 21 o# 1& Create Subassemblies That Think utside the !ox "ith Subassembly Composer #or AutoCA$% Civil &$% 2. +valuate your subassembly and modi#y as necessary7 (ike the previous example you 4ill 4ant to check that Codes are properly assi3ned. H. 0mport into AutoCA$% Civil &$%7 (ike the previous example you 4ill import the subassembly into a Civil &$ Tool *alette usin3 the 0mport Subassemblies command. Jere is the road assembly created usin3 the stock Civil &$ subassemblies #or the road ?(aneSuperelevationA ;@, our custom precast concrete curb subassembly, shoulder ?(ink"idthAndSlope@, and dayli3ht ?(inkSlopeToSur#ace@7

Jere you can see the tessellation points created by the #illet arc as sho4n in the assembly7

22 o# 1& Create Subassemblies That Think utside the !ox "ith Subassembly Composer #or AutoCA$% Civil &$% +xample &7 (ink )ax Slope 1. Sketch the subassembly or Athe problemA7 A person revie4in3 my plans recently came to me and in#ormed me that there 4as a horrible error 4ith my plans. They 4ere scalin3 perpendicular to the dayli3ht contours and noticed that the hori5ontal distance across a &> vertical chan3e 4as 2.N2> 4hich 4as steeper than the acceptable 271 ?it 4as in #act 1.S271@. 0 kindly pointed out that the slope is dra4n based on the road cross section 4hich scaled as H.00>, as expected. A#ter much discussion there 4as 6ust no a3reein3 to be had and so 0 did a Iuick and dirty #ix and set the cross slope to 2.171 instead o# 2.071 and everythin3 4as conservatively lar3er than the acceptable 271. This problem arose because the slope o# the baseline pro#ile and the perpendicular cross slope combine to make the slope as measured perpendicular to the contours. "hen 0 learned that the Subassembly Composer could per#orm calculations usin3 an A*0 Eunction problem could #inally be dynamically solved.

#or the baseline 3rade 0 kne4 that the 0n order to calculate the link slope based on the pro#ile slope and the maximum allo4able slope 4e are 3oin3 to turn to the rules o# 3eometry. "e 4ill dra4 a trian3le 4ith le3 AC parallel 4ith the pro#ile baseline and le3 A! perpendicular to the pro#ile baseline. "e 4ill de#ine points ! and C alon3 the same contour. "e 4ill ultimately 4ant to #ind the value

o# the slope alon3 le3 A$ ?Sad@ in terms o# Sad ?the maximum allo4able slope@ and Sac ?the pro#ile baseline slope@ 4hich are both kno4n values. Since the elevation alon3 line !$C is all the same there#ore the elevation chan3e #rom A to $ is the same as the elevation chan3e #rom A to C, _,(ad ZSad @ \ _(ac ZSac @ there#ore Since Sad

2H o# 1& Create Subassemblies That Think utside the !ox "ith Subassembly Composer #or AutoCA$% Civil &$% and Sac are kno4n values and 4e can assume that (ac is kno4n based on the elevations ?lac Zsac @ assumed #or A, !, and C, 4e can solve #or (A$7 (A The trian3le A$,$C,CA .A`[ ?Sad @ is a ri3ht trian3le 4hich can be de#ined by the *ytha3orean Theorem7 ?lad @2 L ?lcd @2 \ ?lac @2 . Since no4 (AC and (A$ are kno4n, 4e can solve #or (C$7 ( , T?(ac @2 [ ?(A$@2 . The trian3le A!C and trian3le $AC are similar trian3les 4ith the same an3les there#ore their sides are ratios o# one another 4hich can be de#ined as ( ab ( ad Since no4 (ac, (ad, and (cd are kno4n, 4e can solve #or (ab7 (A! \ T(adT(ac @. As ori3inally stated, the elevation alon3 line !$C is all the same, ( cd there#ore the elevation chan3e #rom A to ! is the same as the elevation chan3e #rom A to C, there#ore ?(ab @?Sab @ \ ?(ac @Sac @. Since (A!, (AC, and SAC are all kno4n values, 4e can Q ?lac Zsac @ solve #or Sab7 Sab that S 6ac Ay ac , _(ab @ Eillin3 in the solved eIuation #or (ab and simpli#yin3, 4e 3et >ab v ac a cdR= Eillin3 in the solved eIuation #or (C$ and simpli#yin3, 4e 3et that _(ad @ _sac Zlilac @ [ ?lad @2 ?(ad @ Eillin3 in the solved eIuation #or (ad and simpli#yin3, 4e 3et the #inal solution o# SA! usin3 the kno4n SAC and SA$7 SAi! \ ?Sa$ @ 1 1 ac 9 sad . -ote that 4e

are keepin3 Sac such that the si3n ?L=,@ o# this slope is maintained i# needed, i# 4e do not 4ant to maintain the si3n then 4e 4ill use the absolute value o# SAC. So 4hat does this really meanX 0t means that i# the pro#ile 3rade is 0K then the calculated link slope 4ill eIual the maximum allo4able 3rade, but as the pro#ile 3rade increase ?or decreases@ then the link 3rade 4ill decrease to maintain the maximum allo4able 3rade. This is displayed in the #ollo4in3 table. Calculated (ink Frade *ro#ile Frade ?K@ ?K@ 0.0K 2.0K 10.0K 12.0K 12.0K )aximum Allo4able Frade ?K@ 20.0K 22.0K &&.&K 20.0K 20.0K 22.0K &&.&K 20.0K 1S.1K 21.2K &&.0K 1S.MK 1M.&K 22.SK &1.NK 1S.0K 1H.0K 21.SK &1.1K 1N.2K 1&.2K 20.0K 2S.NK 1M.MK

2M o# 1& Create Subassemblies That Think utside the !ox "ith Subassembly Composer #or AutoCA$% Civil &$% There are #ive link stock Civil &$ subassemblies that have an input parameter #or slope. 0n this example 4e 4ill modi#y the (inkSlopeToSur#ace stock subassembly. Currently none o# the stock subassemblies can be directly opened in Subassembly Composer and modi#ied. 0nstead 4e 4ill modi#y it by lookin3 at the help #ile and usin3 similar parameters, tar3ets, and terminolo3y. (ike the previous example 4e 4ill #irst de#ine the C*acket Settin3sD. Subassembly Su ba sse m b ly - ame (i nk ) aaS0 opeToSu r#ace $escription This subassembly is a 3eneral purpose utility to connect a link #rom the attachment point to the c Jelp #ile C7ZUsersZ'atiZ$ropbo@tZA(02011ZSubasseimblies #or dassZJelpEilesZ(ink )ax Slope To Sur#ace,>?[b[W lima3e A9 C7Z(0 sersZ'atiZ$ropbo@tZA(02011ZSu basse rrbli es #or d ass)ma3es9(in k)axS lo peToS ur#ace,6CAM[D 0nput= utput *arameters Tar3et *arameters Superelevation +vent 9ie4er *acket Settin3s 2. $e#ine the C0nput= utput *arametersD #or the +nd User7 "e 4ill match our 0nput *arameters to those used by the (inkSlopeToSur#ace stock subassembly 4ith the exception o# Slope 4hich instead o# the link slope 4e 4ill instead ask the +nd User #or the maximum allo4able slope o# the sur#ace.

:ou 4ill note that the Add(ink0n input parameter has a uniIue type that has been named CutsEills, this is called +numeration and is de#ined by the Subassembly Composer User. To de#ine an enumeration, 3o to the 9ie4 menu and select $e#ine +numeration. Create an +numeration Froup named CutsEills and create three enumeration items as #ollo4s7

nce the CutsEills +numeration Froup is created it 4ill sho4 up as an option in the 0nput *arameter Type dropdo4n menu.

"e 4ill not be usin3 any o# the output parameters #or this example. 2N o# 1& Create Subassemblies That Think utside the !ox "ith Subassembly Composer #or AutoCA$% Civil &$% &. $e#ine the CTar3et *arametersD #or the +nd User7 Eor the tar3et parameters 4e 4ill also match those used by the (inkSlopeToSur#ace stock subassembly.

1. !uild the subassembly usin3 the CTool !oxD7 c. $ra3 and drop a $e#ine 9ariable element ?*ro#ileSlope Y$oubleR@ to the CElo4chartD and de#ine as #ollo4s7 a. $ra3 and drop a $e#ine 9ariable element This variable takes the instantaneous slope o# the baseline bein3 used by the corridor and #inds the absolute value. !aseline.3rade is an A*0 Eunction in the !aseline Class. ther baseline A*0 Eunctions include station, elevation, re3ion start, re3ion end, and turn direction. The ability to Iuery the baseline is not currently available in any o# the stock subassemblies. b. $ra3 and drop a $ecision element to belo4 the This decision 4ill test 4hether the

*ro#ileSlope and de#ine as #ollo4s7

$ra3 and drop a ;eport )essa3e element to the le#t ?true@ side o# the $ecision and de#ine as #ollo4s7

pro#ile slope already exceeds the input parameter that the +nd User de#ined as the maximum allo4able slope o# the sur#ace. 0# the pro#ile slope exceeds the maximum allo4able slope #or that cross section this error messa3e 4ill be displayed in Civil &$S panorama. -ote that the )essa3e expression reads as #ollo4s7 Slope o# baseline exceeds )aximum Allo4able Slope 2N o# 1& Create Subassemblies That Think utside the !ox "ith Subassembly Composer #or AutoCA$% Civil &$% d. $ra3 and drop a $e#ine 9ariable element ?(inkSlope Y$oubleR@ to the ri3ht side o# the $ecision and de#ine as #ollo4s7 > 9ariable -ame 9ariable Type $e#ault (inkSlope C$ouble T math.ab2C)axSlope@Omath.2Irt?l,matri.po4?* -ote that the expression reads as #ollo4s7 )ath.abs?)axSlope@ Omath.sIrt?1,math.po4?*ro#ileSlope=)axSlope, 2@ @ e. $ra3 and drop a *oint element ?*1@ to belo4 the (inkSlope and de#ine as #ollo4s7

This variable de#ines the link slope based on the eIuation 4e previously calculated. ?Sad @ S ac S ZT ad . !y addin3 this element to any subassembly you can use maximum slope instead o# the slope perpendicular to the baseline. 0# 4e had not previously de#ined the *ro#ileSlope variable 4e could alternatively use the baseline.3rade A*0 Eunction in this 9! expression in place o# *ro#ileSlope. $ra3 and drop a $ecision element to belo4 *1 This decision 4ill de#ine 4hether 4e and de#ine as #ollo4s7

are in cut or #ill since 4e 4ill 4ant to per#orm di##erent lo3ic #or cut and #ill based on the CutsEills input parameter. 2 #. 2S o# 1& Create Subassemblies That Think utside the !ox "ith Subassembly Composer #or AutoCA$% Civil &$% 3. $ra3 and drop a $ecision element to the le#t ?true=Eill@ side o# the Cut=Eill $ecision and de#ine as #ollo4s7 0# in #ill then 4e 4ant to con#irm 4hether the +nd User has de#ined the Add(ink0n input parameter as either CutAndEill or Eill nly. ?0# #alse 4e 4ill per#orm no lo3ic.@ h. $ra3 and drop a *oint element ?*2@ to the le#t The point 4ill be 3enerated #rom *1

side o# the Eill>s Add(ink $ecision and de#ine as #ollo4s7

$ra3 and drop a $ecision element belo4 *2 ?Eill@ and de#ine as #ollo4s7

usin3 the ne3ative value o# the (inkSlope variable since 4e are in #ill. This decision con#irms 4hether the +nd User has de#ined the mit(ink input parameter as :es. ?0# true 4e 4ill per#orm no lo3ic.@ i. &0 o# 1& Create Subassemblies That Think utside the !ox "ith Subassembly Composer #or AutoCA$% Civil &$% $ra3 and drop a (ink element ?(1@ to the ri3ht ?#alse@ side o# the Eill>s Add(ink>s mit(ink $ecision and de#ine as #ollo4s7

k. $ra3 and drop a $ecision element to the ri3ht ?#alse=Cut@ side o# the Cut=Eill $ecision and de#ine as #ollo4s7 )isc Condition YAdd(ink0n\CutAndEillD ;CAdd(ink0n\Cut nly@ #cTW Ealse(abel Ealse True(abel True $ra3 and drop a *oint element ?renamed to also be *2@ to the le#t ?true@ side o# the Cut>s Add(ink $ecision and de#ine as #ollo4s7

0# the +nd User has not set the mit(ink input parameter to :es then 4e 4ill 3enerate the link #rom point *1 to *2 and use the codes that the +nd User has provided throu3h the (inkCode input parameter in addition to a A$ayli3htQEillA link code. -ote that steps k. throu3h n. are a repeat o# steps 3. throu3h 6. #or the cut scenario instead o# #ill. 0# in cut then 4e 4ant to con#irm 4hether the +nd User has de#ined the Add(ink0n input parameter as either CutAndEill or Cut nly. ?0# #alse 4e 4ill per#orm no lo3ic.@ The point 4ill be 3enerated #rom *1 usin3 the positive value o# the (inkSlope variable since 4e are in cut. 6. &1 o# 1& Create Subassemblies That Think utside the !ox "ith Subassembly Composer #or AutoCA$% Civil &$% $ra3 and drop a $ecision element belo4 *2 ?Eill@ and de#ine as #ollo4s7 m. $ra3 and drop a $ecision element belo4 *2 This decision con#irms 4hether the +nd User has de#ined the mit(ink input parameter as :es. ?0# true 4e 4ill per#orm no lo3ic.@

$ra3 and drop a (ink element ?(1@ to the ri3ht ?#alse@ side o# the Cut>s Add(ink>s mit(ink $ecision and de#ine as #ollo4s7 n. $ra3 and drop a (ink element ?(1@ to the ri3ht W .ust like in #ill, i# the +nd User has not set the mit(ink input parameter to :es then 4e 4ill 3enerate the link #rom point *1 to *2 and use the codes that the +nd User has provided throu3h the (inkCode input parameter in addition to a A$ayli3htQCutA link code. The *'T #ile 4ill be available #or do4nload #rom the AU2011 C01222 class 4ebsite a#ter the associated lecture is 3iven. The #inished #lo4chart should look similar to the #ollo4in37

&2 o# 1& Create Subassemblies That Think utside the !ox "ith Subassembly Composer #or AutoCA$% Civil &$% 2. +valuate your subassembly and modi#y as necessary7 (ike the previous example you 4ill 4ant to check that Codes are properly assi3ned and that it behaves as expected #or various values o# the 0nput *arameters and Tar3et *arameters. H. 0mport into AutoCA$% Civil &$%7 (ike the previous example you 4ill import the subassembly into a Civil &$ Tool *alette. And the sketch that the person complained had contours closer than 271, no4 looks like this7

&& o# 1& Create Subassemblies That Think utside the !ox "ith Subassembly Composer #or AutoCA$% Civil &$% +xample 17 !ack4ards +n3ineerin3 There is 3oin3 to be a point in the #uture that you are 3oin3 to come across a *'T #ile that you made months a3o or a *'T #ile that someone else made. )ost likely you are openin3 up this mysterious *'T #ile because you have #ound a mistake in ho4 it behave in Civil &$ or you 4ant to edit it #or di##erent Civil &$ capabilities. So instead o# buildin3 the subassembly you are 3oin3 to have to understand ho4 the subassembly 4as built. 0n this last example, instead o# 3oin3 throu3h the six step 4ork#lo4 4e are 3oin3 to look at a subassembly that 0 previously created and understand ho4 to make sense o# the lo3ic. *arabolic ;oundin3 "ith $ayli3ht Eillet This example provides parabolic roundin3 at the *oint o# 9ertical 0ntersection ?*90@ bet4een the shoulder and dayli3ht links as 4ell as #illet roundin3 bet4een the dayli3ht link and tar3et sur#ace. 0n addition, the +nd User is provided the option to either de#ine the shoulder 4idth dimension #rom the ori3in to the *90 ?*1 to *2, as currently desi3ned@ or #rom the ori3in to the !e3innin3 o# 9ertical Curvature or !9C ?*1 to A*&@. The #lo4chart is provided on pa3e &N and the *'T #ile is available #or do4nload #rom the AU2011 C01222 class 4ebsite a#ter the associated lecture is 3iven. The 0nput *arameters are as #ollo4s7 -ame $irection $e#ault $isplay-ame 9alue Side Side 0nput ;i3ht Shoulder $ouble 0nput "idth $e#ineS ho Shoulder$e#imlnput ulder $ayli3ht;oundin3 $ouble 0nput *arabola Crade2 Cradel $ouble Frade Frade 0nput 0nput 0nput 10 !9C 2 r 20.00K 2.00K Shoulder "idth Shoulder "idth $e#inition $ayli3ht ;oundin3 (en3th C ptional@ *arabola Jori5ontal (en3th $ayli3ht Frade ?L=, #or cut=#ill@ Shoulder Frade

The Shoulder$e#ine type has t4o options7 !9C and *90 and allo4s the +nd User to select 4hat point their Shoulder "idth measures to. The Tar3et *arameters are as #ollo4s7 -ame Type *revie4 6 si> ay Zati \ 9alue Tar3etSur#ace Sur#ace $ay 3h7 ,#ate The $isplay-ame acts not only as clear and concise lan3ua3e to the Civil &$ +nd User but it also acts as a comment #or the 0nput *arameter. The -ame and the $isplay-ame are o#ten similar 4ith spaces added in #or the $isplay-ame. Jo4ever, you 4ill note that in this example the $isplay-ame is help#ul in learnin3 that Frade1 re#ers to the shoulder 3rade and Frade2 re#ers to the dayli3ht 3rade. && o# 1& Create Subassemblies That Think utside the !ox "ith Subassembly Composer #or AutoCA$% Civil &$% 0t is al4ays important to turn on the Comments to see i# there is any additional in#ormation that the ori3inal User provided. Jere is the *revie4 *anel 4ith the Comments turned on7

:ou 4ill notice that sometimes the text becomes hard to read 4hen there are lots o# points or links. boomin3 in 4ill help. 0n addition i# you click on any element in the C*revie4D panel the C*ropertiesD panel 4ill update accordin3ly. The ima3e at ri3ht sho4s the Comments turned on and the Codes turned o##. The Comments 4ill al4ays be sho4n in parentheses ?@ and the Codes 4ill al4ays be sho4n in brackets CD. "hen evaluatin3 a subassembly in the C*revie4D panel it is sometimes help#ul to temporarily create a couple o# test tar3et parameters to act like 3rid lines as sho4n belo4. The tar3ets 4ill not be associated 4ith any lo3ic. !y dra33in3 these temporary tar3et 3ridlines to various locations, the value o# the o##sets and elevations o# various points 4ill be displayed in the CTar3et *arametersD panel. .ust don>t #or3et to delete these temporary tar3ets be#ore savin3 and importin3 into Civil &$.

&1 o# 1& Create Subassemblies That Think utside the !ox "ith Subassembly Composer #or AutoCA$% Civil &$% To analy5e a #lo4chart it is best to start at the top and analy5e do4n one branch at a time. !y deletin3 some connection arro4s, you can vie4 only the lo3ic that is connected to the Start element. !y disconnectin3 and connectin3 several elements you can slo4ly be3in to see ho4 the 3eometry is built. ;emember that you may need to chan3e some o# the 0nput or Tar3et *arameters to make one o# the branches o# lo3ic applicable. This can be done by dra33in3 tar3ets, chan3in3 the *revie4 value o# the Tar3et the $e#ault value o# the 0nput *arameters "hen imported into Civil &$ and attached to an assembly, the subassembly 4ill be displayed as #ollo4s7

!y increasin3 the value o# the 0nput *arameters #or *arabola Jori5ontal (en3th and $ayli3ht ;oundin3 (en3th you can 3et a di##erent look as sho4n in the t4o ima3es belo4.

The entire #lo4chart is sho4n on the #ollo4in3 pa3e. 0 challen3e you to look throu3h it and see 4hat makes it 4ork. . A*&?*9$ T Yh2\i# A*1 ?$ayli3ht@ 0 *arameters, or chan3in3 &2 o# 1& Create Subassemblies That Think utside the !ox "ith Subassembly Composer #or AutoCA$% Civil &$%

&H o# 1& Create Subassemblies That Think utside the !ox "ith Subassembly Composer #or AutoCA$% Civil &$% +ndless *ossibilities 0n con6unction 4ith the stock subassemblies already available in the Civil &$ tool palette and the subassemblies you create 4ith the tool box in the Subassembly Composer, your corridors 4ill have endless possibilities.

The best 4ay to learn a pro3ram is by usin3 it, so 3o ahead and do4nload the Subassembly Composer #or Civil &$ 2011 / 2012 to your computer i# you haven>t already. Start by composin3 a simple subassembly usin3 Subassembly Composer. !e#ore you kno4 it your mind 4ill be opened to a 4hole di##erent 4ay o# approachin3 corridors in your desi3n. Eor Eurther Assistance 1. Autodesk% "ikiJelp #or Autodesk Subassembly Composer7 http7==4ikihelp.autodesk.com=AutoCA$ Civil &$=enu=2012=Jelp=Auto desk Subassembly Composer 2. &. Autodesk% $iscussion Froups #or AutoCA$ Civil &$7 http7==#orums.autodesk.com=t2=AutoCA$,Civil,&$=bd,p=HH AutoCA$ Civil &$ Subassembly ;e#erence7 http7==ima3es.autodesk.com=adsk=#iles=c&dstocksubassemblyhelp.pd# 1. T4itter hashta37 dSACCivil&$

&M o# 1& Create Subassemblies That Think utside the !ox "ith Subassembly Composer #or AutoCA$% Civil &$% A**+-$0P 9! +xpressions7 )ath +mphasi5ed values can be chan3ed to re#erence the applicable value. Sample 9! +xpression utput $escription math.round?2.2HN,2@ 2.2M ;eturns a value rounded to the nearest speci#ied decimal places ?ex. ,2 \ hundreds, ,1 \ tens, 0 \ 4hole number, 1 \ tenths, 2 \ hundredths, etc.@

math.#loor?2.2HN@ math.ceilin3?2.2HN@ math.max?2.2HN,0.N1&@ math.min?2.2HN,0.N1&@ math.abs?,2.2HN@ math.pi math.e math.sin?math.p=@ math.cos?math.p=@ math.tan?math.p=@ math.asin?1@ math.acos?1@ math.atan?1@ math.lo3?math.e@ math.lo310?10@ math.exp?1@

2 & 2.2HN 0.N1&

;eturns the lar3est inte3er that is less than or eIual to the speci#ied value ?i.e. rounds do4n@ ;eturns the smallest inte3er that is 3reater than or eIual to the speci#ied value ?i.e. rounds up@ the lar3er o# a series o# t4o speci#ied values the smaller o# a series o# t4o speci#ied the absolute value the value o# the constant pi

;eturns ;eturns values 2.2HN ;eturns &.1112S... ;eturns

2.M1N2N... ;eturns the value o# the constant e 0 ;eturns the sine o# a speci#ied an3le measured in radians ,1 0 ;eturns the cosine o# a speci#ied an3le measured in radians ;eturns the tan3ent o# a speci#ied an3le measured in radians

1.2M0MS... ;eturns the an3le measured in radians 4hose sine is the speci#ied value 0 ;eturns the an3le measured in radians 4hose cosine is the speci#ied value

0.MN2&S... ;eturns the an3le measured in radians 4hose tan3ent is the speci#ied value 1 ;eturns the natural ?base e@ lo3arithm o# a speci#ied value

1 ;eturns the base 10 lo3arithm o# a speci#ied value 2.M1N2N... ;eturns e raised to the speci#ied po4er

math.po4?2,&@ N ;eturns a value raised to the speci#ied po4er math.sIrt?N1@ S ;eturns the sIuare root o# a speci#ied value &N o# 1& Create Subassemblies That Think utside the !ox "ith Subassembly Composer #or AutoCA$% Civil &$% 9! +xpressions7 (o3ic +mphasi5ed values can be chan3ed to re#erence the applicable value. ZE_*1.:R*2.:,2,&@ Used in a 9! +xpression, returns a value dependin3 on 4hether the condition ?*1.:R*2.:@ is true ?value o# 2@ or #alse ?value o# &@ *1.:R*2.: *1.:R\*2.: *1.:Y*2.: *1.:Y\*2.: *1.:\*2.: *1.:YR*2.: ?*1. :R*2. :@A-$?*2.PR*&.P@ A condition that returns true i# *1.: is 3reater than *2.: A condition that returns true i# *1.: is 3reater than or eIual to *2.: A condition that returns true i# *1.: is less than *2.: A condition that returns true i# *1.: is less than or eIual to *2.: A condition that returns true i# *1.: is eIual to *2.: A condition that returns true i# *1.: is not eIual to *2.: A condition that returns true i# both the condition ?*1.:R*2.:@ A-$ the condition ?*2.xR*&.P@ are true

?*1. :R*2. :@ ;?*2.PR*&.P@

A condition that returns true as lon3 as either the condition ?*1.:R*2.:@ ; the condition ?*2.xR*&.P@ is true A condition that returns true i# only one o# the t4o conditions ?*1.:R*2.:@, ?*2.xR*&.P@ is true ?i# both are true or both are #alse, then #alse is returned@

?*1. :R*2. :@P ;?*2.PR*&.P@

9! +xpressions7 Subassembly Composer Application *ro3rammin3 0nter#ace ?A*0@ Eunctions +mphasi5ed values can be chan3ed to re#erence the applicable element.

*oints and Auxiliary *oints Class *1.P *1.: *1. ##set *1.+levation *1.$istanceTo?A*2A@ *1.SlopeTo?A*2A@ *1.Zs9alid *1.$istanceToSur#ace?Su=#aceTare=e &S o# 1& Create Subassemblies That Think AutoCA$% Civil &$% (inks and Auxiliary (inks Class (l.Slope (0.(en3th (l.Plen3th (0.:len3th (l.Start*oint (0.+nd*oint (M.)ax: (0.)in: (1 .)ax0nterce pt:? slope@ (0.)in0 ntercept:?slope@ (0.(inear;e3ressionSlope (0.(inear;e3ressionlntercept: (l.0s9alid Jori5ontal distance #rom point *1 to ri3in 9ertical distance #rom point *1 to ri3in Jori5ontal distance #rom point *1 to assembly baseline +levation o# point *1 relative to 0 $istance #rom point *1 to point *2 ?Al4ays positive@ Slope #rom point *1 to point *2 ?Up4ard \ positive, $o4n4ard \ -e3ative@ *oint *1 assi3ned and valid to use ?True=Ealse@ 9ertical distance #rom point *1 to Sur#aceTar3et ?point above \ positive, point belo4 \ ne3ative@

utside the !ox "ith Subassembly Composer #or Slope o# link (1 (en3th o# link (1 ?Al4ays positive@ Jori5ontal distance bet4een start to end o# link (1 ?Al4ays positive@ 9ertical distance bet4een start to end o# link (1 ?Al4ays positive@ A point located at the start o# link (1 ?Can be used in A*0 Eunctions #or *1 Class@ A point located at the end o# link (1 ?Can be used in A*0 Eunctions #or *1 Class@ )aximum : elevation #rom a link>s points Fet the minimum : elevation #rom a link>s points Apply the hi3hest intercept o# a 3iven link>s points to the start o# another link Apply the lo4est intercept o# a 3iven link>s points to the start o# another link Slope calculated as a linear re3ression on the points in a link to #ind the best #it slope bet4een all o# them The : value o# the linear re3ression link (ink (1 is assi3ned and valid to use ?True=Ealse@

(1.Jasintersection?A(2A@ (1.Jasintersection?A(2A, true, true@

(1 and (2 have an intersection, second input is a !oolean de#inin3 4hether to extend (1 4ith de#ault o# #alse, third input is a boolean de#inin3 4hether to extend (2 4ith de#ault o# #alse ?True=Ealse@

##set Tar3et Class ##setTar3et.0s9alid =#setMar3et. ##set +levation Tar3et Class +levation Tar3et. 0 s9alid +levationTar3et.+levation Sur#ace Tar3et Class Su=#aceTar3et.0s9alid 10 o# 1& Create Subassemblies That Think AutoCA$% Civil &$% !aseline Class !aseline.Station !aseline.+levation !aseline.;e3ionStart !aseline.;e3ion+nd !aseline.Frade !aseline.Turn$irection Sur#aceTar3et is assi3ned and valid to use ?True=Ealse@ +levationTar3et is assi3ned and valid to use ?True=Ealse@ 9ertical distance #rom +levationTar3et to assembly baseline ##setTar3et is assi3ned and valid to use ?True=Ealse@ Jori5ontal distance #rom ##setTar3et to assembly baseline

utside the !ox "ith Subassembly Composer #or Station on assembly baseline +levation on assembly baseline Station at the start o# the current corridor re3ion Station at the end o# the current corridor re3ion Frade o# assembly baseline Turn direction o# assembly baseline ?(e#t \ ,1, -on, curve \ 0, ;i3ht \ 1@

O-ote assembly baseline may or may not be the subassembly ori3in +numerationType Class +numerationType.9alue 10 o# 1& The strin3 value o# the current enumeration item