A powerful aspect of kBridge is its ability to allow us to re-use Rules. One way that it does this is through generic parts—that is, a single Design that can be Parameterized to serve many purposes.
It acts as a ‘smart’ Design.
A generic Design is one that defines Parameter rules for everything it needs from the outside world—most often, from end-users—along with default expressions for those rules that make sense in general.
In this way, a given Design can be used on its own or in any model tree that requires it. It can be a Child of any Parent that can pass the required info needed by its Parameters. It does not make any assumptions about the context or model in which it is used.
For example, if we are designing a dresser, we might want to define a single, generic drawer, then parameterize that drawer such that our dresser can have both big drawers and small drawers. Our generic drawer may have Rules that are Parameters, such as the following:
•Width
•Height
•Depth
•Number of knobs
Now, whenever we want to add a certain type of drawer, the Child Rule that specifies the drawer can provide a new formula for Parameters specific to that drawer. Each drawer instance can be different and each can suit its location and purpose—but all are built from the same generic part.