Hey @Julius J2, setobjectshapeindex seemed to work for me. Here's my script:
Object processor = createinstance(library().find("?Processor"), model());
setobjectshapeindex(processor, getshapeindex("fs3d\\General\\Box.3ds"));
You can save the result of the createinstance function in an object variable (I called mine "processor"). The first parameter of createinstance is the object that you want to create and the second parameter is where you want to put it (in this case I just put it in the model() wherever it decides). Then you can set the shape of the object using setobjectshapeindex like above. It takes in the object you want to change as the first parameter and then an index of the new shape. These indices can be found in View -> Media Files; ensure that "Shapes" is selected at the top of the menu and then below is a dropdown list of different shapes and their indexes (on the left of the name).
If you run the script of the model I've attached, it should spawn a processor in the model that looks like a box. However, if you reset the model, it will go back to looking like a processor. I have two scripts saved in the model that you can load: "Make Processor Box" which will create a processor and change its shape to a box; and "Update to Box" which will simply change whatever shape I've got the reference to back into a box:
setobjectshapeindex(Model.find("Processor1"), getshapeindex("fs3d\\General\\Box.3ds"));
If you run Update to Box after a reset, it will change the processor back into a box. You can run the model and it will carry out like normal.
Does this answer your question? If not, please provide some more details so I can understand your problem better. A test file could be helpful too if you've got one.
update-shape.fsm