Search the Community
Showing results for tags 'objects'.
I am trying to set up a custom object subclass for a conveyor that emulates an accumulating conveyor which has configurable "zone" lengths and overall lengths. Zones can be equated to "cells" in Simio. For example, if I have a 6' long conveyor with 12" zones, then I would have QTY 6 zones on the 6' long conveyor, which means a traveler capacity of 6 and a cell count of 6. For a 6' conveyor with 24" zones, I would have QTY 3 zones, traveler capacity of 3 and cell count of 3, and so on. In my custom object subclass, I have custom properties for the conveyor length and zone length. I have a function that calculates the traveler capacity based on this. The issue I am having is setting the initial traveler capacity and fixed cell count properties to reference the output of this function. The problem is two fold: 1) How do I create a default property value that references another property or function within the same object instance? For example, say my object subclass is called "Conveyor_Custom" and my capacity calculation function is called "CapacityCalculation". I am able to reference the function output by typing Conveyor_Custom1.CapacityCaculation in the property pane of the first object instance (which is Conveyor_Custom1) on the main model, but I have to type this out for each instance that I create (ie. Conveyor_Custom1, Conveyor_Custom2, etc.). I am looking for a way to set the default value for the entire object subclass to reference the calculation from it's own instance. This default would need to be set within the object definition itself, so that I could drop many instances of the object into the model without needing to type in the name of each instance into the property pane manually. For example, something like Self.CapacityCalcuation would be great, but I am not sure there exists a generic self-reference placeholder and I can't find it in the documentation. 2) Even when I type in the capacity calculation reference manually for each object instance, I still get an error for the NumberOfCells property. For example, in the main model, in the property pane for the first object instance, I can manually set the InitialTravelerCapacity to Conveyor_Custom1.CapacityCalculation and get the correct value returned with no errors. However, when I set NumberOfCells to Conveyor_Custom1.CapacityCalculation, I get the error "Invalid numeric value". The output of the function is an integer (I have some rounding in there to make it so) so I am not sure why the value is invalid. I also tried setting it to Conveyor_Custom1.InitialTravelerCapacity and this also throws the same error. It would be convenient to be able to set the traveler capacity and cell count to the same value, since on accumulation conveyors with defined zone lengths, this is the real physical situation. It doesn't make sense for me to have to manually calculate this and input the actual integer value when there is already a function set up to do this and other properties are able to reference the output of that function. If anyone has experience with this please let me know, in the meantime I am doing it manually but it is very tedious. Thanks!
I would like to reference state values associated with objects within a data table. For example, suppose I have a Data Table, call it Tab1, with an Object Reference column called Obj. The first entry in the object reference column is a resource called Res; thus, Tab1.Obj points to Res. How do I access the value of Res.CurrentCapacity using the table reference? To make this a little more complex, what if the state were a vector of integers? Thus, what I would like to reference would be something like Res.vector1.
To model shelves, I am trying to create a series of custom "Shelf" objects (subclass of servers) located in a grid pattern. I used a spreadsheet to automatically calculate the coordinate locations and generate a name (string) for each object based on its position within the grid. With just the Shelf object types in the spreadsheet, can bind the file to my object reference table no problem, import the data, and populate the facility window with my objects. That part works fine! Next, since I have an aisle running between the rows of objects, I wanted to set it up so that the objects all face "inwards", ie. the input and output nodes for the objects are facing the aisle. Originally I thought of rotating the Shelf object, but I ran into 2 issues: first, I discovered that I can't set the Shelf yaw orientation from the table, so that's not going to work. Second, I realized that even when I rotate the Shelf in the facility window, the nodes do not rotate with their parent object. I decided I would leave the Shelf in the same orientation as it is placed, but I would just re-locate the input/output nodes to the opposite edge of the Shelf objects on the far side of the aisle. For this I would need to make sure I can set locations for the input/output nodes in the same object reference table. When I added a row to the object reference table from within Simio (prior to binding to a spreadsheet), a drop down appeared, and I could select the input or output nodes for any object that already existed in the table, and then define the node's location in the cartesian coordinate columns. When creating a node this way, the node location is still relative to the object, ie. I can drag the object in the facility window and the node moves relative to the object, which is perfect. This input/output node creation and relative location definition via table is exactly what I am trying to automate, but this is where I started running into problems. In my spreadsheet I used formulas to generate names for the nodes to match the formatting of the input and output nodes in Simio (ex. "Input@..."/"Output@..."). I also added a formula to assign all input node object types to BasicNodes and all output nodes to TransferNodes and calculate the desired location coordinates for the nodes. The spreadsheet I made has the same format as the table in Simio where I tested manually creating and positioning the nodes. The issue is that when I bind the table and import the spreadsheet data to my model, the node names automatically change and are no longer formatted to reference the parent object. Because of this, these name-changed node objects are created in addition to the input and output nodes that are created for each Shelf object. However, if I remove the binding and add a new row, once again I can find the node name in the drop down list and assign the coordinates manually, and the input/output node that references the parent object will move to where I send it. My question is: how can I set the input/output node locations for the objects when creating objects from a table? There are over 500 Shelf objects in the table so I do not want to locate them manually, but the automated method is not working either. The only idea that I have is to make a new object "Shelf2" and define the external view to have the nodes on the opposite side, but that seems like a less-than-idea solution because then I would have 2 custom objects to update and maintain, that are otherwise identical. I am hoping that I don't have to do this hacky solution but I am interested to see if anyone else has dealt with this and has ideas. Thanks!