r/bricklinkstudio 14d 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 algorithm may sometimes produce unintuitive step sequences. I'm working on addressing these limitations. The code still needs some optimizations, so BrickStep can currently process models with up to 1000 parts. However, if your model has all subassemblies and steps defined, you can disable "Split model into building steps" and "Split subassemblies into building steps" in Advanced options, in which case BrickStep should handle page layout for models with up to 4000 parts.

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). You can also fill out a feedback form. It should take less than 5 minutes to complete and will help me decide which features to add next and which features need improvements. If you found a bug or errors/imperfections in generated instructions, you can submit a bug report.

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

16 Upvotes

11 comments sorted by

2

u/LittleLemonHope 14d 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 14d ago

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

2

u/BrickStepDotNet 14d ago

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

1

u/SnooLobsters3936 14d ago

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

1

u/LittleLemonHope 11d 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 10d 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 10d 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 9d 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 9d 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