We have added the ability to pass custom information from the L! workbook (local prompts) to the S! workbook (subassemblies). Without that ability, the number of prompts is greater, and the complexity of formulas increases. When the formula complexity increases, it often becomes necessary to create a lookup table. These complex formulas and lookup tables result in products that are less intuitive and more difficult to maintain. This change simplifies the data and improves the flexibility of utilizing prompts for various purposes.
Think of your library data existing in several layers. The top layer is the parent product with its prompts, the second level is the parent subassembly with its prompts, and the third level is the child or nested subassembly with its prompts. Use this enhanced ability to pass prompt values between layers anywhere you need to avoid redundancy and complexity by ‘reusing’ upper-level prompt values in lower levels of the library data structure.
It makes it possible to have a single subassembly that can be used across different libraries (e.g., frameless and face frame). The beauty lies in the fact that the product contains an expression or formula that overwrites the target subassembly prompt value. In contrast, the basic subassembly remains the same between multiple library types.
To make this possible, the program contains a column in the Subassemblies tab of Edit Design Data named “Prompt Values,” or in the Parts List interface - spreadsheet column number 43 on sheet 3. The expression or formula in that cell defines the data that is passed to the prompts for that subassembly.
For example, you may want to set the door swings on two “Base Single Door” subassemblies to match the swing specified by the product level bay swing prompts. Previously this was accomplished with the use of formulas and lookup tables, but those formulas ultimately limited what could be done and sometimes resulted in very complex formulas that were difficult to maintain and diagnose. The complex formulas may now be replaced with prompts data passed to the subassembly from the parent product. This example and another are discussed in further detail in the tutorials: “Tutorial #1: PassingPrompt Information Between Workbooks (Doors)” and “Tutorial #2: PassingPrompt Information Between Workbooks (Face Frames).”
The format for the expression in the Prompt Values column of the Subassemblies tab that defines the data passed is as follows.
PROMPT_NAME is the subassembly prompt name that will receive the data passed. It must be the same name, in the same format, as the subassembly prompt name that is will modify. The program looks for a subassembly prompt named the same as the PROMPT_NAME parameter defined here. When it finds that name, it populates it with the value defined in the second parameter (PROMPT_VALUE).
PROMPT_VALUE is the value that you want to be passed to the subassembly. It may be a hard value or the value linked to a defined name. When the program finds a subassembly prompt named identically to the name defined in the PROMPT_NAME parameter described above, this value is populated to that prompt.
Enter the prompt name and the value you want to set for that prompt separated by a semi-colon. If needed, you may add a second or third name/value pair. Separate multiple prompt data to pass to the S! workbook with a pipe symbol. Concatenate or attach the various parts of the formula with an ampersand character.
You may also configure subassembly prompts that do not exist at the parent product level. Figure 1 contains an example of this (Lock_Door). It illustrates a data definition expression or formula containing defined name values, hard values, pipe delimiter characters, and the ampersand character.
Figure 2 contains an example of defined names, pipe delimiter characters, and the ampersand character, but no hard values.
This same expression format also works when passing information from the S! workbook (subassembly) to the N! workbook (nested subassembly). In that case, all the information above, referring to the parent product prompts, would now refer to the parent subassembly prompts, and all the information referring to the first level of subassembly would now refer to the second level or child (nested) subassembly.
As stated above, this new method of passing data between workbooks significantly simplifies the library data structure. For example, it makes it possible to bypass VLOOKUP tables in many cases. See the figures below to see how this is possible.
Figures 3 & 4 show the previous method of setting the door swing of a Base Single Door subassembly. It involved the use of a VLOOKUP table, acting as an intermediary between the product prompt and the subassembly prompt. This example illustrates a simple lookup table, but the same principle holds true for more complex lookup tables.
Notice that the value of the subassembly prompt Left_Swing is shown in red, meaning that it is an evaluated formula. Verify that by looking at the VLOOKUP function in the formula bar.
Figure 5 shows a new method for setting the door swing of a Base Single Door subassembly. It eliminates the complexity of the lookup table in favor of a simple formula to pass the data through to the subassembly prompts.
Notice that the value of the subassembly prompt Left_Swing is now shown in black, meaning that it is a hard value. Verify that by looking at the formula bar where the parent product prompt value has been populated.
The first local prompts passed through to the subassemblies were Width, Height, and Depth, numeric data.
More than just the dimension data was needed, so the program was adapted to pass X origin, Y origin, Z origin, and subassembly Rotation angle. This is numeric data.
There was still a need to pass non-numeric data. The program was again adapted, this time to pass a text string from the Subassembly Comments field.
The Subassembly Comments field was limited because it required that multiple data be concatenated into a single string, passed through, and then parsed out to be of any use. Our developers decided that it should be possible to pass any prompt value through and available for use in the subassemblies and nested subassemblies. This is the change made in build 15.5.1305.
See the articles: “Tutorial #1: PassingPrompt Information Between Workbooks (Doors)” and “Tutorial #2: PassingPrompt Information Between Workbooks (Face Frames)” for more detailed information on how to implement this functionality.