If you need to export your 3D models from AutoCAD to SolidWorks, Inventor, or other high-end CAD software, you may find it necessary to create a block for each individual part—that is, for every separate 3D solid. While BricsCAD offers an excellent "Blockify" command, it cannot preserve the detailed part data generated by A>V>C> plugins. The "Pack solids" (SPack) command solves this issue: it "packs" all the solids in your model into individual blocks, ensuring that identical parts are assigned to the same block definition. Furthermore, all part descriptions—such as names, dimensions, and edge details—are transferred into constant attributes within these blocks, allowing the data to remain accessible even after the DWG file is imported into another CAD system.
Identifying identical solids, regardless of their orientation within the model.
Creating blocks, each containing a single solid oriented to the XY plane.
Naming blocks according to a specified template.
Adding constant, invisible attributes to the blocks, containing useful information about each solid.
Replacing the original solids with the newly created blocks.
Operating within nested assembly blocks.
Invoking the "Expose Assemblies" command to display all the newly created blocks (requires a separate license).
Quickly switching between multiple sets of configuration settings (packing styles).
Use this program only for exporting to other CAD systems. Save your source file BEFORE replacing solids with blocks. Neither A>V>C> programs nor standard modeling commands will work with solids that have been packed into blocks.
To unpack solids from blocks, use the "Unpack" command.
You can configure the program’s operation in advance. To do so, open the A>V>C> Options Palette (AvcOptions) and navigate to the "Pack solids" tab.
Assign names to your solids beforehand using the "Numbering" (AvcNum) command or the A>V>C> Properties palette.
Select the parts you wish to process—or the entire assembly—and then run the "SPack" command.
If no objects are pre-selected, the program will prompt you to choose them. In the command line, you will see the following options:
"SwitchStyle" – allows for quick toggling between different program styles.
"TUNE" – opens the settings dialog.
Certain selected objects may be excluded (filtered out). You can pre-configure filters based on solid names, materials, or manufacturing technologies. This section also controls how the program handles block-assemblies; if block-assemblies are selected, the program will include all solids contained within them—including those in nested blocks—in the processing list.
Next, the "SPack" command makes the metric of all solids to identify identical ones (regardless of their orientation in space). The process always employs precise vertex-based comparison, as well as checks for geometric and visual similarity. Furthermore, all solid properties stored in the "AVC_Names" XData can be factored into the comparison. A virtual table of parts is generated, with a unique block created for each part. Within these blocks, the solids are laid out on the XY plane—similar to the behavior of the "Layout" LAY command—though parts with transverse grain/texture are not rotated along the Y-axis.
If the option to replace solids with blocks is enabled, the program will remove the original solids and insert the new blocks at the same location and with the same rotation. Additionally, if the selection includes solids that are mirror images of one another, the corresponding blocks will be mirrored accordingly. Theoretically, the appearance of the product will remain unchanged, but it will now consist entirely of blocks. Carefully verify the result of this replacement, as the program may occasionally make errors.
The program can also execute the "Expose Assemblies" command, which inserts one instance of each block into the model. The program automatically selects an empty area to the right of and below the existing drawing objects for the placement of these blocks. The quantity labels within the header of each block will indicate how many identical solids were identified.
If neither the replacement nor the "Expose Assemblies" option is enabled, the blocks will be created only within an internal, hidden block table. You will be able to see them only via the "Insert Block" (I) command or within the Drawing Tree.
Upon completion, the program will display the total number of parts processed and the number of solids replaced by blocks in the command line.
Pay close attention to the messages in the command line, as this is where error notifications and other useful information are displayed.
You can configure the Pack solids program in the A>V>C> Options Palette or in the dialog called from the command options (click the TUNE option).
You can create up to 9 settings styles and quickly switch them by number from the command line or from macros. The style switcher and the buttons for adding and deleting a style are in the header of the settings tab.
The name for this set of settings. Does not affect the operation of the program, just for your convenience in choosing a style.
Defines the name for each block created. You can use substitutions in the template based on the properties of the source solid—such as %name%, %kind%, dimensions, material, or custom properties. The default value is "Part %block:{0}.%%name%". This means the block name will consist of the word "Part," the name of the assembly in which the part was found, and the name of the part itself. If the template includes %name% or %kind%, separate "Name" and "Kind" attributes are not created, as this information is already contained within the block name.
If a block with the same name already exists in the drawing when the SPack command is invoked, the program will replace the existing block content with the solid. If that block has already been inserted elsewhere in the drawing, you will see this replacement take effect. However, these existing block insertions do not affect the part count shown in the "Expose Assemblies" header—the program will display the exact number of solids you have selected.
If the naming template is not configured correctly, resulting in identical names for blocks representing different parts, the program will automatically append a suffix (e.g., _1, _2, _3, etc.) to the block name. For example, if your template lacks a substitution for "Texture," but you have identical parts with different texture orientations, the program will create two distinct blocks with the same base name, appending "_1" to the second one. Similarly, if your solids lack names, the resulting blocks will simply be identified by numbers.
Transfers data from the solid’s `AVC_Name` xData—such as name, grade, flat-pattern indicator, grain direction, and custom user-defined properties—into the block’s persistent attributes. The solid’s description is also written to the block’s description field.
The "Name" and "Grade" attributes are not created if this data is already present in the block name template.
If this option is enabled, identical parts with different data (e.g., different descriptions, grain directions, etc.) will be grouped into separate blocks. In such cases, the block names may include numerical suffixes. However, you can update the block name template to include placeholders for these properties, which will prevent the program from needing to append a number to the block name.
Writes the solid’s metrics—derived from the `AVC_Metric` xData—into the block’s properties. This includes dimensions (length, width, thickness), perimeter, area, volume, weight, and cost. Additionally, the following attributes are created:
• manufacturing method;
• number of faces;
• presence of machining on the front, back, or side faces;
• presence of slopes;
• chirality;
• blank dimensions (if different from the finished part dimensions);
• dimensions in millimeters (if the drawing units are not millimeters).
Where possible, the attribute names used are those configured in the "Block Metrics" command; for instance, the length will be mapped to "Size X." You may customize these names.
Furthermore, a "Material" attribute is created to store the name of the solid’s actual material (including materials assigned via layers).
Creates attributes for the materials applied to the front and back faces, as well as the materials for the edges on all four sides (left, right, top, and bottom, based on the layout). These attributes are generated only if a material has been assigned to the respective faces.
If this option is enabled, a distinct, separate block is created for mirrored copies of a solid. If disabled, mirrored solids are replaced by an instance of the same block, reflected along the X-axis (with an X-scale factor of -1). If all identical solids are mirrored, the mirrored solid serves as the template for the block. Note that if the original solid was explicitly tagged as "mirrored," the program will insert a truly mirrored block in its place—please exercise caution.
This removes the original solids and replaces them with instances of the newly created blocks. These instances retain the position, orientation, and layer of the original solids. Solids located on locked layers are not replaced, though they are still included in the quantity count. If this option is disabled, blocks are created only within the block table, leaving the model itself unchanged. In other words, if you do not enable either the replacement of solids or the placement of blocks, the command will produce no visible changes within your model.
Once the "packing" process is complete, this triggers the "Expose Assemblies" command—applied here to the new part-blocks rather than assemblies. All settings are derived from the current "Expose" style configuration. For each block, a single instance is created, accompanied by a label (header) that can display the quantity of original solids, broken down into standard and mirrored versions. This Expose feature functions even if the solids were not replaced by blocks. A separate license is required.
This filter determines which of the selected solids are included in the packing process—based on criteria such as layer, visibility, lock status, etc. Identical solids are always grouped together based on matching geometry and appearance. Whether mirrored solids are grouped with their counterparts or handled separately depends on the "Separate blocks for mirrored objects" setting.