{Enterprise Dynamics startup information} if(StartingED, SoftStartED([])); {Model information} AddLayer([Main], 1, 1, 0); {Load required atoms} int011; int035([Sink], pDir([Atoms\Sink.atm])); int035([Team], pDir([Atoms\Team.atm])); int035([Queue], pDir([Atoms\Queue.atm])); int035([Server], pDir([Atoms\Server.atm])); int035([Source], pDir([Atoms\Source.atm])); int035([Operator], pDir([Atoms\Operator.atm])); int035([Network Node], pDir([Atoms\Network Node.atm])); int035([Node Manipulator], pDir([Atoms\Node Manipulator.atm])); int035([Network Controller], pDir([Atoms\Network Controller.atm])); int035([Accumulating Conveyor], pDir([Atoms\Accumulating Conveyor.atm])); int012; {Atom: Source1} sets; AtomByName([Source], Main); if(not(AtomExists), Error([Cannot find mother atom 'Source'. Inheriting from BaseClass.])); CreateAtom(a, s, [], 1, false); int023([Source1], 7168771, 240); Set(Icon(a), RegisterIcon(pDir([Media\Images\atoms\source.bmp]), [source])); AddModel3D( RegisterModel3D(Model3DDir([\source.wrl]), [source.wrl], 0, 0, 0, 1, 1, -1, -90, 0, 0), a); AddModel3D( RegisterModel3D(Model3DDir([\source_Resized.wrl]), [Source_Resized.wrl], 0, 0, 0, 1, 1, -1, -90, 0, 0), a); SetMaterial( RegisterMaterial([Default], 8421504, 8421504, 3289650, 0, 0.100000001490116, 0, false, false, 1, 0), 1, a); Set(Version(a), 0); SetTreeIcon(pDir([Media\Icons\Source.ico])); SetChannels(1, 1); SetChannelRanges(1, 1, 1, 255); int001(232); int013(1, 0, true, false, 0, 0, [], []); SetLoc(5, 9, 0); SetSize(5, 2, 2); LockPosition(false); LockSize(false); DisableIconRotation(false); SetProductCode([]); SetExprAtt(1, [1]); SetExprAtt(2, [10]); SetExprAtt(3, [{.0|10. Do Nothing .}0]); SetAtt(4, 0); SetAtt(5, 10); SetExprAtt(6, [{. -1 |1. Unlimited .} -1 ]); SetAtt(7, 4); int024; SetStatus(2); int018; {Atom: Queue2} sets; AtomByName([Queue], Main); if(not(AtomExists), Error([Cannot find mother atom 'Queue'. Inheriting from BaseClass.])); CreateAtom(a, Up(s), [], 1, false); int023([Queue2], 12615680, 1264); Set(Icon(a), RegisterIcon(IconsDir([bmp\atoms\queue.bmp]), [queue])); SetMaterial( RegisterMaterial([Default], 8421504, 8421504, 3289650, 0, 0.100000001490116, 0, false, false, 1, 0), 1, a); Set(Version(a), 0); SetTreeIcon(pDir([Media\Icons\Queue.ico])); SetChannels(1, 1); SetChannelRanges(1, 255, 1, 255); int001(233); int013(1, 0, true, false, 0, 0, [], []); SetLoc(11, 9, 0); SetSize(5, 2, 0); LockPosition(false); LockSize(false); DisableIconRotation(false); SetProductCode([]); SetExprAtt(1, [1]); SetAtt(2, 10); SetAtt(3, 0); SetAtt(4, 0); SetExprAtt(5, [{.content(c)|Fifo (First In First Out) .}content(c)]); SetAtt(6, -0.5); SetExprAtt(7, [{.openallic(c)|Any inputchannel .}openallic(c)]); SetAtt(8, 2); int024; SetStatus(13); int018; {Atom: Server3} sets; AtomByName([Server], Main); if(not(AtomExists), Error([Cannot find mother atom 'Server'. Inheriting from BaseClass.])); CreateAtom(a, Up(s), [], 1, false); int023([Server3], 292315, 263408); Set(Icon(a), RegisterIcon(IconsDir([bmp\atoms\server.bmp]), [server])); AddModel3D( RegisterModel3D(Model3DDir([\Server.wrl]), [Server.wrl], 0, 0, 0, 1, 1, -1, -90, 0, 0), a); AddModel3D( RegisterModel3D(Model3DDir([\server2.wrl]), [server2.wrl], 0, 0, 0, 1, 1, -1, -90, 0, 0), a); AddModel3D( RegisterModel3D(Model3DDir([\Server_Resized.wrl]), [Server_Resized.wrl], 0, 0, 0, 1, 1, -1, -90, 0, 0), a); AddModel3D( RegisterModel3D(Model3DDir([\Server2_Resized.wrl]), [Server2_Resized.wrl], 0, 0, 0, 1, 1, -1, -90, 0, 0), a); SetMaterial( RegisterMaterial([Default], 8421504, 8421504, 3289650, 0, 0.100000001490116, 0, false, false, 1, 0), 1, a); Set(Version(a), 0); SetTreeIcon(pDir([Media\Icons\Server.ico])); Set(DdbRec, [>t-node1:1.>t-network:1.]); SetChannels(2, 1); SetChannelRanges(1, 255, 1, 255); int001(234); int013(1, 0, true, false, 0, 0, [], []); int013(2, 0, true, true, 0, 0, [], []); SetLoc(17, 9, 0); SetSize(5, 2, 2); LockPosition(false); LockSize(false); DisableIconRotation(false); SetProductCode([]); SetExprAtt(1, [negexp(9)]); SetExprAtt(2, [{.~1|~1~.}1]); SetExprAtt(3, [1]); SetAtt(4, 1); SetAtt(5, 1); SetAtt(6, 1); SetExprAtt(7, [{.~1|~0~.}0]); SetExprAtt(8, [CallOperators(in(2, c), 1, 0)]); SetExprAtt(9, [0]); SetExprAtt(10, [0]); SetExprAtt(11, [0]); SetAtt(12, 0); SetExprAtt(13, [If( Time > 0, Concat( [Util: ], String ( *( 100, /( -( TotalBusy, Max( 0, EndBusy - Time)), Time)), 0, 1), [ %]), [Util: 0 %] )]); SetAtt(14, 0.840254389744077); SetAtt(15, 0); SetAtt(16, 1E40); SetAtt(17, 0); SetExprAtt(18, [{.openallic(c)|Any inputchannel.}openallic(c)]); SetAtt(19, 7); SetAtt(20, 0); SetExprAtt(21, [0]); SetAtt(22, 0); SetExprAtt(23, [0]); SetAtt(24, 0); SetAtt(25, 0); SetAtt(26, 0); SetAtt(27, 0); SetAtt(28, 0); SetAtt(29, 677797); SetExprAtt(30, [mttf]); SetAtt(31, 264.598275740309); SetExprAtt(32, [0]); SetExprAtt(33, [0]); SetExprAtt(34, [0]); int024; SetStatus(1); int018; {Atom: Accumulating Conveyor4} sets; AtomByName([Accumulating Conveyor], Main); if(not(AtomExists), Error([Cannot find mother atom 'Accumulating Conveyor'. Inheriting from BaseClass.])); CreateAtom(a, Up(s), [], 1, false); int023([Accumulating Conveyor4], 11249415, 1266); Set(Icon(a), RegisterIcon(IconsDir([bmp\atoms\conveyor.bmp]), [conveyor])); SetMaterial( RegisterMaterial([Default], 8421504, 8421504, 3289650, 0, 0.100000001490116, 0, false, false, 1, 0), 1, a); Set(Version(a), 0); SetTreeIcon(pDir([Media\Icons\AccumulatingConveyor.ico])); Set(DdbRec, [>legdist:3.]); SetChannels(1, 1); SetChannelRanges(1, 255, 1, 255); int001(235); int013(1, 0, true, false, 0, 0, [], []); SetLoc(22, 9, 0); SetSize(10, 1, 1); LockPosition(false); LockSize(false); DisableIconRotation(false); SetProductCode([]); SetAtt(1, 1); SetExprAtt(2, [Length / Speed]); SetAtt(3, 9); SetExprAtt(4, [Min(TempMaxLoc, Speed * (Time - EntryTime(cs)))]); SetAtt(5, 0); SetAtt(6, 0); SetExprAtt(7, [If(Elevation <> 0, Hor_Length / Cos(Angle), Hor_Length)]); SetExprAtt(8, [1]); SetAtt(9, 0); SetAtt(10, 1); SetExprAtt(11, [If(Content(c) <> 0, Do( TempMaxLoc :=Min(Length, +((Length - ExitLength), (Speed * (Time - ExitTime)))), ForAtomLayerUnder(c, Do( Setcs, SetLoc(-(*(Display_Factor, CurLoc), xSize(cs)), /(-(ySize(c), ySize(cs)), 2), +(zSize(c), *(/(CurLoc, /(If(Use_Physical, xSize(c), Input_Length), xSize(c))), Sin(Angle))), cs), SetAtt(3, -(TempMaxLoc, ProductSpacing(SpacingRule, xSize(cs), Spacing)), c) ) ) ) )]); SetAtt(12, 0); SetAtt(13, 10000); SetAtt(14, 1); SetAtt(15, 0); SetAtt(16, 0); SetAtt(17, 1); SetAtt(18, 10); SetAtt(19, 1); SetAtt(20, 4); SetExprAtt(21, [0]); SetExprAtt(22, [ArcTan(Elevation / Hor_Length)]); SetExprAtt(23, [If(Use_Physical, xSize(c), Input_Length)]); SetAtt(24, 5); int024; SetStatus(13); int018; {Atom: Server5} sets; AtomByName([Server], Main); if(not(AtomExists), Error([Cannot find mother atom 'Server'. Inheriting from BaseClass.])); CreateAtom(a, Up(s), [], 1, false); int023([Server5], 292315, 263408); Set(Icon(a), RegisterIcon(IconsDir([bmp\atoms\server.bmp]), [server])); AddModel3D( RegisterModel3D(Model3DDir([\Server.wrl]), [Server.wrl], 0, 0, 0, 1, 1, -1, -90, 0, 0), a); AddModel3D( RegisterModel3D(Model3DDir([\server2.wrl]), [server2.wrl], 0, 0, 0, 1, 1, -1, -90, 0, 0), a); AddModel3D( RegisterModel3D(Model3DDir([\Server_Resized.wrl]), [Server_Resized.wrl], 0, 0, 0, 1, 1, -1, -90, 0, 0), a); AddModel3D( RegisterModel3D(Model3DDir([\Server2_Resized.wrl]), [Server2_Resized.wrl], 0, 0, 0, 1, 1, -1, -90, 0, 0), a); SetMaterial( RegisterMaterial([Default], 8421504, 8421504, 3289650, 0, 0.100000001490116, 0, false, false, 1, 0), 1, a); Set(Version(a), 0); SetTreeIcon(pDir([Media\Icons\Server.ico])); Set(DdbRec, [>t-node1:4.>t-network:1.]); SetChannels(2, 1); SetChannelRanges(1, 255, 1, 255); int001(236); int013(1, 0, true, false, 0, 0, [], []); int013(2, 0, true, true, 0, 0, [], []); SetLoc(32, 9, 0); SetSize(5, 2, 2); LockPosition(false); LockSize(false); DisableIconRotation(false); SetProductCode([]); SetExprAtt(1, [negexp(9)]); SetExprAtt(2, [{.~1|~1~.}1]); SetExprAtt(3, [1]); SetAtt(4, 1); SetAtt(5, 1); SetAtt(6, 1); SetExprAtt(7, [{.~1|~0~.}0]); SetExprAtt(8, [0]); SetExprAtt(9, [FreeOperators(in(2, c), i)]); SetExprAtt(10, [0]); SetExprAtt(11, [0]); SetAtt(12, 0); SetExprAtt(13, [If( Time > 0, Concat( [Util: ], String ( *( 100, /( -( TotalBusy, Max( 0, EndBusy - Time)), Time)), 0, 1), [ %]), [Util: 0 %] )]); SetAtt(14, 8.28012065108725); SetAtt(15, 0); SetAtt(16, 1E40); SetAtt(17, 0); SetExprAtt(18, [{.openallic(c)|Any inputchannel.}openallic(c)]); SetAtt(19, 7); SetAtt(20, 0); SetExprAtt(21, [0]); SetAtt(22, 0); SetExprAtt(23, [0]); SetAtt(24, 0); SetAtt(25, 0); SetAtt(26, 0); SetAtt(27, 0); SetAtt(28, 0); SetAtt(29, 677797); SetExprAtt(30, [mttf]); SetAtt(31, 275.438530130053); SetExprAtt(32, [0]); SetExprAtt(33, [0]); SetExprAtt(34, [0]); int024; SetStatus(1); int018; {Atom: Sink6} sets; AtomByName([Sink], Main); if(not(AtomExists), Error([Cannot find mother atom 'Sink'. Inheriting from BaseClass.])); CreateAtom(a, Up(s), [], 1, false); int023([Sink6], 7168771, 240); Set(Icon(a), RegisterIcon(pDir([Media\Images\Atoms\sink.bmp]), [sink])); AddModel3D( RegisterModel3D(Model3DDir([\sink.wrl]), [sink.wrl], 0, 0, 0, 1, 1, -1, -90, 0, 0), a); AddModel3D( RegisterModel3D(Model3DDir([\sink_Resized.wrl]), [sink_Resized.wrl], 0, 0, 0, 1, 1, -1, -90, 0, 0), a); SetMaterial( RegisterMaterial([Default], 8421504, 8421504, 3289650, 0, 0.100000001490116, 0, false, false, 1, 0), 1, a); Set(Version(a), 0); SetTreeIcon(pDir([Media\Icons\Sink.ico])); SetChannels(1, 0); SetChannelRanges(1, 255, 0, 0); int001(237); int013(1, 0, true, true, 0, 0, [], []); SetLoc(38, 9, 0); SetSize(5, 2, 2); LockPosition(false); LockSize(false); DisableIconRotation(false); SetProductCode([]); SetAtt(1, 0); SetAtt(2, 4); int024; SetStatus(1); int018; {Atom: Product} sets; BaseClass; CreateAtom(a, Up(s), [], 1, false); int023([Product], 12615680, 73809); Set(Icon(a), RegisterIcon(IconsDir([Png\products\product.png]), [product], 1, 1, 16777215, 255, 255, false, 0)); AddModel3D( RegisterModel3D(Model3DDir([\box-closed.wrl]), [box-closed.wrl], 0, 0, 0, 1, 1, -1, -90, 0, 0), a); AddModel3D( RegisterModel3D(Model3DDir([\box-opened.wrl]), [box-opened.wrl], 0, 0, 0, 1, 1, -1, -90, 0, 0), a); AddModel3D( RegisterModel3D(Model3DDir([\pallet-wood.wrl]), [pallet-wood.wrl], 0, 0, 0, 1, 1, -1, -90, 0, 0), a); AddModel3D( RegisterModel3D(Model3DDir([\pallet-plastic.wrl]), [pallet-plastic.wrl], 0, 0, 0, 1, 1, -1, -90, 0, 0), a); AddModel3D( RegisterModel3D(Model3DDir([\oildrum.wrl]), [oildrum.wrl], 0, 0, 0, 1, 1, -1, -90, 0, 0), a); AddModel3D( RegisterModel3D(Model3DDir([\crate.wrl]), [crate.wrl], 0, 0, 0, 1, 1, -1, -90, 0, 0), a); SetMaterial( RegisterMaterial([Default], 8421504, 8421504, 3289650, 0, 0.100000001490116, 0, false, false, 1, 0), 1, a); Set(Version(a), 0); SetTreeIcon(pDir([Media\Icons\Product.ico])); Set(Info, [A general product. General ----------- Put a product in your model and connect it's central channel with the input channel of a source to generate multiple instances of the product during running. Notes: --------- For cylinder shaped, horizontally oriented 3D icons set ySize equal to zSize. For cylinder shaped, vertically oriented 3D icons set xSize equal to ySize. For sphere set xSize equal to ySize and zSize. Last revision: ------------------ September 27, 2003 ]); Set(DdbRec, [>t-nodestroy:1.]); int001(238); SetLoc(0, 9, 0); SetSize(1, 1, 1); LockPosition(false); LockSize(false); DisableIconRotation(false); SetProductCode([]); CreateAttributes(2); SetAttributeName(r(1), [Icon3D]); SetAttributeName(r(2), [Hide2DIcon]); SetAtt(r(1), 11); SetAtt(r(2), 1); int024; Set(OnCreation, [{ In the OnInit event handler some edit fields are registered. } { This is ok for the product in the library tree, but not for the } { products in the model, so erase the OnInit expression. } Set(OnInit, []) ]); Set(OnReset, [If( Label( [t-nodestroy] , c) = 0, DestroyAtom ) ]); Set(OnUser, [Do( { Delete any current instances of this form.} GuiDestroy([Product]), { Register the GUI-form for this atom.} GuiRegister(PDir([\Atoms\Product.gui]), 1), { Show the GUI-form.} GuiCreate([Product], [Product], 0, c, 0, 1) ) ]); Set(On2DDraw, [if( c.DrawFlag, {--External atom(s) control product rotationas--} do( {--Variables for rotationas in order to compensate change of transportation direction--} RotateCoords(c.DrawRotationas, 0, 0, 1), {--Variables for translation in order to compensate change of transportation direction--} TranslateCoords(c.DrawXtranslate, c.DrawYtranslate, 0), {--Rotated shape--} dishape(0, 0 ,c.DrawXsize, c.DrawYsize, 0.01, ColorBlack, color(c)) ), {--Standard--} do( c.DrawXsize := xSize(c), c.DrawYsize := ySize(c), diBmp(0, 0, Hide2DIcon * Icon(c), 1, 5) ) ) ]); Set(On3DDraw, [do( if( {--Product rotationas has been changed by external atom (e.g. Corner Transfer Unit)--} c.DrawFlag, do( {--Variables for rotationas in order to compensate change of transportation direction--} RotateCoords(c.DrawRotationas,0,0,1), {--Variables for translation in order to compensate change of transportation direction--} TranslateCoords(c.DrawXtranslate, c.DrawYtranslate,0) ), {--Standard--} do( c.DrawXsize := xSize(c), c.DrawYsize := ySize(c) ) ), Case( Icon3D, {** Cube **} di3DBox(0, 0, 0, c.DrawXsize, c.DrawYsize, zSize, Color), {** Picture Cube **} di3DBox(0, 0, 0, c.DrawXsize, c.DrawYsize, zSize, Color, 0, 0, Icon, 0, 100, 100), {** Cylinder Horizontal **} Do( c.CenterPoint := Max(c.DrawYsize / 2, zSize / 2), Cylinder(0, c.CenterPoint, c.CenterPoint, c.DrawXsize, 360, c.CenterPoint, 0, 0, 0, Color) ), {** Cylinder Vertical **} Do( c.CenterPoint := Max(c.DrawXsize / 2, c.DrawYsize / 2), Cylinder(c.CenterPoint, c.CenterPoint, 0, zSize, 360, c.CenterPoint, 0, 90, 0, Color) ), {** Ball **} Do( c.CenterPoint := Max(c.DrawXsize / 2, Max(c.DrawYsize / 2, zSize / 2)), Ball( c.CenterPoint, c.CenterPoint, c.CenterPoint, c.CenterPoint, 180, 360, 0, 0, 0, Color) ), {** Cone **} Do( c.CenterPoint := Max(c.DrawXsize, c.DrawYsize), Cone(c.CenterPoint / 2, c.CenterPoint / 2, 0, zSize, c.CenterPoint / 2, 0, 0, 90, 0, Color) ), {** Barrel Horizontal **} Do( c.CenterPoint := Max(c.DrawYsize / 2, zSize / 2), Cylinder(0, c.CenterPoint, c.CenterPoint, c.DrawXsize, 360, c.CenterPoint, 0, 0, 0, Color), Cone(0, c.CenterPoint, c.CenterPoint, 0, c.CenterPoint, 0, 0, 0, 0, Color), Cone(c.DrawXsize, c.CenterPoint, c.CenterPoint, 0, c.CenterPoint, 0, 0, 0, 0, Color) ), {** Barrel Vertical **} Do( c.CenterPoint := Max(c.DrawXsize / 2, c.DrawYsize / 2), Cylinder(c.CenterPoint, c.CenterPoint, 0, zSize, 360, c.CenterPoint, 0, 90, 0, Color), Cone(c.CenterPoint, c.CenterPoint, zSize, 0, c.CenterPoint, 0, 0, 90, 0, Color), Cone(c.CenterPoint, c.CenterPoint, 0, 0, c.CenterPoint, 0, 0, 90, 0, Color) ), {** Pallet **} Do( di3DBox(0, 0, 0, c.DrawXsize, 0.1, zSize - 0.05, Color), di3DBox(0, /( c.DrawYsize, 2) - 0.05, 0, c.DrawXsize, 0.1, zSize - 0.05, Color), di3DBox(0, c.DrawYsize - 0.1, 0, c.DrawXsize, 0.1, zSize - 0.05, Color), c.CenterPoint := c.DrawXsize / 5, Repeat( 5, di3DBox(Count * c.CenterPoint, 0, zSize - 0.05, -0.1, c.DrawYsize, 0.05, Color) ) ), {** Simple Person **} Do( c.CenterPoint := c.DrawYsize / 2, {head} Ball( 0, c.CenterPoint, 1.8, 0.1, 180, 360, 0, -90 ,0, 7846395), {neck} Cylinder(0, c.CenterPoint, 1.65, 0.1, 360, 0.05, 0, 90, 0, 7846395), {shoulders}EllipseCone(0, c.CenterPoint, 1.52, 0.15, 360, 0.08, 0.05, 0.12, 0.2, 0, 90, 0, Color), {arm 1} Cone(0, 0.15 + c.CenterPoint, 1.5, 0.5, 0.05, 0.02, 20, -80, 0, Color), {arm 2} Cone(0, -0.15 + c.CenterPoint, 1.5, 0.5, 0.05, 0.02, 20, -80, 0, Color), {hand 1} Cone(0.08, -0.12 + c.CenterPoint, 1.02, 0.1, 0.02, 0.02, 20, -80, 0, 7846395), {hand 2} Cone(0.08, 0.18 + c.CenterPoint, 1.02, 0.1, 0.02, 0.02, 20, -80, 0, 7846395), {body} EllipseCone(0,c.CenterPoint, 1.07, 0.45, 360, 0.12, 0.2, 0.08, 0.1, 0, 90, 0, Color), {waist} EllipseCone(0,c.CenterPoint, 0.92, 0.15, 360, 0.08, 0.1, 0.11, 0.15, 0, 90, 0, ColorGray), {leg 1} Cone(0, 0.07 + c.CenterPoint, 0, 0.92, 0.03, 0.08, 0, 90, 0, ColorGray), {leg 2} Cone(0, -0.07 + c.CenterPoint, 0, 0.92, 0.03, 0.08, 0, 90, 0, ColorGray), {foot 1} EllipseCone(0, 0.07 + c.CenterPoint, 0,0.2, 180, 0.01, 0.03, 0.04, 0.05, 0, 0, 0, ColorBlack), {foot 2} EllipseCone(0, -0.07 + c.CenterPoint, 0, 0.2, 180, 0.01, 0.03, 0.04, 0.05, 0, 0, 0, ColorBlack) ), {** Closed Carton Box **} DrawModel3D(Model3D(1, c), 0, 0, 0, c.DrawXsize, c.DrawYsize, zSize), {** Open Carton Box **} DrawModel3D(Model3D(2, c), 0, 0, 0, c.DrawXsize, c.DrawYsize, zSize), {** Pallet - Wood **} DrawModel3D(Model3D(3, c), 0, 0, 0, c.DrawXsize, c.DrawYsize, zSize), {** Pallet - Plastic **} DrawModel3D(Model3D(4, c), 0, 0, 0, c.DrawXsize, c.DrawYsize, zSize), {** Oildrum **} DrawModel3D(Model3D(5, c), 0, 0, 0, c.DrawXsize, c.DrawYsize, zSize), {** Crate **} DrawModel3D(Model3D(6, c), 0, 0, 0, c.DrawXsize, c.DrawYsize, zSize) ) ) ]); SetStatus(0); int018; {Atom: Team8} sets; AtomByName([Team], Main); if(not(AtomExists), Error([Cannot find mother atom 'Team'. Inheriting from BaseClass.])); CreateAtom(a, Up(s), [], 1, false); int023([Team8], 16711808, 4336); Set(Icon(a), RegisterIcon(IconsDir([bmp\atoms\queue.bmp]), [queue])); SetMaterial( RegisterMaterial([Default], 8421504, 8421504, 3289650, 0, 0.100000001490116, 0, false, false, 1, 0), 1, a); Set(Version(a), 0); SetTreeIcon(pDir([Media\Icons\Team.ico])); Set(DdbRec, [>t-messagemode:2.>t-team:1.]); SetChannels(0, 1); SetChannelRanges(0, 0, 0, 1); int001(239); int013(1, 0, true, true, 0, 0, [], []); SetLoc(9, 20, 0); SetSize(6, 2, 0); LockPosition(false); LockSize(false); DisableIconRotation(false); SetProductCode([]); SetExprAtt(1, [indexmatch(nroc(c),icopen(1,out(count,c)),true)]); SetAtt(2, 0); SetExprAtt(3, [t-sortoperatortasks(>(ddb([t-priority],next(cs)),ddb([t-priority],cs)),c)]); SetAtt(4, 0); SetAtt(5, 1); SetAtt(6, 1); SetExprAtt(7, [{.~1|1. Fixed offset --> always apply an offset of ~0~ meter. .}0]); SetAtt(8, 0); SetAtt(9, 0); SetAtt(10, 0); SetAtt(11, 0); SetAtt(12, 1); SetAtt(13, 0); SetAtt(14, 1); SetAtt(15, 1); SetAtt(16, 1); int024; int020(2, true, true); SetStatus(0); int018; {Atom: Operator9} sets; AtomByName([Operator], Main); if(not(AtomExists), Error([Cannot find mother atom 'Operator'. Inheriting from BaseClass.])); CreateAtom(a, Up(s), [], 1, false); int023([Operator9], 767720, 66673); Set(Icon(a), RegisterIcon(IconsDir([bmp\atoms\operator.bmp]), [operator])); AddModel3D( RegisterModel3D(Model3DDir([Persons\Men\Man_subdivided.wrl]), [Man_subdivided.wrl], 0, 0, 0, 1, 1, -1, -90, 0, 0), a); AddModel3D( RegisterModel3D(Model3DDir([Persons\Men\Man_divided.wrl]), [Man_divided.wrl], 0, 0, 0, 1, 1, -1, -90, 0, 0), a); SetMaterial( RegisterMaterial([Default], 8421504, 8421504, 3289650, 0, 0.100000001490116, 0, false, false, 1, 0), 1, a); Set(Version(a), 0); SetTreeIcon(pDir([Media\Icons\Operator.ico])); Set(DdbRec, [>d3:28.0152833025828.>previousedstnode:1.>d4:1000000000000.>d2:1000000000000.>d1:1000000000000.>n3:1.>n2:4.>n1:4.>t-opnumber:1.>t-color:292315.>t-start:1.>t-operator:1.]); SetChannels(3, 3); SetChannelRanges(3, 3, 3, 3); int001(240); int013(1, 0, true, true, 0, 0, [Do not connect.], []); int013(2, 0, true, true, 0, 0, [], []); int013(3, 0, true, true, 1, 0, [Do not connect.], []); SetLoc(36, 12, 0); SetSize(1, 1, 1); LockPosition(false); LockSize(false); DisableIconRotation(false); SetProductCode([]); SetAtt(1, 0); SetAtt(2, 1); SetAtt(3, 19); SetAtt(4, 16); SetAtt(5, 0); SetAtt(6, 1); SetAtt(7, 1); SetAtt(8, 0); SetAtt(9, 0); SetAtt(10, 0); SetAtt(11, 1); SetAtt(12, 1); SetExprAtt(13, [0]); SetExprAtt(14, [0]); SetExprAtt(15, [1]); SetAtt(16, 0); SetAtt(17, 0); SetAtt(18, 248649792); SetExprAtt(19, [{.+(~1(in(2,c)),~2)|5. Destination size --> apply an offset equal to the ~xsize~ of the destination plus ~-1~ meter..}+(xsize(in(2,c)),-1)]); SetExprAtt(20, [{.~1|1. Fixed --> always apply an offset of ~-1~ meter..}-1]); SetAtt(21, 1); SetAtt(22, 0); SetAtt(23, 0); SetExprAtt(24, [do( att([UseTravel], c) := true, Connect(2, c, 0, out(1, c)), Connect(3, c, 0, out(1, c)) )]); SetAtt(25, 1); SetAtt(26, 0); SetExprAtt(27, [0]); SetAtt(28, 0); SetAtt(29, 0); SetAtt(30, 1); SetAtt(31, 0); SetAtt(32, 0); SetAtt(33, 248945240); SetAtt(34, 248950380); SetAtt(35, 248944148); SetAtt(36, 255370984); int024; Set(OnEvent, [Case( EventCode, {* 1: Start travelling or continue travelling at maximum speed *} Do( Status( c) := 33, {* Travel to Job *} CreateEvent( TravelTo( c, 1, curxdest, curydest, zLoc( c), speed, keepspeed * speed, acceleration, deceleration), c, TravelEventCode ) ), {* 2: Arrival at next node or final destination *} CreateEvent( 0, c, keepspeed + 3), {* 3: Arrival at job, signal atom *} Do( att([UseTravel], c) := false, atdestination := true, If( Label( [t-setdestination], c), Do( SetLabel( [t-setdestination], 0, c), OpenInput( c), CreateEvent( 0, In( 1, c), 2) ), Do( StopAtom( c), Status( c) := 30, picking := False, SetCs( In( 2, c)), SetLabel( [t-opnumber], Label( [t-opnumber], cs) - 1, cs), If( usetravel, SetLoc(xloc(c)+(ddb([t-opnumber],cs)*att(6,in(1,c))*att(5,in(1,c))),yloc(c),zloc(c),c), SetLoc( +( xLoc( c), -( xAbsLoc( In( 3, c), Model), xAbsLoc( c, Model)), xSize( In( 3, c)), -( *( Att( 5, In( 1, c)), Att( 6, In( 1, c)), Label( [t-opnumber], c)))), +( yLoc( c), -( yAbsLoc( In( 3, c), Model), yAbsloc( c, Model)),-( yLoc( In( 3, c)) + 1)), zLoc( c), c ) ), If( Label( [t-opnumber], cs) = 0, Do( Repeat( NrOc( In( 1, c)), If( And( AtomExists( Out( Count, In( 1, c))), AtomExists( In( 2, Out( Count, In( 1, c)))), AtomId( In( 2, Out( Count, In( 1, c)))) = AtomId( cs) ), Status( Out( Count, In( 1, c))) := 2 {* Busy *} ) ), Status( cs) := 2, {Label( [oldstatus], cs),} Color( cs) := Label( [t-color], c), DelayEvents( Time - Label( [t-calltime], c) - 1000000000000,cs) ) ) ) ) ), {* 4: Arrival at node, select next destination *} Do( keepspeed := False, If( offroad, If( Label( [t-node1], In( 2, c)) = Att( [nodenumber], Out( 2, c)), NextChannel := Label( [t-node2], In( 2, c)), NextChannel := Label( [t-node1], In( 2, c)) ), NextChannel := Cell( Att( [nodenumber], Out( 2, c)), destnode, Vtp( nodetable)) ), If( NextChannel = 0, Do( Msg( Concat([Simulation stopped. ], Name( In( 2, c)), [ cannot be reached from ], Name( Out( 2, c)),[. Check the network for one-way connections from ],name(out(2,c)),[ to ],name(in(2,c)),[. Check if two network controllers control the same network. Rebuild the network.]), 3), Stop ), Do( SetCs( Out( Att( 1, c), Vtp( pointertable))), Connect( 3, c, 0, Out( 2, c)), Connect( 2, c, 0, cs), If( offroad, {* Travel off the road to the final destination *} AdvancedTransporter_t-calcoffset, Do( curxdest := xLoc( c) + xAbsLoc( cs, Model) - xAbsLoc( c, Model), curydest := yLoc( c) + yAbsLoc( cs, Model) - yAbsLoc( c, Model), keepspeed := True, If( Att( [nodenumber], cs) = destnode, Do( offroad := Min( 1, Label( [t-node2], In( 2, c))), keepspeed := offroad ) ) ) ) ) ), CreateEvent( 0, c, 1) ), {* 5: Free destination *} Do( freeaction, OpenIc( 1, c) ), {* 6: Travel between destination/origin and first node *} If( usetravel, Do( offnetwork := true, If( And( AtomExists( Out( 2, c)), AtomExists( Vtp( Label( [t-netreference], Out( 2, c)))) ), Do( offnetwork := False, distancetable := Ptv( First( Vtp( Label( [t-netreference], Out( 2, c))))), nodetable := Ptv( Next( Vtp( distancetable))), pointertable := Ptv( Next( Vtp( nodetable))), connectiontable := Ptv( Up( Vtp( distancetable))) ) ), If( Or( Label( [t-node1], In( 2, c)) = 0, offnetwork ), Do( keepspeed := 0, curxdest := xLoc( c) + xAbsLoc( In( 2, c), Model) - xAbsLoc( c, Model), curydest := yLoc( c) + yAbsLoc( In( 2, c), Model) - yAbsLoc( c, Model), offnetwork := True, offroad := False ), Do( keepspeed := 1, betweennodes := 0, SetCs( Out( 2, c)), If( offroad, If( And( Label( [t-node2], In( 2, c)) > 0, Label( [t-node1], In( 2, c)) = Label( [t-node1], Vtp( prevatom)), Label( [t-node2], In( 2, c)) = Label( [t-node2], Vtp( prevatom)) ), {* Next pick/place is along the same section *} Do( AdvancedTransporter_t-calcoffset, If( Or( Cell( Att( [nodenumber], Out( 2, c)), Att( [nodenumber], Out( 3, c)), Vtp( connectiontable)), AtomDistance( c, cs) + 0.001 >= Sqrt( Sqr( xLoc( cs) - curxdest) + Sqr( yLoc( cs) - curydest)) ), {* Transporter can move backwards or next pick is down the road *} keepspeed := 0, {* Transporter must move to second node on this path, destination stays the same *} offroad := false ) ), {* Next pick/place is in another atom, determine the correct node to travel to *} offroad := false ) ), If( Not( offroad), Do( {* If it's a one-way section, the transporter must move forward *} If( Not( Cell( Att( [nodenumber], Out( 2, c)), Att( [nodenumber], Out( 3, c)), Vtp( connectiontable))), SetLabel( [t-oneway], 1, c), SetLabel( [t-oneway], 0, c) ), AdvancedTransporter_CalculateDistance ) ), If( Att( [nodenumber], Out( 2, c)) = destnode, Do( offroad := Min( 1, Label( [t-node2], In( 2, c))), keepspeed := offroad ) ) ) ), prevatom := Ptv( In( 2, c)), If( atdestination, CreateEvent( 0, c, 1) ), atdestination := false ), CreateEvent( 0, c, 3) ) ) ]); Set(OnReset, [Do( If( And( AtomExists( In( 2, c)), picking ), Do( Color( In( 2, c)) := Label( [t-color], c), SetLabel( [t-opnumber], 0, In( 2, c)) ) ), att([UseTravel], c) := true, If( AtomExists(out( 1, c)), do( SetLoc(xLoc(out(1, c)) + 1, yLoc(out(1, c)), zLoc(out(1, c)), c), Connect(2, c, 0, out( 1, c)), Connect(3, c, 0, out( 1, c)), Connect(0, out(1, c), 2, c) ), if( AtomExists( Out( 2, c)), Do( SetLoc( xLoc( Out( 2, c)) + 1, yLoc( Out( 2, c)), zLoc( Out( 2, c)), c), Connect( 3, c, 0, Out( 2, c)), Connect( 0, Out( 2, c), 2, c) ) ) ), If( Or( Not( AtomExists( In( 1, c))), Not( Label( [t-team], In( 1, c))) ), Do( Connect( 0, c, 1, c), Trace( Concat( Name( c), [ is not connected to a team. Click atom to connect.])), displaytracer ) ), StopAtom( c), Status( c) := 1, {* Idle *} RotationAs( c) := 0, {* set attributes *} offroad := False, offnetwork := False, picking := True, atdestination := True, NextChannel := 0, PrevChannel := 1, keepspeed : =1, betweennodes := 0, loadclose := 0, isplacing := 0, {* set label values *} SetLabel( [t-start], 1, c), SetLabel( [t-oneway], 0, c), SetLabel( [t-lastop], 0, c), SetLabel( [t-free], 0, c), SetLabel( [t-arrived], 0, c), SetLabel( [t-calltime], 0, c), SetLabel( [t-setdestination], 0, c) ) ]); SetStatus(1); int018; {Atom: N1-1} sets; AtomByName([Network Node], Main); if(not(AtomExists), Error([Cannot find mother atom 'Network Node'. Inheriting from BaseClass.])); CreateAtom(a, Up(s), [], 1, false); int023([N1-1], 292315, 6384); Set(Icon(a), RegisterIcon(IconsDir([bmp\atoms\server.bmp]), [server])); SetMaterial( RegisterMaterial([Default], 8421504, 8421504, 3289650, 0, 0.100000001490116, 0, false, false, 1, 0), 1, a); Set(Version(a), 0); SetTreeIcon(pDir([Media\Icons\NetworkNode.ico])); Set(DdbRec, [>t-netreference:255370984.>t-node1:1.>t-node:1.]); SetChannels(0, 2); SetChannelRanges(0, 255, 0, 255); int001(241); int013(1, 0, true, true, 0, 0, [], []); int013(2, 0, true, true, 0, 0, [], []); SetLoc(19, 12, 0); SetSize(1, 1, 0); LockPosition(false); LockSize(true); DisableIconRotation(false); SetProductCode([]); SetAtt(1, 1); SetAtt(2, 1); SetAtt(3, 1); SetAtt(4, 1); SetAtt(5, 0); SetAtt(6, 1); SetAtt(7, 1); int024; SetTable(1, 4); int015(0, 0, [ 1 ]); int015(1, 0, [1 1000000 ]); int015(2, 0, [2 0 ]); int015(3, 0, [3 0 ]); int015(4, 0, [4 0 ]); SetStatus(0); int018; {Atom: N1-2} sets; AtomByName([Network Node], Main); if(not(AtomExists), Error([Cannot find mother atom 'Network Node'. Inheriting from BaseClass.])); CreateAtom(a, Up(s), [], 1, false); int023([N1-2], 292315, 6384); Set(Icon(a), RegisterIcon(IconsDir([bmp\atoms\server.bmp]), [server])); SetMaterial( RegisterMaterial([Default], 8421504, 8421504, 3289650, 0, 0.100000001490116, 0, false, false, 1, 0), 1, a); Set(Version(a), 0); SetTreeIcon(pDir([Media\Icons\NetworkNode.ico])); Set(DdbRec, [>t-netreference:255370984.>t-node1:2.>t-node:1.]); SetChannels(0, 2); SetChannelRanges(0, 255, 0, 255); int001(242); int013(1, 0, true, true, 0, 0, [], []); int013(2, 0, true, true, 0, 0, [], []); SetLoc(19, 16, 0); SetSize(1, 1, 0); LockPosition(false); LockSize(true); DisableIconRotation(false); SetProductCode([]); SetAtt(1, 1); SetAtt(2, 1); SetAtt(3, 1); SetAtt(4, 2); SetAtt(5, 0); SetAtt(6, 1); SetAtt(7, 1); int024; SetTable(2, 4); int015(0, 0, [ 1 2 ]); int015(1, 0, [1 1000000 1000000 ]); int015(2, 0, [2 0 0 ]); int015(3, 0, [3 0 0 ]); int015(4, 0, [4 0 0 ]); SetStatus(0); int018; {Atom: N1-3} sets; AtomByName([Network Node], Main); if(not(AtomExists), Error([Cannot find mother atom 'Network Node'. Inheriting from BaseClass.])); CreateAtom(a, Up(s), [], 1, false); int023([N1-3], 0, 6384); Set(Icon(a), RegisterIcon(IconsDir([bmp\atoms\server.bmp]), [server])); SetMaterial( RegisterMaterial([Default], 8421504, 8421504, 3289650, 0, 0.100000001490116, 0, false, false, 1, 0), 1, a); Set(Version(a), 0); SetTreeIcon(pDir([Media\Icons\NetworkNode.ico])); Set(DdbRec, [>t-netreference:255370984.>t-node1:3.>t-node:1.]); SetChannels(0, 2); SetChannelRanges(0, 255, 0, 255); int001(243); int013(1, 0, true, true, 0, 0, [], []); int013(2, 0, true, true, 0, 0, [], []); SetLoc(35, 16, 0); SetSize(1, 1, 0); LockPosition(false); LockSize(true); DisableIconRotation(false); SetProductCode([]); SetAtt(1, 1); SetAtt(2, 1); SetAtt(3, 1); SetAtt(4, 3); SetAtt(5, 0); SetAtt(6, 1); SetAtt(7, 1); int024; SetTable(2, 4); int015(0, 0, [ 1 2 ]); int015(1, 0, [1 1000000 1000000 ]); int015(2, 0, [2 0 0 ]); int015(3, 0, [3 0 0 ]); int015(4, 0, [4 0 0 ]); SetStatus(0); int018; {Atom: N1-4} sets; AtomByName([Network Node], Main); if(not(AtomExists), Error([Cannot find mother atom 'Network Node'. Inheriting from BaseClass.])); CreateAtom(a, Up(s), [], 1, false); int023([N1-4], 292315, 4336); Set(Icon(a), RegisterIcon(IconsDir([bmp\atoms\server.bmp]), [server])); SetMaterial( RegisterMaterial([Default], 8421504, 8421504, 3289650, 0, 0.100000001490116, 0, false, false, 1, 0), 1, a); Set(Version(a), 0); SetTreeIcon(pDir([Media\Icons\NetworkNode.ico])); Set(DdbRec, [>t-netreference:255370984.>t-node1:4.>t-node:1.]); SetChannels(0, 2); SetChannelRanges(0, 255, 0, 255); int001(244); int013(1, 0, true, true, 0, 0, [], []); int013(2, 0, true, true, 0, 0, [], []); SetLoc(35, 12, 0); SetSize(1, 1, 0); LockPosition(false); LockSize(true); DisableIconRotation(false); SetProductCode([]); SetAtt(1, 1); SetAtt(2, 1); SetAtt(3, 1); SetAtt(4, 4); SetAtt(5, 0); SetAtt(6, 1); SetAtt(7, 1); int024; SetTable(1, 4); int015(0, 64, [ 1 ]); int015(1, 64, [1 1000000 ]); int015(2, 64, [2 0 ]); int015(3, 64, [3 0 ]); int015(4, 64, [4 0 ]); SetStatus(0); int018; {Atom: Network Controller15} sets; AtomByName([Network Controller], Main); if(not(AtomExists), Error([Cannot find mother atom 'Network Controller'. Inheriting from BaseClass.])); CreateAtom(a, Up(s), [], 1, false); int023([Network Controller15], 0, 530528); Set(Icon(a), RegisterIcon(pDir([media\images\default.jpg]), [default.jpg])); SetMaterial( RegisterMaterial([Default], 8421504, 8421504, 3289650, 0, 0.100000001490116, 0, false, false, 1, 0), 1, a); Set(Version(a), 0); SetTreeIcon(pDir([Media\Icons\NetworkController.ico])); int001(246); SetLoc(9, 23, 0); SetSize(9, 2, 0); LockPosition(false); LockSize(false); DisableIconRotation(false); SetProductCode([]); SetAtt(1, 1); SetAtt(2, 1); SetAtt(3, 248945240); SetAtt(4, 248950380); SetAtt(5, 248944148); SetAtt(6, 1); SetAtt(7, 248945964); SetAtt(8, 248647360); SetAtt(9, 248942436); SetAtt(10, 248943072); int024; SetTable(4, 4); int015(0, 0, [ `N1-1` `N1-2` `N1-3` `N1-4` ]); int015(1, 0, [`N1-1` 1 ]); int015(2, 0, [`N1-2` 1 1 ]); int015(3, 0, [`N1-3` 1 1 ]); int015(4, 0, [`N1-4` 1 ]); SetStatus(0); int018; {Atom: Distance Table} sets; BaseClass; CreateAtom(a, s, [], 1, false); int023([Distance Table], 0, 3264); Set(Icon(a), RegisterIcon(pDir([media\images\default.jpg]), [default.jpg])); SetMaterial( RegisterMaterial([Default], 8421504, 8421504, 3289650, 0, 0.100000001490116, 0, false, false, 1, 0), 1, a); Set(Version(a), 0); SetTreeIcon(0); int001(247); SetSize(1, 1, 1); LockPosition(false); LockSize(false); DisableIconRotation(false); SetProductCode([]); int024; SetTable(4, 4); int015(0, 0, [ `N1-1` `N1-2` `N1-3` `N1-4` ]); int015(1, 0, [`N1-1` 0 4 20 24 ]); int015(2, 0, [`N1-2` 4 0 16 20 ]); int015(3, 0, [`N1-3` 20 16 0 4 ]); int015(4, 0, [`N1-4` 24 20 4 0 ]); SetStatus(0); int018; {Atom: Node Table} sets; BaseClass; CreateAtom(a, Up(s), [], 1, false); int023([Node Table], 0, 3264); Set(Icon(a), RegisterIcon(pDir([media\images\default.jpg]), [default.jpg])); SetMaterial( RegisterMaterial([Default], 8421504, 8421504, 3289650, 0, 0.100000001490116, 0, false, false, 1, 0), 1, a); Set(Version(a), 0); SetTreeIcon(0); int001(248); SetSize(1, 1, 1); LockPosition(false); LockSize(false); DisableIconRotation(false); SetProductCode([]); int024; SetTable(4, 4); int015(0, 0, [ `N1-1` `N1-2` `N1-3` `N1-4` ]); int015(1, 0, [`N1-1` 1 1 2 3 ]); int015(2, 0, [`N1-2` 2 2 2 3 ]); int015(3, 0, [`N1-3` 2 3 3 3 ]); int015(4, 0, [`N1-4` 2 3 4 4 ]); SetStatus(0); int018; {Atom: Pointer Table} sets; BaseClass; CreateAtom(a, Up(s), [], 1, false); int023([Pointer Table], 0, 3264); Set(Icon(a), RegisterIcon(pDir([media\images\default.jpg]), [default.jpg])); SetMaterial( RegisterMaterial([Default], 8421504, 8421504, 3289650, 0, 0.100000001490116, 0, false, false, 1, 0), 1, a); Set(Version(a), 0); SetTreeIcon(0); SetChannels(0, 4); int001(249); int013(1, 0, true, true, 0, 0, [], []); int013(2, 0, true, true, 0, 0, [], []); int013(3, 0, true, true, 0, 0, [], []); int013(4, 0, true, true, 0, 0, [], []); SetSize(1, 1, 1); LockPosition(false); LockSize(false); DisableIconRotation(false); SetProductCode([]); int024; SetTable(4, 1); int015(0, 0, [ `N1-1` `N1-2` `N1-3` `N1-4` ]); int015(1, 0, [1 248891888 261027188 260571892 222738020 ]); SetStatus(0); int018; {Atom: Angle Table} sets; BaseClass; CreateAtom(a, Up(s), [], 1, false); int023([Angle Table], 0, 3264); Set(Icon(a), RegisterIcon(pDir([media\images\default.jpg]), [default.jpg])); SetMaterial( RegisterMaterial([Default], 8421504, 8421504, 3289650, 0, 0.100000001490116, 0, false, false, 1, 0), 1, a); Set(Version(a), 0); SetTreeIcon(0); int001(250); SetSize(1, 1, 1); LockPosition(false); LockSize(false); DisableIconRotation(false); SetProductCode([]); int024; SetTable(4, 4); int015(0, 0, [ `Angle Table` `Angle Table` `Angle Table` `Angle Table` ]); int015(1, 0, [`Angle Table` ]); int015(2, 0, [`Angle Table` ]); int015(3, 0, [`Angle Table` ]); int015(4, 0, [`Angle Table` ]); SetStatus(0); int018; {Atom: Atom Table} sets; BaseClass; CreateAtom(a, Up(s), [], 1, false); int023([Atom Table], 0, 3264); Set(Icon(a), RegisterIcon(pDir([media\images\default.jpg]), [default.jpg])); SetMaterial( RegisterMaterial([Default], 8421504, 8421504, 3289650, 0, 0.100000001490116, 0, false, false, 1, 0), 1, a); Set(Version(a), 0); SetTreeIcon(0); SetChannels(0, 2); int001(251); int013(1, 0, true, true, 0, 0, [], []); int013(2, 0, true, true, 0, 0, [], []); SetSize(1, 1, 1); LockPosition(false); LockSize(false); DisableIconRotation(false); SetProductCode([]); int024; SetTable(2, 2); int015(0, 0, [ `Server3` `Server5` ]); int015(1, 0, [`Pointer Value` 248649792 169558692 ]); int015(2, 0, [`Connected Node` 1 4 ]); SetStatus(0); int018; {Atom: Battery Pointer Table} sets; BaseClass; CreateAtom(a, Up(s), [], 1, false); int023([Battery Pointer Table], 0, 3264); Set(Icon(a), RegisterIcon(pDir([media\images\default.jpg]), [default.jpg])); SetMaterial( RegisterMaterial([Default], 8421504, 8421504, 3289650, 0, 0.100000001490116, 0, false, false, 1, 0), 1, a); Set(Version(a), 0); SetTreeIcon(0); int001(252); SetSize(1, 1, 1); LockPosition(false); LockSize(false); DisableIconRotation(false); SetProductCode([]); int024; SetStatus(0); int018; {Atom: Battery Distance Table} sets; BaseClass; CreateAtom(a, Up(s), [], 1, false); int023([Battery Distance Table], 0, 3264); Set(Icon(a), RegisterIcon(pDir([media\images\default.jpg]), [default.jpg])); SetMaterial( RegisterMaterial([Default], 8421504, 8421504, 3289650, 0, 0.100000001490116, 0, false, false, 1, 0), 1, a); Set(Version(a), 0); SetTreeIcon(0); int001(253); SetSize(1, 1, 1); LockPosition(false); LockSize(false); DisableIconRotation(false); SetProductCode([]); int024; SetStatus(0); int018; Up; {Atom: Node Manipulator14} sets; AtomByName([Node Manipulator], Main); if(not(AtomExists), Error([Cannot find mother atom 'Node Manipulator'. Inheriting from BaseClass.])); CreateAtom(a, Up(s), [], 1, false); int023([Node Manipulator14], 32768, 3106); Set(Icon(a), RegisterIcon(IconsDir([bmp\atoms\tedatom.bmp]), [ed])); SetMaterial( RegisterMaterial([Default], 8421504, 8421504, 3289650, 0, 0.100000001490116, 0, false, false, 1, 0), 1, a); Set(Version(a), 0); SetTreeIcon(pDir([Media\Icons\NodeManipulator.ico])); SetChannels(1, 1); SetChannelRanges(1, 1, 1, 1); int001(245); SetLoc(6, 23, 0); SetSize(2, 2, 0); LockPosition(false); LockSize(true); DisableIconRotation(false); SetProductCode([]); SetAtt(1, 1); SetExprAtt(2, [do( setatt(3,0,c), var([atmLP], vbAtom), ForAtomTreeUnder( Model, do( atmLP := a, if( and( >(max(xAbsLoc(atmLP, Model), +(xabsloc(atmLP, Model), xsize(atmLP))), xabsloc(c, Model)), >(max(yabsloc(atmLP, Model), +(yabsloc(atmLP, Model), ysize(atmLP))), yabsloc(c, Model)), <(min(xabsloc(atmLP, Model), +(xabsloc(atmLP, Model), xsize(atmLP))), +(xabsloc(c, Model), xsize(c))), <(min(yabsloc(atmLP, Model), +(yabsloc(atmLP, Model), ysize(atmLP))), +(yabsloc(c, Model),ysize(c))), <>(atomid(atmLP),atomid(c)), not(ddb([t999-hidenodes],atmLP)) ), do( setatt(3,1,c), att([CurrentAtom], c) := ptv(atmLP) ) ) ) ) )]); SetAtt(3, 1); SetAtt(4, 1); SetAtt(5, 0); SetExprAtt(6, [if( atomexists(in(1, c)), connect(0, c, 1, c) )]); SetAtt(7, 1); SetAtt(8, 1); SetAtt(9, 1); SetAtt(10, 0); SetAtt(11, 1); SetAtt(12, 0); int024; SetStatus(0); int018; Up; int014(1, 232, 1, 233, 0); int014(0, 238, 1, 232, 0); int014(1, 233, 1, 234, 0); int014(1, 234, 1, 235, 0); int014(0, 239, 2, 234, 0); int014(1, 235, 1, 236, 0); int014(1, 236, 1, 237, 0); int014(0, 239, 2, 236, 0); int014(1, 239, 1, 240, 0); int014(1, 240, 0, 244, 0); int014(2, 240, 0, 244, 0); int014(0, 244, 2, 240, 0); int014(3, 240, 0, 244, 0); int014(1, 241, 0, 242, 0); int014(2, 241, 0, 234, 0); int014(1, 242, 0, 241, 0); int014(2, 242, 0, 243, 0); int014(1, 243, 0, 242, 0); int014(2, 243, 0, 244, 0); int014(1, 244, 0, 243, 0); int014(2, 244, 0, 236, 0); int014(1, 249, 0, 241, 0); int014(2, 249, 0, 242, 0); int014(3, 249, 0, 243, 0); int014(4, 249, 0, 244, 0); int014(1, 251, 0, 234, 0); int014(2, 251, 0, 236, 0); int006(10, 232, 1, 0, 0); {Experiment settings} int034; int007;