Cmodel@@BTools@Brelease4.5B FlowItemBin@objectBstored@@BFlowItemBinsubnode@U @Item0_NULLNAMEB FlexsimBox@r FlexsimBox,@object@B itemtype@Bvisual@@Bcolor@a@Bred@A)Z?Bgreen@A)Z?Bblue@A)Z?Bshape@ufs3d\FlowItem.3DSB shapeindex@v?B imagebase@s***Bimageindexbase@tB noondraw@k?B nopredraw@l?B spatial@@ B spatialx@MB spatialy@NB spatialz@OB spatialsx@PQ?B spatialsy@QQ?B spatialsz@Rףp= ?B spatialrx@SB spatialry@TB spatialrz@UB centroid@e?Bspecial@@B guifocus@|%VIEW:/standardviews/ObjectPropertiesBguifocusclass@}VIEW:/pages/FlowItemParametersBstats_lastmovetime@IBstats_creationtime@JBlabels@@BBasic@rBasic,@objectB itemtype@Bvisual@@Bcolor@a@Bred@?Bgreen@?Bblue@?B imageobject@qbitmaps\flowitempicture.bmpBimageindexobject@rA@B imagebase@s***Bimageindexbase@tB noondraw@k?B nopredraw@l?B billboard@jB spatial@@ B spatialx@MB spatialy@NB spatialz@OB spatialsx@P?B spatialsy@Q?B spatialsz@R?B spatialrx@SB spatialry@TB spatialrz@UB centroid@e?Bspecial@@B guifocus@|%VIEW:/standardviews/ObjectPropertiesBguifocusclass@}VIEW:/pages/FlowItemParametersBstats_lastmovetime@IBstats_creationtime@JBlabels@BCan@rCan,@objectB itemtype@Bvisual@@Bcolor@a@Bred@?Bgreen@?Bblue@?B imageobject@qfs3d\BBpepsican.bmpBimageindexobject@rA@B imagebase@s***Bimageindexbase@tB noondraw@k?B nopredraw@l?B billboard@jB spatial@@ B spatialx@MB spatialy@NB spatialz@OB spatialsx@P?B spatialsy@Q?B spatialsz@R?B spatialrx@SB spatialry@TB spatialrz@UB centroid@e?Bspecial@@B guifocus@|%VIEW:/standardviews/ObjectPropertiesBguifocusclass@}VIEW:/pages/FlowItemParametersBstats_lastmovetime@IBstats_creationtime@JBlabels@BSphere@rSphere,@objectB itemtype@Bvisual@@Bcolor@a@Bred@?Bgreen@?Bblue@?B imageobject@qfs3d\BBsphere.bmpBimageindexobject@rB@B imagebase@s***Bimageindexbase@tB noondraw@k?B nopredraw@l?B billboard@j?B spatial@@ B spatialx@MB spatialy@NB spatialz@OB spatialsx@P?B spatialsy@Q?B spatialsz@R?B spatialrx@SB spatialry@TB spatialrz@UB centroid@e?Bspecial@@B guifocus@|%VIEW:/standardviews/ObjectPropertiesBguifocusclass@}VIEW:/pages/FlowItemParametersBstats_lastmovetime@IBstats_creationtime@JBlabels@BTextured Colored Box@rTextured Colored Box,@objectB itemtype@Bvisual@@ Bcolor@a@Bred@Rr/0?Bgreen@Rr/0?Bblue@Rr/0?Bshape@ufs3d\texturebox.wrlB shapeindex@v@B imageobject@q***Bimageindexobject@rB imagebase@s***Bimageindexbase@tB noondraw@k?B nopredraw@l?B spatial@@ B spatialx@MB spatialy@NB spatialz@OB spatialsx@PQ?B spatialsy@QQ?B spatialsz@Rףp= ?B spatialrx@SB spatialry@TB spatialrz@UB centroid@e?B special@@B guifocus@|%VIEW:/standardviews/ObjectPropertiesBguifocusclass@}VIEW:/pages/FlowItemParametersBstats_lastmovetime@IBstats_creationtime@JBlabels@BPallet@rPallet-@objectB itemtype@B behaviour@@Beventfunctions@@B OnReceiveD@Knodefunction(node("/project/exec/globals/nodefunctions/palletentry"),c,i);@Bd/project/exec/globals/nodefunctions/palletentrym sjPpHo@4Bvisual@@Bcolor@a@Bred@2?Bgreen@88?Bblue@4?Bshape@ufs3d\FlowItem\Pallet.wrlB shapeindex@v@B imagebase@s***Bimageindexbase@tB nochildscale@_?B noondraw@k?B nopredraw@l?B spatial@@ B spatialx@MB spatialy@NB spatialz@OB spatialsx@P?B spatialsy@Q?B spatialsz@Rp= ף?B spatialrx@SB spatialry@TB spatialrz@UB centroid@e?Bspecial@@B guifocus@|%VIEW:/standardviews/ObjectPropertiesBguifocusclass@}VIEW:/pages/FlowItemParametersBstats_lastmovetime@IBstats_creationtime@JBlabels@BTote@rTote,@objectB itemtype@Bvisual@@Bcolor@a@Bred@9̗?Bgreen@?Bblue@2?Bshape@u!fs3d\FlowItem\Product - Tote.3DSB shapeindex@v@B imagebase@s***Bimageindexbase@tB noondraw@k?B nopredraw@l?Bspatial@@B spatialx@MB spatialy@NB spatialz@OB spatialsx@Pffffff?B spatialsy@Qffffff?B spatialsz@R?B spatialrx@SB spatialry@TB spatialrz@UB centroid@e?Boffsetx@VBoffsety@WBoffsetz@XB offsetsx@\?B offsetsy@]?B offsetsz@^?B offsetrx@YB offsetry@ZB offsetrz@[Bspecial@@B guifocus@|%VIEW:/standardviews/ObjectPropertiesBguifocusclass@}VIEW:/pages/FlowItemParametersBstats_lastmovetime@IBstats_creationtime@JBlabels@BTextured Colored Cylinder@rTextured Colored Cylinder,@objectB itemtype@Bvisual@@ Bcolor@a@Bred@3ۃ?Bgreen@3ۃ?Bblue@3ۃ?Bshape@ufs3d\texturecyl.wrlB shapeindex@v@B imageobject@q***Bimageindexobject@rB imagebase@s***Bimageindexbase@tB noondraw@k?B nopredraw@l?B spatial@@ B spatialx@MB spatialy@NB spatialz@OB spatialsx@Pffffff?B spatialsy@Qffffff?B spatialsz@R?B spatialrx@SB spatialry@TB spatialrz@UB centroid@e?Bspecial@@B guifocus@|%VIEW:/standardviews/ObjectPropertiesBguifocusclass@}VIEW:/pages/FlowItemParametersBstats_lastmovetime@IBstats_creationtime@JBlabels@BTextured Colored Sphere@rTextured Colored Sphere,@objectB itemtype@Bvisual@@ Bcolor@a@Bred@3ۃ?Bgreen@3ۃ?Bblue@3ۃ?Bshape@ufs3d\texturesphere.wrlB shapeindex@v@B imageobject@q***Bimageindexobject@rB imagebase@s***Bimageindexbase@tB noondraw@k?B nopredraw@l?B spatial@@ B spatialx@MB spatialy@NB spatialz@OB spatialsx@P?B spatialsy@Q?B spatialsz@R?B spatialrx@SB spatialry@TB spatialrz@UB centroid@e?Bspecial@@B guifocus@|%VIEW:/standardviews/ObjectPropertiesBguifocusclass@}VIEW:/pages/FlowItemParametersBstats_lastmovetime@IBstats_creationtime@JBlabels@BPerson@rPerson,@objectB itemtype@Bvisual@@Bcolor@a@Bred@?Bgreen@?Bblue@Bshape@ufs3d\Operator.3DSB shapeindex@v@B imagebase@s***Bimageindexbase@tB noondraw@k?B nopredraw@l?B spatial@@B spatialx@MQ?B spatialy@N)\(B spatialz@OB spatialsx@P?B spatialsy@Q(\?B spatialsz@R{Gz?B spatialrx@SB spatialry@TB spatialrz@UBoffsetx@V?Boffsety@W?Boffsetz@XB offsetsx@\@B offsetsy@]?B offsetsz@^@33@B offsetrx@YVB offsetry@ZB offsetrz@[VB centroid@e?Bspecial@@B guifocus@|%VIEW:/standardviews/ObjectPropertiesBguifocusclass@}VIEW:/pages/FlowItemParametersBstats_lastmovetime@IBstats_creationtime@JBlabels@BLoaded Pallet@rLoaded Pallet,@objectB itemtype@Bvisual@@Bcolor@a@Bred@A)Z?Bgreen@A)Z?Bblue@A)Z?Bshape@u.fs3d\FlowItem\Loaded Pallet\Loaded Pallet.3DSB shapeindex@v8@B imagebase@s***Bimageindexbase@tB noondraw@k?B nopredraw@l?Bspatial@@B spatialx@M?B spatialy@N{Gz?B spatialz@OB spatialsx@P?B spatialsy@Q?B spatialsz@R?B spatialrx@SB spatialry@TB spatialrz@UB centroid@e?Boffsetx@V?Boffsety@W?Boffsetz@XB offsetsx@\?B offsetsy@]?B offsetsz@^(\?B offsetrx@YB offsetry@ZB offsetrz@[Bspecial@@B guifocus@|%VIEW:/standardviews/ObjectPropertiesBguifocusclass@}VIEW:/pages/FlowItemParametersBstats_lastmovetime@IBstats_creationtime@JBlabels@@BTextured Colored Plane@rTextured Colored Plane,@objectB itemtype@Bvisual@@ Bcolor@a@Bred@3ۃ?Bgreen@3ۃ?Bblue@3ۃ?Bshape@ufs3d\textureplaneup.wrlB shapeindex@v9@B imageobject@q***Bimageindexobject@rB imagebase@s***Bimageindexbase@tB noondraw@k?B nopredraw@l?B spatial@@ B spatialx@MB spatialy@NB spatialz@OB spatialsx@PQ?B spatialsy@QQ?B spatialsz@R?B spatialrx@SB spatialry@TB spatialrz@UB centroid@e?Bspecial@@B guifocus@|%VIEW:/standardviews/ObjectPropertiesBguifocusclass@}VIEW:/pages/FlowItemParametersBstats_lastmovetime@IBstats_creationtime@JBlabels@B BasicSphere@r BasicSphere,@objectB itemtype@Bvisual@@Bcolor@a@Bred@A)Z?Bgreen@A)Z?Bblue@A)Z?B shapeindex@vBimageindexobject@rB noondraw@k?B nopredraw@l?B spatial@@ B spatialx@MB spatialy@NB spatialz@OB spatialsx@P?B spatialsy@Q?B spatialsz@R?B spatialrx@SB spatialry@TB spatialrz@UB centroid@e?Bspecial@@B guifocus@|%VIEW:/standardviews/ObjectPropertiesBguifocusclass@}VIEW:/pages/FlowItemParametersBstats_lastmovetime@IBstats_creationtime@JBlabels@@BBasicCylinder@rBasicCylinder,@objectB itemtype@Bvisual@@Bcolor@a@Bred@A)Z?Bgreen@A)Z?Bblue@A)Z?B shapeindex@vBimageindexobject@rB noondraw@k?B nopredraw@l?B spatial@@ B spatialx@MB spatialy@NB spatialz@OB spatialsx@P?B spatialsy@Q?B spatialsz@R?B spatialrx@SB spatialry@TB spatialrz@UB centroid@e?Bspecial@@B guifocus@|%VIEW:/standardviews/ObjectPropertiesBguifocusclass@}VIEW:/pages/FlowItemParametersBstats_lastmovetime@IBstats_creationtime@JBlabels@@B BasicCone@r BasicCone,@objectB itemtype@Bvisual@@Bcolor@a@Bred@A)Z?Bgreen@A)Z?Bblue@A)Z?B shapeindex@vBimageindexobject@rB noondraw@k?B nopredraw@l?B spatial@@ B spatialx@MB spatialy@NB spatialz@OB spatialsx@P?B spatialsy@Q?B spatialsz@R?B spatialrx@SB spatialry@TB spatialrz@UB centroid@e?Bspecial@@B guifocus@|%VIEW:/standardviews/ObjectPropertiesBguifocusclass@}VIEW:/pages/FlowItemParametersBstats_lastmovetime@IBstats_creationtime@JBlabels@@B BasicBox@r BasicBox,@objectB itemtype@Bvisual@@Bcolor@a@Bred@A)Z?Bgreen@A)Z?Bblue@A)Z?B shapeindex@vBimageindexobject@rB noondraw@k?B nopredraw@l?B spatial@@ B spatialx@MB spatialy@NB spatialz@OB spatialsx@P?B spatialsy@Q?B spatialsz@R?B spatialrx@SB spatialry@TB spatialrz@UB centroid@e?Bspecial@@B guifocus@|%VIEW:/standardviews/ObjectPropertiesBguifocusclass@}VIEW:/pages/FlowItemParametersBstats_lastmovetime@IBstats_creationtime@JBlabels@@BTaskExecuterFlowItem@BTaskExecuterFlowItem@objectB classes@@B Operator@ 4AB TaskExecuter@]AB Dispatcher@@[ABFlexsimObject@/ABsuperclasses@@B TaskExecuter@2AB Dispatcher@@[ABFlexsimObject@/AB variables@@>Bactivetasksequence@B maxcontent@?B loadtime@Etreenode item = parnode(1); treenode current = ownerobject(c); treenode station = parnode(2); /**By Expression*/ /** \nExpression: */ double value = /**/0/**/; /** \n\nNote: The expression may be a constant value or the result of a command (getitemtype(item), getlabelnum(item, "labelname"), etc).*/ return value;@B loadtrigger@btreenode item = parnode(1); treenode current = ownerobject(c); treenode station = parnode(2); @B unloadtime@Etreenode item = parnode(1); treenode current = ownerobject(c); treenode station = parnode(2); /**By Expression*/ /** \nExpression: */ double value = /**/0/**/; /** \n\nNote: The expression may be a constant value or the result of a command (getitemtype(item), getlabelnum(item, "labelname"), etc).*/ return value;@Bunloadtrigger@btreenode item = parnode(1); treenode current = ownerobject(c); treenode station = parnode(2); @B maxspeed@@B acceleration@?B deceleration@?B navigator@@Boldbreakrequirement@B breakto@Ftreenode activets = parnode(1); treenode current = ownerobject(c); @B travelinfo@@B travelstartx@B travelstarty@B travelstartz@Btraveldistance@Btraveldirection@B travelendx@B travelendy@B travelendz@B travelacc@B traveldec@Btravelstarttime@~Btravelendtime@Btraveltimealpha@Btraveltimebeta@B travelvpeak@B travelvmax@B travelvstart@B travelvend@Bmodifyrotation@?B useoffsets@?Boffsettingnow@Boffsetbegintime@Boffsettotaltime@B offsetlocx@B offsetlocy@B offsetlocz@B offsetbeginx@B offsetbeginy@B offsetbeginz@Boffsetbeginxrot@Boffsetbeginyrot@Boffsetbeginzrot@B loadedspeed@@B emptyspeed@@Bcurloadunloadtime@Blastupdatedspeed@B travelvstart@B travelvend@Blastspeedupdatetime@Bcollisiontrigger@treenode thisobject=ownerobject(c); treenode otherobject=parnode(1); treenode thissphere=parnode(2); treenode othersphere=parnode(3); Bcollcheckinterval@?Bdrawcollspheres@B incollision@Bcollcheckstate@Btotaltraveldist@B kinematics@Bflipthreshold@f@Bpassimmediately@@Bpassto@#treenode tasksequence = parnode(1); treenode current = ownerobject(c); /**First Available*/ /** \nIf there are no objects currently available, then queue the tasksequence up using the Queue Strategy and wait until someone connected to its output ports becomes available.*/ return 0;@Btasksequencequeue@Bqueuestrategy@mtreenode tasksequence = parnode(1); /**Sort by TaskSequence Priority*/ return getpriority(tasksequence);@B4/exedefupallm s? lF(=Blastrecursetime@Blastrecurseinvolved@Bcoordinatedtasks@Bonresourceavailable@treenode current = ownerobject(c); int port = parval(1); treenode resource = parnode(2); treenode nextts = parnode(3); treenode lastts = parnode(4); Bmessagetrigger@%treenode current = ownerobject(c); @Bondrawtrigger@treenode current = ownerobject(c); treenode view = parnode(1); // If this function returns a true, the default draw code of the object will not be executed. B timetables@B networknodes@Btimeoflaststop@B nrofstops@Bstatebeforestop@Bcollisionspheres@Bcollisionobjects@Bresettrigger@%treenode current = ownerobject(c); B savedstate@Bresetposition@B behaviour@@Beventfunctions@@B OnReset@@B(Bcppfunctions@@Bcppvariables@@Bdouble offsetloc[3] @Bfsnode* activetask@Bdouble* protectlocs@Bunsigned char portinfoflag@Bvisual@@ Bcolor@a@Bred@?Bgreen@?Bblue@Bshape@ufs3d\Operator.3DSB shapeindex@v@Bpicture@c bitmaps\TaskExecuterpicture.bmpB imageobject@q***Bimageindexobject@rB imagebase@s***Bimageindexbase@tB nochildscale@_?Bframe@Bspecial@@Btitle@dObjectB description@bB guifocus@|%VIEW:/standardviews/ObjectPropertiesBguifocusclass@}#VIEW:/pages/TaskExecuterParametersBreportvariables@@B maxcontent@B loadtime@B loadtrigger@B unloadtime@Bunloadtrigger@B maxspeed@B acceleration@B deceleration@Bbreakto@B useoffsets@B loadedspeed@B emptyspeed@Bpassimmediately@Bpassto@Bqueuestrategy@Bmessagetrigger@Bondrawtrigger@Bcollisionspheres@Bcollisionobjects@B resettrigger@B spatial@@B spatialx@MB spatialy@NB spatialz@OB spatialsx@P?B spatialsy@Q(\?B spatialsz@R{Gz?B spatialrx@SB spatialry@TB spatialrz@UB offsetx@V?Boffsety@W?Boffsetz@XB offsetsx@\@B offsetsy@]?B offsetsz@^333333@B offsetrx@YVB offsetry@ZB offsetrz@[VB centroid@e?B ignoredraw@fB displaygroup@ standardBdisplaygrouplist@@B standard@Bmobileresource@B objectinfo@@B Output: 0@BStatus: NULL@Blabels@@B connections@@Bconnectionsin@ @Bconnectionsout@ @Bconnectionscenter@ @Bevents@ @Bstats@@Bstate@@Bstate_current@,@Bstate_changetime@B state_since@-Bstate_profile@.State@2Bidle@B processing@Bbusy@Bblocked@B generating@Bempty@B collecting@B releasing@Bwaiting_for_operator@Bwaiting_for_transporter@B breakdown@Bscheduled_down@B conveying@B travel_empty@Btravel_loaded@Boffset_travel_empty@Boffset_travel_loaded@Bloading@B unloading@Bdown@Bsetup@Butilize@Bfull@B not_empty@Bfilling@Bstarved@Bmixing@Bflowing@Ballocated_idle@B off_shift@B change_over@Brepair@B maintenance@Blunch@B on_break@Bsuspend@B available@Bpreprocessing@Bpostprocessing@B inspecting@B operating@Bstandby@Bpurging@B cleaning@B accelerating@B maxspeed@B decelerating@Bstopped@Bwaiting@B accumulating@B state_graph@0Bcontent@@Bstats_contentmin@4Bstats_contentmax@5Bstats_contentavg@6Bstats_contentupdates@7Bstats_contentsince@8Bstats_contentgraph@9Content vs. TimeBstats_contentgraphmaxpoints@:Y@Bstats_content@2B staytime@@Bstats_staytimemin@<Bstats_staytimemax@=Bstats_staytimeavg@>Bstats_staytimeupdates@?Bstats_staytimegraph@A StaytimeBstats_staytimehisto@C@B parameters@@B startvalue@B endvalue@Y@Bbuckets@4@Bdata@ Staytime@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B interval@@Bmean@Blo@Bhi@Bpercent@W@Bauto@?Bstats_staytimegraphmaxpoints@BY@Bstats_staytimesince@@B throughput@@B stats_input@KB stats_output@LBstats_throughput@DBstats_throughputgraph@E ThroughputBstats_throughputgraphmaxpoints@FBstats_creationtime@JBstats_lastmovetime@IBstored@B itemtype@B GlobalVarGen,@object Bclasses@@B GlobalVarGen@ NAB variables@@B definecode@B loadcode@Btable@@B usercode@B commands@Blabels@@B defaultlabel@B behaviour@@Beventfunctions@@Bcppfunctions@@Bspatial@@ B spatialx@MB spatialy@NB spatialz@OB spatialsx@P?B spatialsy@Q?B spatialsz@R?B spatialrx@SB spatialry@TB spatialrz@UBvisual@@B nochildscale@_?B connections@@Bconnectionsin@ @Bconnectionsout@ @Bconnectionscenter@ @Bevents@ @Bspecial@@Btitle@dObjectB description@bBguifocusclass@}$VIEW:/pages/GlobalVarGen ParametersBactive@BLibrary@objectB viewfocus@MAIN:/project/libraryBviewwindowopen@?Bviewwindowtype@@B spatialx@MB spatialy@NZ@B spatialsx@P`c@B spatialsy@Q0@@B windowtitle@LibraryB OnPreOpen@. treenode libraryview = NULL; // Here I'm trying to find the Library treenode active = node("VIEW:/active"); for(int i = 1; i <= content(active); i++) { treenode curnode = rank(active, i); if(objectexists(tabwindow(curnode)) && get(tabwindow(curnode)) == -102) // palettewindows tabbed in one window { for(int w=1;w<=content(node("/tabcontrol",curnode));w++) { treenode checkview = rank(node("/tabcontrol",curnode),w); if(checkview!=c && objectexists(windowtitle(checkview)) && comparetext("Library", gets(windowtitle(checkview)))) { // activate that tab sendwindowmessage(windowfromnode(node("/tabcontrol",curnode)),4912,w-1,0); // TCM_SETCURFOCUS libraryview = curnode; break; } } } else if(curnode!=c && objectexists(windowtitle(curnode)) && comparetext("Library", gets(windowtitle(curnode)))) { libraryview = curnode; break; } } if(objectexists(libraryview)) { makeactive(libraryview); destroyobject(c); return(0); } setname(c, "Library"); if (not(get(node(">wasopen",c)))) { iterate(1, content(library()), 1) { setitem(rank(library(), count)); if(objectexists(node(">displaygrouplist/standard",item))) { sets(node(">displaygroup",item), "standard"); } } set(node(">wasopen",c),1); } //sets(node("/GroupIconGrid>displaygroup",c),"standard"); // Position the view if(!maintenance(42,-1)) // if onactivatenotify isn't disabled - (if this isn't firing because of tab dragging) { // the workspace rect int left = getsystemmetric(3); int right = getsystemmetric(4); int top = getsystemmetric(5); int bottom = getsystemmetric(6); set(spatialx(c),0); treenode activeviews = node("VIEW:/active"); int bust=1; // to prevent possible infinite loops int moved=1; int nextypos = 0; int nextxpos = 0; while(moved && bust<20) { moved = 0; for(int i=2;i<=content(activeviews);i++) { treenode view = rank(activeviews,i); if(view==c) continue; int my_left = get(spatialx(c)); int my_right = get(spatialx(c))+get(spatialsx(c)); int view_left = get(spatialx(view)); int view_right = get(spatialx(view))+get(spatialsx(view)); int my_top = get(spatialy(c)); int my_bottom = get(spatialy(c))+get(spatialsy(c)); int view_top = get(spatialy(view)); int view_bottom = get(spatialy(view))+get(spatialsy(view)); int xoverlap = ( (my_left >= view_left && my_left < view_right) || (my_right > view_left && my_right <= view_right) ); int yoverlap = ( (my_top >= view_top && my_top < view_bottom) || (my_bottom > view_top && my_bottom <= view_bottom) ); if( xoverlap && yoverlap && fabs(get(tabwindow(view)))==fabs(get(tabwindow(c))) ) { set(spatialy(c),view_bottom); if(nextxpos==0) nextxpos = view_right; if(nextypos==0) nextypos = view_top; if(get(spatialy(c))+get(spatialsy(c)) > bottom-top) { set(spatialx(c),nextxpos); nextxpos = 0; set(spatialy(c),nextypos); nextypos = 0; } moved = 1; break; } } bust++; } }@B"4GrouVIEW:/activeiginojecydispdisp/tabcontrolaygplay/tabcontrolplisLibraryngwi/tabcontrolteniaygrtiverepeLibraryojecbrar.>orems Libraryaygr>wasopen..>doupplay..>v>displaygrouplist/standard >displaygroup..>peftostandard>wasopenturettori..>cVIEW:/activeal..>_left/tablignleft>picnlef>picnlefellhtorignceellwinalterreal..>pignlturelheionGr>cellwidthignl real ngwiectf >vietbtupw:/1/balsctiotupWtp; ??, 6< k?4= I  )$  #  | # =   # =  64   0 ?    4   =   ")Bt1t=h\)L @14=((o=a 40&=>$=  5     & | l =`  P 4D   )Bt1=)| p1d=X(Ho@=4 >=  5 &pd=X4L $ =  = !0!o(#?"%wP%D%o< 9 &*&|&t&ol&`- -((((*?**/* + +++B+-uP-D-4-B,-70}00t0ol0` 7*777*:6::9:;6;;9;<6<<9<=6= =9=?}4??(?o @?`@ @T@DA6pA AB6B BC6C CD6DD G5G GH6HH {J?xJJhJ4\JJ=PJ BK#KoK=K H L6LL|LLoM6, MMM|MMoM|MMoN6`NN|TNHN=<NO6 OO O|OO=OO|O|O=pOP6PP|PPoQ6X QQH Q|< Q0 Qo( Q| Q Qo R6 RR| Rt R=h RS6 SS S| S S= SS| S S= SV6 V V+ V) V& V4 VV4 VV%| V4p VV4d VU)T U'D U48 UU4, UU$ U4 UU4 UX6 X X+ X) X& X4x XX4l XX%\ X4P XX4D XW)4 W'$ W4 WW4 WW$ W4 WW4 W dJY)X Y#H Y< Y|0 Y#$ Yo Y Y| Y# Y= YY) Y4 YY4 Y[} [4| [[p [oh  { \# \\4 \\5 \\4 \  ]# ]]4 ] ]5 ] ]4 ] s^% ^p ^4d ^^4X ^ ^H ^|< ^0 ^o( ^| ^ ^o `} `4 `` `o a5 aab} b4 b b bo c5c ce5e e H5<HHH i5H&,H H=H H4Hi5 iii  t#E)E'EE4E E4E  }BOnOpen@setname(c, "Library"); windowshow(windowfromnode(node( "/editName",c)), 0); windowshow(windowfromnode(node("/Apply",c)), 0); nodefunction(node("/ChooseGroup>refresh",c)); nodefunction(node("/GroupIconGrid>refresh",c)); @B wasopen@?Binstallcomponents@ytreenode newlibrary = parnode(1); if(not(maintenance(20))) { // I need to go through a first swipe and install all user commands forobjectlayerunder(node(">loadinstall",parnode(1))) { dropuserlibraryobject(a, 0, 0, 0, 0, 0, 0); } forobjectlayerunder(node(">newmodelinstall",parnode(1))) { dropuserlibraryobject(a, 0, 0, 0, 0, 0, 0); } return(1); } @B*tive>loadinstall>newmodelinstall? l &*(PlD4  h`  $  l             "Bnewuserlibrary@]setcurrent(node("../ChooseGroup",c)); setitem(node("MAIN:/project/userlibrary")); createuserlibrary(); set(itemcurrent(current), content(item) + get(node("..>originalitems",c))); nodeinsertinto(items(current)); setname(last(items(current)), getname(last(item))); comborefresh(current); nodefunction(node("../GroupIconGrid>refresh",c)); @B\"../ChooseGroupMAIN:/project/userlibrarylins..>originalitemsayg../GroupIconGrid>refreshcont>(o?\P4h} |oB xApAwPvD8B0$A h A` j  o tBdragfunction@R// parnode(1) : dropnodefrom // parnode(2) : dropnodeto // parval(3) : dropx // parval(4) : dropy // parval(5) : dropz // parnode(6) : i (or the view onto which I dropped) treenode ontoview = parnode(6); if(ontoview == node("../GroupIconGrid",c)) return(0); if(ne(node("../GroupIconGrid>viewfocus+",c), library())) { return(dropuserlibraryobject(parnode(1), parnode(2), parval(3), parval(4), parval(5), parnode(6))); } if(maintenance(20)) { msg("Operation Not Allowed", "You are in Presenter mode and are not allowed to do this operation"); return(0); } int unusualcontainer = 1; treenode droponto = parnode(2); if(objectexists(droponto)) { if( objectexists(classes(droponto)) && classobject(droponto) == node("/VisualTool", library()) ) unusualcontainer = 0; } else { droponto = node(">viewfocus+",parnode(6)); unusualcontainer = 0; } if(unusualcontainer) { if(msg("Unusual Container",gets(node("../GroupIconGrid>messagetext",c)))) unusualcontainer = 0; } treenode createdobject = 0; if(!unusualcontainer) { createdobject = createinstance(parnode(1), droponto); double x = parval(3); double y = parval(4); double z = parval(5); if(get(viewsnaptogrid(ontoview))) { double xgrid = get(gridx(ontoview)); double ygrid = get(gridy(ontoview)); set(spatialx(createdobject), mul(sign(x), round(fabs(x) / xgrid) * xgrid)); set(spatialy(createdobject), mul(sign(y), round(fabs(y)/ ygrid) * ygrid)); set(spatialz(createdobject, z)); } else { set(spatialx(createdobject), x); set(spatialy(createdobject), y); set(spatialz(createdobject), z); } if(comparetext(getname(parnode(1)), stringcopy(getname(createdobject), 1, stringlen(getname(parnode(1)))))) { int appendnum = content(droponto); if(droponto == model) appendnum--; appendnum = max(1, appendnum); while(objectexists(node(concat("/", getname(parnode(1)), numtostring(appendnum, 0,0)), droponto))) appendnum++; setname(createdobject, concat(getname(parnode(1)), numtostring(appendnum, 0,0))); } return createdobject; } return createdobject; @BP eGro../GroupIconGridprt/us../GroupIconGrid>viewfocus+..>onali Operation Not AllowedYou are in Presenter mode and are not allowed to do this operationplis/VisualTool>viewfocus+rolUnusual Container../GroupIconGrid>messagetexttiverepeLibraygr>displisrd grou..>pdard>was VIEWal/tab nlef/h ellw  ? l   #T D o< ( = ?\   (   o d}  lkkk ll F@( h6?l = )L #<,$=Y=5\  #>###l|##l$5$$ ! '4' )F)t))o))*5,**,?<,, M -*X-4L-/>//|/=p//ld/0900k01911k12922k2 =<3|33=359855|,5 5=569l66|`6T6=H67}77 777777777777777777=|78}88 87888|87p88d87X88L87@8848=(89}99799=9 ?=},=7 =====>}`>7T>>H>=<>?}?7??|?=p? BBAB  A= A>AvAlAAAvA=AAvAlAC64C C(C=C B D#XDPD=DDD5hD DD E5E EE4|E E GG5 GGG  JFF F=FFA F;FF F4F FvFlFFHw HAx H;dHHH4XH HvLHl@HH=4HL6J=JN6`M=MBautoinstallmessage@This library contains components that can be automatically installed to your model. Click OK to install these components.Bunusualcontainermessage@You are dragging the object into an object that does not usually act as a container. Click OK if you want to continue this action.Bautoinstallwarning@This library's auto-install Components are already installed if: 1. You loaded this library with the current model open. 2. You created a new model with this library loaded. Components may not have been installed, or you may want to install them again if: 1. A previously created model was opened with this library already loaded. 2. Updates to the library require a re-install of this library's components. Click OK to continue and install this library's components. B tempfile@Boriginalitems@@Bstyle@@B WS_CAPTION@BWS_CLIPSIBLINGS@BWS_CLIPCHILDREN@BWS_OVERLAPPED@B WS_SYSMENU@BWS_THICKFRAME@B exstyle@@BWS_EX_TOOLWINDOW@BWS_EX_TOPMOST@Bpalettewindow@@Y@@B tabwindow@Y@@BOnDropWindow@#// dragging from a window to another window if(objectexists(i)) executefsnode(node("MAIN:/project/exec/globals/nodefunctions/droptab_in_palette"),c,i,0,0); // dragging a tab out of a window else executefsnode(node("MAIN:/project/exec/globals/nodefunctions/droptab_out_palette"),c,i,0,0);B@\buttons\view_library.bmpBviewwindowclean@@B overlay@objectB viewfocus@../..Bviewwindowopen@Bviewwindowtype@@B spatialx@M?B spatialy@N@B spatialsx@P0@B spatialsy@Q`@B viewpointx@B viewpointy@B viewpointz@_|@Bhidden@?Bviewhidealllabels@?B transparent@?Bviewhideallbases@?Bgridx@@Bgridy@@Bviewsnaptogrid@?B buttonpanel@objectBviewwindowtype@Y@B spatialx@M@B spatialy@N@B spatialsx@P`@B spatialsy@Q9@B tooltip@B beveltype@@B New Library@objectBviewwindowtype@Y@B spatialx@MB spatialy@NB spatialsx@P9@B spatialsy@Q9@Bbitmap@buttons\newlibrary.bmpB OnPress@1nodefunction(node("../..>newuserlibrary", c)); @B tooltip@ New LibraryBOpen Libraries@objectBviewwindowtype@Y@B spatialx@M;@B spatialy@NB spatialsx@P9@B spatialsy@Q9@Bbitmap@buttons\openlibraries.bmpB OnPress@ setitem(node("MAIN:/project/userlibrary")); setcurrent(node("/project/exec/globals/nodevariables/tempfilename",maintree())); treenode openpathnode = node("VIEW:/environment/librarypath"); if(stringlen(gets(openpathnode))>0 && fileexists(gets(openpathnode))) { int index = 0; int nextindex = stringsearch(gets(openpathnode), "\\", index); int i = 1; while(nextindex >= 0) { index = nextindex; nextindex = stringsearch(gets(openpathnode), "\\", index+1); } string directory = stringpart(gets(openpathnode), 0, index); sets(current,directory); } else sets(current,concat(cdir(),"libraries")); // Load multiple libraries setcursor(3); treenode liblist = node("/project/filelist",maintree()); clearcontents(liblist); getfilebrowse("*.fsl","Flexsim Library","",getnodestr(current),2,liblist); for (treenode curlib = rank(liblist,2); objectexists(curlib); curlib = next(curlib)) { setcurrent(node("/project/exec/globals/nodevariables/tempfilename",maintree())); // This will be changed, so make sure it's set here too setnodestr(current,apchar(getname(curlib))); nodeinsertinto(item); if (not(comparetext(getnodestr(current),""))) { cmdloadtree(last(item),getnodestr(current), 1); } if(or(gt(content(last(item)), 0), objectexists(node(">1", last(item))))) { setcurrent(node("../../ChooseGroup",c)); set(itemcurrent(current), content(item) + get(node("../..>originalitems",c))); nodeinsertinto(items(current)); setname(last(items(current)), getname(last(item))); setviewtext(node("../../editName",c), getname(last(item))); comborefresh(current); nodefunction(node("../../GroupIconGrid>refresh",c)); setport(0);// port says: do I need to update if(not(objectexists(node(">release", last(item))))) setport(1); else { if(stringtonum(gets(node(">release", last(item)))) < stringtonum(gets(node("MAIN:/project/release")))) setport(1); } if(port) { nodefunction(node("MAIN:/project/exec/globals/nodefunctions/updatemodelversion"), 1, tonum(last(item))); } if(and(or(objectexists(node(">loadinstall/1",last(item))),objectexists(node(">newmodelinstall/1",last(item)))), not(maintenance(20)))) { nodefunction(node("../..>installcomponents", c), last(item)); buildnodeflexscript(model()); } buildnodeflexscript(last(item)); autoloadallmedia(); documentusercommands(); } else { destroyobject(last(item)); } } setcursor(1); @B tooltip@Open LibrariesBSave Library@objectBviewwindowtype@Y@B spatialx@MK@B spatialy@NB spatialsx@P9@B spatialsy@Q9@Bbitmap@buttons\savelibrary.bmpB OnPress@Lsetitem(node("../../GroupIconGrid>viewfocus+", c)); if(not(objectexists(item))) return(0); if(eq(item, library())) { msg("Cannot Save Standard Library", "You cannot save Flexsim's standard library", 1); return(0); } setcurrent(node("../..>tempfile",c)); treenode openpathnode = node("VIEW:/environment/librarypath"); if(stringlen(gets(openpathnode))>0 && fileexists(gets(openpathnode))) { int index = 0; int nextindex = stringsearch(gets(openpathnode), "\\", index); int i = 1; while(nextindex >= 0) { index = nextindex; nextindex = stringsearch(gets(openpathnode), "\\", index+1); } string directory = stringpart(gets(openpathnode), 0, index); sets(current,directory); } else sets(current,concat(cdir(),"libraries")); if(objectexists(item)) { savetree(item,"fsl", "Flexsim Library", gets(current)); }@B tooltip@ Save LibraryBClose Library@objectBviewwindowtype@Y@B spatialx@M@T@B spatialy@NB spatialsx@P9@B spatialsy@Q9@Bbitmap@buttons\closelibrary.bmpB OnPress@rsetitem(node("../../GroupIconGrid>viewfocus+", c)); if(not(objectexists(item))) return(0); if(eq(item, library())) { msg("Cannot Close Standard Library", "You cannot close Flexsim's standard library", 1); return(0); } if(msg("Close Library",concat("Close ",getname(item),"?"))) { if(objectexists(node(">uninstall",item))) nodefunction(node(">uninstall",item)); destroyobject(item); setnodenum(node("../../ChooseGroup>itemcurrent",c), getnodenum(node("../../ChooseGroup>itemcurrent",c))-1); nodefunction(node("../../ChooseGroup>refresh",c)); nodefunction(node("../../GroupIconGrid>refresh",c)); }@B tooltip@Close LibraryB!Install Auto-Install Components@objectBviewwindowtype@Y@B spatialx@M[@B spatialy@NB spatialsx@P9@B spatialsy@Q9@Bbitmap@#buttons\userlibraryautoinstall.bmpB OnPress@Lif (license()) { setitem(node("../../GroupIconGrid>viewfocus+", c)); if(not(objectexists(item))) return(0); if(eq(item, library())) { msg("No Library Components", "Flexsim's standard library does not contain any install components", 1); return(0); } if(and(objectexists(node(">newmodelinstall", item)), content(node(">newmodelinstall", item)) > 0)) { if(msg("Auto-Install Components", gets(node("../..>autoinstallwarning",c)))) { setcurrent(node(">newmodelinstall", item)); if(objectexists(current)) { forobjectlayerunder(current) { dropuserlibraryobject(a, 0,0,0,0,0); } } } } else { msg("No Library Components", "This library does not contain any install components", 1); return(0); } } else{msg("Flexsim","Not available in evaluation mode.");}@B tooltip@ Install Auto-Install ComponentsB ChooseGroup@objectBviewwindowtype@@[@B spatialx@M@B spatialy@N=@B spatialsx@P[@B spatialsy@Q^@B tooltip@Bitems@@BDiscrete Objects@ standardBFluid Objects@fluidB itemcurrent@?Balignrightmargin@@@B OnSelect@F applylinks(c); nodefunction(node("../GroupIconGrid>refresh",c)); @B coldlink@..>currentgroupB pickitem@Bcurrentgroup@?B refresh@setitem(node("MAIN:/project/userlibrary")); setcurrent(node("..>items",c)); while(content(current) > get(node("../..>originalitems",c))) { destroyobject(last(current)); } if(content(item) != 0) { iterate(1, content(item), 1) { nodeinsertinto(current); setname(last(current), getname(rank(item, count))); } } if(get(itemcurrent(up(current)))>content(current)) set(itemcurrent(up(current)), 1); comborefresh(up(current));@B 8MAIN:/project/userlibrary..>itemsev../..>originalitemsnter?ewfo?(>XHo@4 A %|oxlAd  (   B    B  $ AwpvdT/LBD8A0  %A| A} AA@BRename Library@object Bviewwindowtype@Y@B spatialx@M]@B spatialy@N;@B spatialsx@P9@B spatialsy@Q9@Bbitmap@buttons\_rename.bmpBalignrightposition@=@B OnPress@setitem(node("../GroupIconGrid>viewfocus+", c)); if(not(objectexists(item))) return(0); if(eq(item, library())) { msg("Cannot Rename Standard Library", "You cannot rename Flexsim's standard library", 1); return(0); } windowshow(windowfromnode(node("../ChooseGroup",c)), 0); windowshow(windowfromnode(node("../Rename Library",c)), 0); windowshow(windowfromnode(node( "../editName",c)), 1); windowshow(windowfromnode(node("../Apply",c)), 1); setviewtext(node( "../editName",c), getname(item));@B tooltip@Rename LibraryBGroupIconGrid@objectBviewwindowtype@@B spatialx@M?B spatialy@NK@B spatialsx@P@b@B spatialsy@Q@B cellwidth@a@Bcellwidthoriginal@a@B cellheight@4@Bcellheightoriginal@4@Bcellwidthoriginalaligncenter@Q@Bcellheightoriginalaligncenter@Q@Bpicture@cbitmaps\views\static.bmpB viewfocus@MAIN:/project/libraryBviewwindowsource@?B displaygroup@ standardBalignrightmargin@Balignbottommargin@BOnDrag@//pr();pt("OnDrag "); //pt(getname(i));pt(" "); //pf(dropx());pt(" "); //pf(dropy());pt(" "); //pf(dropz());pt(" "); //pf(eventdata); //pt(" Event code"); //pt(" ");pt(getname(selectedobject(c))); //pt(" ");pt(getname(selectedobject(i))); //pt(" drop node to ");pt(getname(dropnodeto())); //pt(" drop nodefrom ")/;pt(getname(dropnodefrom())); nodefunction(node("..>dragfunction",c), dropnodefrom(), dropnodeto(), dropx(), dropy(), dropz(), i);@B messagetext@You are dragging the object into an object that does not usually act as a container. Click OK if you want to continue this action.B menupopup@@BExplore Object Tree@if (license()) { setitem(selectedobject(node("../..",c))); if (objectexists(item)) { createview("VIEW:/standardviews/inspector",nodetopath(item),nodetopath(item)); } } else{msg("Flexsim","Not available in evaluation mode.");}BExplore Library Tree@if (license()) { createview("VIEW:/standardviews/inspector",gets(viewfocus(node("../..",c))),gets(viewfocus(node("../..",c)))); } else{msg("Flexsim","Not available in evaluation mode.");} B-@BRemove Object From Library@L//pt(getname(selectedobject(node("../..",c)))) setitem(node("../..>viewfocus+", c)); if(eq(item, library())) { msg("Cannot Remove Object", "You cannot remove objects from Flexsim's standard library", 1); return(0); } if(objectexists(selectedobject(node("../..",c)))) { destroyobject(selectedobject(node("../..",c))); }B-@B Parameters@setitem(node("../..>viewfocus+", c)); if(eq(item, library())) { msg("Cannot View Parameters", "You cannot view parameters for Flexsim standard library objects", 1); return(0); } viewmenucommand("Parameters",node("../..",c));B Properties@setitem(node("../..>viewfocus+", c)); if(eq(item, library())) { msg("Cannot View Parameters", "You cannot view parameters for Flexsim standard library objects", 1); return(0); } viewmenucommand("Properties",node("../..",c));B refresh@setport(node("../../ChooseGroup",c)); if(le(get(itemcurrent(port)), get(node("../..>originalitems",c)))) { sets(viewfocus(node("..",c)), "MAIN:/project/library"); if(objectexists(node("..>_displaygroup",c))) setname(node("..>_displaygroup",c), "displaygroup"); forobjectlayerunder(library()) { setcurrent(node(">displaygroup",a)); if(objectexists(current)) { setitem(node(">displaygrouplist",a)); iterate(1,content(item),1) { if(comparetext(getnodestr(rank(items(port),get(itemcurrent(port)))),getname(rank(item,count())))) { setnodestr(current,getname(rank(item,count()))); } } } } sets( node("..>displaygroup",c), gets(rank(items(port),get(itemcurrent(port)))) ); } else { sets(viewfocus(node("..",c)), concat("MAIN:/project/userlibrary/", numtostring(get(itemcurrent(port)) - get(node("../..>originalitems",c)), 0, 0))); if(objectexists(node("..>displaygroup",c))) setname(node("..>displaygroup",c), "_displaygroup"); } treenode focus = node("..>viewfocus+",c); int height = 0; int width = 0; int picturealign = get(node("..>picturealignleftoriginal",c)); if (focus == library() || objectexists(node(">picturealignleft",focus))) // The library is recent - use the new defaults { height = get(node("..>cellheightoriginal",c)); width = get(node("..>cellwidthoriginal",c)); if (objectexists(node("..>_picturealignleft",c))) setname(node("..>_picturealignleft",c),"picturealignleft"); if(objectexists(node(">picturealignleft",focus))) picturealign = get(node(">picturealignleft",focus)); } else { height = get(node("..>cellheightoriginalaligncenter",c)); width = get(node("..>cellwidthoriginalaligncenter",c)); if (objectexists(node("..>picturealignleft",c))) setname(node("..>picturealignleft",c),"_picturealignleft"); } if(objectexists(node(">cellheight",focus))) set(cellheight(node("..",c)), get(node(">cellheight",focus))); else set(cellheight(node("..",c)), height); if(objectexists(node(">cellwidth",focus))) set(cellwidth(node("..",c)), get(node(">cellwidth",focus))); else set(cellwidth(node("..",c)), width); if(objectexists(node("..>picturealignleft",c))) set(node("..>picturealignleft",c), picturealign); repaintview(node("..",c));@Bd ../../ChooseGroupiy..>iev../..>originalitemsalit..MAIN:/project/library..>_displaygroup..>_displaygroupdisplaygroup>displaygroup>displaygrouplist?ngwitiveteni..>displaygrouptive..repeMAIN:/project/userlibrary/../..>originalitems ..>displaygroup..>displaygroup_displaygroup..>viewfocus+ ..>picturealignleftoriginaltive>picturealignleft..>cellheightoriginal..>cellwidthoriginal..>_picturealignleft/tab..>_picturealignleftpicturealignleft>picturealignleft>picturealignleftary..>cellheightoriginalaligncenter ..>cellwidthoriginalaligncenter..>picturealignleft..>picturealignleftd_picturealignleft>cellheightdran..onGr>cellheight..>cellwidth..>cellwidth....>picturealignleft..>picturealignleft..@,o 0O&|xopX|L @C8u9o   owhXHo@,x ( >    !  A ?    B B vt/lBdxXH|< 0C(Cyv/BA u` tTD|8 ,C$Co 2uDA4 ;  |o| C9|otp * pohT w   o #?###o#$6$$%6 %%&6t&&|h&X&oP&0 T/(+ (((=(((#((=(*50**|$**o *+5|++|p+`+oX+@ 7 ,,,o,-w ---o- 9 .L.<.=0../5//|/x/=l//X X3533|33o345D44|84(4o 4 O 55t5ol5T6w666o6 Z9 9 9=99:}| :|p :` :=T ::D :8 :( :o :  G;} ;4 ; ; ; ;o ;  H < < <= << =}` =|T =D ==8 ==, = = =o =  B>} >4 > > >| >ot >p  f @ @ @o @ A}, A4 AA Ao A B X BH Bo@ B< Bpicturealignleft@6@Bpicturealignleftoriginal@6@Bdepresshighlighted@B editName@objectBviewwindowtype@@Y@B spatialx@M@B spatialy@N=@B spatialsy@Q5@Balignrightmargin@E@B tooltip@#Enter the name of the User LibraryBhidden@?BApply@objectBviewwindowtype@Y@Balignrightposition@E@B spatialy@N;@B spatialsx@PD@B spatialsy@Q9@B OnPress@4setitem(node("../GroupIconGrid>viewfocus+",c)); if(and(objectexists(item), ne(item, library))) { setname(item, getviewtext(node( "../editName",c))); setname(rank(node("../ChooseGroup>items",c), getrank(item) + get(node("..>originalitems",c))), getviewtext(node( "../editName",c))); comborefresh(node("../ChooseGroup",c)); } windowshow(windowfromnode(node("../ChooseGroup",c)), 1); windowshow(windowfromnode(node("../Rename Library",c)), 1); windowshow(windowfromnode(node( "../editName",c)), 0); windowshow(windowfromnode(node("../Apply",c)), 0); @Bhidden@?Bortho@object@B viewfocus@MAIN:/project/modelBviewwindowopen@?Bviewwindowtype@@Blisteningwindow@&VIEW:/active/CraneParameters161467176@B@?B spatialx@M`c@B spatialy@NX@B spatialsx@P(@B spatialsy@Q0@B viewpointx@v1@B viewpointy@3@B viewpointz@B viewpointrx@VB viewpointry@B viewpointrz@Bviewmagnification@P,B@Bviewprojectiontype@?Bviewpointradius@D@Bviewbackgroundcolor@@B@?B@?B@?Bviewhideallbases@?Bviewhidealldrawcontent@Bviewhidealllabels@Bviewhideallconnectors@B viewlights@@BLight Source 1@@B viewlightx@?B viewlighty@B viewlightz@?B viewlightr@?B viewlightg@?B viewlightb@?Bviewlightaspos@BLight Source 2@@B viewlightx@B viewlighty@?B viewlightz@?B viewlightr@?B viewlightg@?B viewlightb@?Bviewlightaspos@Bviewautoconnect@Bviewsnaptogrid@?Bviewsyncupdate@B viewnear@yB viewfar@y@B viewfield@V@Bviewfirstperson@B viewshowgrid@?Bgridx@?Bgridy@?Bviewlabelalignment@?B OnDropNode@@//pt(" drop node");pt(getname(c));pt(getname(i));pr(); if(i != c) { string thekey; if(!iskeydown()) { int editmode = modeleditmode(-1); switch(editmode) { case EDITMODE_A_CONNECT: thekey = "A"; break; case EDITMODE_Q_CONNECT: thekey = "Q"; break; case EDITMODE_S_CONNECT: thekey = "S"; break; case EDITMODE_W_CONNECT: thekey = "W"; break; case EDITMODE_E_CONNECT: thekey = "E"; break; case EDITMODE_D_CONNECT: thekey = "D"; break; } } else thekey = strascii(lastkeydown()); if(switch_selected(c, -1) && !switch_selected(i, -1)) groupconnectto(i, thekey); else if(switch_selected(i, -1) && !switch_selected(c, -1)) groupconnectfrom(c, thekey); else contextdragconnection(c, i, thekey); set(node("MAIN:/project/exec/globals/nodevariables/connectionjustmade"), 1); } @BOnDrop@makeactive(c);@B menuview@B viewlist@ OrthoViewsB menupopup@@BEdit@@BDesignate This Node (so)@Aviewmenucommand("Edit|Designate This Node (so)",ownerobject(c));B-@BReset Object@setcurrent(selectedobject(ownerobject(c))); // Make sure something was actually selected if(not(objectexists(current))) { return(0); } set(spatialrx(current),0); set(spatialry(current),0); set(spatialrz(current),0); set(spatialz(current),0);BSet Object Reset Position@eif(objectexists(selectedobject(ownerobject(c)))) setresetposition(selectedobject(ownerobject(c)));B-@BAdd to User Library@4addtouserlibrary(selectedobject(ownerobject(c))); BView@@ BDesignate This View (sv)@Aviewmenucommand("View|Designate This View (sv)",ownerobject(c));B-@B&Capture Screen p@.viewmenucommand("View|Print",ownerobject(c));B Reset View@l//pt(" Resetting view ");popupmenu(node("../..",c)); viewmenucommand("View|Zoom...|Reset",ownerobject(c));BReset View Rotation@treenode theview = ownerobject(c); set(viewpointrx(theview),-90); set(viewpointry(theview),0); set(viewpointrz(theview),0);B0"/buttons/view_viewsettings.bmp"V&iew Settings@treenode theview = node("VIEW:/standardviews/View Settings"); nodefunction(node("VIEW:/nodefunctions/createview_palette"),theview);BSave Settings as Default@>setcurrent(ownerview(c)); if(and(not(comparetext(getname(current), "ortho")), not(comparetext(getname(current), "persp")))) { msg("Error", "The view must be either an untabbed Orthographic \nor Perspective view to make it the default."); return(0); } if(not(objectexists(node("/Tools/DefaultGUIs",model())))) { nodeinsertinto(node("/Tools",model())); setname(last(node("/Tools",model())), "DefaultGUIs"); } setitem(node("/Tools/DefaultGUIs",model())); if(not(objectexists(node(concat("/", getname(current)), item)))) { nodeinsertinto(item); setname(last(item), getname(current)); nodeadddata(last(item), DATATYPE_STRING); } setport(node(concat("/", getname(current)), item)); clearcontents(port); createcopy(current, port); setname(last(port), getname(current)); sets(port, nodetopath(last(port),1));B-@BView Container@0treenode view = ownerobject(c); treenode focus = node(">viewfocus+",view); if(focus == model()) return 0; viewmenucommand("View|Up", view); focus = node(">viewfocus+",view); set(viewpointx(view), xcenter(focus)); set(viewpointy(view), ycenter(focus)); set(viewpointz(view), 0); /*int orthonr = 0; treenode activeviews = node("VIEW:/active"); for(int i = 1; i < getrank(view); i++) { treenode curview = rank(activeviews, i); if(comparetext(getname(curview), "ortho")) orthonr++; }*/ string path = nodetopath(focus, 1); if(stringlen(path)>20) path = stringpart(path, 20, stringlen(path)-20); else path = getname(focus); //sets(windowtitle(view), concat("Orthographic View - ", numtostring(orthonr, 0,0), " - ", path)); sets(windowtitle(view), concat("Orthographic View - ", path)); BView Contents@treenode view = ownerobject(c); set(viewpointx(view), 0); set(viewpointy(view), 0); set(viewpointz(view), 0); viewmenucommand("View|Down", view); treenode focus = node(">viewfocus+",view); /*int orthonr = 0; treenode activeviews = node("VIEW:/active"); for(int i = 1; i < getrank(view); i++) { treenode curview = rank(activeviews, i); if(comparetext(getname(curview), "ortho")) orthonr++; }*/ string path = nodetopath(focus, 1); if(stringlen(path)>20) path = stringpart(path, 20, stringlen(path)-20); else path = getname(focus); //sets(windowtitle(view), concat("Orthographic View - ", numtostring(orthonr, 0,0), " - ", path)); sets(windowtitle(view), concat("Orthographic View - ", path)); B-@BExplore Structure@if (license()) { viewmenucommand("View|Structure...|Explore structure",ownerobject(c)); } else{msg("Flexsim","Not available in evaluation mode.");} BModeling Utilities@@BC"/buttons/view_edithighlightedobject.bmp"Edit &Highlighted Object@treenode theview = node("VIEW:/standardviews/Edit Highlighted Object"); nodefunction(node("VIEW:/nodefunctions/createview_palette"),theview,1);B?"/buttons/view_editselectedobjects.bmp"Edit &Selected Objects@treenode theview = node("VIEW:/standardviews/Edit Selected Objects"); nodefunction(node("VIEW:/nodefunctions/createview_palette"),theview,1);B."/buttons/view_findobjects.bmp"&Find Objects@treenode theview = node("VIEW:/standardviews/Find Objects"); nodefunction(node("VIEW:/nodefunctions/createview_palette"),theview,1);B4"/buttons/view_travelnetworks.bmp"Travel &Networks@treenode theview = node("VIEW:/standardviews/Travel Networks"); nodefunction(node("VIEW:/nodefunctions/createview_palette"),theview,1);B!"/buttons/view_views.bmp"&Views@treenode theview = node("VIEW:/standardviews/Views"); nodefunction(node("VIEW:/nodefunctions/createview_palette"),theview,1);B#"/buttons/view_groups.bmp"&Groups@treenode theview = node("VIEW:/standardviews/Groups"); nodefunction(node("VIEW:/nodefunctions/createview_palette"),theview,1);B0"/buttons/view_modellayouts.bmp"&Model Layouts@treenode theview = node("VIEW:/standardviews/Model Layouts"); nodefunction(node("VIEW:/nodefunctions/createview_palette"),theview,1);B&"/buttons/view_tree.bmp"Explore Tree@if (license()) { viewmenucommand("Explore|As Tree",ownerobject(c)); } else{msg("Flexsim","Not available in evaluation mode.");} B Properties@setcurrent(node("VIEW:/active")); setport(content(current)); viewmenucommand("Parameters",ownerobject(c)); if(content(current)>port) { setcurrent(node(">listeningwindow", ownerobject(c))); sets(current, nodetopath(last(node("VIEW:/active")), 1)); set(first(current), 1); }B windowtitle@Orthographic View - modelBviewignoreobjects@B statusbar@?Bconnectorsize@?Bconnectorstyle@?B labelscale@@BOnMouseWheel@treenode vfocus = node("@>viewfocus+",c); treenode selected = selectedobject(ownerobject(c)); double mousedelta = get(node("..>OnMouseWheelDelta",c)); if(objectexists(selected)) { double dz = mousedelta / 1000; if(switch_selected(selected)) { forobjecttreeunder(vfocus) { if(switch_selected(a)) { if(up(a) != vfocus) { // do an 'erase' because vectorproject caches stuff if it gets the same parameters vectorprojectx(a,0,0,0,vfocus); double x1 = vectorprojectx(vfocus, 0,0,0,up(a)); double y1 = vectorprojecty(vfocus, 0,0,0,up(a)); double z1 = vectorprojectz(vfocus, 0,0,0,up(a)); double x2 = vectorprojectx(vfocus, 0,0,dz,up(a)); double y2 = vectorprojecty(vfocus, 0,0,dz,up(a)); double z2 = vectorprojectz(vfocus, 0,0,dz,up(a)); double newdx = x2-x1; double newdy = y2-y1; double newdz = z2-z1; setloc(a,xloc(a)+newdx, yloc(a)+newdy, zloc(a)+newdz); } else setloc(a,xloc(a), yloc(a), maxof(0,zloc(a)+dz)); } } } else { if(up(selected) != vfocus) { // do an 'erase' because vectorproject caches stuff if it gets the same parameters vectorprojectx(selected,0,0,0,vfocus); double x1 = vectorprojectx(vfocus, 0,0,0,up(selected)); double y1 = vectorprojecty(vfocus, 0,0,0,up(selected)); double z1 = vectorprojectz(vfocus, 0,0,0,up(selected)); double x2 = vectorprojectx(vfocus, 0,0,dz,up(selected)); double y2 = vectorprojecty(vfocus, 0,0,dz,up(selected)); double z2 = vectorprojectz(vfocus, 0,0,dz,up(selected)); double dx = x2 - x1; double dy = y2 - y1; dz = z2 - z1; setloc(selected,xloc(selected)+dx, yloc(selected)+dy, zloc(selected)+dz); } else setloc(selected,xloc(selected), yloc(selected), maxof(0, zloc(selected)+dz)); } } else { set(viewmagnification(ownerobject(c)), (1.0+(max(-499, mousedelta)/500))*get(viewmagnification(ownerobject(c)))); } repaintview(ownerobject(c)); @BOnMouseWheelDelta@^@B OnPreOpen@_setname(c, "ortho"); treenode activeviews = node("VIEW:/active"); /* int totalnr = 0; int orthonr = 1; for(int i = 1; i < getrank(c); i++) { treenode view = rank(activeviews, i); if(comparetext(getname(view), "ortho") || comparetext(getname(view), "persp") || comparetext(getname(view), "planar") ) totalnr++; if(comparetext(getname(view), getname(c))) orthonr++; } inc(spatialy(c), 25*totalnr); sets(windowtitle(c), concat("Orthographic View - ", numtostring(orthonr, 0,0), " - model"));*/ // This moves the view if there is another view under it. int bust=1; // to prevent possible infinite loops int moved=1; while(moved && bust<20) { moved = 0; for(int i=2;i<=content(activeviews);i++) { treenode view = rank(activeviews,i); if(view==c) continue; if(fabs(get(spatialx(view))-get(spatialx(c)))<25 && fabs(get(spatialy(view))-get(spatialy(c)))<25 && get(viewwindowtype(view))==get(viewwindowtype(c))) { inc(spatialx(c),25); inc(spatialy(c),25); moved = 1; break; } } bust++; } sets(windowtitle(c), "Orthographic View - model");@BOnOpen@set(itemcurrent(c),1); set(first(itemcurrent(c)),0); /*executefsnode(node("/ToolPanel/FindPanel>ToolOnOpen",c), node("/ToolPanel/FindPanel",c)); executefsnode(node("/ToolPanel/GroupsPanel>ToolOnOpen",c), node("/ToolPanel/GroupsPanel",c)); executefsnode(node("/ToolPanel/ViewPanel>ToolOnOpen",c), node("/ToolPanel/ViewPanel",c)); int orthonr = 1; treenode activeviews = node("VIEW:/active"); for(int i = 1; i < getrank(c); i++) { treenode view = rank(activeviews, i); if(comparetext(getname(view), "ortho")) orthonr++; }*/ treenode focus = node(">viewfocus+",c); string path = nodetopath(focus, 1); if(stringlen(path)>20) path = stringpart(path, 20, stringlen(path)-20); else path = getname(focus); //sets(windowtitle(c), concat("Orthographic View - ", numtostring(orthonr, 0,0), " - ", path)); sets(windowtitle(c), concat("Orthographic View - ", path)); //repaintview(c);@B OnClose@t/*int orthonr = 0; treenode activeviews = node("VIEW:/active"); setitem(1); while(le(item,content(activeviews))) { setcurrent(rank(activeviews,item)); if(and(comparetext("ortho",getname(current)),ne(item,getrank(c)))) { orthonr++; setnodestr(windowtitle(current), concat("Orthographic View - ",numtostring(orthonr,0,0)," - ",getname(node(">viewfocus+",current),1))); } if(and(comparetext(gets(windowtitle(current)), "View Window Settings"), eq(node(">objectfocus+", current), c))) { destroyobject(current); setitem(item - 1); } setitem(item + 1); } repaintall();*/@B OnKeyDown@set(first(itemcurrent(c)), 0);@B OnKeyUp@set(first(itemcurrent(c)), 0); // I'm going to unselect the tools folder if the last key down was a delete and the content of the model is one if(and(eq(lastkeydown(),46), eq(content(model()), 1))) { setselectedobject(c, 0); } @B itemcurrent@?@B lastclicked@B clickedx@@B clickedy@@B viewfog@B gridfog@Bgridlinewidth@Bgridlinecolor@@B@?B@?B@?B OnClick@${//pt("OnClick clickcode = : ");pd(clickcode());pt(" ");pr(); #define MODE_NORMAL 0 if(get(viewwindowopen(c))) { treenode connectionjustmade = node("MAIN:/project/exec/globals/nodevariables/connectionjustmade"); setcurrent(node("MAIN:/project/exec/globals/nodevariables/connectionjustmade"));// I just made a drag connection int mode = modeleditmode(-1); treenode lastclickedobject = first(itemcurrent(c)); if(get(connectionjustmade))// I just did a drop node { set(connectionjustmade, 0); set(lastclickedobject, 0); return(0); } if(clickcode() == DOUBLE_CLICK && objectexists(selectedobject(c))) { if(or( node("VIEW:/active/LAST>objectfocus+") == selectedobject(c), node("VIEW:/active/LAST>viewfocus+") == selectedobject(c) )) { sets(node(">listeningwindow",c), nodetopath(last(node("VIEW:/active")),1)); set(first(node(">listeningwindow",c)), 1); } } if(clickcode() == LEFT_RELEASE) {// the left mouse button was just released int dx = cursorinfo(c,1,1,1) - getnodenum(rank(itemcurrent(c),2)); int dy = cursorinfo(c,1,2,1) - getnodenum(rank(itemcurrent(c),3)); if(fabs(dx)<3 && fabs(dy)<3) // if you release in nearly the same spot as you clicked - (if you didn't move the view) { if(iskeydown('F') || iskeydown('R') || mode == EDITMODE_CREATEOBJECTS || mode == EDITMODE_CREATEANDCONNECTOBJECTS) { if(objectexists(selectedobject(c))) { if(not(isclasstype(selectedobject(c), CLASSTYPE_VISUALTOOL))) return(0); } treenode libraryview = NULL; // Here I'm trying to find the Library treenode active = node("VIEW:/active"); for(int i = 1; i <= content(active) && !libraryview; i++) { treenode curnode = rank(active, i); if(objectexists(tabwindow(curnode)) && get(tabwindow(curnode)) == -102) // palettewindows tabbed in one window { for(int w=1;w<=content(node("/tabcontrol",curnode));w++) { treenode checkview = rank(node("/tabcontrol",curnode),w); if(objectexists(windowtitle(checkview)) && comparetext("Library", gets(windowtitle(checkview)))) { libraryview = checkview; } } } else if(objectexists(windowtitle(curnode)) && comparetext("Library", gets(windowtitle(curnode)))) { libraryview = curnode; } } if(objectexists(selectedobject(node("/GroupIconGrid", libraryview)))) { setdropcoords(c); //pt(" drop x = ");pf(dropx());pt(" drop y = ");pf(dropy());pt(" drop z = ");pf(dropz());pr(); treenode newobj = nodefunction(node(">dragfunction", libraryview), selectedobject(node("/GroupIconGrid", libraryview)), selectedobject(c), dropx(),dropy(),dropz(), c ); if(iskeydown('R') || mode==EDITMODE_CREATEANDCONNECTOBJECTS) { if(objectexists(newobj) && objectexists(get(lastclickedobject))) { contextdragconnection(get(lastclickedobject), newobj, "A"); } else { set(lastclickedobject, 0); } set(lastclickedobject, newobj); } return (0); } } } } if(clickcode() == LEFT_PRESS) {// the left mouse button was just pressed down setnodenum(rank(itemcurrent(c),2),cursorinfo(c,1,1,1)); // clickedx setnodenum(rank(itemcurrent(c),3),cursorinfo(c,1,2,1)); // clickedy if(iskeydown('G') || mode == EDITMODE_FASTPROPSWITCH)// edit objects mode { treenode listeningwindowatt = node(">listeningwindow",c); treenode listeningwindow = node(gets(listeningwindowatt)); if(objectexists(listeningwindow)) { treenode focus = node(">objectfocus+",listeningwindow); if(not(objectexists(focus))) focus = node(">viewfocus+",listeningwindow); if(objectexists(selectedobject(c)) && selectedobject(c) != focus) { if(!get(first(listeningwindowatt)) || comparetext(gets(guifocusclass(selectedobject(c))) , gets(guifocusclass(focus)))) { if(objectexists(viewfocus(listeningwindow))) sets(viewfocus(listeningwindow), nodetopath(selectedobject(c))); if(objectexists(objectfocus(listeningwindow))) sets(objectfocus(listeningwindow), nodetopath(selectedobject(c))); applylinks(listeningwindow, 1);// refresh links redirectpicklists(listeningwindow); //refreshview(item); if(objectexists(OnOpen(listeningwindow))) executefsnode(OnOpen(listeningwindow), listeningwindow, selectedobject(c)); forobjecttreeunder(listeningwindow) repaintview(a); } } } else { sets(listeningwindowatt, ""); } } } }@B$:/1/MAIN:/project/exec/globals/nodevariables/connectionjustmadeMAIN:/project/exec/globals/nodevariables/connectionjustmadeojecVIEW:/active/LAST>objectfocus+athVIEW:/active/LAST>viewfocus+ v:/pr>listeningwindowVIEW:/active>listeningwindowst veenfsls/Ocreaprog of  fraten iabl  lasVIEW:/activeErroctedas neen ed. avi ot werlys noDesit-cln thnd st asiabl>var/tabcontrolper/tabcontrolgavLibrarywsesLibraryOPT_EGER/GroupIconGridARY>dragfunction/Sta/GroupIconGridMUTA _USEE: A  >listeningwindowto tTYPETROL>objectfocus+OPT_>viewfocus+loba_PEROWERs BOUNTYPEEde the {|-o?l` >| 6  ,  ?    o  |, =  }D =8}` =T5 #)+o#x0p +X #H+<o4(#+ou o|h}o K #,  0$#6 ## #~#p## d#o\#<D####o<$6  $$ $~$$$ $o$<$$$$o Q&)l &'\&&P&4D&&'4&&(&4& J(+(#( (4((+ (#((4((+((R(|(F 3 **+*o /,*@,0,,+$,o-0?L002?x22l2\3633 ?S5?055 5455=5 &76) 6#66||6#p6=d66X6#L6=@6868 8 ,:?h : H:X:4L: 3:<:=0::  + ;) ;B;t;1;=; ;3;;1;=x; =>=P=== 85 888  18&:888=88848  ( %A)l :AB\AtPA1DA=8AA,A A1A=AC>CC=|C35333 C3) 3*3=33&33=3343 Y?FF+FF=FFHHoO? O Oj Oo M9x M8p M7h L+\ LoT K+H K8 K=, KK J J= JJ U"P+ P# PP4 PP PR GR)0 R$ R| R= RR R= R Th Td T=X T T|L T=@ T Q X} XX=| XZ} Z= Z Z= ZI\ kc# cc0 f f< ffffo f ff  fo gp g<X ggggoP g@ gg 4 go,  y{i+ i# ii4 ii iGk? k k ko k l? l l lt l= l  gdm4 m=( m o?l oo\ o=P o o@  T p* p p=| pp> pp p= p p  gNq), q( q= qq+ qo q q+ qo  fDu+ uB ut u u= ust s s+t sol s*` s|T sH s=< s  U w w9 w= w xu8x,x+ xox9 x=x  ] y`y8Ty=Hy zuzz+zoz8xz=lz {{{={ ||=|  ` ~~=~=~ DD+8o0=$ ==  a=X  a lda J @u=x arnBviewconnectioncolor@@B@B@B@B distcutoff@nj@B lastloc@@Bx@By@Bsx@Bsy@Bdocumentwindow@Y@@B tabwindow@@Y@@BOnDropWindow@%// dragging from a window to another window if(objectexists(i)) executefsnode(node("MAIN:/project/exec/globals/nodefunctions/droptab_in_document"),c,i,0,0); // dragging a tab out of a window else executefsnode(node("MAIN:/project/exec/globals/nodefunctions/droptab_out_document"),c,i,0,0);BOrtho@\buttons\view_ortho.bmpBviewwindowclean@@Bpersp@objectCB viewfocus@MAIN:/project/modelBviewwindowopen@?Bviewwindowtype@@Blisteningwindow@@B@B spatialx@Mf@B spatialy@N_@B spatialsx@P(@B spatialsy@Q0@B viewpointx@]@B viewpointy@~1@B viewpointz@B viewpointrx@>B viewpointry@B viewpointrz@EBviewmagnification@@Bviewprojectiontype@Bviewpointradius@$@B viewlights@@BLight Source 1@@B viewlightx@?B viewlighty@B viewlightz@?B viewlightr@?B viewlightg@?B viewlightb@?Bviewlightaspos@BLight Source 2@@B viewlightx@B viewlighty@?B viewlightz@?B viewlightr@?B viewlightg@?B viewlightb@?Bviewlightaspos@Bviewbackgroundcolor@@B@?B@?B@?Bviewautoconnect@Bviewhideallbases@?Bviewhidealldrawcontent@Bviewhideallconnectors@?Bviewhidealllabels@?Bviewsnaptogrid@?Bviewsyncupdate@B viewnear@?B viewfar@@@B viewfield@V@Bviewfirstperson@B viewshowgrid@?Bgridx@?Bgridy@?Bviewlabelalignment@?B OnDropNode@@//pt(" drop node");pt(getname(c));pt(getname(i));pr(); if(i != c) { string thekey; if(!iskeydown()) { int editmode = modeleditmode(-1); switch(editmode) { case EDITMODE_A_CONNECT: thekey = "A"; break; case EDITMODE_Q_CONNECT: thekey = "Q"; break; case EDITMODE_S_CONNECT: thekey = "S"; break; case EDITMODE_W_CONNECT: thekey = "W"; break; case EDITMODE_E_CONNECT: thekey = "E"; break; case EDITMODE_D_CONNECT: thekey = "D"; break; } } else thekey = strascii(lastkeydown()); if(switch_selected(c, -1) && !switch_selected(i, -1)) groupconnectto(i, thekey); else if(switch_selected(i, -1) && !switch_selected(c, -1)) groupconnectfrom(c, thekey); else contextdragconnection(c, i, thekey); set(node("MAIN:/project/exec/globals/nodevariables/connectionjustmade"), 1); } @BOnDrop@makeactive(c);@B menuview@B viewlist@ PerspViewsB menupopup@@BEdit@@BDesignate This Node (so)@Aviewmenucommand("Edit|Designate This Node (so)",ownerobject(c));B-@BReset Object@setcurrent(selectedobject(ownerobject(c))); // Make sure something was actually selected if(not(objectexists(current))) { return(0); } set(spatialrx(current),0); set(spatialry(current),0); set(spatialrz(current),0); set(spatialz(current),0);BSet Object Reset Position@eif(objectexists(selectedobject(ownerobject(c)))) setresetposition(selectedobject(ownerobject(c)));B-@BAdd to User Library@4addtouserlibrary(selectedobject(ownerobject(c))); BView@@ BDesignate This View (sv)@Aviewmenucommand("View|Designate This View (sv)",ownerobject(c));B-@B&Capture Screen p@.viewmenucommand("View|Print",ownerobject(c));B Reset View@l//pt(" Resetting view ");popupmenu(node("../..",c)); viewmenucommand("View|Zoom...|Reset",ownerobject(c));BReset View Rotation@treenode theview = ownerobject(c); set(viewpointrx(theview),-90); set(viewpointry(theview),0); set(viewpointrz(theview),0);BFull Screen View@ #define WS_OVERLAPPED 0x00000000 #define WS_VISIBLE 0x10000000 #define WS_CAPTION 0x00C00000 #define WS_SYSMENU 0x00080000 #define WS_THICKFRAME 0x00040000 #define WS_MINIMIZEBOX 0x00020000 #define WS_MAXIMIZEBOX 0x00010000 treenode view = ownerobject(c); if(view==ownerview(c)) // make sure it isn't in a tabbed window { if(comparetext(getname(c), "Full Screen View")) { setname(c, "Out of Full Screen View"); // Set its width and height to the size of the screen int screensx = getsystemmetric(1); int screensy = getsystemmetric(2); /*treenode closetoolpanel = node("/CloseToolPanel",view); treenode opentoolpanel = node("/OpenToolPanel", view); if(get(spatialx(closetoolpanel))>=0) executefsnode(OnPress(closetoolpanel), closetoolpanel); set(spatialx(opentoolpanel), -get(spatialsx(opentoolpanel))); windowmove(windowfromnode(opentoolpanel), get(spatialx(opentoolpanel)), get(spatialy(opentoolpanel)), get(spatialsx(opentoolpanel)), get(spatialsy(opentoolpanel)), 1);*/ treenode lastloc = node(">lastloc", view); set(rank(lastloc, 1), get(spatialx(view))); set(rank(lastloc, 2), get(spatialy(view))); set(rank(lastloc, 3), get(spatialsx(view))); set(rank(lastloc, 4), get(spatialsy(view))); if(objectexists(documentwindow(view))) { destroyobject(documentwindow(view)); rebindobjectattributes(view); } refreshview(view); windowstyle(view, WS_VISIBLE, 0); windowmove(windowfromnode(view), 0,0,screensx,screensy, 1); keyboardfocus(windowfromnode(view)); } else { setname(c, "Full Screen View"); /*treenode opentoolpanel = node("/OpenToolPanel", view); set(spatialx(opentoolpanel), 0); windowmove(windowfromnode(opentoolpanel), get(spatialx(opentoolpanel)), get(spatialy(opentoolpanel)), get(spatialsx(opentoolpanel)), get(spatialsy(opentoolpanel)), 1);*/ if(!objectexists(documentwindow(view))) { nodeinsertafter(node(">LAST",view)); nodeadddata(node(">LAST",view),DATATYPE_NUMBER); setnodename(node(">LAST",view),"documentwindow"); setnodenum(node(">LAST",view),103); rebindobjectattributes(view); } refreshview(view); windowstyle(view, WS_OVERLAPPED+WS_CAPTION+WS_SYSMENU+WS_THICKFRAME+WS_MINIMIZEBOX+WS_MAXIMIZEBOX+WS_VISIBLE); treenode lastloc = node(">lastloc",view); windowmove(windowfromnode(view), get(first(lastloc)), get(rank(lastloc,2)), get(rank(lastloc,3)), get(rank(lastloc, 4)), 1); } repaintview(view); } else msg("Full Screen Error","This view must be a top-level window for Full Screen View.\n\nIf this view is tabbed within another window, drag the tab\nout of the window to create a new top-level window.",1); B0"/buttons/view_viewsettings.bmp"V&iew Settings@treenode theview = node("VIEW:/standardviews/View Settings"); nodefunction(node("VIEW:/nodefunctions/createview_palette"),theview);BSave Settings as Default@>setcurrent(ownerview(c)); if(and(not(comparetext(getname(current), "ortho")), not(comparetext(getname(current), "persp")))) { msg("Error", "The view must be either an untabbed Orthographic \nor Perspective view to make it the default."); return(0); } if(not(objectexists(node("/Tools/DefaultGUIs",model())))) { nodeinsertinto(node("/Tools",model())); setname(last(node("/Tools",model())), "DefaultGUIs"); } setitem(node("/Tools/DefaultGUIs",model())); if(not(objectexists(node(concat("/", getname(current)), item)))) { nodeinsertinto(item); setname(last(item), getname(current)); nodeadddata(last(item), DATATYPE_STRING); } setport(node(concat("/", getname(current)), item)); clearcontents(port); createcopy(current, port); setname(last(port), getname(current)); sets(port, nodetopath(last(port),1));B-@BView Container@0treenode view = ownerobject(c); treenode focus = node(">viewfocus+",view); if(focus == model()) return 0; viewmenucommand("View|Up", view); focus = node(">viewfocus+",view); set(viewpointx(view), xcenter(focus)); set(viewpointy(view), ycenter(focus)); set(viewpointz(view), 0); /*int orthonr = 0; treenode activeviews = node("VIEW:/active"); for(int i = 1; i < getrank(view); i++) { treenode curview = rank(activeviews, i); if(comparetext(getname(curview), "ortho")) orthonr++; }*/ string path = nodetopath(focus, 1); if(stringlen(path)>20) path = stringpart(path, 20, stringlen(path)-20); else path = getname(focus); //sets(windowtitle(view), concat("Orthographic View - ", numtostring(orthonr, 0,0), " - ", path)); sets(windowtitle(view), concat("Orthographic View - ", path)); BView Contents@treenode view = ownerobject(c); set(viewpointx(view), 0); set(viewpointy(view), 0); set(viewpointz(view), 0); viewmenucommand("View|Down", view); treenode focus = node(">viewfocus+",view); /*int orthonr = 0; treenode activeviews = node("VIEW:/active"); for(int i = 1; i < getrank(view); i++) { treenode curview = rank(activeviews, i); if(comparetext(getname(curview), "ortho")) orthonr++; }*/ string path = nodetopath(focus, 1); if(stringlen(path)>20) path = stringpart(path, 20, stringlen(path)-20); else path = getname(focus); //sets(windowtitle(view), concat("Orthographic View - ", numtostring(orthonr, 0,0), " - ", path)); sets(windowtitle(view), concat("Orthographic View - ", path)); B-@BExplore Structure@if (license()) { viewmenucommand("View|Structure...|Explore structure",ownerobject(c)); } else{msg("Flexsim","Not available in evaluation mode.");} BModeling Utilities@@BC"/buttons/view_edithighlightedobject.bmp"Edit &Highlighted Object@treenode theview = node("VIEW:/standardviews/Edit Highlighted Object"); nodefunction(node("VIEW:/nodefunctions/createview_palette"),theview,1);B?"/buttons/view_editselectedobjects.bmp"Edit &Selected Objects@treenode theview = node("VIEW:/standardviews/Edit Selected Objects"); nodefunction(node("VIEW:/nodefunctions/createview_palette"),theview,1);B."/buttons/view_findobjects.bmp"&Find Objects@treenode theview = node("VIEW:/standardviews/Find Objects"); nodefunction(node("VIEW:/nodefunctions/createview_palette"),theview,1);B4"/buttons/view_travelnetworks.bmp"Travel &Networks@treenode theview = node("VIEW:/standardviews/Travel Networks"); nodefunction(node("VIEW:/nodefunctions/createview_palette"),theview,1);B!"/buttons/view_views.bmp"&Views@treenode theview = node("VIEW:/standardviews/Views"); nodefunction(node("VIEW:/nodefunctions/createview_palette"),theview,1);B#"/buttons/view_groups.bmp"&Groups@treenode theview = node("VIEW:/standardviews/Groups"); nodefunction(node("VIEW:/nodefunctions/createview_palette"),theview,1);B0"/buttons/view_modellayouts.bmp"&Model Layouts@treenode theview = node("VIEW:/standardviews/Model Layouts"); nodefunction(node("VIEW:/nodefunctions/createview_palette"),theview,1);B&"/buttons/view_tree.bmp"Explore Tree@if (license()) { viewmenucommand("Explore|As Tree",ownerobject(c)); } else{msg("Flexsim","Not available in evaluation mode.");} B Properties@setcurrent(node("VIEW:/active")); setport(content(current)); viewmenucommand("Parameters",ownerobject(c)); if(content(current)>port) { setcurrent(node(">listeningwindow", ownerobject(c))); sets(current, nodetopath(last(node("VIEW:/active")), 1)); set(first(current), 1); }B windowtitle@Perspective View - modelBviewignoreobjects@Bconnectorsize@?Bconnectorstyle@?B labelscale@@Bcurrentslide@?B lastslide@Bshoweditpanel@BOnMouseWheel@treenode vfocus = node("@>viewfocus+",c); treenode selected = selectedobject(ownerobject(c)); double mousedelta = get(node("..>OnMouseWheelDelta",c)); if(objectexists(selected)) { double dz = mousedelta / 1000; if(switch_selected(selected)) { forobjecttreeunder(vfocus) { if(switch_selected(a)) { if(up(a) != vfocus) { // do an 'erase' because vectorproject caches stuff if it gets the same parameters vectorprojectx(a,0,0,0,vfocus); double x1 = vectorprojectx(vfocus, 0,0,0,up(a)); double y1 = vectorprojecty(vfocus, 0,0,0,up(a)); double z1 = vectorprojectz(vfocus, 0,0,0,up(a)); double x2 = vectorprojectx(vfocus, 0,0,dz,up(a)); double y2 = vectorprojecty(vfocus, 0,0,dz,up(a)); double z2 = vectorprojectz(vfocus, 0,0,dz,up(a)); double newdx = x2-x1; double newdy = y2-y1; double newdz = z2-z1; setloc(a,xloc(a)+newdx, yloc(a)+newdy, zloc(a)+newdz); } else setloc(a,xloc(a), yloc(a), maxof(0,zloc(a)+dz)); } } } else { if(up(selected) != vfocus) { // do an 'erase' because vectorproject caches stuff if it gets the same parameters vectorprojectx(selected,0,0,0,vfocus); double x1 = vectorprojectx(vfocus, 0,0,0,up(selected)); double y1 = vectorprojecty(vfocus, 0,0,0,up(selected)); double z1 = vectorprojectz(vfocus, 0,0,0,up(selected)); double x2 = vectorprojectx(vfocus, 0,0,dz,up(selected)); double y2 = vectorprojecty(vfocus, 0,0,dz,up(selected)); double z2 = vectorprojectz(vfocus, 0,0,dz,up(selected)); double dx = x2 - x1; double dy = y2 - y1; dz = z2 - z1; setloc(selected,xloc(selected)+dx, yloc(selected)+dy, zloc(selected)+dz); } else setloc(selected,xloc(selected), yloc(selected), maxof(0, zloc(selected)+dz)); } } else { set(viewpointradius(ownerobject(c)), max(.2,min(get(viewfar(ownerobject(c))), get(viewpointradius(ownerobject(c)))*(1.0-mousedelta/500)))); } repaintview(ownerobject(c)); @BOnMouseWheelDelta@^@B OnPreOpen@esetname(c, "persp"); treenode activeviews = node("VIEW:/active"); /* int totalnr = 0; int orthonr = 1; for(int i = 1; i < getrank(c); i++) { treenode view = rank(activeviews, i); if(comparetext(getname(view), "ortho") || comparetext(getname(view), "persp") || comparetext(getname(view), "planar") ) totalnr++; if(comparetext(getname(view), getname(c))) orthonr++; } inc(spatialy(c), 25*totalnr); sets(windowtitle(c), concat("Perspective View - ", numtostring(orthonr, 0,0), " - model"));*/ // This moves the view if there is another view under it. int bust=1; // to prevent possible infinite loops int moved=1; while(moved && bust<20) { moved = 0; for(int i=2;i<=content(activeviews);i++) { treenode view = rank(activeviews,i); if(view==c) continue; if(fabs(get(spatialx(view))-get(spatialx(c)))<25 && fabs(get(spatialy(view))-get(spatialy(c)))<25 && get(viewwindowtype(view))==get(viewwindowtype(c))) { inc(spatialx(c),25); inc(spatialy(c),25); moved = 1; break; } } bust++; } sets(windowtitle(c), concat("Perspective View - model"));@BOnOpen@set(itemcurrent(c),1); set(first(itemcurrent(c)),0); /*executefsnode(node("/ToolPanel/FindPanel>ToolOnOpen",c), node("/ToolPanel/FindPanel",c)); executefsnode(node("/ToolPanel/GroupsPanel>ToolOnOpen",c), node("/ToolPanel/GroupsPanel",c)); executefsnode(node("/ToolPanel/ViewPanel>ToolOnOpen",c), node("/ToolPanel/ViewPanel",c));*/ treenode editpanel = node("/active/Presentation Edit Panel",views()); if(objectexists(editpanel) && get(node(">disabled",editpanel))) { treenode active = node("VIEW:/active"); treenode found = 0; for(int i = 1; i <= content(active); i++) { treenode view = rank(active, i); if(comparetext(getname(view), "persp") && view != c) found = view; } if(!found) { forobjecttreeunder(editpanel) { windowgray(windowfromnode(a), 0); } set(node(">disabled", editpanel), 0); nodefunction(node(">Update",editpanel), get(node(">currentslide",c))); } } /*int perspnr = 1; treenode activeviews = node("VIEW:/active"); for(int i = 1; i < getrank(c); i++) { treenode view = rank(activeviews, i); if(comparetext(getname(view), "persp")) perspnr++; }*/ treenode focus = node(">viewfocus+",c); string path = nodetopath(focus, 1); if(stringlen(path)>20) path = stringpart(path, 20, stringlen(path)-20); else path = getname(focus); //sets(windowtitle(c), concat("Perspective View - ", numtostring(perspnr, 0,0), " - ", path)); sets(windowtitle(c), concat("Perspective View - ", path)); @B OnClose@treenode activeviews = node("VIEW:/active"); /*int nrofpersp = 0; setitem(1); while(le(item,content(activeviews))) { setcurrent(rank(activeviews, item)); if(and(comparetext("persp",getname(current)),ne(item,getrank(c)))) { nrofpersp++; setnodestr(windowtitle(current), concat("Perspective View - ",numtostring(nrofpersp,0,0)," - ",getname(node(">viewfocus+",current),1))); } if(and(comparetext(gets(windowtitle(current)), "View Window Settings"), eq(node(">objectfocus+", current), c))) { destroyobject(current); setitem(item - 1); } setitem(item + 1); }*/ treenode editpanel = node("/active/Presentation Edit Panel",views()); if(objectexists(editpanel)) { treenode found = 0; for(int i = 1; i <= content(activeviews); i++) { treenode view = rank(activeviews, i); if(comparetext(getname(view), "persp") && view != c) found = view; } if(!found) { forobjecttreeunder(editpanel) { windowgray(windowfromnode(a), 1); } set(node(">disabled", editpanel), 1); } else { setname(c, "perspabouttodie"); nodefunction(node(">Update", editpanel), get(node(">currentslide", found))); } } repaintall();@B OnKeyDown@ set(first(itemcurrent(c)), 0); treenode editpanel = node("/active/Presentation Edit Panel",views()); treenode curslide = node(">currentslide",c); treenode lastslide = node(">lastslide",c); treenode flypaths = node("MAIN:/project/flypath"); if (and(gt(lastkeydown(),48), lt(lastkeydown(),59))) // The number keys 0-1 { set(lastslide, get(node(">currentslide", c))); set(curslide,sub(lastkeydown(),48)); if (lt(content(rank(flypaths,get(curslide))),1)) { msg("Flexsim","Can't execute flypath because theflypath has no section defined"); set(node(">currentslide", c), get(lastslide)); return (0); } if(eq(0, curslide)) { set(curslide,10); } if(objectexists(editpanel)) nodefunction(node("/active/Presentation Edit Panel>Update",views()), get(node(">currentslide", c))); if (gt(get(curslide), content(flypaths))) { set(curslide, content(flypaths)); } if (lt(get(curslide),1)) { set(curslide,1); } if (lt(content(flypaths),get(curslide))) { set(curslide,0); msg("Flexsim","Can't execute flypath because there aren't enough paths defined"); return (0); } flypath(c,get(curslide),1); return(0); } if(or(eq(lastkeydown(),32), eq(lastkeydown(), 78))) // Space Bar or the "N" key { set(curslide,add(1,get(curslide))); if (gt(get(curslide),content(flypaths))) { set(curslide,1); } if(objectexists(editpanel)) nodefunction(node("/active/Presentation Edit Panel>Update",views()), get(node(">currentslide", c))); if (lt(content(flypaths),get(curslide))) { set(curslide,0); msg("Flexsim","Can't execute flypath because there aren't enough paths defined"); return (0); } if (lt(content(rank(flypaths,get(curslide))),1)) { msg("Flexsim","Can't execute flypath because theflypath has no section defined"); return (0); } flypath(c,get(curslide),1); return (0); } if (eq(lastkeydown(),66)) // The "B" key { set(curslide,sub(get(curslide),1)); if (lt(get(curslide),1)) { set(curslide,content(flypaths)); } if(objectexists(editpanel)) nodefunction(node("/active/Presentation Edit Panel>Update",views()), get(node(">currentslide", c))); if (lt(content(flypaths),get(curslide))) { set(curslide,0); msg("Flexsim","Can't execute flypath because there aren't enough paths defined"); return (0); } if (lt(content(rank(flypaths,get(curslide))),1)) { msg("Flexsim","Can't execute flypath because theflypath has no section defined"); return (0); } flypath(c,get(curslide),1); } @B OnKeyUp@set(first(itemcurrent(c)), 0); if(eq(lastkeydown(), 27))// Escape character { #define WS_OVERLAPPED 0x00000000 #define WS_VISIBLE 0x10000000 #define WS_CAPTION 0x00C00000 #define WS_SYSMENU 0x00080000 #define WS_THICKFRAME 0x00040000 #define WS_MINIMIZEBOX 0x00020000 #define WS_MAXIMIZEBOX 0x00010000 treenode popup = node(">menupopup", c); if(objectexists(node("/Out of Full Screen View",popup))) { setname(node("/Out of Full Screen View", popup), "Full Screen View"); if(!objectexists(documentwindow(c))) { nodeinsertafter(node(">LAST",c)); nodeadddata(node(">LAST",c),DATATYPE_NUMBER); setnodename(node(">LAST",c),"documentwindow"); setnodenum(node(">LAST",c),103); rebindobjectattributes(c); } refreshview(c); windowstyle(c, WS_OVERLAPPED+WS_CAPTION+WS_SYSMENU+WS_THICKFRAME+WS_MINIMIZEBOX+WS_MAXIMIZEBOX+WS_VISIBLE); treenode lastloc = node(">lastloc",c); windowmove(windowfromnode(c), get(first(lastloc)), get(rank(lastloc,2)), get(rank(lastloc,3)), get(rank(lastloc, 4)), 1); } } // I'm going to unselect the tools folder if the last key down was a delete and the content of the model is one if(and(eq(lastkeydown(),46), eq(content(model()), 1))) { setselectedobject(c, 0); } // I'm going to unselect the tools folder if the last key down was a delete and the content of the model is one if(and(eq(lastkeydown(),46), eq(content(model()), 1))) { setselectedobject(c, 0); } @B itemcurrent@?@B lastclicked@B clickedx@H@B clickedy@Py@B viewfog@B gridfog@Q?Bgridlinewidth@Q?Bgridlinecolor@@B@ffffff?B@ffffff?B@ffffff?B OnClick@${//pt("OnClick clickcode = : ");pd(clickcode());pt(" ");pr(); #define MODE_NORMAL 0 if(get(viewwindowopen(c))) { treenode connectionjustmade = node("MAIN:/project/exec/globals/nodevariables/connectionjustmade"); setcurrent(node("MAIN:/project/exec/globals/nodevariables/connectionjustmade"));// I just made a drag connection int mode = modeleditmode(-1); treenode lastclickedobject = first(itemcurrent(c)); if(get(connectionjustmade))// I just did a drop node { set(connectionjustmade, 0); set(lastclickedobject, 0); return(0); } if(clickcode() == DOUBLE_CLICK && objectexists(selectedobject(c))) { if(or( node("VIEW:/active/LAST>objectfocus+") == selectedobject(c), node("VIEW:/active/LAST>viewfocus+") == selectedobject(c) )) { sets(node(">listeningwindow",c), nodetopath(last(node("VIEW:/active")),1)); set(first(node(">listeningwindow",c)), 1); } } if(clickcode() == LEFT_RELEASE) {// the left mouse button was just released int dx = cursorinfo(c,1,1,1) - getnodenum(rank(itemcurrent(c),2)); int dy = cursorinfo(c,1,2,1) - getnodenum(rank(itemcurrent(c),3)); if(fabs(dx)<3 && fabs(dy)<3) // if you release in nearly the same spot as you clicked - (if you didn't move the view) { if(iskeydown('F') || iskeydown('R') || mode == EDITMODE_CREATEOBJECTS || mode == EDITMODE_CREATEANDCONNECTOBJECTS) { if(objectexists(selectedobject(c))) { if(not(isclasstype(selectedobject(c), CLASSTYPE_VISUALTOOL))) return(0); } treenode libraryview = NULL; // Here I'm trying to find the Library treenode active = node("VIEW:/active"); for(int i = 1; i <= content(active) && !libraryview; i++) { treenode curnode = rank(active, i); if(objectexists(tabwindow(curnode)) && get(tabwindow(curnode)) == -102) // palettewindows tabbed in one window { for(int w=1;w<=content(node("/tabcontrol",curnode));w++) { treenode checkview = rank(node("/tabcontrol",curnode),w); if(objectexists(windowtitle(checkview)) && comparetext("Library", gets(windowtitle(checkview)))) { libraryview = checkview; } } } else if(objectexists(windowtitle(curnode)) && comparetext("Library", gets(windowtitle(curnode)))) { libraryview = curnode; } } if(objectexists(selectedobject(node("/GroupIconGrid", libraryview)))) { setdropcoords(c); //pt(" drop x = ");pf(dropx());pt(" drop y = ");pf(dropy());pt(" drop z = ");pf(dropz());pr(); treenode newobj = nodefunction(node(">dragfunction", libraryview), selectedobject(node("/GroupIconGrid", libraryview)), selectedobject(c), dropx(),dropy(),dropz(), c ); if(iskeydown('R') || mode==EDITMODE_CREATEANDCONNECTOBJECTS) { if(objectexists(newobj) && objectexists(get(lastclickedobject))) { contextdragconnection(get(lastclickedobject), newobj, "A"); } else { set(lastclickedobject, 0); } set(lastclickedobject, newobj); } return (0); } } } } if(clickcode() == LEFT_PRESS) {// the left mouse button was just pressed down setnodenum(rank(itemcurrent(c),2),cursorinfo(c,1,1,1)); // clickedx setnodenum(rank(itemcurrent(c),3),cursorinfo(c,1,2,1)); // clickedy if(iskeydown('G') || mode == EDITMODE_FASTPROPSWITCH)// edit objects mode { treenode listeningwindowatt = node(">listeningwindow",c); treenode listeningwindow = node(gets(listeningwindowatt)); if(objectexists(listeningwindow)) { treenode focus = node(">objectfocus+",listeningwindow); if(not(objectexists(focus))) focus = node(">viewfocus+",listeningwindow); if(objectexists(selectedobject(c)) && selectedobject(c) != focus) { if(!get(first(listeningwindowatt)) || comparetext(gets(guifocusclass(selectedobject(c))) , gets(guifocusclass(focus)))) { if(objectexists(viewfocus(listeningwindow))) sets(viewfocus(listeningwindow), nodetopath(selectedobject(c))); if(objectexists(objectfocus(listeningwindow))) sets(objectfocus(listeningwindow), nodetopath(selectedobject(c))); applylinks(listeningwindow, 1);// refresh links redirectpicklists(listeningwindow); //refreshview(item); if(objectexists(OnOpen(listeningwindow))) executefsnode(OnOpen(listeningwindow), listeningwindow, selectedobject(c)); forobjecttreeunder(listeningwindow) repaintview(a); } } } else { sets(listeningwindowatt, ""); } } } }@B$:/1/MAIN:/project/exec/globals/nodevariables/connectionjustmadeMAIN:/project/exec/globals/nodevariables/connectionjustmadeojecVIEW:/active/LAST>objectfocus+athVIEW:/active/LAST>viewfocus+ v:/pr>listeningwindowVIEW:/active>listeningwindowst veenfsls/Ocreaprog of  fraten iabl  lasVIEW:/activeErroctedas neen ed. avi ot werlys noDesit-cln thnd st asiabl>var/tabcontrolper/tabcontrolgavLibrarywsesLibraryOPT_EGER/GroupIconGridARY>dragfunction/Sta/GroupIconGridMUTA _USEE: A  >listeningwindowto tTYPETROL>objectfocus+OPT_>viewfocus+loba_PEROWERs BOUNTYPEE {|-o?l` >| 6  ,  ?    o  |, =  }D=8}`=T5 #)+o#x0p +X #H+<o4(#+ou  o|h}o K #,  0$#6 ## #~#p## d#o\#<D####o<$6  $$ $~$$$ $o$<$$$$o Q&)l &'\&&P&4D&&'4&&(&4& J(+(#( (4((+ (#((4((+((R(|(F 3 **+*o /,*@,0,,+$,o-0?L002?x22l2\3633 ?S5?055 5455=5 &76) 6#66||6#p6=d66X6#L6=@6868 8 ,:?h : :X:4L: 3:<:=0::  + ;) ;B;t;1;=; ;3;;1;=x; =>=P=== 85 888  18&:888=88848  ( %A)l :AB\AtPA1DA=8AA,A A1A=AC>CC=|C35333 C3) 3*3=33&33=3343 Y?FF+FF=FFHHoO? O Oj Oo M9x M8p M7h L+\ LoT K+H K8 K=, KK J J= JJ U"P+ P# PP4 PP PR GR)0 R$ R| R= RR R= R Th Td T=X T T|L T=@ T Q X} XX=| XZ} Z= Z Z= ZI\ kc# cc0 f f< ffffo f ff  fo gp g<X ggggoP g@ gg 4 go,  y{i+ i# ii4 ii iGk? k k ko k l? l l lt l= l  gdm4 m=( m o?l oo\ o=P o o@  T p* p p=| pp> pp p= p p  gNq), q( q= qq+ qo q q+ qo  fDu+ uB ut u u= ust s s+t sol s*` s|T sH s=< s  U w w9 w= w xu8x,x+ xox9 x=x  ] y`y8Ty=Hy zuzz+zoz8xz=lz {{{={ ||=|  ` ~~=~=~ DD+8o0=$ ==  a=X  a lda J @u=x BOnDraw@if(flyactive()) { treenode editpanel = node("VIEW:/active/Presentation Edit Panel"); if(objectexists(editpanel)) executefsnode(node(">flyactiveupdate",editpanel), editpanel); } @B:/1/VIEW:/active/Presentation Edit Panelexls/n/conustm>flyactiveupdate:/prlobaariaionj z?<0 X=LD==xdBviewconnectioncolor@@B@B@B@B distcutoff@nj@B lastloc@@Bx@By@Bsx@Bsy@Bdocumentwindow@Y@@B tabwindow@@Y@@BOnDropWindow@%// dragging from a window to another window if(objectexists(i)) executefsnode(node("MAIN:/project/exec/globals/nodefunctions/droptab_in_document"),c,i,0,0); // dragging a tab out of a window else executefsnode(node("MAIN:/project/exec/globals/nodefunctions/droptab_out_document"),c,i,0,0);BPersp@\buttons\view_pers.bmpBviewwindowclean@@Bflypath@bDefaultNetworkNavigator#@object Bclasses@@BNetworkNavigator@?AB Navigator@`ABFlexsimObject@@ABsuperclasses@@B Navigator@`ABFlexsimObject@@AB variables@@B nodemembers@@@BDefaultNetworkNavigatorsubnode@O@B@@@B@ @BDefaultNetworkNavigatorsubnode@@B@?@B@ @B@@@B@ @BDefaultNetworkNavigatorsubnode@@B@@@B@ @B@@@B@ @BDefaultNetworkNavigatorsubnode@9@B@@@B@ @Bdistancetable@d} mtbfmttrlist = AAATR/MAAAAAAPIAAAABnextnodetable@(REMRB unsettled@Bnrtofirstnode@@B modified@B connecting@@B@?B@?B@?Btravelmembers@@BDefaultNetworkNavigatorsubnode@@BDefaultNetworkNavigatorsubnode@=BDefaultNetworkNavigatorsubnode@>B@B@BDefaultNetworkNavigatorsubnode@@BDefaultNetworkNavigatorsubnode@SBDefaultNetworkNavigatorsubnode@TB@B@Bactivetravelmembers@Blastupdatetime@Bmessagetrigger@%treenode current = ownerobject(c); @Bondrawtrigger@treenode current = ownerobject(c); treenode view = parnode(1); // If this function returns a true, the default draw code of the object will not be executed. B timetables@B networknodes@Btimeoflaststop@B nrofstops@Bstatebeforestop@Bcollisionspheres@Bcollisionobjects@B resettrigger@%treenode current = ownerobject(c); B savedstate@Bresetposition@B behaviour@@Beventfunctions@Bcppfunctions@@B cppvariables@@Bdouble* protectlocs@Bunsigned char portinfoflag@Bspecial@@B guifocus@|!VIEW:/standardviews/objecteditorBtitle@dObjectB description@bB guifocus@%VIEW:/standardviews/ObjectPropertiesBspatial@@ B spatialsx@P-C6?B spatialsy@Q-C6?B spatialsz@R-C6?B spatialx@MB spatialy@NB spatialz@OB spatialrx@SB spatialry@TB spatialrz@UB centroid@e?Blabels@@Bvisual@@B nochildscale@_?B connections@@Bconnectionsin@ @Bconnectionsout@ @Bconnectionscenter@ @Bevents@ @Bstats@@Bstate@@Bstate_current@,@Bstate_changetime@B state_since@-Bstate_profile@.State@2Bidle@B processing@Bbusy@Bblocked@B generating@Bempty@B collecting@B releasing@Bwaiting_for_operator@Bwaiting_for_transporter@B breakdown@Bscheduled_down@B conveying@B travel_empty@Btravel_loaded@Boffset_travel_empty@Boffset_travel_loaded@Bloading@B unloading@Bdown@Bsetup@Butilize@Bfull@B not_empty@Bfilling@Bstarved@Bmixing@Bflowing@Ballocated_idle@B off_shift@B change_over@Brepair@B maintenance@Blunch@B on_break@Bsuspend@B available@Bpreprocessing@Bpostprocessing@B inspecting@B operating@Bstandby@Bpurging@B cleaning@B accelerating@B maxspeed@B decelerating@Bstopped@Bwaiting@B accumulating@B state_graph@0Bcontent@@Bstats_contentmin@4Bstats_contentmax@5Bstats_contentavg@6Bstats_contentupdates@7Bstats_contentsince@8Bstats_contentgraph@9Content vs. TimeBstats_contentgraphmaxpoints@:Y@Bstats_content@2B staytime@@Bstats_staytimemin@<Bstats_staytimemax@=Bstats_staytimeavg@>Bstats_staytimeupdates@?Bstats_staytimegraph@A StaytimeBstats_staytimehisto@C@B parameters@@B startvalue@B endvalue@Y@Bbuckets@4@Bdata@ Staytime@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B interval@@Bmean@Blo@Bhi@Bpercent@W@Bauto@?Bstats_staytimegraphmaxpoints@BY@Bstats_staytimesince@@B throughput@@B stats_input@KB stats_output@LBstats_throughput@DBstats_throughputgraph@E ThroughputBstats_throughputgraphmaxpoints@FBstats_creationtime@JBstats_lastmovetime@IBstored@B Processor19@objectBclasses@@B Processor@ABFixedResource@ABFlexsimObject@@AB superclasses@@BFixedResource@ ABFlexsimObject@@AB variables@@9B cycletime@$treenode current = ownerobject(c); treenode item = parnode(1); /**By Expression*/ /** \nExpression: */ double value = /**/10/**/; /** \n\nNote: The expression may be a constant value or the result of a command (getitemtype(item), getlabelnum(item, "labelname"), etc).*/ return value;@B\MAINt/exodevade?o?0l$9@ 6h7P} B setuptime@treenode current = ownerobject(c); treenode item = parnode(1); treenode port = parval(2); /**No Setup Time (return zero)*/ return 0;@B maxcontent@?@Buseprocessoperators@Busesetupoperators@Bnrofprocessoperators@?Bprocessoperatorpriority@Bpreemptprocessoperators@Bprocessdispatcher@Ptreenode current = ownerobject(c); treenode item = parnode(1); /**Port by Expression*/ /** \nCenter port number: */ int portnum = /**/1/**/; /** \n\nNote: The expression may be a constant value or the result of a command (getitemtype(item), getlabelnum(item, "labelname"), etc).*/ return tonum(centerobject(current,portnum));@BlMAINt/exodevade:/pr?o?0l$6@6h cx h 4\  =P Bsetupfinishtrigger@Btreenode item = parnode(1); treenode current = ownerobject(c); @Bprocessfinishtrigger@Btreenode item = parnode(1); treenode current = ownerobject(c); @Bmtbf@mtreenode current = ownerobject(c); /**No Breakdowns*/ /** \nReturn a 0 for MTBF and MTTR.*/ return 0; @Bbreakdowntrigger@%treenode current = ownerobject(c); @Bmttr@ltreenode current = ownerobject(c); /**No Breakdowns*/ /** \nReturn a 0 for MTBF and MTTR.*/ return 0; @Brepairtrigger@%treenode current = ownerobject(c); @Busedownoperators@Bnrofdownoperators@?Bdownoperatorpriority@Bpreemptdownoperators@Bdowndispatcher@Ptreenode current = ownerobject(c); treenode item = parnode(1); /**Port by Expression*/ /** \nCenter port number: */ int portnum = /**/1/**/; /** \n\nNote: The expression may be a constant value or the result of a command (getitemtype(item), getlabelnum(item, "labelname"), etc).*/ return tonum(centerobject(current,portnum));@BlMAINt/exodevade:/pr?o?0l$6@6hcxh4\=PBcurdowndispatcher@@B nextdown@Bconvey@?Bnextrepairtime@B usesameop@?Bnrofsetupoperators@?Bprocessingdownflag@?B mtbfstates@@B@@@B totaltime@B nrreleased@Bpull@B sendtoport@ztreenode item = parnode(1); treenode current = ownerobject(c); /**First available*/ /** \nOpen all ports.*/ return 0 ;@Breceivefromport@@treenode current = ownerobject(c); /**Any Port*/ return 0; @Bpullrequirement@treenode current = ownerobject(c); treenode item = parnode(1); int port = parval(2); /**No Requirement*/ /** \nAlways return true.*/ return 1;@B\MAINt/exodevade?o?0l$6Lk@6h B entrytrigger@Ztreenode item = parnode(1); treenode current = ownerobject(c); int port = parval(2); @B exittrigger@[treenode item = parnode(1); treenode current = ownerobject(c); int port = parval(2); @B usetransport@?@Btransportpriority@Bpreempttransport@?Btransportdispatcher@gtreenode item = parnode(1); treenode current = ownerobject(c); int port = parval(2); /**Port by Expression*/ /** \nCenter port number: */ int portnum = /**/1/**/; /** \n\nNote: The expression may be a constant value or the result of a command (getitemtype(item), getlabelnum(item, "labelname"), etc).*/ return tonum(centerobject(current,portnum));@BMAINt/exodevade:/prlobaaria? l?0$o6Lk@6\ | c  4x  =l Bnroftransportsout@Bnroftransportsin@B outwaitinfo@@B@Bsendtocontinuous@Bpullcontinuous@Blifo@Bmessagetrigger@%treenode current = ownerobject(c); @Bondrawtrigger@treenode current = ownerobject(c); treenode view = parnode(1); // If this function returns a true, the default draw code of the object will not be executed. B timetables@B networknodes@@BProcessor19subnode@YBtimeoflaststop@B nrofstops@Bstatebeforestop@Bcollisionspheres@Bcollisionobjects@B resettrigger@%treenode current = ownerobject(c); B savedstate@Bresetposition@B behaviour@@Beventfunctions@Bcppfunctions@@B cppvariables@@Bdouble inport@Bfsnode* lastreleased@Bfsnode* curtransporter@Bdouble* protectlocs@Bunsigned char portinfoflag@Bvisual@@ Bcolor@a@Bred@RQ?Bgreen@333333?Bblue@'1Z?Bshape@ufs3d\procsr_color.3dsB shapeindex@v:@Bpicture@c"bitmaps\processorpicturesmall.bmpB imageobject@q***Bimageindexobject@rB imagebase@s***Bimageindexbase@tB nochildscale@_?B special@@Btitle@dFixed Resource MultiserviceB description@bB guifocus@|%VIEW:/standardviews/ObjectPropertiesBguifocusclass@} VIEW:/pages/ProcessorParametersB spatial@@B spatialx@M?B spatialy@N5@B spatialz@OB spatialsx@P@B spatialsy@Q@B spatialsz@R{Gz@B spatialrx@SB spatialry@TB spatialrz@UB offsetx@VB offsety@WB offsetz@XB offsetsx@\?B offsetsy@]?B offsetsz@^?B offsetrx@YB offsetry@ZB offsetrz@[B centroid@e?B objectinfo@@B Output: 0@B %Idle: 0.0@B%Processing: 0.0@B ignoredraw@fB displaygroup@ standardBdisplaygrouplist@@B standard@Blabels@@B connections@@Bconnectionsin@ @B@ @B@?B@Bconnectionsout@ @B@ @B@B@Bconnectionscenter@ @B@@B@B@Bevents@ @Bstats@@Bstate@@Bstate_current@,?Bstate_changetime@B state_since@-Bstate_profile@.State@2Bidle@B processing@Bbusy@Bblocked@B generating@Bempty@B collecting@B releasing@Bwaiting_for_operator@Bwaiting_for_transporter@B breakdown@Bscheduled_down@B conveying@B travel_empty@Btravel_loaded@Boffset_travel_empty@Boffset_travel_loaded@Bloading@B unloading@Bdown@Bsetup@Butilize@Bfull@B not_empty@Bfilling@Bstarved@Bmixing@Bflowing@Ballocated_idle@B off_shift@B change_over@Brepair@B maintenance@Blunch@B on_break@Bsuspend@B available@Bpreprocessing@Bpostprocessing@B inspecting@B operating@Bstandby@Bpurging@B cleaning@B accelerating@B maxspeed@B decelerating@Bstopped@Bwaiting@B accumulating@B state_graph@0Bcontent@@Bstats_contentmin@4Bstats_contentmax@5Bstats_contentavg@6Bstats_contentupdates@7Bstats_contentsince@8Bstats_contentgraph@9Content vs. TimeBstats_contentgraphmaxpoints@:Y@Bstats_content@2B staytime@@Bstats_staytimemin@<Bstats_staytimemax@=Bstats_staytimeavg@>Bstats_staytimeupdates@?Bstats_staytimegraph@A StaytimeBstats_staytimehisto@C@B parameters@@B startvalue@B endvalue@Y@Bbuckets@4@Bdata@ Staytime@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B interval@@Bmean@Blo@Bhi@Bpercent@W@Bauto@?Bstats_staytimegraphmaxpoints@BY@Bstats_staytimesince@@B throughput@@B stats_input@KB stats_output@LBstats_throughput@DBstats_throughputgraph@E ThroughputBstats_throughputgraphmaxpoints@FBstats_creationtime@JBstats_lastmovetime@IBstored@@B Processor20@objectBclasses@@B Processor@ABFixedResource@ABFlexsimObject@@AB superclasses@@BFixedResource@ ABFlexsimObject@@AB variables@@9B cycletime@$treenode current = ownerobject(c); treenode item = parnode(1); /**By Expression*/ /** \nExpression: */ double value = /**/10/**/; /** \n\nNote: The expression may be a constant value or the result of a command (getitemtype(item), getlabelnum(item, "labelname"), etc).*/ return value;@B\MAINt/exodevade?o?0l$9@ 6\7P} B setuptime@treenode current = ownerobject(c); treenode item = parnode(1); treenode port = parval(2); /**No Setup Time (return zero)*/ return 0;@B maxcontent@?@Buseprocessoperators@Busesetupoperators@Bnrofprocessoperators@?Bprocessoperatorpriority@Bpreemptprocessoperators@Bprocessdispatcher@Ptreenode current = ownerobject(c); treenode item = parnode(1); /**Port by Expression*/ /** \nCenter port number: */ int portnum = /**/1/**/; /** \n\nNote: The expression may be a constant value or the result of a command (getitemtype(item), getlabelnum(item, "labelname"), etc).*/ return tonum(centerobject(current,portnum));@BlMAINt/exodevade:/pr?o?0l$6@6\ cx h 4\  =P [0]Bsetupfinishtrigger@Btreenode item = parnode(1); treenode current = ownerobject(c); @Bprocessfinishtrigger@Btreenode item = parnode(1); treenode current = ownerobject(c); @Bmtbf@mtreenode current = ownerobject(c); /**No Breakdowns*/ /** \nReturn a 0 for MTBF and MTTR.*/ return 0; @Bbreakdowntrigger@%treenode current = ownerobject(c); @Bmttr@ltreenode current = ownerobject(c); /**No Breakdowns*/ /** \nReturn a 0 for MTBF and MTTR.*/ return 0; @Brepairtrigger@%treenode current = ownerobject(c); @Busedownoperators@Bnrofdownoperators@?Bdownoperatorpriority@Bpreemptdownoperators@Bdowndispatcher@Ptreenode current = ownerobject(c); treenode item = parnode(1); /**Port by Expression*/ /** \nCenter port number: */ int portnum = /**/1/**/; /** \n\nNote: The expression may be a constant value or the result of a command (getitemtype(item), getlabelnum(item, "labelname"), etc).*/ return tonum(centerobject(current,portnum));@BlMAINt/exodevade:/pr?o?0l$6@6\cxh4\=PconBcurdowndispatcher@@B nextdown@Bconvey@?Bnextrepairtime@B usesameop@?Bnrofsetupoperators@?Bprocessingdownflag@?B mtbfstates@@B@@@B totaltime@B nrreleased@Bpull@B sendtoport@ztreenode item = parnode(1); treenode current = ownerobject(c); /**First available*/ /** \nOpen all ports.*/ return 0 ;@Breceivefromport@@treenode current = ownerobject(c); /**Any Port*/ return 0; @Bpullrequirement@treenode current = ownerobject(c); treenode item = parnode(1); int port = parval(2); /**No Requirement*/ /** \nAlways return true.*/ return 1;@B\MAINt/exodevade?o?0l$6Lk@6\ B entrytrigger@Ztreenode item = parnode(1); treenode current = ownerobject(c); int port = parval(2); @B exittrigger@[treenode item = parnode(1); treenode current = ownerobject(c); int port = parval(2); @B usetransport@?@Btransportpriority@Bpreempttransport@?Btransportdispatcher@gtreenode item = parnode(1); treenode current = ownerobject(c); int port = parval(2); /**Port by Expression*/ /** \nCenter port number: */ int portnum = /**/1/**/; /** \n\nNote: The expression may be a constant value or the result of a command (getitemtype(item), getlabelnum(item, "labelname"), etc).*/ return tonum(centerobject(current,portnum));@BMAINt/exodevade:/prlobaaria? l?0$o6Lk@6\ | c  4x  =l Bnroftransportsout@Bnroftransportsin@B outwaitinfo@@B@Bsendtocontinuous@Bpullcontinuous@Blifo@Bmessagetrigger@%treenode current = ownerobject(c); @Bondrawtrigger@treenode current = ownerobject(c); treenode view = parnode(1); // If this function returns a true, the default draw code of the object will not be executed. B timetables@B networknodes@@BProcessor20subnode@Btimeoflaststop@B nrofstops@Bstatebeforestop@Bcollisionspheres@Bcollisionobjects@B resettrigger@%treenode current = ownerobject(c); B savedstate@Bresetposition@B behaviour@@Beventfunctions@Bcppfunctions@@B cppvariables@@Bdouble inport@Bfsnode* lastreleased@Bfsnode* curtransporter@Bdouble* protectlocs@Bunsigned char portinfoflag@Bvisual@@ Bcolor@a@Bred@RQ?Bgreen@333333?Bblue@'1Z?Bshape@ufs3d\procsr_color.3dsB shapeindex@v:@Bpicture@c"bitmaps\processorpicturesmall.bmpB imageobject@q***Bimageindexobject@rB imagebase@s***Bimageindexbase@tB nochildscale@_?B special@@Btitle@dFixed Resource MultiserviceB description@bB guifocus@|%VIEW:/standardviews/ObjectPropertiesBguifocusclass@} VIEW:/pages/ProcessorParametersB spatial@@B spatialx@M"@B spatialy@N5@B spatialz@OB spatialsx@P@B spatialsy@Q@B spatialsz@R{Gz@B spatialrx@SB spatialry@TB spatialrz@UB offsetx@VB offsety@WB offsetz@XB offsetsx@\?B offsetsy@]?B offsetsz@^?B offsetrx@YB offsetry@ZB offsetrz@[B centroid@e?B objectinfo@@B Output: 0@B %Idle: 0.0@B%Processing: 0.0@B ignoredraw@fB displaygroup@ standardBdisplaygrouplist@@B standard@Blabels@@B connections@@Bconnectionsin@ @B@@B@?B@Bconnectionsout@ @B@[ @B@B@Bconnectionscenter@ @B@@B@B@Bevents@ @Bstats@@Bstate@@Bstate_current@,?Bstate_changetime@B state_since@-Bstate_profile@.State@2Bidle@B processing@Bbusy@Bblocked@B generating@Bempty@B collecting@B releasing@Bwaiting_for_operator@Bwaiting_for_transporter@B breakdown@Bscheduled_down@B conveying@B travel_empty@Btravel_loaded@Boffset_travel_empty@Boffset_travel_loaded@Bloading@B unloading@Bdown@Bsetup@Butilize@Bfull@B not_empty@Bfilling@Bstarved@Bmixing@Bflowing@Ballocated_idle@B off_shift@B change_over@Brepair@B maintenance@Blunch@B on_break@Bsuspend@B available@Bpreprocessing@Bpostprocessing@B inspecting@B operating@Bstandby@Bpurging@B cleaning@B accelerating@B maxspeed@B decelerating@Bstopped@Bwaiting@B accumulating@B state_graph@0Bcontent@@Bstats_contentmin@4Bstats_contentmax@5Bstats_contentavg@6Bstats_contentupdates@7Bstats_contentsince@8Bstats_contentgraph@9Content vs. TimeBstats_contentgraphmaxpoints@:Y@Bstats_content@2B staytime@@Bstats_staytimemin@<Bstats_staytimemax@=Bstats_staytimeavg@>Bstats_staytimeupdates@?Bstats_staytimegraph@A StaytimeBstats_staytimehisto@C@B parameters@@B startvalue@B endvalue@Y@Bbuckets@4@Bdata@ Staytime@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B interval@@Bmean@Blo@Bhi@Bpercent@W@Bauto@?Bstats_staytimegraphmaxpoints@BY@Bstats_staytimesince@@B throughput@@B stats_input@KB stats_output@LBstats_throughput@DBstats_throughputgraph@E ThroughputBstats_throughputgraphmaxpoints@FBstats_creationtime@JBstats_lastmovetime@IBstored@@B Processor21@objectBclasses@@B Processor@ABFixedResource@ABFlexsimObject@@AB superclasses@@BFixedResource@ ABFlexsimObject@@AB variables@@9B cycletime@$treenode current = ownerobject(c); treenode item = parnode(1); /**By Expression*/ /** \nExpression: */ double value = /**/10/**/; /** \n\nNote: The expression may be a constant value or the result of a command (getitemtype(item), getlabelnum(item, "labelname"), etc).*/ return value;@B\MAINt/exodevade?o?0l$9@ 6\7P} B setuptime@treenode current = ownerobject(c); treenode item = parnode(1); treenode port = parval(2); /**No Setup Time (return zero)*/ return 0;@B maxcontent@?@Buseprocessoperators@Busesetupoperators@Bnrofprocessoperators@?Bprocessoperatorpriority@Bpreemptprocessoperators@Bprocessdispatcher@Ptreenode current = ownerobject(c); treenode item = parnode(1); /**Port by Expression*/ /** \nCenter port number: */ int portnum = /**/1/**/; /** \n\nNote: The expression may be a constant value or the result of a command (getitemtype(item), getlabelnum(item, "labelname"), etc).*/ return tonum(centerobject(current,portnum));@BlMAINt/exodevade:/pr?o?0l$6@6\ cx h 4\  =P n(vBsetupfinishtrigger@Btreenode item = parnode(1); treenode current = ownerobject(c); @Bprocessfinishtrigger@Btreenode item = parnode(1); treenode current = ownerobject(c); @Bmtbf@mtreenode current = ownerobject(c); /**No Breakdowns*/ /** \nReturn a 0 for MTBF and MTTR.*/ return 0; @Bbreakdowntrigger@%treenode current = ownerobject(c); @Bmttr@ltreenode current = ownerobject(c); /**No Breakdowns*/ /** \nReturn a 0 for MTBF and MTTR.*/ return 0; @Brepairtrigger@%treenode current = ownerobject(c); @Busedownoperators@Bnrofdownoperators@?Bdownoperatorpriority@Bpreemptdownoperators@Bdowndispatcher@Ptreenode current = ownerobject(c); treenode item = parnode(1); /**Port by Expression*/ /** \nCenter port number: */ int portnum = /**/1/**/; /** \n\nNote: The expression may be a constant value or the result of a command (getitemtype(item), getlabelnum(item, "labelname"), etc).*/ return tonum(centerobject(current,portnum));@BlMAINt/exodevade:/pr?o?0l$6@6\cxh4\=P c)Bcurdowndispatcher@@B nextdown@Bconvey@?Bnextrepairtime@B usesameop@?Bnrofsetupoperators@?Bprocessingdownflag@?B mtbfstates@@B@@@B totaltime@B nrreleased@Bpull@B sendtoport@ztreenode item = parnode(1); treenode current = ownerobject(c); /**First available*/ /** \nOpen all ports.*/ return 0 ;@Breceivefromport@@treenode current = ownerobject(c); /**Any Port*/ return 0; @Bpullrequirement@treenode current = ownerobject(c); treenode item = parnode(1); int port = parval(2); /**No Requirement*/ /** \nAlways return true.*/ return 1;@B\MAINt/exodevade?o?0l$6Lk@6\ B entrytrigger@Ztreenode item = parnode(1); treenode current = ownerobject(c); int port = parval(2); @B exittrigger@[treenode item = parnode(1); treenode current = ownerobject(c); int port = parval(2); @B usetransport@?@Btransportpriority@Bpreempttransport@?Btransportdispatcher@gtreenode item = parnode(1); treenode current = ownerobject(c); int port = parval(2); /**Port by Expression*/ /** \nCenter port number: */ int portnum = /**/1/**/; /** \n\nNote: The expression may be a constant value or the result of a command (getitemtype(item), getlabelnum(item, "labelname"), etc).*/ return tonum(centerobject(current,portnum));@BMAINt/exodevade:/prlobaaria? l?0$o6Lk@6\ | c  4x  =l [2]Bnroftransportsout@Bnroftransportsin@B outwaitinfo@@B@Bsendtocontinuous@Bpullcontinuous@Blifo@Bmessagetrigger@%treenode current = ownerobject(c); @Bondrawtrigger@treenode current = ownerobject(c); treenode view = parnode(1); // If this function returns a true, the default draw code of the object will not be executed. B timetables@B networknodes@@BProcessor21subnode@Btimeoflaststop@B nrofstops@Bstatebeforestop@Bcollisionspheres@Bcollisionobjects@B resettrigger@%treenode current = ownerobject(c); B savedstate@Bresetposition@B behaviour@@Beventfunctions@Bcppfunctions@@B cppvariables@@Bdouble inport@Bfsnode* lastreleased@Bfsnode* curtransporter@Bdouble* protectlocs@Bunsigned char portinfoflag@Bvisual@@ Bcolor@a@Bred@RQ?Bgreen@333333?Bblue@'1Z?Bshape@ufs3d\procsr_color.3dsB shapeindex@v:@Bpicture@c"bitmaps\processorpicturesmall.bmpB imageobject@q***Bimageindexobject@rB imagebase@s***Bimageindexbase@tB nochildscale@_?B special@@Btitle@dFixed Resource MultiserviceB description@bB guifocus@|%VIEW:/standardviews/ObjectPropertiesBguifocusclass@} VIEW:/pages/ProcessorParametersB spatial@@B spatialx@M1@B spatialy@N5@B spatialz@OB spatialsx@P@B spatialsy@Q@B spatialsz@R{Gz@B spatialrx@SB spatialry@TB spatialrz@UB offsetx@VB offsety@WB offsetz@XB offsetsx@\?B offsetsy@]?B offsetsz@^?B offsetrx@YB offsetry@ZB offsetrz@[B centroid@e?B objectinfo@@B Output: 0@B %Idle: 0.0@B%Processing: 0.0@B ignoredraw@fB displaygroup@ standardBdisplaygrouplist@@B standard@Blabels@@B connections@@Bconnectionsin@ @B@" @B@?B@Bconnectionsout@ @B@ @B@B@Bconnectionscenter@ @B@@B@B@Bevents@ @Bstats@@Bstate@@Bstate_current@,?Bstate_changetime@B state_since@-Bstate_profile@.State@2Bidle@B processing@Bbusy@Bblocked@B generating@Bempty@B collecting@B releasing@Bwaiting_for_operator@Bwaiting_for_transporter@B breakdown@Bscheduled_down@B conveying@B travel_empty@Btravel_loaded@Boffset_travel_empty@Boffset_travel_loaded@Bloading@B unloading@Bdown@Bsetup@Butilize@Bfull@B not_empty@Bfilling@Bstarved@Bmixing@Bflowing@Ballocated_idle@B off_shift@B change_over@Brepair@B maintenance@Blunch@B on_break@Bsuspend@B available@Bpreprocessing@Bpostprocessing@B inspecting@B operating@Bstandby@Bpurging@B cleaning@B accelerating@B maxspeed@B decelerating@Bstopped@Bwaiting@B accumulating@B state_graph@0Bcontent@@Bstats_contentmin@4Bstats_contentmax@5Bstats_contentavg@6Bstats_contentupdates@7Bstats_contentsince@8Bstats_contentgraph@9Content vs. TimeBstats_contentgraphmaxpoints@:Y@Bstats_content@2B staytime@@Bstats_staytimemin@<Bstats_staytimemax@=Bstats_staytimeavg@>Bstats_staytimeupdates@?Bstats_staytimegraph@A StaytimeBstats_staytimehisto@C@B parameters@@B startvalue@B endvalue@Y@Bbuckets@4@Bdata@ Staytime@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B interval@@Bmean@Blo@Bhi@Bpercent@W@Bauto@?Bstats_staytimegraphmaxpoints@BY@Bstats_staytimesince@@B throughput@@B stats_input@KB stats_output@LBstats_throughput@DBstats_throughputgraph@E ThroughputBstats_throughputgraphmaxpoints@FBstats_creationtime@JBstats_lastmovetime@IBstored@@B Processor22@objectBclasses@@B Processor@ABFixedResource@ABFlexsimObject@@AB superclasses@@BFixedResource@ ABFlexsimObject@@AB variables@@9B cycletime@$treenode current = ownerobject(c); treenode item = parnode(1); /**By Expression*/ /** \nExpression: */ double value = /**/10/**/; /** \n\nNote: The expression may be a constant value or the result of a command (getitemtype(item), getlabelnum(item, "labelname"), etc).*/ return value;@B\MAINt/exodevade?o?0l$9@ 6\7P} B setuptime@treenode current = ownerobject(c); treenode item = parnode(1); treenode port = parval(2); /**No Setup Time (return zero)*/ return 0;@B maxcontent@?@Buseprocessoperators@Busesetupoperators@Bnrofprocessoperators@?Bprocessoperatorpriority@Bpreemptprocessoperators@Bprocessdispatcher@Ptreenode current = ownerobject(c); treenode item = parnode(1); /**Port by Expression*/ /** \nCenter port number: */ int portnum = /**/1/**/; /** \n\nNote: The expression may be a constant value or the result of a command (getitemtype(item), getlabelnum(item, "labelname"), etc).*/ return tonum(centerobject(current,portnum));@BlMAINt/exodevade:/pr?o?0l$6@6\ cx h 4\  =P idtBsetupfinishtrigger@Btreenode item = parnode(1); treenode current = ownerobject(c); @Bprocessfinishtrigger@Btreenode item = parnode(1); treenode current = ownerobject(c); @Bmtbf@mtreenode current = ownerobject(c); /**No Breakdowns*/ /** \nReturn a 0 for MTBF and MTTR.*/ return 0; @Bbreakdowntrigger@%treenode current = ownerobject(c); @Bmttr@ltreenode current = ownerobject(c); /**No Breakdowns*/ /** \nReturn a 0 for MTBF and MTTR.*/ return 0; @Brepairtrigger@%treenode current = ownerobject(c); @Busedownoperators@Bnrofdownoperators@?Bdownoperatorpriority@Bpreemptdownoperators@Bdowndispatcher@Ptreenode current = ownerobject(c); treenode item = parnode(1); /**Port by Expression*/ /** \nCenter port number: */ int portnum = /**/1/**/; /** \n\nNote: The expression may be a constant value or the result of a command (getitemtype(item), getlabelnum(item, "labelname"), etc).*/ return tonum(centerobject(current,portnum));@BlMAINt/exodevade:/pr?o?0l$6@6\cxh4\=P isBcurdowndispatcher@@B nextdown@Bconvey@?Bnextrepairtime@B usesameop@?Bnrofsetupoperators@?Bprocessingdownflag@?B mtbfstates@@B@@@B totaltime@B nrreleased@Bpull@B sendtoport@ztreenode item = parnode(1); treenode current = ownerobject(c); /**First available*/ /** \nOpen all ports.*/ return 0 ;@Breceivefromport@@treenode current = ownerobject(c); /**Any Port*/ return 0; @Bpullrequirement@treenode current = ownerobject(c); treenode item = parnode(1); int port = parval(2); /**No Requirement*/ /** \nAlways return true.*/ return 1;@B\MAINt/exodevade?o?0l$6Lk@6\ B entrytrigger@Ztreenode item = parnode(1); treenode current = ownerobject(c); int port = parval(2); @B exittrigger@[treenode item = parnode(1); treenode current = ownerobject(c); int port = parval(2); @B usetransport@@Btransportpriority@Bpreempttransport@?Btransportdispatcher@gtreenode item = parnode(1); treenode current = ownerobject(c); int port = parval(2); /**Port by Expression*/ /** \nCenter port number: */ int portnum = /**/1/**/; /** \n\nNote: The expression may be a constant value or the result of a command (getitemtype(item), getlabelnum(item, "labelname"), etc).*/ return tonum(centerobject(current,portnum));@BMAINt/exodevade:/prlobaaria? l?0$o6Lk@6\ | c  4x  =l Bnroftransportsout@Bnroftransportsin@B outwaitinfo@@B@Bsendtocontinuous@Bpullcontinuous@Blifo@Bmessagetrigger@%treenode current = ownerobject(c); @Bondrawtrigger@treenode current = ownerobject(c); treenode view = parnode(1); // If this function returns a true, the default draw code of the object will not be executed. B timetables@B networknodes@@BProcessor22subnode@CBtimeoflaststop@B nrofstops@Bstatebeforestop@Bcollisionspheres@Bcollisionobjects@B resettrigger@%treenode current = ownerobject(c); B savedstate@Bresetposition@B behaviour@@Beventfunctions@Bcppfunctions@@B cppvariables@@Bdouble inport@Bfsnode* lastreleased@Bfsnode* curtransporter@Bdouble* protectlocs@Bunsigned char portinfoflag@Bvisual@@ Bcolor@a@Bred@RQ?Bgreen@333333?Bblue@'1Z?Bshape@ufs3d\procsr_color.3dsB shapeindex@v:@Bpicture@c"bitmaps\processorpicturesmall.bmpB imageobject@q***Bimageindexobject@rB imagebase@s***Bimageindexbase@tB nochildscale@_?B special@@Btitle@dFixed Resource MultiserviceB description@bB guifocus@|%VIEW:/standardviews/ObjectPropertiesBguifocusclass@} VIEW:/pages/ProcessorParametersB spatial@@B spatialx@M9@B spatialy@N5@B spatialz@OQ?B spatialsx@P@B spatialsy@Q@B spatialsz@R{Gz@B spatialrx@SB spatialry@TB spatialrz@UB offsetx@VB offsety@WB offsetz@XB offsetsx@\?B offsetsy@]?B offsetsz@^?B offsetrx@YB offsetry@ZB offsetrz@[B centroid@e?B objectinfo@@B Output: 0@B %Idle: 0.0@B%Processing: 0.0@B ignoredraw@fB displaygroup@ standardBdisplaygrouplist@@B standard@Blabels@@B connections@@Bconnectionsin@ @B@a @B@?B@Bconnectionsout@ @B@ @B@B@Bconnectionscenter@ @B@@B@B@Bevents@ @Bstats@@Bstate@@Bstate_current@,?Bstate_changetime@B state_since@-Bstate_profile@.State@2Bidle@B processing@Bbusy@Bblocked@B generating@Bempty@B collecting@B releasing@Bwaiting_for_operator@Bwaiting_for_transporter@B breakdown@Bscheduled_down@B conveying@B travel_empty@Btravel_loaded@Boffset_travel_empty@Boffset_travel_loaded@Bloading@B unloading@Bdown@Bsetup@Butilize@Bfull@B not_empty@Bfilling@Bstarved@Bmixing@Bflowing@Ballocated_idle@B off_shift@B change_over@Brepair@B maintenance@Blunch@B on_break@Bsuspend@B available@Bpreprocessing@Bpostprocessing@B inspecting@B operating@Bstandby@Bpurging@B cleaning@B accelerating@B maxspeed@B decelerating@Bstopped@Bwaiting@B accumulating@B state_graph@0Bcontent@@Bstats_contentmin@4Bstats_contentmax@5Bstats_contentavg@6Bstats_contentupdates@7Bstats_contentsince@8Bstats_contentgraph@9Content vs. TimeBstats_contentgraphmaxpoints@:Y@Bstats_content@2B staytime@@Bstats_staytimemin@<Bstats_staytimemax@=Bstats_staytimeavg@>Bstats_staytimeupdates@?Bstats_staytimegraph@A StaytimeBstats_staytimehisto@C@B parameters@@B startvalue@B endvalue@Y@Bbuckets@4@Bdata@ Staytime@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B interval@@Bmean@Blo@Bhi@Bpercent@W@Bauto@?Bstats_staytimegraphmaxpoints@BY@Bstats_staytimesince@@B throughput@@B stats_input@KB stats_output@LBstats_throughput@DBstats_throughputgraph@E ThroughputBstats_throughputgraphmaxpoints@FBstats_creationtime@JBstats_lastmovetime@IBstored@@B Source23 @objectBsuperclasses@@BFixedResource@ ABFlexsimObject@@ABclasses@@BSource@ABFixedResource@ABFlexsimObject@@AB variables@@)B arrivalmode@?Binterarrivaltime@treenode current = ownerobject(c); /**By Expression*/ /** \nExpression: */ double value = /**/1/**/; /** \n\nNote: The expression may be a constant value or the result of a command (getitemtype(item), getlabelnum(item, "labelname"), etc).*/ return value;@B@ MAINodev?o9$6L74Btimezerocreate@Binterarrivalitemtype@?B itemclass@@B schedule@@B Arrival1@@B ArrivalTime@B ItemName@ProductB ItemType@?B Quantity@?Brepeat@B sequence@@B Arrival1@@B ItemName@ProductB ItemType@?B Quantity@?Bsequencecurrow@?Bcreationtrigger@treenode item = parnode(1); treenode current = ownerobject(c); int rownumber = parval(2); //row number of the schedule/sequence table @B flowitembin@@BSource23subnode@Bcreateparticle@B nrreleased@Bpull@B sendtoport@ztreenode item = parnode(1); treenode current = ownerobject(c); /**First available*/ /** \nOpen all ports.*/ return 0 ;@Breceivefromport@@treenode current = ownerobject(c); /**Any Port*/ return 0; @Bpullrequirement@treenode current = ownerobject(c); treenode item = parnode(1); int port = parval(2); /**No Requirement*/ /** \nAlways return true.*/ return 1;@B\MAINodevade?o?0l$6Lk@6\ B entrytrigger@Ztreenode item = parnode(1); treenode current = ownerobject(c); int port = parval(2); @B exittrigger@[treenode item = parnode(1); treenode current = ownerobject(c); int port = parval(2); @B usetransport@@Btransportpriority@Bpreempttransport@Btransportdispatcher@gtreenode item = parnode(1); treenode current = ownerobject(c); int port = parval(2); /**Port by Expression*/ /** \nCenter port number: */ int portnum = /**/1/**/; /** \n\nNote: The expression may be a constant value or the result of a command (getitemtype(item), getlabelnum(item, "labelname"), etc).*/ return tonum(centerobject(current,portnum));@BMAINodevade:/prlobaaria? l?0$o6Lk@6\ | c  4x  =l Bnroftransportsout@Bnroftransportsin@B outwaitinfo@@B@Bsendtocontinuous@Bpullcontinuous@Blifo@Bmessagetrigger@%treenode current = ownerobject(c); @Bondrawtrigger@treenode current = ownerobject(c); treenode view = parnode(1); // If this function returns a true, the default draw code of the object will not be executed. B timetables@B networknodes@Btimeoflaststop@B nrofstops@Bstatebeforestop@Bcollisionspheres@Bcollisionobjects@B resettrigger@%treenode current = ownerobject(c); B savedstate@Bresetposition@B behaviour@@Beventfunctions@Bcppfunctions@@Bcppvariables@@Bfsnode * flowitemtocreate@Bdouble inport@Bfsnode* lastreleased@Bfsnode* curtransporter@Bdouble* protectlocs@Bunsigned char portinfoflag@Bvisual@@ Bcolor@a@Bred@333333?Bgreen@ffffff?Bblue@333333?Bshape@ufs3d\Source.3DSB shapeindex@v;@Bpicture@cbitmaps\sourcepicturesmall.bmpB imageobject@q***Bimageindexobject@rB imagebase@s***Bimageindexbase@tB nochildscale@_?B special@@Btitle@dFixed Resource SourceB description@bB guifocus@|%VIEW:/standardviews/ObjectPropertiesBguifocusclass@}VIEW:/pages/SourceParametersB spatial@@B spatialx@MB spatialy@N5@B spatialz@OB spatialsx@P?B spatialsy@Q?B spatialsz@R?B spatialrx@SB spatialry@TB spatialrz@UB centroid@e?Boffsetx@VBoffsety@WBoffsetz@XB offsetsx@\?B offsetsy@]?B offsetsz@^/$@B offsetrx@YB offsetry@ZB offsetrz@[B objectinfo@@B Output: 0@BBlocked: 0.0%@B ignoredraw@fB displaygroup@ standardBdisplaygrouplist@@B standard@Blabels@@B connections@@Bconnectionsin@ @Bconnectionsout@ @B@@B@B@Bconnectionscenter@ @Bevents@ @Bstats@@Bstate@@Bstate_current@,@Bstate_changetime@B state_since@-Bstate_profile@.State@2Bidle@B processing@Bbusy@Bblocked@B generating@Bempty@B collecting@B releasing@Bwaiting_for_operator@Bwaiting_for_transporter@B breakdown@Bscheduled_down@B conveying@B travel_empty@Btravel_loaded@Boffset_travel_empty@Boffset_travel_loaded@Bloading@B unloading@Bdown@Bsetup@Butilize@Bfull@B not_empty@Bfilling@Bstarved@Bmixing@Bflowing@Ballocated_idle@B off_shift@B change_over@Brepair@B maintenance@Blunch@B on_break@Bsuspend@B available@Bpreprocessing@Bpostprocessing@B inspecting@B operating@Bstandby@Bpurging@B cleaning@B accelerating@B maxspeed@B decelerating@Bstopped@Bwaiting@B accumulating@B state_graph@0Bcontent@@Bstats_contentmin@4Bstats_contentmax@5Bstats_contentavg@6Bstats_contentupdates@7Bstats_contentsince@8Bstats_contentgraph@9Content vs. TimeBstats_contentgraphmaxpoints@:Y@Bstats_content@2B staytime@@Bstats_staytimemin@<Bstats_staytimemax@=Bstats_staytimeavg@>Bstats_staytimeupdates@?Bstats_staytimegraph@A StaytimeBstats_staytimehisto@C@B parameters@@B startvalue@B endvalue@Y@Bbuckets@4@Bdata@ Staytime@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B interval@@Bmean@Blo@Bhi@Bpercent@W@Bauto@?Bstats_staytimegraphmaxpoints@BY@Bstats_staytimesince@@B throughput@@B stats_input@KB stats_output@LBstats_throughput@DBstats_throughputgraph@E ThroughputBstats_throughputgraphmaxpoints@FBstats_creationtime@JBstats_lastmovetime@IBstored@@BSink24@objectB superclasses@@BFixedResource@ ABFlexsimObject@@ABclasses@@BSink@ ABFixedResource@ABFlexsimObject@@AB variables@@B recycle@?B nrreleased@Bpull@B sendtoport@ztreenode item = parnode(1); treenode current = ownerobject(c); /**First available*/ /** \nOpen all ports.*/ return 0 ;@Breceivefromport@@treenode current = ownerobject(c); /**Any Port*/ return 0; @Bpullrequirement@treenode current = ownerobject(c); treenode item = parnode(1); int port = parval(2); /**No Requirement*/ /** \nAlways return true.*/ return 1;@B\MAINodevade?o?0l$6Lk@6\ B entrytrigger@Ztreenode item = parnode(1); treenode current = ownerobject(c); int port = parval(2); @B exittrigger@[treenode item = parnode(1); treenode current = ownerobject(c); int port = parval(2); @B usetransport@@Btransportpriority@Bpreempttransport@Btransportdispatcher@gtreenode item = parnode(1); treenode current = ownerobject(c); int port = parval(2); /**Port by Expression*/ /** \nCenter port number: */ int portnum = /**/1/**/; /** \n\nNote: The expression may be a constant value or the result of a command (getitemtype(item), getlabelnum(item, "labelname"), etc).*/ return tonum(centerobject(current,portnum));@BMAINodevade:/prlobaaria? l?0$o6Lk@6\ | c  4x  =l Bnroftransportsout@Bnroftransportsin@B outwaitinfo@Bsendtocontinuous@Bpullcontinuous@Blifo@Bmessagetrigger@%treenode current = ownerobject(c); @Bondrawtrigger@treenode current = ownerobject(c); treenode view = parnode(1); // If this function returns a true, the default draw code of the object will not be executed. B timetables@B networknodes@Btimeoflaststop@B nrofstops@Bstatebeforestop@Bcollisionspheres@Bcollisionobjects@B resettrigger@%treenode current = ownerobject(c); B savedstate@Bresetposition@B behaviour@@Beventfunctions@Bcppfunctions@@B cppvariables@Bvisual@@ Bcolor@a@Bred@333333?Bgreen@?Bblue@333333?Bshape@ufs3d\Sink.3DSB shapeindex@v=@Bpicture@cbitmaps\sinkpicturesmall.bmpB imageobject@q***Bimageindexobject@rB imagebase@s***Bimageindexbase@tB nochildscale@_?B special@@Btitle@dFixed Resource SinkB description@bB guifocus@|%VIEW:/standardviews/ObjectPropertiesBguifocusclass@}VIEW:/pages/SinkParametersB spatial@@B spatialx@M>@B spatialy@N5@B spatialz@OB spatialsx@P?B spatialsy@Q?B spatialsz@R?B spatialrx@SB spatialry@TB spatialrz@UBoffsetx@VBoffsety@WBoffsetz@XB offsetsx@\?B offsetsy@]?B offsetsz@^1Zd?B offsetrx@YB offsetry@ZB offsetrz@[B centroid@e?B objectinfo@@B Input: 0@B ignoredraw@fB displaygroup@ standardBdisplaygrouplist@@B standard@Blabels@@B connections@@Bconnectionsin@ @B@ @B@?B@Bconnectionsout@ @Bconnectionscenter@ @Bevents@ @Bstats@@Bstate@@Bstate_current@,@Bstate_changetime@B state_since@-Bstate_profile@.State@2Bidle@B processing@Bbusy@Bblocked@B generating@Bempty@B collecting@B releasing@Bwaiting_for_operator@Bwaiting_for_transporter@B breakdown@Bscheduled_down@B conveying@B travel_empty@Btravel_loaded@Boffset_travel_empty@Boffset_travel_loaded@Bloading@B unloading@Bdown@Bsetup@Butilize@Bfull@B not_empty@Bfilling@Bstarved@Bmixing@Bflowing@Ballocated_idle@B off_shift@B change_over@Brepair@B maintenance@Blunch@B on_break@Bsuspend@B available@Bpreprocessing@Bpostprocessing@B inspecting@B operating@Bstandby@Bpurging@B cleaning@B accelerating@B maxspeed@B decelerating@Bstopped@Bwaiting@B accumulating@B state_graph@0Bcontent@@Bstats_contentmin@4Bstats_contentmax@5Bstats_contentavg@6Bstats_contentupdates@7Bstats_contentsince@8Bstats_contentgraph@9Content vs. TimeBstats_contentgraphmaxpoints@:Y@Bstats_content@2B staytime@@Bstats_staytimemin@<Bstats_staytimemax@=Bstats_staytimeavg@>Bstats_staytimeupdates@?Bstats_staytimegraph@A StaytimeBstats_staytimehisto@C@B parameters@@B startvalue@B endvalue@Y@Bbuckets@4@Bdata@ Staytime@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B interval@@Bmean@Blo@Bhi@Bpercent@W@Bauto@?Bstats_staytimegraphmaxpoints@BY@Bstats_staytimesince@@B throughput@@B stats_input@KB stats_output@LBstats_throughput@DBstats_throughputgraph@E ThroughputBstats_throughputgraphmaxpoints@FBstats_creationtime@JBstats_lastmovetime@IBstored@@BCrane25 @objectBclasses@@BCrane@:AB TaskExecuter@0AB Dispatcher@.ABFlexsimObject@@AB superclasses@@B TaskExecuter@2AB Dispatcher@.ABFlexsimObject@@AB variables@@HB shellxloc@q= ףpB shellyloc@ףp= "@B shellzloc@B shellsizex@A@B shellsizey@$@B shellsizez@@Bmoving@B liftheight@@Btravelsequence@L>XY>DB cranespeeds@@BGantry@@B Max_Speed@@BAcceleration@?BDeceleration@?B Trolley@@B@@B@?B@?B Hoist_Lift@@B@@B@?B@?B Hoist_Drop@@B@@B@?B@?BcranekinematicsA8 do not touchu???crk;h@A|.g@crk;h@%@@1@@%@2@q= ףp?== 0A|.g@A|.g@??@nk(iA|.g@A|.g@??@ngtoA|.g@/L$g@?LXz?LXz?LXz????dit"/L$g@crk;h@?,S?,S?,S?(\(\?(\",c))), 1, 0 );*/urnode %%ݛ" @7 if(up(curnode) == variables(theobject)) curnode = NULL; else curnode = next(up(curnodety>coeientonen ick ?4$o?p`XD?o?=@4=( ?  | ot L   =      *  |  / =    / =  ! !h8=, 4t|hX/P=D -# =|/==, B liftradius@Bactivetasksequence@@B maxcontent@?B loadtime@Etreenode item = parnode(1); treenode current = ownerobject(c); treenode station = parnode(2); /**By Expression*/ /** \nExpression: */ double value = /**/0/**/; /** \n\nNote: The expression may be a constant value or the result of a command (getitemtype(item), getlabelnum(item, "labelname"), etc).*/ return value;@B`x..>tnkx>texy? l?0$o?Ll@9\ 6x 7l cheB loadtrigger@btreenode item = parnode(1); treenode current = ownerobject(c); treenode station = parnode(2); @B unloadtime@Etreenode item = parnode(1); treenode current = ownerobject(c); treenode station = parnode(2); /**By Expression*/ /** \nExpression: */ double value = /**/0/**/; /** \n\nNote: The expression may be a constant value or the result of a command (getitemtype(item), getlabelnum(item, "labelname"), etc).*/ return value;@B`x..>tnkx>texy? l?0$o?Ll@9\ 6x 7l  = Bunloadtrigger@btreenode item = parnode(1); treenode current = ownerobject(c); treenode station = parnode(2); @B maxspeed@@B acceleration@?B deceleration@?B navigator@@BCrane25subnode@qBoldbreakrequirement@Bbreakto@treenode activets = parnode(1); treenode current = ownerobject(c); /**New Tasksequences Only*/ /** \nOnly break to task sequences that have not been started already.*/ treenode tsqueue = gettasksequencequeue(current); treenode returnts = NULL; for(int index = 1; index <= content(tsqueue) && ! returnts; index++) { treenode curts = rank(tsqueue, index); if(gettotalnroftasks(curts) == getnroftasks(curts)) returnts = curts; } return tonum(returnts);@Bl:..>tnkx>tex ? l?0$o?XL=@?h 6x    ?    4  =    #` T =H  < =0  >|  =p   5     )  * =   &  =  4 Ec=B travelinfo@@B travelstartx@B travelstarty@B travelstartz@Btraveldistance@Btraveldirection@B travelendx@B travelendy@B travelendz@B travelacc@B traveldec@Btravelstarttime@~Btravelendtime@Btraveltimealpha@Btraveltimebeta@B travelvpeak@B travelvmax@B travelvstart@B travelvend@Bmodifyrotation@B useoffsets@?Boffsettingnow@Boffsetbegintime@A|.g@Boffsettotaltime@H<@B offsetlocx@B offsetlocy@?B offsetlocz@QB offsetbeginx@%@B offsetbeginy@@1@B offsetbeginz@@Boffsetbeginxrot@Boffsetbeginyrot@Boffsetbeginzrot@B loadedspeed@@B emptyspeed@@Bcurloadunloadtime@Blastupdatedspeed@B travelvstart@B travelvend@Blastspeedupdatetime@crk;h@Bcollisiontrigger@rtreenode thisobject=ownerobject(c); treenode otherobject=parnode(1); treenode thissphere=parnode(2); treenode othersphere=parnode(3); /**Crane Logic: */ /** Cranes must not cross paths along the */ #define X 1 #define Y 2 #define Z 3 int axis = /**/X/**list:X~Y~Z*/; /**- axis. If a collision is detected, then priority of tasks is determined first by priority of the task sequence being executed. If the priorities are equal, then the crane with the highest label named */ string labelname = /**/"cranepriority"/**/; /** takes precedence. Create a preempting task sequence for the other crane to move out of the way */ double traveldist = /**/5/**/; /** units of length along the axis specified, then wait for */ double delaytime = /**/10/**/; /** units of time before trying again.*/ // Here I find out which way I'm supposed to travel. int donothingflag = 0; doublearray travelloc = makearray(3); fillarray(travelloc, 0,0,0); int delayflag = 0; switch(axis) { case X: if(xloc(otherobject) > xloc(thisobject)) travelloc[1] = -traveldist; else travelloc[1] = traveldist; break; case Y: if(yloc(otherobject) > yloc(thisobject)) travelloc[2] = -traveldist; else travelloc[2] = traveldist; break; case Z: if(zloc(otherobject) > zloc(thisobject)) travelloc[3] = -traveldist; else travelloc[3] = traveldist; break; } /* Here's the real complicated part, namely figuring out when I should and when I should not preempt myself to get out of the other guy's way. Realize that this is happening on both colliding objects, so each object will decide for itself whether it needs to preempt its own active task. If this works correctly, exactly one of the two objects should preempt. Note: whenever I create a task sequence to get out of someone's way, I give that task sequence a special tag so that I can know later on (within this same field, but on the next collision detection event) that it is a task sequence created within this field. The way that I do this is I give my preemting task sequence a TASKTYPE_TAG task as its first task. This tag task does nothing as far as execution. But, as the first and second involved objects for this tag task, I set the first to point to myself, and the second to point to the guy I'm getting out of the way of. Then, next time this field fires, I can know the state of the situation, whether I'm already getting out of the way of the other guy, or whether he's getting out of my way, etc. */ treenode otheractivets = gettasksequence(otherobject, 0); treenode activets = gettasksequence(thisobject, 0); // Here are the cases in which I preempt myself if( // 1. If I am not doing anything right now !objectexists(activets) // 2. Either I'm currently already being preempted to get out of the way of the other object || (objectexists(activets) && gettasktype(activets, 1) == TASKTYPE_TAG && gettaskinvolved(activets, 1, 2) == otherobject) || ( // or the other guy is working on a task that is not a task to get out of my way, and his task takes priority over my task. objectexists(otheractivets) && (gettasktype(otheractivets, 1) != TASKTYPE_TAG || gettaskinvolved(otheractivets, 1, 2) != thisobject) && ( getpriority(otheractivets) > getpriority(activets) || ( getpriority(otheractivets) == getpriority(activets) && getlabelnum(otherobject, labelname) > getlabelnum(thisobject, labelname) ) ) ) ) { int preempttype = PREEMPT_ONLY; // If I'm already working on a task to get out of his way, then I want to abort that task // because this task will basically do the same thinge, except go a further distance further. if(objectexists(activets) && gettasktype(activets, 1) == TASKTYPE_TAG && gettaskinvolved(activets, 1, 1) == thisobject) { setpreempt(activets, PREEMPT_NOT); preempttype = PREEMPT_AND_ABORT_ACTIVE; } double priority = 0; if(objectexists(otheractivets)) priority = getpriority(otheractivets); treenode newts = createemptytasksequence(thisobject, priority, preempttype); // this is the tag task inserttask(newts, TASKTYPE_TAG, thisobject, otherobject); inserttask(newts, TASKTYPE_TRAVELRELATIVE, NULL, NULL, travelloc[1], travelloc[2], travelloc[3], 2); inserttask(newts, TASKTYPE_DELAY, NULL, NULL, delaytime, STATE_IDLE); dispatchtasksequence(newts); } @B ":/noons/inkxycranepriorityfocu/usefocuewfoipt@>OnEnd cts amesIt/ex2 confromdel teadpect   tive  0  d seco?o?0l$?Ll@?hl\ 6x  <99 6E OPC 6 2 4(   #%d#X#=L##@#=4#$D$ $$ $7t$ $ %D% %7% % 0  !)%)")=))")=)*D * ** *7* * +D@+ +74+ + 3 + /%/&x/=l//&`/=T/0D0 00 070 0 01D1 171 1 1 4E?E EEE=EF?F FFF=F gZ+HY)/:X+xW)hW%X VHV:<VV=0VV V:VV=VU#UU=U UU=U T%SS=S SS=S R)xQ+hQ(XQ=LQQ8QQQ=,Q Q(Q Q QQ=Q PP=P N+M)M#M=MMMMM=M M)| M#lMM\M M=PM MDM=8M K*,K K=K \6\ \ <`)H`#8`=,`````= ` `) `#````=` ``=` bdbb=Xb c5tc cf9ff ? gg=g g8ggg=g h?  hhh4h h7hh=hj@j=4jj=(jjj=jkkkCk kkCtk k kCdk kkkk k=Xkl ll7llll l=ln n=n coBcollcheckinterval@?Bdrawcollspheres@?B incollision@Bcollcheckstate@?@B@?B@?B@?B@Btotaltraveldist@B kinematics@Bflipthreshold@f@Bpassimmediately@@Bpassto@treenode tasksequence = parnode(1); treenode current = ownerobject(c); /**Pass to the object that is closest to the destination (if the object is on a network, then network travel is calculated; otherwise centroid-to-centroid distance is used).*/ /** \nConsider available objects only: */ int yes = 1; int no = 0; int onlyavailable =/**/yes/**/;/** (yes, no) */ /** \nIf none are found, then the tasksequence will be queued up using the Queue Strategy, and will be sent to the first available.*/ double curmin = GLOBAL_UNREACHABLE; int minindex = 0; treenode destination = NULL; for(int taskrank = 1; taskrank <= gettotalnroftasks(tasksequence) && destination == NULL; taskrank++) // this finds the first task in the tasksequence that is a travel task. { if(gettasktype(tasksequence,taskrank) == TASKTYPE_TRAVEL) destination = gettaskinvolved(tasksequence,taskrank,1); } if(destination==NULL) // first available if there is no travel task return 0; for(int index = 1; index <= nrop(current); index++) { treenode curobj = outobject(current, index); if(curobj && isclasstype(curobj, CLASSTYPE_TASKEXECUTER)) { int validcheck=1; if(onlyavailable && !(ipopen(curobj, opipno(current, index)) && inputopen(curobj)) ) validcheck=0; if(validcheck) { double curdist = distancetotravel(curobj, destination); if(curdist != GLOBAL_UNREACHABLE && (curmin == GLOBAL_UNREACHABLE || curmin > curdist)) { curmin = curdist; minindex = index; } } } } return minindex;@B D..>tnkx>tex iptEnd  con ns ask(? l?0$o6@6P6l4` 9|   6  ?6  #XH4<=0> 4t=h5 )  #= &=4 $#=6  M?@ 04$ = 3A)xh=\ =P 6  )* ) = 4 == 45,  "4< !9p! !`!=T!!=H!  !")"+ "%"7" "7""#""7""(""7" $8 $$7$ %5(%%4% 5 0&=4 1D*48*Btasksequencequeue@@Bqueuestrategy@treenode tasksequence = parnode(1); treenode current = ownerobject(c); /**Prioritize by distance: \nSort the task sequences based on the closest involved object.*/ /** \n\nTask Rank: */ int taskrank = /**/4/**/; /** \nInvolved Object Number: */ int involvednum = /**/1/**/; /** \nConsider only partially completed tasksequences: */ int yes = 1; int no = 0; int onlypartial =/**/yes/**list:yes~no*/; /** \nCondition: */ int condition = /**/true/**/; /**\n\n*/ if(condition) { treenode station = gettaskinvolved(tasksequence,taskrank,involvednum); double dist = distancetotravel(current, station); double inversedist = 0; if((getnroftasks(tasksequence) < gettotalnroftasks(tasksequence) || !onlypartial) && dist != GLOBAL_UNREACHABLE) { if(dist > 0) { inversedist = 0.1 / dist; } else { inversedist = 0.1; } } //pt(getname(station));pr(); //pf(time());pt(" : ");pf(inversedist);pr(); return inversedist; } else return getpriority(tasksequence); /**Hints:*/ /**\nFor standard transport task sequences, use 4 / 1 / yes. */ /**\nFor standard request operators task sequences, use 4 / 2 / no. */ /**\nAs a Condition you can write getpriority(tasksequence)==0 such that task sequences with a specified priority are still handled first.*/ @BpZ..>tnkx>tex ?? ? l?0$o6@6P 6`   6p   6  4 6 !:4?  44=9( = =98   )(7 + *4 'xl=`T=H $ %7 8  7  8< 05,"7L"  $%d%=X%Bcoordinatedtasks@@Bonresourceavailable@treenode current = ownerobject(c); int port = parval(1); treenode resource = parnode(2); treenode nextts = parnode(3); treenode lastts = parnode(4); Bmessagetrigger@%treenode current = ownerobject(c); @Bondrawtrigger@treenode current = ownerobject(c); treenode view = parnode(1); // If this function returns a true, the default draw code of the object will not be executed. B timetables@B networknodes@Btimeoflaststop@B nrofstops@Bstatebeforestop@Bcollisionspheres@@B@@Bx@?By@пBz@Bradius@@Bcollisionobjects@@BCrane27@$B resettrigger@%treenode current = ownerobject(c); B savedstate@Bresetposition@B behaviour@@Beventfunctions@Bcppfunctions@@B cppvariables@@Bdouble lastxloc@Bdouble lastyloc@Bdouble lastzloc@Bdouble justcreated@Bdouble offsetloc[3] @Bfsnode* activetask@Bdouble* protectlocs@Bunsigned char portinfoflag@Bvisual@@ Bshape@ufs3d\texturebox.wrlB shapeindex@v@Bpicture@cbitmaps\Cranepicturesmall.bmpB imageobject@qfs3d\concrete.bmpBimageindexobject@rE@B imagebase@s***Bimageindexbase@tBcolor@a@Bred@ffffff?Bgreen@ffffff?Bblue@?B nochildscale@_?Bspecial@@Btitle@dObjectB description@bB guifocus@|%VIEW:/standardviews/ObjectPropertiesBguifocusclass@}VIEW:/pages/CraneParametersBspatial@@B spatialx@M@B spatialy@N@1@B spatialz@O@B spatialsx@P?B spatialsy@Q?B spatialsz@R?B spatialrx@SB spatialry@TB spatialrz@UBoffsetx@VBoffsety@WBoffsetz@XB offsetsx@\?B offsetsy@]?B offsetsz@^?B offsetrx@YB offsetry@ZB offsetrz@[B centroid@e?B ignoredraw@fB displaygroup@ standardBdisplaygrouplist@@B standard@B objectinfo@@B Output: 0@B Status: idle@?Blabels@@B connections@@Bconnectionsin@ @B@@B@?B@Bconnectionsout@ @Bconnectionscenter@ @Bevents@ @Bstats@@Bstate@@Bstate_current@,?Bstate_changetime@B state_since@-Bstate_profile@.State@2Bidle@B processing@Bbusy@Bblocked@B generating@Bempty@B collecting@B releasing@Bwaiting_for_operator@Bwaiting_for_transporter@B breakdown@Bscheduled_down@B conveying@B travel_empty@Btravel_loaded@Boffset_travel_empty@Boffset_travel_loaded@Bloading@B unloading@Bdown@Bsetup@Butilize@Bfull@B not_empty@Bfilling@Bstarved@Bmixing@Bflowing@Ballocated_idle@B off_shift@B change_over@Brepair@B maintenance@Blunch@B on_break@Bsuspend@B available@Bpreprocessing@Bpostprocessing@B inspecting@B operating@Bstandby@Bpurging@B cleaning@B accelerating@B maxspeed@B decelerating@Bstopped@Bwaiting@B accumulating@B state_graph@0Bcontent@@Bstats_contentmin@4Bstats_contentmax@5Bstats_contentavg@6Bstats_contentupdates@7Bstats_contentsince@8Bstats_contentgraph@9Content vs. TimeBstats_contentgraphmaxpoints@:Y@Bstats_content@2B staytime@@Bstats_staytimemin@<Bstats_staytimemax@=Bstats_staytimeavg@>Bstats_staytimeupdates@?Bstats_staytimegraph@A StaytimeBstats_staytimehisto@C@B parameters@@B startvalue@B endvalue@Y@Bbuckets@4@Bdata@ Staytime@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B interval@@Bmean@Blo@Bhi@Bpercent@W@Bauto@?Bstats_staytimegraphmaxpoints@BY@Bstats_staytimesince@@B throughput@@B stats_input@KB stats_output@LBstats_throughput@DBstats_throughputgraph@E ThroughputBstats_throughputgraphmaxpoints@FBstats_creationtime@JBstats_lastmovetime@IBstored@@bDefaultNavigator@object Bclasses@@B Navigator@`ABFlexsimObject@@AB superclasses@@BFlexsimObject@@AB variables@@Btravelmembers@@Bactivetravelmembers@@Blastupdatetime@Bmessagetrigger@%treenode current = ownerobject(c); @Bondrawtrigger@treenode current = ownerobject(c); treenode view = parnode(1); // If this function returns a true, the default draw code of the object will not be executed. B timetables@B networknodes@Btimeoflaststop@B nrofstops@Bstatebeforestop@Bcollisionspheres@Bcollisionobjects@B resettrigger@%treenode current = ownerobject(c); B savedstate@Bresetposition@B behaviour@@Beventfunctions@Bcppfunctions@@B cppvariables@@Bdouble* protectlocs@Bunsigned char portinfoflag@Bspatial@@ B spatialsx@P-C6?B spatialsy@Q-C6?B spatialsz@R-C6?B spatialx@MB spatialy@NB spatialz@OB spatialrx@SB spatialry@TB spatialrz@UB centroid@e?Bspecial@@B guifocus@|!VIEW:/standardviews/objecteditorBtitle@dObjectB description@bBlabels@@Bvisual@@B nochildscale@_?B connections@@Bconnectionsin@ @Bconnectionsout@ @Bconnectionscenter@ @Bevents@ @Bstats@@Bstate@@Bstate_current@,@Bstate_changetime@B state_since@-Bstate_profile@.State@2Bidle@B processing@Bbusy@Bblocked@B generating@Bempty@B collecting@B releasing@Bwaiting_for_operator@Bwaiting_for_transporter@B breakdown@Bscheduled_down@B conveying@B travel_empty@Btravel_loaded@Boffset_travel_empty@Boffset_travel_loaded@Bloading@B unloading@Bdown@Bsetup@Butilize@Bfull@B not_empty@Bfilling@Bstarved@Bmixing@Bflowing@Ballocated_idle@B off_shift@B change_over@Brepair@B maintenance@Blunch@B on_break@Bsuspend@B available@Bpreprocessing@Bpostprocessing@B inspecting@B operating@Bstandby@Bpurging@B cleaning@B accelerating@B maxspeed@B decelerating@Bstopped@Bwaiting@B accumulating@B state_graph@0Bcontent@@Bstats_contentmin@4Bstats_contentmax@5Bstats_contentavg@6Bstats_contentupdates@7Bstats_contentsince@8Bstats_contentgraph@9Content vs. TimeBstats_contentgraphmaxpoints@:Y@Bstats_content@2B staytime@@Bstats_staytimemin@<Bstats_staytimemax@=Bstats_staytimeavg@>Bstats_staytimeupdates@?Bstats_staytimegraph@A StaytimeBstats_staytimehisto@C@B parameters@@B startvalue@B endvalue@Y@Bbuckets@4@Bdata@ Staytime@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B interval@@Bmean@Blo@Bhi@Bpercent@W@Bauto@?Bstats_staytimegraphmaxpoints@BY@Bstats_staytimesince@@B throughput@@B stats_input@KB stats_output@LBstats_throughput@DBstats_throughputgraph@E ThroughputBstats_throughputgraphmaxpoints@FBstats_creationtime@JBstats_lastmovetime@IBstored@BCrane27 @objectBclasses@@BCrane@:AB TaskExecuter@0AB Dispatcher@.ABFlexsimObject@@AB superclasses@@B TaskExecuter@2AB Dispatcher@.ABFlexsimObject@@AB variables@@HB shellxloc@B shellyloc@(\u@@B shellzloc@B shellsizex@A@B shellsizey@$@B shellsizez@@Bmoving@B liftheight@@Btravelsequence@L>XY>DB cranespeeds@@BGantry@@B Max_Speed@@BAcceleration@?BDeceleration@?B Trolley@@B@@B@?B@?B Hoist_Lift@@B@@B@?B@?B Hoist_Drop@@B@@B@?B@?BcranekinematicsA8 do not touch???S+i@Qr2Dh@d<_i@:@@1@@:@2@j@>valQr2Dh@Qr2Dh@??@|hQr2Dh@Qr2Dh@??@Qr2Dh@":i@?LXz?LXz?LXz????@":i@d<_i@?𿽳e?e?e?p= ףp= ף?C׿spatialsy@Q5@Bpicture@cbitmaps\views\button.bmpBclose@D-D8hK  the\ LoD8(o t9o6boxl66a46   #p   aX  4L   4@  5  4  5,  '44 H$464654  6h aP4D 48 ( a4 4x54  5$ '4 4  #4454 $4aT4H4<p40 * !x!!4l! B * tasksequence = parnode(1); treenode current = ownerobject(c); /**Prioritize by distance: \nSB liftradius@Bactivetasksequence@@B maxcontent@?B loadtime@Etreenode item = parnode(1); treenode current = ownerobject(c); treenode station = parnode(2); /**By Expression*/ /** \nExpression: */ double value = /**/0/**/; /** \n\nNote: The expression may be a constant value or the result of a command (getitemtype(item), getlabelnum(item, "labelname"), etc).*/ return value;@B`x..>tnkx>tex? l?0$o?Ll@9\ 6x 7l cheB loadtrigger@btreenode item = parnode(1); treenode current = ownerobject(c); treenode station = parnode(2); @B unloadtime@Etreenode item = parnode(1); treenode current = ownerobject(c); treenode station = parnode(2); /**By Expression*/ /** \nExpression: */ double value = /**/0/**/; /** \n\nNote: The expression may be a constant value or the result of a command (getitemtype(item), getlabelnum(item, "labelname"), etc).*/ return value;@B`x..>tnkx>tex? l?0$o?Ll@9\ 6x 7l  = Bunloadtrigger@btreenode item = parnode(1); treenode current = ownerobject(c); treenode station = parnode(2); @B maxspeed@@B acceleration@?B deceleration@?B navigator@@BCrane27subnode@kBoldbreakrequirement@Bbreakto@treenode activets = parnode(1); treenode current = ownerobject(c); /**New Tasksequences Only*/ /** \nOnly break to task sequences that have not been started already.*/ treenode tsqueue = gettasksequencequeue(current); treenode returnts = NULL; for(int index = 1; index <= content(tsqueue) && ! returnts; index++) { treenode curts = rank(tsqueue, index); if(gettotalnroftasks(curts) == getnroftasks(curts)) returnts = curts; } return tonum(returnts);@Bl:..>tnkx>tex ? l?0$o?XL=@?h 6x    ?    4  =    #` T =H  < =0  >|  =p   5     )  * =   &  =  4 Ec=otaB travelinfo@@B travelstartx@B travelstarty@B travelstartz@Btraveldistance@Btraveldirection@B travelendx@B travelendy@B travelendz@B travelacc@B traveldec@Btravelstarttime@~Btravelendtime@Btraveltimealpha@Btraveltimebeta@B travelvpeak@B travelvmax@B travelvstart@B travelvend@Bmodifyrotation@B useoffsets@?Boffsettingnow@Boffsetbegintime@Qr2Dh@Boffsettotaltime@H@B offsetlocx@B offsetlocy@?B offsetlocz@B offsetbeginx@:@B offsetbeginy@@1@B offsetbeginz@@Boffsetbeginxrot@Boffsetbeginyrot@Boffsetbeginzrot@B loadedspeed@@B emptyspeed@@Bcurloadunloadtime@Blastupdatedspeed@B travelvstart@B travelvend@Blastspeedupdatetime@Qr2Dh@Bcollisiontrigger@rtreenode thisobject=ownerobject(c); treenode otherobject=parnode(1); treenode thissphere=parnode(2); treenode othersphere=parnode(3); /**Crane Logic: */ /** Cranes must not cross paths along the */ #define X 1 #define Y 2 #define Z 3 int axis = /**/X/**list:X~Y~Z*/; /**- axis. If a collision is detected, then priority of tasks is determined first by priority of the task sequence being executed. If the priorities are equal, then the crane with the highest label named */ string labelname = /**/"cranepriority"/**/; /** takes precedence. Create a preempting task sequence for the other crane to move out of the way */ double traveldist = /**/5/**/; /** units of length along the axis specified, then wait for */ double delaytime = /**/10/**/; /** units of time before trying again.*/ // Here I find out which way I'm supposed to travel. int donothingflag = 0; doublearray travelloc = makearray(3); fillarray(travelloc, 0,0,0); int delayflag = 0; switch(axis) { case X: if(xloc(otherobject) > xloc(thisobject)) travelloc[1] = -traveldist; else travelloc[1] = traveldist; break; case Y: if(yloc(otherobject) > yloc(thisobject)) travelloc[2] = -traveldist; else travelloc[2] = traveldist; break; case Z: if(zloc(otherobject) > zloc(thisobject)) travelloc[3] = -traveldist; else travelloc[3] = traveldist; break; } /* Here's the real complicated part, namely figuring out when I should and when I should not preempt myself to get out of the other guy's way. Realize that this is happening on both colliding objects, so each object will decide for itself whether it needs to preempt its own active task. If this works correctly, exactly one of the two objects should preempt. Note: whenever I create a task sequence to get out of someone's way, I give that task sequence a special tag so that I can know later on (within this same field, but on the next collision detection event) that it is a task sequence created within this field. The way that I do this is I give my preemting task sequence a TASKTYPE_TAG task as its first task. This tag task does nothing as far as execution. But, as the first and second involved objects for this tag task, I set the first to point to myself, and the second to point to the guy I'm getting out of the way of. Then, next time this field fires, I can know the state of the situation, whether I'm already getting out of the way of the other guy, or whether he's getting out of my way, etc. */ treenode otheractivets = gettasksequence(otherobject, 0); treenode activets = gettasksequence(thisobject, 0); // Here are the cases in which I preempt myself if( // 1. If I am not doing anything right now !objectexists(activets) // 2. Either I'm currently already being preempted to get out of the way of the other object || (objectexists(activets) && gettasktype(activets, 1) == TASKTYPE_TAG && gettaskinvolved(activets, 1, 2) == otherobject) || ( // or the other guy is working on a task that is not a task to get out of my way, and his task takes priority over my task. objectexists(otheractivets) && (gettasktype(otheractivets, 1) != TASKTYPE_TAG || gettaskinvolved(otheractivets, 1, 2) != thisobject) && ( getpriority(otheractivets) > getpriority(activets) || ( getpriority(otheractivets) == getpriority(activets) && getlabelnum(otherobject, labelname) > getlabelnum(thisobject, labelname) ) ) ) ) { int preempttype = PREEMPT_ONLY; // If I'm already working on a task to get out of his way, then I want to abort that task // because this task will basically do the same thinge, except go a further distance further. if(objectexists(activets) && gettasktype(activets, 1) == TASKTYPE_TAG && gettaskinvolved(activets, 1, 1) == thisobject) { setpreempt(activets, PREEMPT_NOT); preempttype = PREEMPT_AND_ABORT_ACTIVE; } double priority = 0; if(objectexists(otheractivets)) priority = getpriority(otheractivets); treenode newts = createemptytasksequence(thisobject, priority, preempttype); // this is the tag task inserttask(newts, TASKTYPE_TAG, thisobject, otherobject); inserttask(newts, TASKTYPE_TRAVELRELATIVE, NULL, NULL, travelloc[1], travelloc[2], travelloc[3], 2); inserttask(newts, TASKTYPE_DELAY, NULL, NULL, delaytime, STATE_IDLE); dispatchtasksequence(newts); } @B ":/noons/inkxcranepriorityfocu/useEnd I2 conpect   tive  0  d seco?o?0l$?Ll@?hl\ 6x  <99 6E OPC 6 2 4(   #%d#X#=L##@#=4#$D$ $$ $7t$ $ %D% %7% % 0 ! !)%)")=))")=)*D * ** *7* * +D@+ +74+ + 3  /%/&x/=l//&`/=T/0D0 00 070 0 01D1 171 1 1 4E?E EEE=EF?F FFF=F gZ+HY)/:X+xW)hW%X VHV:<VV=0VV V:VV=VU#UU=U UU=U T%SS=S SS=S R)xQ+hQ(XQ=LQQ8QQ Q=,Q Q(QQ QQ=Q PP=P N+M)M#M=MMMMM=M M)| M#lMM\M M=PM MDM=8M K*,K K=K \6\ \ <`)H`#8`=,`````= ` `) `#````=` ``=` bdbb=Xb c5tc cf9ff ? gg=g g8ggg=g h?  hhh4h h7hh=hj@j=4jj=(jjj=jkkkCk kkCtk k kCdk kkkk k=Xkl ll7llll l=ln n=n coBcollcheckinterval@?Bdrawcollspheres@?B incollision@Bcollcheckstate@?@B@?B@?B@?B@Btotaltraveldist@B kinematicsAxdo not touchue("../Port Chooser>getfoO87 #W@hK[V@O87 #W@Hz@3@p= ףp?!@3@== 0hK[V@O87 #W@@??@@3U*?Q8@p= ףpvՙ*@Q8@p= ףpt(rank(item, port))))); createview( gets(node(">special/guifocusclass",item)), nodetopath(item, 1), nodetopath(item, 1) ); }i)s processing time. If you are using the explicit FixedResource class as an object in your model, you can use this command, along with the getitemvar, getiteminvolved, and setiteminvolved commands, to store variables on the items the object receives..XFC8S #"u""9""o"p% %% %o& Bflipthreshold@f@Bpassimmediately@@Bpassto@treenode tasksequence = parnode(1); treenode current = ownerobject(c); /**Pass to the object that is closest to the destination (if the object is on a network, then network travel is calculated; otherwise centroid-to-centroid distance is used).*/ /** \nConsider available objects only: */ int yes = 1; int no = 0; int onlyavailable =/**/yes/**/;/** (yes, no) */ /** \nIf none are found, then the tasksequence will be queued up using the Queue Strategy, and will be sent to the first available.*/ double curmin = GLOBAL_UNREACHABLE; int minindex = 0; treenode destination = NULL; for(int taskrank = 1; taskrank <= gettotalnroftasks(tasksequence) && destination == NULL; taskrank++) // this finds the first task in the tasksequence that is a travel task. { if(gettasktype(tasksequence,taskrank) == TASKTYPE_TRAVEL) destination = gettaskinvolved(tasksequence,taskrank,1); } if(destination==NULL) // first available if there is no travel task return 0; for(int index = 1; index <= nrop(current); index++) { treenode curobj = outobject(current, index); if(curobj && isclasstype(curobj, CLASSTYPE_TASKEXECUTER)) { int validcheck=1; if(onlyavailable && !(ipopen(curobj, opipno(current, index)) && inputopen(curobj)) ) validcheck=0; if(validcheck) { double curdist = distancetotravel(curobj, destination); if(curdist != GLOBAL_UNREACHABLE && (curmin == GLOBAL_UNREACHABLE || curmin > curdist)) { curmin = curdist; minindex = index; } } } } return minindex;@B D..>tnkx>tex iptEnd  con e ello? l?0$o6@6P6l4` 9|   6  ?6  #XH4<=0>4t=h5 )  #= &=4 $#=6  M?@ 04$ = 3A)xh=\ =P 6  )* ) = 4 == 45,  "4< !9p! !`!=T!!=H!  !")"+ "%"7" "7""#""7""(""7" $8 $$7$ %5(%%4% 5 0&=4 1D*48*bjeBtasksequencequeue@@Bqueuestrategy@treenode tasksequence = parnode(1); treenode current = ownerobject(c); /**Prioritize by distance: \nSort the task sequences based on the closest involved object.*/ /** \n\nTask Rank: */ int taskrank = /**/4/**/; /** \nInvolved Object Number: */ int involvednum = /**/1/**/; /** \nConsider only partially completed tasksequences: */ int yes = 1; int no = 0; int onlypartial =/**/yes/**list:yes~no*/; /** \nCondition: */ int condition = /**/true/**/; /**\n\n*/ if(condition) { treenode station = gettaskinvolved(tasksequence,taskrank,involvednum); double dist = distancetotravel(current, station); double inversedist = 0; if((getnroftasks(tasksequence) < gettotalnroftasks(tasksequence) || !onlypartial) && dist != GLOBAL_UNREACHABLE) { if(dist > 0) { inversedist = 0.1 / dist; } else { inversedist = 0.1; } } //pt(getname(station));pr(); //pf(time());pt(" : ");pf(inversedist);pr(); return inversedist; } else return getpriority(tasksequence); /**Hints:*/ /**\nFor standard transport task sequences, use 4 / 1 / yes. */ /**\nFor standard request operators task sequences, use 4 / 2 / no. */ /**\nAs a Condition you can write getpriority(tasksequence)==0 such that task sequences with a specified priority are still handled first.*/ @BpZ..>tnkx>tex ?? / is i? l?0$o6@6P 6`   6p   6  4 6 !:4?  44=9( = =98   )(7 + *4 'xl=`T=H $ %7 8  7  8< 05,"7L"  $%d%=X%Bcoordinatedtasks@@Bonresourceavailable@treenode current = ownerobject(c); int port = parval(1); treenode resource = parnode(2); treenode nextts = parnode(3); treenode lastts = parnode(4); Bmessagetrigger@%treenode current = ownerobject(c); @Bondrawtrigger@treenode current = ownerobject(c); treenode view = parnode(1); // If this function returns a true, the default draw code of the object will not be executed. B timetables@B networknodes@Btimeoflaststop@B nrofstops@Bstatebeforestop@Bcollisionspheres@@B@@Bx@?By@пBz@B2@@Bcollisionobjects@@BCrane25@B resettrigger@%treenode current = ownerobject(c); B savedstate@Bresetposition@B behaviour@@Beventfunctions@Bcppfunctions@@B cppvariables@@Bdouble lastxloc@Bdouble lastyloc@Bdouble lastzloc@Bdouble justcreated@Bdouble offsetloc[3] @Bfsnode* activetask@Bdouble* protectlocs@Bunsigned char portinfoflag@Bvisual@@ Bshape@ufs3d\texturebox.wrlB shapeindex@v@Bpicture@cbitmaps\Cranepicturesmall.bmpB imageobject@qfs3d\concrete.bmpBimageindexobject@rE@B imagebase@s***Bimageindexbase@tBcolor@a@Bred@?Bgreen@?Bblue@?B nochildscale@_?Bspecial@@Btitle@dObjectB description@bB guifocus@|%VIEW:/standardviews/ObjectPropertiesBguifocusclass@}VIEW:/pages/CraneParametersBspatial@@B spatialx@M:@B spatialy@N@1@B spatialz@O@B spatialsx@P?B spatialsy@Q?B spatialsz@R?B spatialrx@SB spatialry@TB spatialrz@UBoffsetx@VBoffsety@WBoffsetz@XB offsetsx@\?B offsetsy@]?B offsetsz@^?B offsetrx@YB offsetry@ZB offsetrz@[B centroid@e?B ignoredraw@fB displaygroup@ standardBdisplaygrouplist@@B standard@B objectinfo@@B Output: 0@B Status: idle@?Blabels@@B connections@@Bconnectionsin@ @B@@B@?B@Bconnectionsout@ @Bconnectionscenter@ @Bevents@ @Bstats@@Bstate@@Bstate_current@,?Bstate_changetime@B state_since@-Bstate_profile@.State@2Bidle@B processing@Bbusy@Bblocked@B generating@Bempty@B collecting@B releasing@Bwaiting_for_operator@Bwaiting_for_transporter@B breakdown@Bscheduled_down@B conveying@B travel_empty@Btravel_loaded@Boffset_travel_empty@Boffset_travel_loaded@Bloading@B unloading@Bdown@Bsetup@Butilize@Bfull@B not_empty@Bfilling@Bstarved@Bmixing@Bflowing@Ballocated_idle@B off_shift@B change_over@Brepair@B maintenance@Blunch@B on_break@Bsuspend@B available@Bpreprocessing@Bpostprocessing@B inspecting@B operating@Bstandby@Bpurging@B cleaning@B accelerating@B maxspeed@B decelerating@Bstopped@Bwaiting@B accumulating@B state_graph@0Bcontent@@Bstats_contentmin@4Bstats_contentmax@5Bstats_contentavg@6Bstats_contentupdates@7Bstats_contentsince@8Bstats_contentgraph@9Content vs. TimeBstats_contentgraphmaxpoints@:Y@Bstats_content@2B staytime@@Bstats_staytimemin@<Bstats_staytimemax@=Bstats_staytimeavg@>Bstats_staytimeupdates@?Bstats_staytimegraph@A StaytimeBstats_staytimehisto@C@B parameters@@B startvalue@B endvalue@Y@Bbuckets@4@Bdata@ Staytime@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B interval@@Bmean@Blo@Bhi@Bpercent@W@Bauto@?Bstats_staytimegraphmaxpoints@BY@Bstats_staytimesince@@B throughput@@B stats_input@KB stats_output@LBstats_throughput@DBstats_throughputgraph@E ThroughputBstats_throughputgraphmaxpoints@FBstats_creationtime@JBstats_lastmovetime@IBstored@@RNN1$@objectB classes@@B NetworkNode@ AABFlexsimObject@@AB superclasses@@BFlexsimObject@@AB variables@@ Bnetwork@@BNetworkNode158subnode@D@B@?B travellers@@B NN1subnode@tBactivetravellers@B stations@@B NN1subnode@pB NN1subnode@B showmode@.@B maxinactive@@@B lastxloc@@B lastyloc@1@B lastzloc@@Bshowme@Blastupdatetime@Bentrytrigger@treenode traveler = parnode(1); treenode current = ownerobject(c); int toedge = parval(2); //the number of the edge that the traveler is going to next int fromedge = parval(3); // the number of the edge the traveler came from Barrivaltrigger@treenode traveler = parnode(1); treenode current = ownerobject(c); int toedge = parval(2); //the number of the edge that the traveler is going to next int fromedge = parval(3); // the number of the edge the traveler came from B drawsize@@Bclicked@B sideoffset@Bdisttosideoffset@Btrafficcontrollers@Bvirtualexits@Bnotifyofblockedlength@Bmessagetrigger@%treenode current = ownerobject(c); @Bondrawtrigger@treenode current = ownerobject(c); treenode view = parnode(1); // If this function returns a true, the default draw code of the object will not be executed. B timetables@B networknodes@@B NN1subnode@XBtimeoflaststop@B nrofstops@Bstatebeforestop@Bcollisionspheres@Bcollisionobjects@B resettrigger@%treenode current = ownerobject(c); B savedstate@Bresetposition@B behaviour@@Beventfunctions@@Bcppfunctions@@Bcppvariables@B objectinfo@@B @B @B @Bvisual@@ Bcolor@a@Bred@?Bgreen@?Bblue@?Bshape@u***B shapeindex@vBpicture@c$bitmaps\networknodepicturesmall.bmpB imageobject@q***Bimageindexobject@rB imagebase@s***Bimageindexbase@tB nochildscale@_?Bspecial@@Btitle@dObjectB description@bB guifocus@|%VIEW:/standardviews/ObjectPropertiesBguifocusclass@}"VIEW:/pages/NetworkNodeParametersB spatial@@B spatialx@M@B spatialy@N1@B spatialz@O@B spatialsx@P{Gz?B spatialsy@Q{Gz?B spatialsz@R{Gz?B spatialrx@SB spatialry@TB spatialrz@UBoffsetx@VBoffsety@WBoffsetz@XB offsetsx@\?B offsetsy@]?B offsetsz@^@B offsetrx@YB offsetry@ZB offsetrz@[B centroid@e?B displaygroup@ standardBdisplaygrouplist@@B standard@Blabels@@B connections@@Bconnectionsin@ @Bconnectionsout@ @BTo NN2@@B user open @?Binside couple@Btype@@B distance@ @B spline here@?B filledlength@Bactive travelers@@Bin open@?Blast exit time@Blast exit size@Blast entry port@Bspacing@@Bspline coupling@B speed limit@@B user dist@Bspline end rot@Bblocked length@Bconnectionscenter@ @Bevents@ @Bstats@@Bstate@@Bstate_current@,@Bstate_changetime@B state_since@-Bstate_profile@.State@2Bidle@B processing@Bbusy@Bblocked@B generating@Bempty@B collecting@B releasing@Bwaiting_for_operator@Bwaiting_for_transporter@B breakdown@Bscheduled_down@B conveying@B travel_empty@Btravel_loaded@Boffset_travel_empty@Boffset_travel_loaded@Bloading@B unloading@Bdown@Bsetup@Butilize@Bfull@B not_empty@Bfilling@Bstarved@Bmixing@Bflowing@Ballocated_idle@B off_shift@B change_over@Brepair@B maintenance@Blunch@B on_break@Bsuspend@B available@Bpreprocessing@Bpostprocessing@B inspecting@B operating@Bstandby@Bpurging@B cleaning@B accelerating@B maxspeed@B decelerating@Bstopped@Bwaiting@B accumulating@B state_graph@0Bcontent@@Bstats_contentmin@4Bstats_contentmax@5Bstats_contentavg@6Bstats_contentupdates@7Bstats_contentsince@8Bstats_contentgraph@9Content vs. TimeBstats_contentgraphmaxpoints@:Y@Bstats_content@2@B staytime@@Bstats_staytimemin@<Bstats_staytimemax@=Bstats_staytimeavg@>Bstats_staytimeupdates@?Bstats_staytimegraph@A StaytimeBstats_staytimehisto@C@B parameters@@B startvalue@B endvalue@Y@Bbuckets@4@Bdata@ Staytime@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B interval@@Bmean@Blo@Bhi@Bpercent@W@Bauto@?Bstats_staytimegraphmaxpoints@BY@Bstats_staytimesince@@B throughput@@B stats_input@KB stats_output@LBstats_throughput@DBstats_throughputgraph@E ThroughputBstats_throughputgraphmaxpoints@FBstats_creationtime@JBstats_lastmovetime@IBstored@@B NN1subnode@s@rSplineEndPoint162@objectB spatial@@ B spatialx@MB spatialy@NB spatialz@OB spatialsx@P{Gz?B spatialsy@Q{Gz?B spatialsz@R{Gz?B spatialrx@SB spatialry@TB spatialrz@UB classes@@BSplineEndPoint@ AB variables@@Bbinder@@B@B connections@@Bconnectionsin@ @Bconnectionsout@ @B@8@B@B@Bconnectionscenter@ B behaviour@@Beventfunctions@@rSplineEndPoint163@objectB spatial@@ B spatialx@M @B spatialy@NB spatialz@OB spatialsx@P{Gz?B spatialsy@Q{Gz?B spatialsz@R{Gz?B spatialrx@SB spatialry@TB spatialrz@UB classes@@BSplineEndPoint@ AB variables@@Bbinder@@B@$B connections@@Bconnectionsin@ @B@@B@B@Bconnectionsout@ @Bconnectionscenter@ B behaviour@@Beventfunctions@@RNN2$@objectB classes@@B NetworkNode@ AABFlexsimObject@@AB superclasses@@BFlexsimObject@@AB variables@@ Bnetwork@@BNetworkNode159subnode@I@B@@B travellers@@Bactivetravellers@B stations@@B NN2subnode@B NN2subnode@B showmode@.@B maxinactive@@@B lastxloc@&@B lastyloc@1@B lastzloc@@Bshowme@Blastupdatetime@Bentrytrigger@treenode traveler = parnode(1); treenode current = ownerobject(c); int toedge = parval(2); //the number of the edge that the traveler is going to next int fromedge = parval(3); // the number of the edge the traveler came from Barrivaltrigger@treenode traveler = parnode(1); treenode current = ownerobject(c); int toedge = parval(2); //the number of the edge that the traveler is going to next int fromedge = parval(3); // the number of the edge the traveler came from B drawsize@@Bclicked@B sideoffset@Bdisttosideoffset@Btrafficcontrollers@Bvirtualexits@Bnotifyofblockedlength@Bmessagetrigger@%treenode current = ownerobject(c); @Bondrawtrigger@treenode current = ownerobject(c); treenode view = parnode(1); // If this function returns a true, the default draw code of the object will not be executed. B timetables@B networknodes@@B NN2subnode@Btimeoflaststop@B nrofstops@Bstatebeforestop@Bcollisionspheres@Bcollisionobjects@B resettrigger@%treenode current = ownerobject(c); B savedstate@Bresetposition@B behaviour@@Beventfunctions@@Bcppfunctions@@Bcppvariables@B objectinfo@@B @B @B @Bvisual@@ Bcolor@a@Bred@?Bgreen@?Bblue@?Bshape@u***B shapeindex@vBpicture@c$bitmaps\networknodepicturesmall.bmpB imageobject@q***Bimageindexobject@rB imagebase@s***Bimageindexbase@tB nochildscale@_?Bspecial@@Btitle@dObjectB description@bB guifocus@|%VIEW:/standardviews/ObjectPropertiesBguifocusclass@}"VIEW:/pages/NetworkNodeParametersB spatial@@B spatialx@M&@B spatialy@N1@B spatialz@O@B spatialsx@P{Gz?B spatialsy@Q{Gz?B spatialsz@R{Gz?B spatialrx@SB spatialry@TB spatialrz@UBoffsetx@VBoffsety@WBoffsetz@XB offsetsx@\?B offsetsy@]?B offsetsz@^@B offsetrx@YB offsetry@ZB offsetrz@[B centroid@e?B displaygroup@ standardBdisplaygrouplist@@B standard@Blabels@@B connections@@Bconnectionsin@ @Bconnectionsout@ @BTo NN1@@B user open @?Binside couple@Btype@@B distance@ @B spline here@B filledlength@Bactive travelers@@Bin open@?Blast exit time@Blast exit size@Blast entry port@Bspacing@@Bspline coupling@3B speed limit@@B user dist@Bspline end rot@Bspline end rot@BTo NN3@@B user open @?Binside couple@Btype@@B distance@ @B spline here@?B filledlength@Bactive travelers@@Bin open@?Blast exit time@Blast exit size@Blast entry port@Bspacing@@Bspline coupling@jB speed limit@@B user dist@Bspline end rot@Bblocked length@Bconnectionscenter@ @Bevents@ @Bstats@@Bstate@@Bstate_current@,@Bstate_changetime@B state_since@-Bstate_profile@.State@2Bidle@B processing@Bbusy@Bblocked@B generating@Bempty@B collecting@B releasing@Bwaiting_for_operator@Bwaiting_for_transporter@B breakdown@Bscheduled_down@B conveying@B travel_empty@Btravel_loaded@Boffset_travel_empty@Boffset_travel_loaded@Bloading@B unloading@Bdown@Bsetup@Butilize@Bfull@B not_empty@Bfilling@Bstarved@Bmixing@Bflowing@Ballocated_idle@B off_shift@B change_over@Brepair@B maintenance@Blunch@B on_break@Bsuspend@B available@Bpreprocessing@Bpostprocessing@B inspecting@B operating@Bstandby@Bpurging@B cleaning@B accelerating@B maxspeed@B decelerating@Bstopped@Bwaiting@B accumulating@B state_graph@0Bcontent@@Bstats_contentmin@4Bstats_contentmax@5Bstats_contentavg@6Bstats_contentupdates@7Bstats_contentsince@8Bstats_contentgraph@9Content vs. TimeBstats_contentgraphmaxpoints@:Y@Bstats_content@2@B staytime@@Bstats_staytimemin@<Bstats_staytimemax@=Bstats_staytimeavg@>Bstats_staytimeupdates@?Bstats_staytimegraph@A StaytimeBstats_staytimehisto@C@B parameters@@B startvalue@B endvalue@Y@Bbuckets@4@Bdata@ Staytime@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B interval@@Bmean@Blo@Bhi@Bpercent@W@Bauto@?Bstats_staytimegraphmaxpoints@BY@Bstats_staytimesince@@B throughput@@B stats_input@KB stats_output@LBstats_throughput@DBstats_throughputgraph@E ThroughputBstats_throughputgraphmaxpoints@FBstats_creationtime@JBstats_lastmovetime@IBstored@@rSplineEndPoint164@objectB spatial@@ B spatialx@MB spatialy@NB spatialz@OB spatialsx@P{Gz?B spatialsy@Q{Gz?B spatialsz@R{Gz?B spatialrx@SB spatialry@TB spatialrz@UB classes@@BSplineEndPoint@ AB variables@@Bbinder@@B@8B connections@@Bconnectionsin@ @Bconnectionsout@ @B@@B@B@Bconnectionscenter@ B behaviour@@Beventfunctions@@rSplineEndPoint165@objectB spatial@@ B spatialx@M @B spatialy@NB spatialz@OB spatialsx@P{Gz?B spatialsy@Q{Gz?B spatialsz@R{Gz?B spatialrx@SB spatialry@TB spatialrz@UB classes@@BSplineEndPoint@ AB variables@@Bbinder@@B@B connections@@Bconnectionsin@ @B@q@B@B@Bconnectionsout@ @Bconnectionscenter@ B behaviour@@Beventfunctions@@RNN3$@objectB classes@@B NetworkNode@ AABFlexsimObject@@AB superclasses@@BFlexsimObject@@AB variables@@ Bnetwork@@BNetworkNode160subnode@Q@B@@B travellers@@Bactivetravellers@B stations@@B NN3subnode@6B NN3subnode@ B showmode@.@B maxinactive@@@B lastxloc@3@B lastyloc@1@B lastzloc@@Bshowme@Blastupdatetime@Bentrytrigger@treenode traveler = parnode(1); treenode current = ownerobject(c); int toedge = parval(2); //the number of the edge that the traveler is going to next int fromedge = parval(3); // the number of the edge the traveler came from Barrivaltrigger@treenode traveler = parnode(1); treenode current = ownerobject(c); int toedge = parval(2); //the number of the edge that the traveler is going to next int fromedge = parval(3); // the number of the edge the traveler came from B drawsize@@Bclicked@B sideoffset@Bdisttosideoffset@Btrafficcontrollers@Bvirtualexits@Bnotifyofblockedlength@Bmessagetrigger@%treenode current = ownerobject(c); @Bondrawtrigger@treenode current = ownerobject(c); treenode view = parnode(1); // If this function returns a true, the default draw code of the object will not be executed. B timetables@B networknodes@@B NN3subnode@Btimeoflaststop@B nrofstops@Bstatebeforestop@Bcollisionspheres@Bcollisionobjects@B resettrigger@%treenode current = ownerobject(c); B savedstate@Bresetposition@B behaviour@@Beventfunctions@@Bcppfunctions@@Bcppvariables@B objectinfo@@B @B @B @Bvisual@@ Bcolor@a@Bred@?Bgreen@?Bblue@?Bshape@u***B shapeindex@vBpicture@c$bitmaps\networknodepicturesmall.bmpB imageobject@q***Bimageindexobject@rB imagebase@s***Bimageindexbase@tB nochildscale@_?Bspecial@@Btitle@dObjectB description@bB guifocus@|%VIEW:/standardviews/ObjectPropertiesBguifocusclass@}"VIEW:/pages/NetworkNodeParametersB spatial@@B spatialx@M3@B spatialy@N1@B spatialz@O@B spatialsx@P{Gz?B spatialsy@Q{Gz?B spatialsz@R{Gz?B spatialrx@SB spatialry@TB spatialrz@UBoffsetx@VBoffsety@WBoffsetz@XB offsetsx@\?B offsetsy@]?B offsetsz@^@B offsetrx@YB offsetry@ZB offsetrz@[B centroid@e?B displaygroup@ standardBdisplaygrouplist@@B standard@Blabels@@B connections@@Bconnectionsin@ @Bconnectionsout@ @BTo NN2@)@B user open @?Binside couple@Btype@@B distance@ @B spline here@B filledlength@Bactive travelers@@Bin open@?Blast exit time@Blast exit size@Blast entry port@Bspacing@@Bspline coupling@B speed limit@@B user dist@Bspline end rot@Bspline end rot@BTo NN4@@B user open @?Binside couple@Btype@@B distance@ @B spline here@?B filledlength@Bactive travelers@@Bin open@?Blast exit time@Blast exit size@Blast entry port@Bspacing@@Bspline coupling@B speed limit@@B user dist@Bspline end rot@Bblocked length@Bconnectionscenter@ @Bevents@ @Bstats@@Bstate@@Bstate_current@,@Bstate_changetime@B state_since@-Bstate_profile@.State@2Bidle@B processing@Bbusy@Bblocked@B generating@Bempty@B collecting@B releasing@Bwaiting_for_operator@Bwaiting_for_transporter@B breakdown@Bscheduled_down@B conveying@B travel_empty@Btravel_loaded@Boffset_travel_empty@Boffset_travel_loaded@Bloading@B unloading@Bdown@Bsetup@Butilize@Bfull@B not_empty@Bfilling@Bstarved@Bmixing@Bflowing@Ballocated_idle@B off_shift@B change_over@Brepair@B maintenance@Blunch@B on_break@Bsuspend@B available@Bpreprocessing@Bpostprocessing@B inspecting@B operating@Bstandby@Bpurging@B cleaning@B accelerating@B maxspeed@B decelerating@Bstopped@Bwaiting@B accumulating@B state_graph@0Bcontent@@Bstats_contentmin@4Bstats_contentmax@5Bstats_contentavg@6Bstats_contentupdates@7Bstats_contentsince@8Bstats_contentgraph@9Content vs. TimeBstats_contentgraphmaxpoints@:Y@Bstats_content@2@B staytime@@Bstats_staytimemin@<Bstats_staytimemax@=Bstats_staytimeavg@>Bstats_staytimeupdates@?Bstats_staytimegraph@A StaytimeBstats_staytimehisto@C@B parameters@@B startvalue@B endvalue@Y@Bbuckets@4@Bdata@ Staytime@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B interval@@Bmean@Blo@Bhi@Bpercent@W@Bauto@?Bstats_staytimegraphmaxpoints@BY@Bstats_staytimesince@@B throughput@@B stats_input@KB stats_output@LBstats_throughput@DBstats_throughputgraph@E ThroughputBstats_throughputgraphmaxpoints@FBstats_creationtime@JBstats_lastmovetime@IBstored@@rSplineEndPoint166@objectB spatial@@ B spatialx@MB spatialy@NB spatialz@OB spatialsx@P{Gz?B spatialsy@Q{Gz?B spatialsz@R{Gz?B spatialrx@SB spatialry@TB spatialrz@UB classes@@BSplineEndPoint@ AB variables@@Bbinder@@B@B connections@@Bconnectionsin@ @Bconnectionsout@ @B@@B@B@Bconnectionscenter@ B behaviour@@Beventfunctions@@rSplineEndPoint167@objectB spatial@@ B spatialx@M @B spatialy@NB spatialz@OB spatialsx@P{Gz?B spatialsy@Q{Gz?B spatialsz@R{Gz?B spatialrx@SB spatialry@TB spatialrz@UB classes@@BSplineEndPoint@ AB variables@@Bbinder@@B@B connections@@Bconnectionsin@ @B@@B@B@Bconnectionsout@ @Bconnectionscenter@ B behaviour@@Beventfunctions@@RNN4$@objectB classes@@B NetworkNode@ AABFlexsimObject@@AB superclasses@@BFlexsimObject@@AB variables@@ Bnetwork@@BNetworkNode161subnode@Y@B@@B travellers@@B NN4subnode@nBactivetravellers@B stations@@B NN4subnode@ZB NN4subnode@K B showmode@.@B maxinactive@@@B lastxloc@;@B lastyloc@1@B lastzloc@@Bshowme@Blastupdatetime@Bentrytrigger@treenode traveler = parnode(1); treenode current = ownerobject(c); int toedge = parval(2); //the number of the edge that the traveler is going to next int fromedge = parval(3); // the number of the edge the traveler came from Barrivaltrigger@treenode traveler = parnode(1); treenode current = ownerobject(c); int toedge = parval(2); //the number of the edge that the traveler is going to next int fromedge = parval(3); // the number of the edge the traveler came from B drawsize@@Bclicked@B sideoffset@Bdisttosideoffset@Btrafficcontrollers@Bvirtualexits@Bnotifyofblockedlength@Bmessagetrigger@%treenode current = ownerobject(c); @Bondrawtrigger@treenode current = ownerobject(c); treenode view = parnode(1); // If this function returns a true, the default draw code of the object will not be executed. B timetables@B networknodes@@B NN4subnode@BBtimeoflaststop@B nrofstops@Bstatebeforestop@Bcollisionspheres@Bcollisionobjects@B resettrigger@%treenode current = ownerobject(c); B savedstate@Bresetposition@B behaviour@@Beventfunctions@@Bcppfunctions@@Bcppvariables@B objectinfo@@B @B @B @Bvisual@@ Bcolor@a@Bred@?Bgreen@?Bblue@?Bshape@u***B shapeindex@vBpicture@c$bitmaps\networknodepicturesmall.bmpB imageobject@q***Bimageindexobject@rB imagebase@s***Bimageindexbase@tB nochildscale@_?Bspecial@@Btitle@dObjectB description@bB guifocus@|%VIEW:/standardviews/ObjectPropertiesBguifocusclass@}"VIEW:/pages/NetworkNodeParametersB spatial@@B spatialx@M;@B spatialy@N1@B spatialz@O@B spatialsx@P{Gz?B spatialsy@Q{Gz?B spatialsz@R{Gz?B spatialrx@SB spatialry@TB spatialrz@UBoffsetx@VBoffsety@WBoffsetz@XB offsetsx@\?B offsetsy@]?B offsetsz@^@B offsetrx@YB offsetry@ZB offsetrz@[B centroid@e?B displaygroup@ standardBdisplaygrouplist@@B standard@Blabels@@B connections@@Bconnectionsin@ @Bconnectionsout@ @BTo NN3@@B user open @?Binside couple@Btype@@B distance@ @B spline here@B filledlength@Bactive travelers@@Bin open@?Blast exit time@Blast exit size@Blast entry port@Bspacing@@Bspline coupling@B speed limit@@B user dist@Bspline end rot@Bspline end rot@Bconnectionscenter@ @Bevents@ @Bstats@@Bstate@@Bstate_current@,@Bstate_changetime@B state_since@-Bstate_profile@.State@2Bidle@B processing@Bbusy@Bblocked@B generating@Bempty@B collecting@B releasing@Bwaiting_for_operator@Bwaiting_for_transporter@B breakdown@Bscheduled_down@B conveying@B travel_empty@Btravel_loaded@Boffset_travel_empty@Boffset_travel_loaded@Bloading@B unloading@Bdown@Bsetup@Butilize@Bfull@B not_empty@Bfilling@Bstarved@Bmixing@Bflowing@Ballocated_idle@B off_shift@B change_over@Brepair@B maintenance@Blunch@B on_break@Bsuspend@B available@Bpreprocessing@Bpostprocessing@B inspecting@B operating@Bstandby@Bpurging@B cleaning@B accelerating@B maxspeed@B decelerating@Bstopped@Bwaiting@B accumulating@B state_graph@0Bcontent@@Bstats_contentmin@4Bstats_contentmax@5Bstats_contentavg@6Bstats_contentupdates@7Bstats_contentsince@8Bstats_contentgraph@9Content vs. TimeBstats_contentgraphmaxpoints@:Y@Bstats_content@2B staytime@@Bstats_staytimemin@<Bstats_staytimemax@=Bstats_staytimeavg@>Bstats_staytimeupdates@?Bstats_staytimegraph@A StaytimeBstats_staytimehisto@C@B parameters@@B startvalue@B endvalue@Y@Bbuckets@4@Bdata@ Staytime@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B interval@@Bmean@Blo@Bhi@Bpercent@W@Bauto@?Bstats_staytimegraphmaxpoints@BY@Bstats_staytimesince@@B throughput@@B stats_input@KB stats_output@LBstats_throughput@DBstats_throughputgraph@E ThroughputBstats_throughputgraphmaxpoints@FBstats_creationtime@JBstats_lastmovetime@IBstored@@B NN4subnode@mB Dispatcher15@objectB classes@@B Dispatcher@0ABFlexsimObject@@AB superclasses@@BFlexsimObject@@AB variables@@Bpassimmediately@@Bpassto@"treenode tasksequence = parnode(1); treenode current = ownerobject(c); /**First Available*/ /** \nIf there are no objects currently available, then queue the tasksequence up using the Queue Strategy and wait until someone connected to its output ports becomes available.*/ return 0;@Btasksequencequeue@@Bqueuestrategy@treenode tasksequence = parnode(1); treenode current = ownerobject(c); /**Prioritize by distance: \nSort the task sequences based on the closest involved object.*/ /** \n\nTask Rank: */ int taskrank = /**/4/**/; /** \nInvolved Object Number: */ int involvednum = /**/1/**/; /** \nConsider only partially completed tasksequences: */ int yes = 1; int no = 0; int onlypartial =/**/yes/**list:yes~no*/; /** \nCondition: */ int condition = /**/true/**/; /**\n\n*/ if(condition) { treenode station = gettaskinvolved(tasksequence,taskrank,involvednum); double dist = distancetotravel(current, station); double inversedist = 0; if((getnroftasks(tasksequence) < gettotalnroftasks(tasksequence) || !onlypartial) && dist != GLOBAL_UNREACHABLE) { if(dist > 0) { inversedist = 0.1 / dist; } else { inversedist = 0.1; } } //pt(getname(station));pr(); //pf(time());pt(" : ");pf(inversedist);pr(); return inversedist; } else return getpriority(tasksequence); /**Hints:*/ /**\nFor standard transport task sequences, use 4 / 1 / yes. */ /**\nFor standard request operators task sequences, use 4 / 2 / no. */ /**\nAs a Condition you can write getpriority(tasksequence)==0 such that task sequences with a specified priority are still handled first.*/ @BpZ..>tnkx>text /scr ditt/scr ?+?. nt t? l?0$o6@6P 6`   6p   6  4 6 :4? 44=9( = =98   )(7 + *4'xl=`T=H $ %7 8  7  %8< 0 5$"7L"  5%d%=X%, "Bcoordinatedtasks@Bonresourceavailable@treenode current = ownerobject(c); int port = parval(1); treenode resource = parnode(2); treenode nextts = parnode(3); treenode lastts = parnode(4); Bmessagetrigger@%treenode current = ownerobject(c); @Bondrawtrigger@treenode current = ownerobject(c); treenode view = parnode(1); // If this function returns a true, the default draw code of the object will not be executed. B timetables@B networknodes@Btimeoflaststop@B nrofstops@Bstatebeforestop@Bcollisionspheres@Bcollisionobjects@B resettrigger@%treenode current = ownerobject(c); B savedstate@Bresetposition@B behaviour@@Beventfunctions@Bcppfunctions@@B cppvariables@Bvisual@@ Bcolor@a@Bred@?Bgreen@?Bblue@?Bshape@ufs3d\dispatch.3dsB shapeindex@vA@Bpicture@c$bitmaps\taskmanagerpicturesmall.bmpB imageobject@q***Bimageindexobject@rB imagebase@s***Bimageindexbase@tB nochildscale@_?Bspecial@@Btitle@dFixed Resource MultiserviceB description@bB guifocus@|%VIEW:/standardviews/ObjectPropertiesBguifocusclass@}!VIEW:/pages/DispatcherParametersBspatial@@B spatialx@MB spatialy@N,@B spatialz@OB spatialsx@P?B spatialsy@Q?B spatialsz@R@B spatialrx@SB spatialry@TB spatialrz@UBoffsetx@V?Boffsety@W?Boffsetz@XB offsetsx@\(\?B offsetsy@](\?B offsetsz@^(\?B offsetrx@YB offsetry@ZB offsetrz@[V@B centroid@e?B ignoredraw@fB displaygroup@ standardBdisplaygrouplist@@B standard@Blabels@@B connections@@Bconnectionsin@ @Bconnectionsout@ @B@7@B@?B@B@p@B@?B@Bconnectionscenter@ @B@@B@B@B@( @B@B@B@g @B@B@B@ @B@B@Bevents@ @Bstats@@Bstate@@Bstate_current@,Bstate_changetime@B state_since@-Bstate_profile@.State@2Bidle@B processing@Bbusy@Bblocked@B generating@Bempty@B collecting@B releasing@Bwaiting_for_operator@Bwaiting_for_transporter@B breakdown@Bscheduled_down@B conveying@B travel_empty@Btravel_loaded@Boffset_travel_empty@Boffset_travel_loaded@Bloading@B unloading@Bdown@Bsetup@Butilize@Bfull@B not_empty@Bfilling@Bstarved@Bmixing@Bflowing@Ballocated_idle@B off_shift@B change_over@Brepair@B maintenance@Blunch@B on_break@Bsuspend@B available@Bpreprocessing@Bpostprocessing@B inspecting@B operating@Bstandby@Bpurging@B cleaning@B accelerating@B maxspeed@B decelerating@Bstopped@Bwaiting@B accumulating@B state_graph@0Bcontent@@Bstats_contentmin@4Bstats_contentmax@5Bstats_contentavg@6Bstats_contentupdates@7Bstats_contentsince@8Bstats_contentgraph@9Content vs. TimeBstats_contentgraphmaxpoints@:Y@Bstats_content@2B staytime@@Bstats_staytimemin@<Bstats_staytimemax@=Bstats_staytimeavg@>Bstats_staytimeupdates@?Bstats_staytimegraph@A StaytimeBstats_staytimehisto@C@B parameters@@B startvalue@B endvalue@Y@Bbuckets@4@Bdata@ Staytime@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B interval@@Bmean@Blo@Bhi@Bpercent@W@Bauto@?Bstats_staytimegraphmaxpoints@BY@Bstats_staytimesince@@B throughput@@B stats_input@KB stats_output@LBstats_throughput@DBstats_throughputgraph@E ThroughputBstats_throughputgraphmaxpoints@FBstats_creationtime@JBstats_lastmovetime@IBstored@