CTS_Group and Component V1.0.3
CAD Tools Studio

INSTALLATION
Open Extensions > Extension Manager > Install Extension in desktop SketchUp.
Choose CTS_Group_and_Component_V1.0.3.rbz, then restart SketchUp. This update
uses the existing extension loader and folder names.

RANDOM SELECTION / SHUFFLE
1. Select the full set of groups/components before opening the toolbar tool.
2. Choose Groups, Components, or Groups + Components.
3. Choose Count or Percent and enter the amount.
4. Click Shuffle. Click again for a different selection from the original set.
5. Close the dialog to keep the current selection. To start with another set,
   close the dialog, select that set, and open the tool again.

Sampling is uniform without replacement. Immediate repeated subsets are redrawn
uniformly; older subsets may recur. Selecting every item or zero items has only
one possible result. Positive percentages select at least one available item;
percentages round to whole items. Counts above the available number are clamped.
Deleted or relocated items are excluded. Reopen the tool after changing the
editing context or switching models. This tool changes selection only.

SELECTION ORDER
Select faces, groups or components one by one in the desired sequence.
In a conversion or Batch Rename tool, Selection Order is the default.
For Connected islands, the first selected entity determines the island position.
Removing an entity and selecting it again moves it later in the sequence.
A window selection, Select All, or selection made before extension loading has
no recorded individual sequence; stable entity order is used within that batch.
Select items one by one before opening the tool to specify an exact sequence.

LINKING SEPARATE SURFACES, INCLUDING THE ORIGINAL
Select the original and matching separate surfaces. Open Make Loose to Component,
set Selection mode to Each closed face and Component type to Linked same shape.
Choose the numbering order, preview, and press Enter to create the components.
The original and every matching surface share the same definition from creation.
Editing a linked instance updates all its matching instances. Touching and
separate surfaces follow the same per-face creation path.

Conversion linking requires matching geometry, orientation, front/back materials
and edge appearance. Different shapes or finishes remain unique. Conversion
linking does not identify rotated, mirrored or nested equivalents.
Inspect Linked Components counts all linked instances, including the original.

AXES AND PREVIEW
Per-face components use the minimum bounding corner by default. Pick Axis Point
in Model sets a relative origin on the first item for every component. Corners,
edge midpoints and face centers snap. Right/Left/Up arrows lock red/green/blue;
Down unlocks. Geometry stays in position. In preview, R reverses numbering,
Enter creates/applies, and Esc cancels. Action buttons stay visible while scrolling.

VALIDATION
Ruby syntax and conversion/naming regression checks cover selection sequence,
original-and-copy linking, holes, materials, axes and axis sorting.
Random-selection checks cover counts, percentages, unbiased sampling, repeated
shuffles, type filters, original-set preservation, deleted objects and callbacks.
Browser checks cover the simplified dialog, numbering menus and visible actions.
These tests use SketchUp API doubles; native desktop testing was not available.

POSSIBLE FUTURE ADDITIONS
- Remember naming, selection mode and component type settings.
- Link rotated/mirrored equivalent shapes during conversion.
- Import object names from CSV for furniture or construction schedules.

API REFERENCES
https://ruby.sketchup.com/Sketchup/Selection.html
https://ruby.sketchup.com/Sketchup/SelectionObserver.html
https://ruby.sketchup.com/Sketchup/ComponentInstance.html

Help and updates: https://cadtoolsstudio.com/
