Seeking Feedback: Enhance Parametric Model Maker with Custom Web Apps?

@Oxooxo Where did you find those release notes?

@PineappleBun_BBL

There are a couple of issues with the recent changes to the Parametric Model Maker which adds selection of the Bambu printer.

Issue 1: The prompt for printer selection should come after selecting .3MF export. It doesn’t make sense to select the printer for .STL export, and is all a bit confusing if you were after a generic STL file.

Issue 2.: When object auto-arrangement is disabled, the positioning for H2D and A1 Mini is done in a problematic way, inconsistent with the default X1/P1/A1 positioning.

I will just use my model to demonstrate. It uses the 3MF version of the customizer. I underlined changes from default settings in red. GRIPS: GRidfinity Interlocking basePlate System by TooManyThings MakerWorld: Download Free 3D Models

For X1C for example, everything works great. The script intentionally positioned the model slightly off center to avoid the printer’s exclusion zones. When loading the exported 3MF into Bambu Studio, the positioning matches.


For H2D, it does not work the same. I center the model in the Parametric Model Maker and then when loading the 3MF into the Bambu Studio, it is offset, and off the plate.


Similarly, this 180mm x 180mm model should fit on the A1 Mini plate, however if I center it in Parametric Model Maker, the 3MF has the model offset again.


I can see why this is happening - the 3MF export is computing the position relative to the bottom left corner using the standard 256mm build plate. But I think it should be doing that computation using the target printer build plate size.

We can sort of correct for this in the openscad script, but we can’t be certain of what printer the user will select. The script would need always put models in the bottom left corner of the parametric model maker grid, but that causes problems because we don’t know in advance what printer is being selected. Bottom left of X1/P1 has an exclusion zone that needs to be avoided. Bottom left on H2D would force the model onto the left nozzle, which is also not what we usually want.

What we want in all cases is the behavior we get with the 256mm x 256mm build plate: centering the model in parametric model maker centers the model on the build plate.

  • TooManyThings

Just catching up with this post…

With reference to the custom UI personally, I would be able to make use of this. One “issue” I often have with the simple list customizer is that you cannot make the UI selection widgets dependent on data. For example, in my picture frame generator, the user can select from a list of standard sizes or enter custom dimensions. It would be nice to only display the custom dimension widgets when “custom” is selected as the size.
In addition to the above providing dynamic validation in the UI would be great - that is, change the validation rule based on other UI selections.

Regarding the exposed source code…
The implementation in the latest release is OK but it would be nice to be able to do this at a code level. That is allow the inclusion of “include” files that are not exposed. This would both make the code that is presented much neater plus allow custom libraries to be included without exposing the code. I think this has been suggested by others but stated in different terms.

Regarding the limitations on build plate size…
The latest update limits the model size based on the build plate of the selected printer. While this is good in principle as it ensures that what is generated can be printed, I would prefer if it came up as a “warning” rather than preventing the 3mf from being created. I realise that you can always download the stl but this will not have things like colour information. With the ability to manipulate the model in the slicer and, for example, split a large model into pieces with autogenerated connectors, I think it would be good to allow the user to still generate an oversize 3mf.

Cheers and thanks for all the great work!
Duncan

1 Like

The Parametric Model Maker used to be so easy to use. All I had to do was open it and use the “Customize” menu and I could create 3D Names for my nieces and nephews.
I just opened it for the first time in a while today and I am now using chatGPT to try and help me and I still can’t get anything done on there. Is there something I am missing to make this work the way it used to?

Hello,

I don’t know if you are still collecting ideas to enhance the Parametric Model Maker. After having tried it for a few days now and in the background preparing a model with a rather large set of parameters, some of which will be rather powerful but not simple to explain, I have put together a proposal for a multistep gradual extension of PMM that can be rather transformational for the UI of parametric models and at the same time its first steps should be rather straightforwardand easy to implement.

In the first step, this extension will allow developers to easily add more and richer information about a parameter that needs much more explanation than just a few words, as it is possible in today’s implementation of comments in OpenSCAD / PMM. Here is an example of todays parameter descriptions

// This is a complex parameter that would need much more space than what is available here to explain ...
ComplexParam = "P1-P5, E10, A22-A23";

The idea is to allow developers to point to an external webpage than will be opened in a new browser window when the user clicks the link represented by the explanation text of the parameter. In Markdown syntax a link is specified as text which can easily be integrated into the syntax used for comments on parameters in OpenSCAD and therefore in PMM. Here is an example:

// [This is a complex parameter, click here to get more information](https://example.com/params/complex1)
ComplexParam = "";

Adding this feature should be fully backward compatible as other renderers like OpenSCAD would show this text as it is, which does no harm but in fact would also communicate the URL to get more information. Also using this feature by less experienced developers should be straight forward as it is enough to be able to publish one or more webpages anywhere on the Internet using common tools like a simple Wordpress site or anything else able to serve a simple webpage.

The second step / first improvement could be to open an overlay iframe on the PMM page showing the content of the web page directly on the PMM page and offering a «Close» button at the bottom and/or a close icon at the top of the frame around the iframe. This makes it quick and easy for the user to get the extended explanation including anything a webpage can offer: text, images, videos or even a calculator to produce a result the user can then copy paste manually into the parameter field which is part of the basic PMM page.

As a third step (which could already be integrated in step one) the URL called might allow to include the substring ‘$PARAMS’ which would be replaced by a URL encoded version of all parameters of the model as they are at the point when the user clicks the link. This data may the be used on the webpage called, to give information based on the full parameter context of the model at this point. Here is an example on how this would look like

// [This is a complex parameter, click here to get more information](https://example.com/params/complex1?$PARAMS)
ComplexParam = "";

There is one final extension which might be a bit more tricky to implement, but would make the interface between PMM and an external website even more powerful and easy to use. If the external page is opened (in a window or an iframe), one of the parameters PMM could add, would be a onetime token that can be used with a URL on the PMM service to return the content that should be entered into the parameter field, for which the external URL has been opened originally. Here is a example for this

// [This is a complex parameter, click here to get more information](https://example.com/params/complex1?$PARAMS)
ComplexParam = "";

in fact would call the URL

https://example.com/params/complex1?pmm_return_token=abef4666dd3efa&ComplexParam=&Width=5&Height=10

The external page could then either call a link like https://makerworld.com/de/makerlab/parametricModelMaker? pmm_return_token=abef4666dd3efa&value=P10%20A11%30 for example or even show this link on the external page so the user could click it if the value potentially produced or offered in a series of choices on this external page should be fed back into the parameter field.

While HTTP GET calls are technically not the nicest way to do the above and have some limitations, using them anyway would keep things as simple as possible for a non-experienced developers.

Thank you for your detailed and insightful proposal for enhancing the Parametric Model Maker. We truly appreciate you taking the time to share it with us.

You’ve perfectly captured a key challenge we’re actively working to solve: enabling richer, more interactive ways to explain complex parameters. Your ideas are very much aligned with our product roadmap, and it’s great to see that we’re on the same page.

We are especially focused on enabling the powerful data-exchange functionality you described. As you correctly noted, this can be tricky. To ensure the security of all our users, our final implementation will be built on a more secure architecture than direct URL parameters, while still aiming to achieve the seamless user experience you’ve envisioned.

Your feedback is incredibly valuable and confirms we’re on the right track. Thanks again for your excellent contribution!

Thank you very much for your fast reply and the confirmation about the direction in which you are working. This is much appreciated.

While I certainly understand the complexity and the security implications of a full fledged two way exchange of data between PPM and any external source, would you consider to implement the first step proposed above (allowing to use a URL opening a separate external browser window) to easily explain complex parameters without even getting close to your core implementation / service while still making a huge difference for model providers? I’m rather sure this should be a quick and easy extension that has basically no impact on anything else you are working on.

Thank you for your great work anyhow. Having found the PMM saved me countless hours of writing a similar a service for my own models and projects.