question

Craig DIckson avatar image
8 Likes"
Craig DIckson asked anthony.johnson edited

Elimination of types for conveyor system components?

Can someone please tell me what the rationale for eliminating conveyor types, control point types, transfer types, and photoeye types in FlexSim 21 is? I use every one of those every day, and not having them will make modeling large distribution centers much more tedious and - even more importantly - a lot more error-prone. This seems like a major step back to the (lack of) functionality of FlexSim 7.

Yes, I realize that I can use (e.g.) functions to get back *some* of the functionality (and no, "Edit selected / copy from highlighted" is not the same) but it still requires several extra clicks for each and every object. Also, I suspect that many of my existing models will not run in FlexSim 21 because I frequently use custom trigger logic by type.

I was in the process of setting up set of conveyor types for my company's conveyor designers to use for rapid design and animation (instead of AutoCAD and 3dsMax). (read: more licenses.) Without types, I can't make this work easily enough to be worth it.

I will not be upgrading to FlexSim 21. I am absolutely stunned at this change and extremely frustrated.

P.S. -- This is compounded by the fact that starting in FlexSim 20 the ability to click on an arrow at the bottom of an object's form to get to the next object of that type was removed. This was another often-used way to easily make sure similar objects were similar - i.e. verifying a model.

FlexSim 21.0.1
flexsim 21.0.1conveyor types
· 8
5 |100000

Up to 12 attachments (including images) can be used with a maximum of 23.8 MiB each and 47.7 MiB total.

anthony.johnson avatar image
2 Likes"
anthony.johnson answered anthony.johnson edited

Craig, I stand by my original explanation. Conveyor types were not an OOP design. In OOP design, a user can inherit from a parent class and then selectively choose what to override. Conveyor types, by contrast, were an all-or-nothing, arbitrarily defined sharing mechanism, and created just as many headaches as they solved. Take for example, our decision for locating the conveyor OnEntry, OnExit, OnItemBump, etc. triggers. If you notice, we put them directly on the conveyor from the beginning, not on the conveyor type. It seems, according to your logic, that we should have put those triggers on the conveyor type, so that they could be shared better. Let's say we had put those triggers on the conveyor types. Then, let's say you create a massive model with something like 30 different conveyor types, because there were 30 different configurations of max speeds, spacing, slug building, etc. Then you realize that you want to add logic to all of your conveyors' OnEntry and OnExit triggers, for statistical tracking. All of a sudden, this supposedly wonderful conveyor types feature is now working against you. Every time you want to change or adjust the OnEntry and OnExit triggers, you have to manually visit each one of your 30 conveyor types. You can't use standard FlexSim features like Copy From Highlighted, because that doesn't work for conveyor types. And, you can't use FlexSim's new property API, or object property tables, because all of those triggers are hidden behind a conveyor's single "Type" property. You must visit, one by one, each of those conveyor types. That's not OOP.

So, since we decided to put conveyor triggers directly on the conveyors (and I'm glad we decided to put them on the conveyors), we're left with this ugly chimera where some things are defined on the type, and some things are defined directly on the object, and which one is which is decided arbitrarily, by us. That is not OOP, that is hard-coded inflexibility.

We have had many users complain "why can't I copy the conveyor speed from my highlighted conveyor to all of the other selected conveyors?" Well, sorry, new user, but you should have realized that the conveyors are designed differently than all of the other objects in FlexSim, and copy from highlighted doesn't work for them. Is that really supposed to be our answer to new users? Further, expanding the conveyor type design to everything else would be a time-intensive error-prone backwards compatibility nightmare, where we are making the same arbitrary decisions for inflexible sharing that we had to make for conveyors.

All of the things you could do previously with conveyor types, you can now do (or will soon be able to do) with object property tables. Just set up a group of conveyors that represents what previously would have been your type. Then add an object property table that filters by that group. You can quickly get conveyor basic properties from the conveyor's Conveyor Behavior panel and clicking the button on the top of the pane, then choose "Create New Property Table > Basic Conveyor Properties". Then change the property table's filter to filter by the group (click the filter button and select General > Group, then enter the group name). Once you have that table set up, you can both view and change the properties you need to for that group. Whenever you later need to make new changes, you can just reopen that property table and update the values. In the next version (unfortunately I didn't have the time to put it in this version), you will also be able to edit/add/remove trigger logic to these objects.

I totally get your desire for shared behavior/properties. We have thrown around various ideas for implementing better shared behavior. Object process flows go a long way toward that, but there is still more space for improvement. But conveyor types were not even close to being that feature. Further, if we are to do that type of feature at some point, it would have to work for all objects, and therefore we would have to break away from conveyor types anyway. We felt that, with the new addition of property tables, users had capability parity with what they could previously do with conveyor types. And since not making a change would have perpetuated users' inability to edit conveyors, decision points, photo eyes, etc. through the new property tables, we decided to go ahead and make the leap.

As far as backwards compatibility, as long as you have not dug into the undocumented internal structure of the conveyor types, models should update properly, even with triggers.

And, as far as the next/previous buttons, we realized that you get the same functionality by simply clicking on the conveyors in the model that you want to edit, because the properties immediately update in the properties pane on the right. The next/previous buttons arbitrarily decided on the next object based on model rank. Clicking on an object in the view is a much more intuitive way for the user to decide which object's properties to edit.


propsbutton.png (773 B)
· 3
5 |100000

Up to 12 attachments (including images) can be used with a maximum of 23.8 MiB each and 47.7 MiB total.

Phil BoBo avatar image
0 Likes"
Phil BoBo answered Craig DIckson commented

There's a discussion regarding this change in the FlexSim 2021 Beta thread that includes Anthony's explanation for why this change was made: https://answers.flexsim.com/comments/93300/view.html

· 2
5 |100000

Up to 12 attachments (including images) can be used with a maximum of 23.8 MiB each and 47.7 MiB total.