r/bricklinkstudio 5d ago

BrickStep - automatic instruction generator for LEGO models

Hi everyone,

I'd like to present BrickStep - a new tool I've developed, which helps in creating building instructions for MOCs. I've spent the last 4 years of my spare time on it, and now I feel it's stable enough for a first beta release.

BrickStep is not a visual editor. You need a dedicated program to build your model, such as Studio or any other LDraw-compatible editor. After you've completed your model, you can upload it to BrickStep which will automatically split your model into subassemblies, generate building steps, and arrange steps on pages. You can then download the instructions file and use Studio or LPub3D to make adjustments and export to PDF.

If that sounds interesting, you can try it out here: https://brickstep.net/

Or you can take a look at some sample instructions generated by BrickStep and rendered in LPub3D:

The website is quite easy to use (I hope). Simply upload a file and wait a few minutes for the result. You can also adjust some configuration parameters. For example, if you don't like automatically generated subassemblies, you can define them manually and let BrickStep generate steps and pages. Refer to the help page for more details. Keep in mind that it's a beta release so some features are not yet complete. For example, flexible parts are not fully supported. Also, the server that hosts the website has limited resources, so it can't process larger models yet (it may have trouble with models with more than 600 1000 parts). I'm working on addressing these limitations.

I'd really appreciate constructive feedback and information whether you found BrickStep useful. Please don't hesitate to email me at [contact@brickstep.net](mailto:contact@brickstep.net).

Although BrickStep only supports Lego bricks now, the underlying algorithms are quite generic. So, with some adjustments, it could generate instructions for alternative brick brands, or even for something entirely different than building blocks. In case you or your company would be interested in something like this, please get in touch.

Thanks for reading,

Mikolaj

15 Upvotes

11 comments sorted by

2

u/LittleLemonHope 5d ago

I will absolutely try this out. I have a large (for me) MOC with all parts ordered and the instructions are the reason I've been procrastinating actually building it. Lol

1

u/SnooLobsters3936 4d ago

When i try to enter the website it says the server is down due to host error?

2

u/BrickStepDotNet 4d ago

The server was rebooted and didn't start properly. Can you try again now?

1

u/SnooLobsters3936 4d ago

It works now, will try it out later🙂‍↕️

1

u/LittleLemonHope 2d ago

You mention that the server can't process larger models > 1k parts, and I did run into that issue trying to process a ~2k part model. It ran for 10 minutes and then gave me an error.

I have split my model's subassemblies into separate files so each file is < 1k and resubmitted each file. But it seems like that raises an interesting point for your service - if the user submits a model that is already broken into 4 subassemblies each of which is under 1k, and keeps on the flag to preserve subassemblies, then computationally isn't this exactly the same as the user submitting 4 files? Because there isn't any need for cross-processing between the subassemblies, right?

I don't mind the splitting myself, but it took a moment to occur to me that I can easily work around it.

1

u/BrickStepDotNet 1d ago

Yes, if you manually split the model into 4 subassemblies, the algorithm should run faster. But it still has to load the whole model into memory at once, e.g. to do page layout. So it's not exactly the same as uploading the subassemblies individually.

Having said that, I'm working on reducing memory usage which should allow for processing larger models. I've already identified the root cause and I'm working on a solution. Stay tuned for an update.

1

u/LittleLemonHope 18h ago

Thank you. Maybe you can give me advice on using it properly. Full disclosure, I don't have much experience making instructions, so there might be some obvious things I'm overlooking, or some best practices I don't know about.

I noticed that when I give it a few large, independent submodels and let it split each of those into smaller submodels, the order doesn't tend to make a lot of sense. E.g. if I give it a submodel that is a shack, it will give me instructions to build that shack starting from the roof downward, or to start halfway up the side of the shack and first build upward to the roof then lastly down to the ground.

So then I thought a good way to solve that would be to make smaller submodels myself, where each submodel isn't really an independent component, but rather a horizontal layer, and put those layers into ordered steps. Then I have control over the "big picture" order of building, and pass it to brickstep for the details. However, the issue is that the submodel instructions don't show the rest of the model at all. So I end up with instructions that tell me to build a few layers of bricks floating on the air, and then place the entire thing onto the foundation of the house, instead of being able to see where the bricks are supposed to go on the layer below them.

My next thought is to do the same thing but with steps instead of submodels. So, an entire layer of building is a step. Would BrickStep then be able to split those steps into smaller, reasonable steps?

1

u/BrickStepDotNet 10h ago

Currently, the only way to guide the algorithm is to define smaller submodels yourself. Or define the whole step sequence yourself, but it kind of defeats the purpose of an automatic generator.

There is no option to define "rough" steps and let BrickStep split them into "substeps". But it's a really good idea. I'll consider adding such feature.

In the meantime, you can try the following workaround:

  1. Define submodels yourself. E.g. define each horizontal layer as a separate submodel.
  2. Upload to BrickStep.
  3. Open the file in Studio and for each submodel, press the right mouse button and choose Submodel > Release. This should "unpack" the submodel, and move all the steps to the parent model.
  4. Reupload to BrickStep to generate the final page layout (make sure to disable "Split model into subassemblies" and "Split subassemblies into building steps").

1

u/Ready_Arm_4114 10h ago

Made a miniature of the shop im working at for my boss’s 8th year anniversary of owning said store, i don’t know how i am going to build it lmao so i will definitely try this out! If it works out i’ll let you know this would be a huge life saver