AnsweredAssumed Answered

Dynamic Linking of Objects/Parameters aka "Parametric Modelling"

Question asked by Ray Volker on Jun 16, 2019
Latest reply on Jun 17, 2019 by Ray Volker

I'm sure this can't be done currently in TBC. But I deal with creating complex surfaces with drains/channels/pads and roadways, mainly in an Agricultural space. The problem I face is the interconnectedness of all these objects, so changing the elevation of a Pad needs to change the depth of a drain and/or height of a roadway and vice/versa. So there can be many of these objects/surfaces in the overall project. When I'm designing these objects (drains/channels/roads/pads etc) they have predefined dependencies on other objects. eg a drain will need to be 400mm below a pad and fall at 0.05% grade and repeat for each pad it passes. So raising a Pad or multiple Pads (btw each pads needs to be 200mm below the next as another constraint) needs to change the drain height at certain distance along the the drain. You can imagine how complex this gets when doing simple modifications has a ripple effect of changing many other objects. Then when trying to balance Cut/Fill and optimise for Mass Haul costs this is very slow and time consuming with many iterations.


I would like to propose an extension/addition to TBC which you can "Dynamically Link" parameters objects to other object parameters.


A simple example:

Linking the Station/Elevation of VPI points of a Alignment/Linestring to another Linestring/surface elevation. Could be a pseudo scripting method like "Smart Text". Pick the object, then parameter and "=" other Object/Parameter (or even ">=" or Mathematical relationship ("Value" - 0.400m).


If made in a "General" form it could help "Dynamically" link objects just like Alignments are linked to Corridors, change alignment and Corridor updates automatically (or manually if selected). But with much added  potential?


I would just do this myself with a Macro system, but alas I'm not even close to being able to do that. 


Now here is the mind blowing part. So if I have a "list" of Objects and there "adjustable" parameters (with Min/Max and step ranges) and a desirable outcome minimum Cut/Fill volume and/or Haul Distance. Then Let the computer change any/all of these parameters (at certain steps) and optimise for desired outcome and give Top 5 solutions. What I mean is let the computer go all night or days if needed and see what comes outs. This isn't Machine Learning AI, that's a whole other thing.


I typically spends many weeks just trying to tweak these things to try and get a desirable outcome, so I think this could save me an Immense amount of time. I can also start another instance of TBC and continue with other projects while it works away at a problem (seeing it's using only about 1-2 cores of a CPU anyway/instance). Might be nice to log the parameters and changes and outcomes to view in Report/Graph to see with human interwishen and maybe go with a non-optimal but good enough result at the end for some reason. 


To me this is "similar" to a template in a corridor, but multiple layers deep. Yes if I add a linestring to a corridor and then change the linestring it updates the corridor accordingly. But if something else could alter the linestring which in turn altered the corridor, which then adds to another surface, so on and so forth. You see where I'm going, multiple objects affecting multiple objects. Yes there might need to be thousands of iterations/calculations, but that's what computers a good for, right.


Trimble could maybe even spin this out to its own module addon to make some more money for R&D?


I see this is having wide reaching potential and basically being a Parametric Design Tool. 



Alan Sharp