DRY0020 - COPY REFERENCES IN POSITION - DOCUMENTATION

DRY0020 - Copy References in Position

Copy a Body into another Part while keeping its exact position relative to the assembly.

DRYCAD Suite | User Documentation | v1.0.0


Table of Contents

  1. Overview
  2. Getting Started
  3. The Copying Workflow
  4. Configuration: settings.ini
  5. Examples
  6. Troubleshooting
  7. Version History

1. Overview

Working across a multi-body assembly usually means the geometry you need as a reference, a keep-out volume, a mating surface, a shared datum, lives in a different part than the one you’re currently designing. Recreating it by hand means redoing the positioning work every single time. DRY0020 removes that step: it copies a Body from any part in the active assembly into a destination Part, keeping the exact position that Body had relative to the top-level product, with no manual repositioning or constraints required afterward.

What it does:

  • Copies a Body from a selected reference part into a destination Part, preserving its true assembly-relative position.
  • Automatically identifies the correct Body to copy when only one candidate qualifies, and prompts for a manual pick when more than one does.
  • Applies a configurable name, color, line width, and opacity to every copied Body, so referenced geometry stands out from native design geometry.
  • Supports copying from multiple reference parts in a single working session, with a built-in undo for the most recent copy.

Supported CAD platforms: CATIA V5

Workspace requirement: An active Product document with at least two Product instances present. The tool exits immediately if these conditions aren’t met.


2. Getting Started

Prerequisites

  • CATIA V5 must be running, with a Product document active.
  • The active product must contain at least two Product instances, one to act as the destination, at least one to act as a reference.
  • The destination Part must be reachable in design mode from the assembly tree.

Launching the Tool

DRY0020 is launched from the DRYCAD Suite CommandBar inside CATIA V5. Click the corresponding button to start the tool.

The tool checks the following conditions at startup, and will show an error and close if any fail:

  • A logged-in DRYCAD Suite user is available.
  • CATIA is running and reachable.
  • The active workspace is a Product document.
  • The active product contains at least two Product instances.

If the last check fails, the tool shows “Current product has not enough Product Instances to perform the copy.” and closes without starting the copy workflow. This is not a bug to troubleshoot around, the tool has nothing to copy between if there’s only one component in the assembly.


3. The Copying Workflow

DRY0020 has no persistent panel. Once started, it drives the session entirely through CATIA’s own selection prompts and message boxes, one step at a time.

3.1 Selecting the destination Part

The first prompt asks you to select the destination Part, the part the copied geometry will be pasted into. Selection is restricted to Product-type elements in the tree.

The prompt cannot be dismissed with a valid outcome unless a Product is actually picked; canceling here ends the session before any copying begins, since there is nothing yet to copy into.

3.2 Selecting a reference to copy from

The tool then repeatedly prompts “SELECT BODY TO COPY… (ESC to EXIT)”, asking you to pick the Product instance that holds the geometry you want to bring across. Each pass through this prompt copies one Body and then loops back to ask for the next reference, press ESC at this prompt to end the session.

3.3 Automatic vs. manual Body selection

Once a reference Product is picked, DRY0020 scans every Body inside its Part and narrows the list down to genuinely valid candidates. A Body only counts as valid if all of the following are true:

  • It is not part of a boolean operation.
  • It contains at least one shape (it isn’t empty).
  • It is currently visible in the 3D view.
  • Its name doesn’t match any of the configured prefixes, suffixes, or substrings to skip (see Section 4).

What happens next depends on how many Bodies pass all four checks:

  • Zero valid Bodies, the tool shows “Selected Part has no valid Bodies to copy…” and returns to the reference-selection prompt so you can pick a different Product.
  • Exactly one valid Body, it’s copied automatically, with no further prompt.
  • More than one valid Body, the tool shows a warning that more than one valid Body exists, and asks you to manually select the one to copy directly from the reference part’s tree.

This automatic-vs-manual behavior exists so that unambiguous cases don’t interrupt your flow, while genuinely ambiguous ones never guess on your behalf.

Why was my Body skipped by automatic detection?

  • It’s consumed by a boolean operation elsewhere in the part.
  • It has no shapes, it’s an empty Body.
  • It’s hidden in the 3D view (visibility is checked, not just tree presence).
  • Its name starts with, ends with, or contains one of the strings configured in BODY_NAME_PREFIXES_TO_SKIP, BODY_NAME_SUFFIXES_TO_SKIP, or BODY_NAME_SUBSTRINGS_TO_SKIP, by default this excludes anything named with a HELICOIL, HELI-COIL, or DATUM prefix, so existing reference geometry doesn’t get re-copied on top of itself.

3.4 The copy itself

Once a Body is identified, automatically or manually, it’s copied from the reference Part and pasted into the destination Part as a result body. The new Body then has its color, line width, and opacity set from settings.ini, and is renamed using the configured naming template (see Section 4).

3.5 Undo

If the selection prompt in Section 3.2 reports an Undo action, triggered from the Undo control in CATIA’s own selection toolbar, DRY0020 deletes the most recently added Body from the destination Part, reverting the body count to what it was when the session started.

Why didn’t Undo remove anything?

  • Undo only removes the single most recent copy. It cannot step back further than one operation.
  • If the destination Part’s Body count already matches its count from the start of the session, for example, if nothing has been copied yet, or a previous Undo already reverted the last copy, the Undo request is silently ignored, since there’s nothing left to revert.

4. Configuration: settings.ini

File Location

<install_folder>/DRY0020/settings.ini

Structure

[Naming Conventions]
BODY_NAME_PREFIXES_TO_SKIP="HELICOIL;HELI-COIL;DATUM"
BODY_NAME_SUFFIXES_TO_SKIP=""
BODY_NAME_SUBSTRINGS_TO_SKIP=""
CASE_SENSITIVE_NAMING=0
COPIED_BODY_NAME="DATUM_[SOURCEPART]:[SOURCEBODY] (relative position from [SOURCEPRODUCT])"

[Graphic Properties]
COPIED_BODY_COLOR="96,112,192"
COPIED_BODY_LINEWIDTH=1
COPEID_BODY_OPACITY=

Lines starting with ; are comments and are ignored.

Parameters

BODY_NAME_PREFIXES_TO_SKIP

PropertyValue
Section[Naming Conventions]
TypeList of strings, separated by ;
RequiredNo
DefaultHELICOIL;HELI-COIL;DATUM

Any Body whose name starts with one of these strings is excluded from automatic candidate detection (see Section 3.3).

BODY_NAME_SUFFIXES_TO_SKIP

PropertyValue
Section[Naming Conventions]
TypeList of strings, separated by ;
RequiredNo
Default(empty)

Any Body whose name ends with one of these strings is excluded from automatic candidate detection.

BODY_NAME_SUBSTRINGS_TO_SKIP

PropertyValue
Section[Naming Conventions]
TypeList of strings, separated by ;
RequiredNo
Default(empty)

Any Body whose name contains one of these strings anywhere is excluded from automatic candidate detection.

CASE_SENSITIVE_NAMING

PropertyValue
Section[Naming Conventions]
TypeBoolean (0 / 1)
RequiredNo
Default0 (False)

Controls whether the prefix, suffix, and substring comparisons above are case-sensitive.

COPIED_BODY_NAME

PropertyValue
Section[Naming Conventions]
TypeString template
RequiredNo
DefaultDATUM_[SOURCEPART]:[SOURCEBODY] (relative position from [SOURCEPRODUCT])

The name applied to every copied Body. Supports three placeholders:

  • [SOURCEPART], the part number of the reference Part.
  • [SOURCEBODY], the name of the reference Body.
  • [SOURCEPRODUCT], the part number of the top-level active product.

Leaving this value empty skips renaming, and the copied Body keeps CATIA’s default result-body name.

COPIED_BODY_NAME="DATUM_[SOURCEPART]:[SOURCEBODY] (relative position from [SOURCEPRODUCT])"

COPIED_BODY_COLOR

PropertyValue
Section[Graphic Properties]
TypeRGB triplet (R,G,B, each 0–255)
RequiredNo
Default96,112,192

The color applied to every copied Body. Leaving this empty keeps CATIA’s default color for the copied geometry.

COPIED_BODY_LINEWIDTH

PropertyValue
Section[Graphic Properties]
TypeInteger, 1–8
RequiredNo
Default1

The line width applied to the copied Body’s edges. Values outside 1–8 are treated as unset, and CATIA’s default line width is kept.

COPEID_BODY_OPACITY

PropertyValue
Section[Graphic Properties]
TypeDecimal, 0.0–1.0
RequiredNo
Default(empty, CATIA default opacity)

The opacity applied to the copied Body, where 0.0 is fully transparent and 1.0 is fully opaque. Leaving this empty keeps CATIA’s default opacity.

COPEID_BODY_OPACITY=0.6

5. Examples

Example 1, Default keep-out reference

Using the default settings shown in Section 4, copying a keep-out volume named KEEPOUT_ENGINE_BAY from part PN-1001 while the active top-level product is PN-9000:

COPIED_BODY_NAME="DATUM_[SOURCEPART]:[SOURCEBODY] (relative position from [SOURCEPRODUCT])"
COPIED_BODY_COLOR="96,112,192"
COPIED_BODY_LINEWIDTH=1
COPEID_BODY_OPACITY=

What it creates: A Body named DATUM_PN-1001:KEEPOUT_ENGINE_BAY (relative position from PN-9000), colored blue, at the same position it held in the assembly.

Key points:

  • The generated name identifies both the origin part and the origin body at a glance.
  • The blue tint makes it immediately clear this Body is a copied reference, not native design geometry.

Example 2, Fully opaque, custom naming

For teams that prefer a plain naming scheme and a solid, non-transparent copy:

COPIED_BODY_NAME="REF_[SOURCEBODY]"
COPIED_BODY_COLOR="200,60,60"
COPIED_BODY_LINEWIDTH=2
COPEID_BODY_OPACITY=1.0

What it creates: A Body named REF_KEEPOUT_ENGINE_BAY, in solid red with a heavier outline, fully opaque.

Key points:

  • Dropping [SOURCEPART] and [SOURCEPRODUCT] from the template keeps names short when the source context is obvious from the assembly itself.
  • A heavier line width and full opacity make the copy easy to spot even in dense, cluttered assemblies.

6. Troubleshooting

”Current product has not enough Product Instances to perform the copy.”

The active product contains fewer than two Product instances. Insert at least one more component into the assembly, or activate a higher-level product that already contains multiple instances.


”Selected Part has no valid Bodies to copy…”

None of the Bodies in the selected reference Part passed the validity checks in Section 3.3. Check that the Body you expect to copy is visible, is not consumed by a boolean operation, contains at least one shape, and doesn’t match a configured skip rule.


”An error occurred copying the selected Body into the destination Part…”

The copy/paste operation itself failed after a valid Body was identified. Confirm the destination Part is not read-only, is in design mode, and that CATIA has no pending modal dialogs open elsewhere in the session.


”CATIA is not open. Please open CATIA and try again.”

DRY0020 could not find a running CATIA process when launched. Start CATIA V5 first, then launch the tool again.


Nothing happens when I select Undo

  1. Confirm a Body has actually been copied earlier in the current session, Undo only reverts the single most recent copy.
  2. Confirm you haven’t already undone that copy; a second consecutive Undo has nothing left to revert and is silently ignored.

7. Version History

VersionDateChanges
1.0.02026-07Initial release

DRY0020, Copy References in Position | DRYCAD Solutions | v1.0.0