Skip to main content

FAQ

Welcome to the DynaMaker Frequently Asked Questions (FAQ) page!

Here are the most of the common questions categorized in different groups about:

Contact us at support@dynamaker.com if you don't find your question!

Docs

How do I find which library to use?

You can find all the libraries available in DynaMaker with a short description here.

Do you have more examples apart from the tutorials and how-to?

We are working on adding more examples and snippets to make things easier for DynaMaker developers. Although the tutorials cover the basics and the how-to examples cover some specific and common cases, you are very welcome to suggest any example case that it might help the community. Contact at support@dynamaker.com and we can discuss a new addition to our docs!

I want to learn more about JavaScript & TypeScript. Can you recommend any good resources?

You can read more about JavaScript & TypeScript here.

Why do the examples in docs differ in style from the templates in DynaMaker?

We are constantly developing and improving the DynaMaker functionalities and sometimes docs lag behind. When you find out differences, please reach out to support@dynamaker.com and we will remedy them promptly!

Project and Deployment

How can I limit access to my application?

You can read more about limiting access to your applications with the Auth0 plugin here.

I deployed the wrong version of the project. How can I revert it?

Sometimes things do not work out quite as expected and there is a need to undo a deployment. There is not yet any built-in function for rolling back, but if you should need to revert to a previous deployment of your application, send an email to support@dynamaker.com and we will help you.

How can I save and load my designs in a project?

You can check what is needed in your project in our how-to example.

Application and UI

How do I create a custom modal?

You can read more about pop-ups or modals here.

My model isn't changing when I change parameters (slider/input field, dropdown)

Make sure you run the needed function that modifies your component in the callback of your configurator. For example, if your table changes in size with a parameter and consequently more legs must be added, you should run some kind of component.update() in configurator.addCompletionCallback(), where update() contains the logic of adding more legs as subcomponents of the table.

However, using the built-in function for any component component.setProperties() triggers automatically component.update(), in which you might have some logic to update all possible subcomponents. If so, make sure the top-level component is passing the right properties to its subcomponents.

How can I update the model instantly when using a slider parameter?

Doing the following should make your models update faster with a slider:

  • Go to your component:
    • go to PARAMETERS.
    • make sure you use configurator.addUpdateCallback() instead of configurator.addCompletionCallback() , since the latter has a very short time delay.
  • If you want to see the result in your component right away:
    • go to PRESETS COMP.
    • in your new component presets set the optional argument useUpdateCallback to true.
    • you should have the following as an example:
      const mainComponentPreset = new PRESET.ComponentPreset(COMPONENT.Component, {
      useUpdateCallback: true
      })
  • Go to your application:
    • go to UI.
    • go to the tab (STUDIO.Tab) where your configurator is located.
    • set the optional argument instantUpdate to true.
    • you should have the following as an example:
    const productTab = new STUDIO.Tab('Product', generateProductToolbarItems, {
    instantUpdate: true
    })
    Updating a model instantly when moving a slider means that generateGeometry() function is called more frequently, so this is usually suitable for simple models and this could affect your app's performance, especially in larger products, but you can easily turn this off by writing instantUpdate: false instead.

My app is slow! What can I do to improve performance?

Everyone wants to have a dynamic product that updates very fast with certain parameters. This is one of the strengths of using DynaMaker and here are some tips you can try to improve the performance of your app:

  • Avoid calling the same function several times when maybe just once is enough.
  • 2D sketches are much faster to update than 3D models.
    • Think if you need to have 3D models in all the steps of your application
    • Try to have the 3D steps only when you don't update your model and you just need it for visualization (e.g. exports).
  • Usually, curves require more calculations than straight lines, especially in 3D models. Try to only use them when they are strictly needed, such as drawings or final 3D models (STL files).
  • addExtrude() and addExtrudeCut() can be performed with a sketch that consists of multiple closed sketches at the same time. For example:
    • a hollowed cylinder can be done with 2 concentric circle sketches and one single extrude (no extrude cuts).
    • multiple holes (circle sketches) can be cut extruded at the same time if they are merged into a single sketch.
  • addExtrudeCut() usually requires heavy calculations. Try using sketches that includes holes with any boolean operation or merging sketches directly with sketchA.mergkeSketch(sketchB).

Why does my model flicker when updating parameters?

In DynaMaker, specially with heavy STL models, you might have run into a flickering problem when updating relatively fast your component with a slider parameter for example. This is mainly because the model is being created every time the component updates. Let's say that within the component, all the models are created in its generateGeometry(), therefore the models are not cached, discarded and created every time generateGeometry() is called. This can be easily avoided by creating the models outside of the function so they are "created" once and then properly cached.

As an example, you can take a look at the tutorial User Interface, where the roller component is created from 3 different STL models. In this case, these are created in GEOM3D and then the functions that get the models for generateGeometry() basically get the existing static asset created just above them. That is why the tutorial app takes a few seconds when creating the first section with multidirectional rollers and barely no time to create the second, the third and so on. Even if it's deleted, you will see that adding a new one will take no time because it has been already cached.

My parameter values are reset when switching tabs in the app.

One of the advantages with apps built in DynaMaker is that you can configure your product and never lose your work progress with your design through the application. However, one needs to be extra careful when the app grows in complexity with more and more parameters and configurators in different tabs.

A common problem happens when the user tries to switch between tabs and the parameters get reset to their default values. This could be mainly because of two scenarios with different complexity:

  • Scenario A: simply the default values of the parameters are not being set correctly. Remember that any parameter has a default value. It can be found in the optional arguments as eg. defaultValue for input-like parameters, or defaultIndex for dropdown-like parameters.

    However, for dropdown parameters there's an easier way to set default values based on actual values and not by index, and it's by setting the parameter value right after its creation. As an example of parameters with default values:

    // Input parameter
    const nrCoffees = component.getProperty('nrCoffees')

    const nrCoffeesParameter = SKYPARAM.generateInputParameter('nr-coffee-parameter', 'Nr Coffees', {
    defaultValue: nrCoffees, // here is the default value coming from properties
    minValue: 0,
    maxValue: 100,
    stepSize: 1
    }
    // Dropdown parameter using defaultIndex
    const coffeeFlavorParameter = SKYPARAM.generateDropdown('coffee-flavor-parameter', 'Coffee Flavor', [
    new SKYPARAM.DropdownItem(`Cappuccino`, CONSTANTS.COFFEE_FLAVOR.CAPPUCCINO),
    new SKYPARAM.DropdownItem(`Mocha`, CONSTANTS.COFFEE_FLAVOR.MOCHA),
    new SKYPARAM.DropdownItem(`Latte`, CONSTANTS.COFFEE_FLAVOR.LATTE),
    ], {
    defaultIndex: 1 // Mocha will be the default value, regardless of the property
    })
    // Dropdown parameter using setValue
    const coffeeFlavor = component.getProperty('coffeeFlavor')

    const coffeeFlavorParameter = SKYPARAM.generateDropdown('coffee-flavor-parameter', 'Coffee Flavor', [
    new SKYPARAM.DropdownItem(`Cappuccino`, CONSTANTS.COFFEE_FLAVOR.CAPPUCCINO),
    new SKYPARAM.DropdownItem(`Mocha`, CONSTANTS.COFFEE_FLAVOR.MOCHA),
    new SKYPARAM.DropdownItem(`Latte`, CONSTANTS.COFFEE_FLAVOR.LATTE),
    ])
    coffeeFlavorParameter.setValue(coffeeFlavor) // here is the default value coming from properties

    You can read more about the parameter optional arguments here

  • Scenario B: the configurator shown in the app's UI is created in an assembly's subcomponent, which for simplicity, could be cleared and added again to the component handler of the assembly (as it is done in the tutorial). One way to approach this problem could be to move all configurators (and related properties) to the top-level component (usually assembly), so that you update the properties once and pass them to the subcomponents accordingly.

    The risk of configurating a subcomponent directly is that if your product can not have this subcomponent in particular (eg. due to a parameter that disables it), then you might be configuring nothing, since it doesn't exist. Then, having the configurator in a component that always exist (like an assembly even if it has no subcomponents) could be the safer choice. Once you have the whole structure ready and think it's possible (and feasible) not to have all configurators in the assembly, then you can start moving the configurators to the subcomponents.

Components and Models

Something is wrong with my model. How can I fix it?

Sometimes we think that the problem is in the model, but it usually comes from the sketches that generate them. Some tips:

  • when cut/extruding, try to have a closed sketch. Make sure you end the sketch with sketch.lineToId(0) or sketch.curveToId(0) to return to the first node 0.

  • when doing cuts, try making the like extrusions (model.union() or model.addExtrude()) to see where they end up. If for some reason, it collides with another model (eg. holes), try changing the opacity of the model material to help you see it.

Imports and Exports

How can I download geometries as STEP files?

In DynaMaker there is no built-in functionality for converting geometries to STEP files yet. You can reach us at support@dynamaker.com and we can help you enable it for your specific case.

How can I download my PDF drawing through a button?

You can read more about download files of any available type in this how-to example.

How can I generate and download a BOM through a button?

You can read more about an example in this how-to example, where you could learn how to generate the BOM and use it both to download and show it in your drawings at the same time!


I'm stuck and none of the above solved my problem. Could you help me please?

Of course! We are happy to help you to solve any other problem. Contact us at support@dynamaker.com.