ORDERED SEQUENCE PICKING / ASSEMBLY PICK LEVEL · 1.0.0
Build: 2026-11-04-sequence-order-assembly-picking

MOTIONS > SEQUENCES
Pick in order appends sequence steps by clicking animated groups/components in the viewport. Choose Open or Close, click parts in the required order, then Done, Enter or Esc. Numbered outlines identify the order. Timing switches to One after another so zero-wait steps still play in the clicked order. Save the sequence to persist it in the SKP and use that sequence in Export. Existing manual Add step, reorder arrows, wait values and timing choices remain available after picking.

Picks use the saved motion owner. Nested hardware, linked rails and folding/sliding followers resolve to their animated assembly. An owner is added once per picking round; to add its Close action later, finish, choose Close and start another round. Objects without a saved motion need Set motion > Save first. The sequence limit remains 100 steps. Picking changes the draft list only; it does not move geometry or write Undo operations. Save is one normal Undo step. Hover uses cached instance paths, numbered bounds are cached per picking round, and saving resolves the motion catalog once for all steps.

ASSEMBLY PHASES
The new Pick dropdown offers Whole group (default) and Inner component. Whole selects the actual outer group in the current edit context with every nested part. Inner selects the deepest clicked group/component. Tab cycles levels before clicking, for example to choose one complete nested drawer within a cabinet. The choice is remembered separately for Assembly phases and can change while picking. Picks stay in click/list order unless the existing sort/reverse controls explicitly change it. Use selection keeps the native selection supplied by SketchUp.

Re-picking a parent/child replaces overlapping assembly-list entries at their first position, so a parent and its contents are not animated twice. Exact duplicate clicks are ignored. This affects the draft clip list only; model geometry, component hierarchy and existing door motions remain unchanged.

CHECKS / INSTALL
Automated checks cover group/component click order, nested knobs and linked owners, Open/Close passes, sequential save/export timings, Undo/Redo including Undo while picking, Done/Enter/Esc, step caps, locked/unconfigured guards, stale UI sessions, Whole/Inner switching, parent/child list replacement, retained part order, preference persistence and compact footer layouts. Native SketchUp/exact-model verification remains outstanding. Install the RBZ and fully restart SketchUp. Public version remains 1.0.0 and the Desktop 2021–2027 compatibility target is retained.

Previous release notes follow.

BACK EDGE / LEFT-FIRST PAIRS / POSITIVE SWING DEFAULTS · 1.0.0
Build: 2026-11-04-back-left-positive-defaults

New hinge setups default to Back edge in Batch and in the concealed-hinge settings of Set motion. Simple pivot still follows the exact edge/points picked in the model. Paired doors start on Left / first edge; with Mirror every alternate door enabled, the next door uses Right / last edge. This Left/Right pattern restarts for each detected row. Bifold's first-hinge side remains separately adjustable and starts Left.

Set motion: choosing Swing explicitly makes the angle positive about the selected positive world axis, even when the part was already Swing with a previously negative direction. The picked hinge line and angle magnitude are retained. A fresh Swing starts at +90 degrees about world +Z. Reverse then deliberately selects the opposite sign. For rotation, positive refers to the angle about the chosen world-positive axis; actual door travel depends on the hinge location and cabinet orientation.

Loading an existing motion alone preserves its saved angle, edge and direction. Preview/Save keeps the explicit Swing change; Cancel restores the original pose/settings. Existing manual edge choices, copied/preset movements and saved directions are not globally overwritten. New defaults are used in fresh setup windows; active manual choices in an already-open window are retained. Install and fully restart SketchUp after updating.

Checks: Back-edge DOM/backend defaults; actual Left/Right paired pivots; new +90/world+Z; explicit Swing positive sign under rotated/mirrored/scaled parents; Reverse; saved-open Cancel; repeated Preview/edit; simulated Undo/Redo; hinge clearance and compact UI. Native SketchUp/exact-model testing remains outstanding. Version stays 1.0.0.

Previous release notes follow.

BATCH ROWS / SETUP RECOVERY / COMPATIBILITY REVIEW · 1.0.0
Build: 2026-11-04-batch-rows-and-recovery

IMAGE 1: INWARD ROTATION
The warning is a clearance stop. Hinge Left/Right is now visible beside the opening settings. If the selected side and rotation point into the cabinet, Switch hinge side & preview chooses the suggested opposite hinge side without changing the angle, positive world axis, Reverse checkbox, gap or selected parts. This action is explicit; directions are never silently flipped. Check Cabinet front if Auto has inferred the wrong front for unusual imports. Real collision checks remain active.

IMAGE 2: DISCONNECTED FOLDING LEAVES
Batch detects matching rows/planes and connected neighbours before constructing hinges. Separate valid rows or banks produce independent chains (2–20 leaves each) in one setup, with one Undo step. A seven-part selection can form a 3-leaf chain and a 4-leaf chain when those are the actual adjacent rows. Chains do not bridge large gaps, combine upper/lower doors, explode groups or reparent geometry. Safe wrapper resolution works within separate cabinet containers. Independent chains can be clicked separately in Test motion and share the Preview/export timeline.
A lone leaf, a missing neighbour, a selected cabinet body or an ambiguous grouping is not forced into an invalid chain. The message names the isolated part; Review selected parts opens the retained list with container paths. Add its adjacent leaf, remove the unwanted object or use Paired doors for independent shutters. Paired-door mirroring restarts at the first door in each matching row instead of alternating through interleaved upper/lower picks.

OTHER CHECKS
Whole/Inner hierarchy picking, minimum 2mm Auto hinge clearance, 2–20-leaf chains, 2/3/4 sliding wardrobes, sound routing, copy/presets/mirror, repeated Preview/edit, old-open motion editing, Undo/Redo, live/export matrix equality and the compact footer are regression checked. Native SketchUp, renderer importers and the user's exact SKP are unavailable here. No guarantee of zero errors, a fixed 1ms latency or a particular GPU frame rate is made. Public version stays 1.0.0; Desktop 2021–2027 remains the compatibility target using Ruby 2.7-compatible syntax.

API REVIEW
PickHelper paths are relative to active entities; the active-path prefix and edit boundary are retained. Animation uses move! with cached transforms and no per-frame Undo operation. Saves/batches are ordinary sequential operations; history callbacks do not modify model entities. Invalid zero/flattened scales and malformed saved numeric vectors are rejected before native inverse/move calls, including the stricter inverse behavior from SketchUp 2026. Valid negative/mirrored and small non-zero scales remain supported. HtmlDialog callbacks stay asynchronous and do not depend on 2027-only structured return support.
Primary references:
https://ruby.sketchup.com/Sketchup/PickHelper.html
https://ruby.sketchup.com/Sketchup/Group.html
https://ruby.sketchup.com/Sketchup/Model.html
https://ruby.sketchup.com/Sketchup/ModelObserver.html
https://ruby.sketchup.com/Geom/Transformation.html
https://ruby.sketchup.com/UI/HtmlDialog.html

INSTALL
Install this RBZ and fully restart SketchUp. Close old motions before Batch setup. Keep Clear frame enabled, Auto shifts and the desired gap. Preview all, then Apply to parts. One existing door can be updated through Set motion > Preview > Save motion. If a selection contains an isolated/wrong part, follow its named diagnostic rather than disabling clearance.

Previous release notes follow.

MINIMUM HINGE CLEARANCE · 1.0.0
Build: 2026-11-04-minimum-hinge-clearance

Full/Half/Inset with Clear frame enabled and shifts set to Auto now use only the translation required by the rotated panel envelope and configured gap. They no longer add a thickness-based profile offset before checking clearance. The default gap remains 2mm. Front/Back hinge edges keep their separate geometric requirements; a Back edge may need a thickness-sized side correction to avoid the frame. Manual shift values and profiles with Clear frame disabled retain their previous behavior.

Install and restart SketchUp. Close previously saved motions using their existing path, then reapply the affected setup: Batch setup > select the shutters > choose the hinge profile > More options: Clear frame on, Outward Auto, Side shift Auto, Gap 2mm > Preview all > Apply to parts. For one door, Set motion offers minimum Auto offsets in its editable draft after closing/rebasing the original saved path; Preview and Save motion to keep the correction. Cancel restores the previous pose and saved settings. Manual shifts remain unchanged. Profiles without Clear frame need that option enabled before applying. Reapplying recalculates saved offsets. Existing saved animations in Test motion and presets keep their stored matrices until explicitly edited/reapplied, so an old open pose is never interpreted as a manually moved closed base. New copies/presets use their source's saved path; update the source and resave a preset if it still contains the older large offsets.

Verification: 24 paired-door fixtures sampled every degree from 0 to 90 include Full/Half/Inset, Front/Back edges, both hinge sides, rotated/scaled/mirrored parents. Tests check minimum boundary margins, neighbouring doors and cabinet-frame solids, cached/export matrix equality, exact closed poses, and old-open rebase compatibility. In the 18mm Inset/Front fixture at 90 degrees, unneeded outward stand-off drops from 20mm to 0mm, and side clearance from 5.4mm to the configured 2mm. These measurements are from fixtures, not the uploaded video's model. Native SketchUp and the exact SKP are unavailable here. The envelope fit is not a complete mechanical hardware solver; use Preview and Detailed model clearance for nearby custom frame/handle geometry.

Public version stays 1.0.0. Whole/Inner picking, other motions, sounds, toolbar and exports are retained. Previous release notes follow.

WHOLE GROUP PICKING FIX · 1.0.0
Build: 2026-11-04-whole-group-hierarchy

Whole group now follows the actual SketchUp group/component hierarchy. It selects the outer group in the current model/edit context and every part nested inside it, including deep drawer boxes and hardware. It does not guess a thin door/front from shape or thickness. Inner component picks the deepest clicked instance.

If a whole cabinet is one outer group, hover and press Tab to cycle to the required nested drawer/door, then click to confirm. The outline shows the exact level that will move. Tab is an explicit override in both pick modes. The picked-part name tooltip shows its container path. Batch picking follows the same hierarchy and never cycles outside an active edit context.

Changing Whole / Inner after a click updates the current target immediately using that click's valid hierarchy, restoring any temporary preview first. If there was no inner hit (for example, you started with a native outer-group selection), click the required inner part to choose it. A target change starts that target's settings; save a draft before changing targets if you want to retain it. The fix does not silently migrate or delete old animations saved on an incorrect child part.

Install this RBZ and fully restart SketchUp. Remove an incorrectly saved front-only animation with Delete animation, then pick its complete parent assembly and save the motion. Hardware must actually be nested in that assembly to follow automatically; separate sibling hardware can use Move together.

Checks cover deep/short drawers, front/handle hits, immediate mode changes, preview restoration, explicit Tab levels, main/Batch parity, edit-context boundaries, repeated preview/edit and simulated Undo/Redo. Native SketchUp is not available here. Version remains 1.0.0; existing sounds, wardrobe sliding, folding, exports and UI layout are retained.

Previous release notes follow.

WARDROBE SLIDING / FRAME FIT / CONSISTENT DIRECTIONS · 1.0.0
Build: 2026-11-04-wardrobe-frame-directions-sound

Install the RBZ and restart SketchUp. Reapply affected saved door setups to generate the new clearance data; old custom hinge coordinates are preserved until you reapply them.

SET MOTION
Choose Whole group (default) to move the complete door and nested hardware, or Inner component for an individual nested part. Tab cycles pick levels. Save keeps the palette open. Preview/edit/Preview retains valid chosen objects and reference edges.

New axis choices use world +X/+Y/+Z. New swing angles start at +90 degrees, drawers travel +Y, and wardrobe panels travel +X. Reverse explicitly changes direction. Picked edges have a stable positive world sign, regardless of endpoint order. Paired mirrored doors and folding joints intentionally alternate their handedness. Existing saved directions are preserved.

FULL OVERLAY / HALF OVERLAY / INSET
Choose Left/Right hinge and Front/Back hinge edge. Clear frame compensates for panel thickness at the hinge side and keeps the opening envelope in front of the cabinet. Cabinet front defaults to Auto, inferred from the surrounding cabinet or hardware; choose a world front direction if the model is ambiguous. If the requested positive rotation goes into the cabinet, Preview asks you to use Reverse or change hinge side. It does not silently reverse the motion. These are adjustable visual profiles, not a manufacturer's mechanical linkage or a complete model-wide collision solver. Check the actual frame and hardware in Preview.

SLIDING WARDROBES: 2, 3 OR 4 DOORS
Set motion > Sliding doors opens Batch setup. Select complete sibling door groups, choose the count, travel axis (world +X/+Y/+Z or a picked track edge) and Reverse if needed. Auto distance parks the doors within the selected opening. Stack together links the selected panels; Four doors > Two paired openings creates two separately clickable pairs.
Pop-out then slide: coplanar panels move outward onto separate tracks, then travel sideways. Auto track spacing includes the panel/hardware envelope plus the gap. Closing retraces the route exactly. This represents a pop-out sliding system; use it only when suitable for the intended hardware.
Use existing tracks: preserves the modelled track depths and requires enough clearance for panels and hardware to pass. Adjust track depths if Preview reports insufficient spacing. The setup does not permanently rearrange closed geometry. Edit linked-system travel, count, parking and tracks through Sliding doors / Batch setup; per-system time and sound remain editable in Set motion.

BATCH SOUND
More options > Sound for selected parts: Keep existing, Set sounds, Sound off, or Mute selected. Choose separate opening/closing recordings, volume and preview sounds. Linked folding/sliding systems play the owner's recording once. The existing eight real recordings and three arrival impacts are unchanged. Global Mute all is respected. Save through Apply to parts.

VERIFICATION
Automated geometry fixtures cover full/half/inset profiles, front/back pivots, mirrored/nested groups, 2/3/4 sliding doors, 2–20 folding leaves, live/export pose parity, sound routing, copy/presets/mirror, repeated previews and simulated Undo/Redo. UI checks cover compact sizes. Playback caches hinge/track calculations before frames. Native SketchUp, D5 and Lumion are not available in this test environment; exact project geometry, GPU frame rate and native host behavior need verification in SketchUp. Designed for Desktop 2021–2027 using Ruby 2.7-compatible syntax, not certified in every host version.

Toolbar order: Set motion / Test motion / Delete animation / Export / Assembly phasing / Batch setup / About, Updates & Support.
Public version remains 1.0.0. Previous release notes follow.

NESTED DOOR SELECTION FIX · 1.0.0
Build: 2026-11-03-nested-door-selection

The old message combined leaf-count and parent-container errors. Valid 4-leaf selections can now be resolved to compatible complete sibling door assemblies when picks land inside separate leaf wrappers. Parent-path comparison uses persistent entity IDs. Geometry is never exploded or reparented.

Automatic wrapper resolution is conservative: it requires a leaf-sized envelope and allows nested hardware, but rejects cabinet bodies, loose surrounding frame geometry, multiple picks inside one assembly and existing inner animations. When the outer moving leaf cannot be identified safely, the message now explains the container problem and asks for complete door groups using Tab. Selected-parts tooltips show their container paths.

If a container message remains: use Pick parts, hover a door and press Tab to choose the full moving door-and-handle group, then click it once. Repeat for every leaf, then Preview all > Apply to parts. The selected leaf assemblies must form one connected chain and have a common parent; place only the moving leaf assemblies together in a group if necessary. Do not select the fixed cabinet body. Support remains 2–20 leaves.

The compact interface, hinge order, sounds, presets and export controls remain available. Version remains 1.0.0.

LONG FOLDING CHAINS · 1.0.0
Build: 2026-11-03-long-fold-20

Bifold chains now support 2–20 sibling leaves, including 15, 16, 17, 18, 19 and 20. Batch setup automatically uses every selected leaf in the chain. Stop previews and close existing motions, select only the leaves, then Use selection > Preview all > Apply to parts.

Set motion offers every leaf count from 2 to 20. More options > Individual hinges creates one row per enabled leaf; each has Pick leaf, Axis N and Flip N. The list scrolls inside the existing compact palette; Expand is also available. Saved presets and copied motions keep the complete chain count and directions.

The shared backend count limit drives validation and is published to the setup UI. Preview/export pose generation now calculates each hinge prefix once per pose instead of repeating earlier joints for every following leaf. The connected-chain and alternating hinge-face correction is retained. Existing 2–6-leaf motions are compatible.

Install and restart SketchUp after replacing the RBZ. Version remains 1.0.0; motion/model metadata is unchanged.

SIX-LEAF BIFOLD SUPPORT · 1.0.0
Build: 2026-11-03-six-leaf-bifold

Batch folding accepts 2–6 sibling leaves, including all six panels shown in the reported selection. Set motion also offers six leaves and an individual Leaf 6 / Axis 6 / Flip 6 row. Motion presets validate six-leaf records.

The existing connected-chain and thickness-aware hinge ordering is retained for all six leaves. Animation engines and exports use the same complete chain. Existing 2–5-leaf motions remain compatible.

Install this RBZ and restart SketchUp. Stop previews and close any saved motions, select all six leaves (not the cabinet body), then Batch setup > Bifold chain 2–6 leaves > Use selection > Preview all > Apply to parts. All leaves must be groups/components in one sibling chain.

FOLDING LEAF ORDER FIX · 1.0.0
Build: 2026-11-02-fold-leaf-order

Automatic fold setup now chooses the first shared hinge face from the opening direction, then alternates the remaining shared hinge faces. It accounts for Left / Right roots and mirrored coordinate bases. Leaf 2 no longer folds through Leaf 1 in the previously failing Front / -90-degree setup. Centre selects the fixed hinge position; when panel thickness is enabled, shared joints still use alternating panel surfaces.

IMPORTANT FOR PREVIOUSLY SAVED CHAINS: their hinge coordinates are stored in the SKP. Updating the extension does not silently move custom hinges. Stop any preview, close the doors, select every leaf in the chain, then Batch setup > Bifold chain > Preview all > Apply to parts. Leave Alternate hinge faces / panel thickness enabled. This regenerates the saved hinges.

Manual hinge positions, other animations, sounds, exports and the compact interface are preserved.

APPROVED SIMPLE INTERFACE · 1.0.0
Build: 2026-11-02-approved-simple-ui

Set motion: Choose a part > Choose movement > Set opening.
The picked part's current transform is used as its closed position. Pick an exact hinge/travel axis before previewing or saving.
Copy, Paste and Paste many are beside Save motion. Save keeps the panel open.
More options retains individual leaf axes (2–6), manual closed capture, presets, delay, mirror, sounds, links and Parts & sequences.
Batch setup and Assembly phases remain separate toolbar commands.
Assembly has plain direction names, Together / One by one / Overlap / By phase, arrival sounds and per-part settings.
Export defaults to Selected objects only; choose Whole model explicitly to include unrelated geometry.
Header Expand and Minimize controls resize each palette. Manual window sizes are preserved during model/progress updates. The footer stays visible; settings scroll inside.
Version and model metadata schema remain 1.0.0 / v1. Existing motion, sound, clip and preset data are preserved.

OPEN AND CLOSE SHUTTERS 1.0.0
CAD Tools Studio | Designed for SketchUp Desktop 2021–2027

INSTALL / UPDATE
Extension Manager > Install Extension > choose the RBZ. Restart SketchUp after
updating so the new Ruby code is loaded. The toolbar has Set motion, Test motion, Delete animation, Export, Assembly, Batch and About, in that order,
with 16px/24px assets. SketchUp controls displayed icon size and DPI.
Find other commands under Extensions > CAD Tools Studio · Open and Close Shutters.
This is an unsigned local build. Follow your installation's extension policy.

COMPACT SETUP
The settings window is 258 logical pixels wide. The minus button collapses it.
Presets, start delay, batch Paste and hardware settings are under More.
OK saves without closing the window. SketchUp selection and Test motion can
be used while settings stays open; Close / X closes it. Unsaved previews are
restored when leaving setup, while settings already saved with OK stay saved.
1. Exit group/component editing. Activate Set motion, then pick a moving group
   or component. Hover + Tab chooses a parent instead of a nested handle.
2. Choose Hinge, Slide, Lift-up or Folding. Axis dropdown > Edge axis lets you
   click an existing straight edge for its exact world line and direction.
   Or choose 2 points for snapping, or world +X/+Y/+Z. While picking any fixed or
   folding joint, E or right-click toggles edge / two-point mode. The edge is
   highlighted before you click; nested/scaled/mirrored edges are transformed
   correctly. Edge reference does not copy the edge length to travel distance;
   the existing amount/angle stays unchanged. +/- reverses the main motion.
3. Capture Closed. Enter angle (degrees) or distance (model units, 450mm, 18in,
   etc.). Or Pick open: reference point, then destination. +/- reverses opening.
4. Set duration / easing, preview or scrub, then OK. The part is saved closed
   and the settings window stays open. Copy, Pick another part, then Paste.
5. Test motion: click a configured part or linked hardware. A second click
   reverses it from its current pose. Clicking other independent parts lets
   them run together. Space pauses all parts. Right-click for motion commands.
Elapsed-time playback uses one UI timer and cached transforms. A rapid-click
batch records one Undo operation when all parts finish or playback is paused.
Actual frame rate depends on model/rendering load; no fixed FPS is guaranteed.

PART SOUNDS / CUSTOM WAV / SOUNDTRACK EXPORT
More > Sound: choose Off, Real recordings or Custom WAV. The built-in list
contains eight user-supplied recordings: cabinet door opening, wardrobe door
opening, door opening, metal door opening, iron gate opening, sliding movement,
drawer opening and drawer closing. Opening and Closing can each choose any
recording, or No sound. New Real recordings settings start with cabinet opening
and no closing audio; choose the appropriate closing recording explicitly.
Set per-part Volume. The small play buttons preview audio without moving the
part. OK saves the settings. Existing animations default to Sound Off.
Copy/Paste, Mirror paste, multi-select Paste and saved presets carry sounds.
A linked assembly plays its owner's sound once; nested handles do not add
unwanted duplicate sounds.
The speaker beside Volume controls mute. Choose Part for the selected part,
or All for every part. Part mute is saved with the sound settings by OK,
carried by Copy/Paste and presets, and respected by soundtrack export.
All mute is a saved live-playback preference; explicitly requested audio export
still includes audible saved parts. No extra audio window or enable click is
needed. Playback uses native Windows/macOS audio and works with settings closed.
Recordings play once, fitted to the full travel time; they do not repeat or
add generated clicks. Multiple parts mix together. Pause / Stop and rapid reversal cancel
the old movement sound; resume/scrubbed sequence playback follows the current
position. Master unmute restores active and upcoming sounds at current time.
Test motion, setup Preview, sequence Play and the dedicated baked-scene Replay
command all support sound. Native SketchUp slideshow commands do not mix audio.
Rebake scenes after changing sounds if their saved replay should use new cues.
Custom WAV: import a mono/stereo uncompressed PCM WAV, 8/16/24/32-bit, 8–96 kHz,
0.05–10 seconds, max 16 MB input. MP3/compressed WAV are not imported. Audio is
normalized to compact mono PCM, embedded once per unique file when OK saves,
and cached locally for presets across restarts. The saved SKP carries custom
sounds to another computer. Presets on the same computer use the local cache.
Both built-in recordings and custom audio are fitted to the motion duration,
so choose a motion time near the clip length when natural pitch matters.
Source filenames/credits and processed clip lengths are in sounds/recordings.json.
The previous generated sound library is removed. Old saved built-in choices
map to the closest real opening recording; drawer closing maps to drawer close,
sliding closing uses the neutral sliding recording. Other old closing choices
become No sound because no matching closing recording was supplied. Custom
WAV settings are preserved. No external installation is needed.
Export window > Audio > Export separate soundtrack WAV is optional and OFF by
default. It writes soundtrack.wav (44.1 kHz stereo PCM), audio_cues.json and
AUDIO_README.txt beside ABC/FBX/PNG outputs, or to a chosen folder for scenes.
The mix follows saved per-part volumes, sequence steps/waits, speed and scope.
Only audible parts within export scope contribute. Live Mute does not disable
an explicitly requested soundtrack. Enable a part sound before requesting it.
Audio is separate; it is not embedded in ABC/FBX or SketchUp scene tabs. Put the
WAV at time zero in your video editor. Recordings use the same fitted timing
as live testing; no generated endpoint clicks are added.
Audio export reads source data without changing geometry, materials, selection,
poses or saved motion settings. The original eight supplied WAVs and three assembly impact clips are compact
local recordings; imports are user-controlled.

MOTIONS / SEQUENCES / MIRROR
Open More > Motions, or Extensions > CAD Tools Studio > Motions / sequences.
The toolbar order is Set motion, Test motion, Delete animation, Export, Assembly phasing, Batch setup, About.
The last circled-i icon opens About, Updates & Support, with website links
for updates/downloads, help and comments/bug reports. No activation is needed.
The internal folder/loader stays cts_open_close so installing this renamed
package updates the existing extension instead of installing a second copy.
Parts tab: choose an assembly, Select, Test, Edit or Rename. Nested selection
outlines the exact part and selects its top-level cabinet. Test again reverses;
other parts can keep moving. Rename is one Undo operation and isolates shared
cabinet ancestors as needed. Refresh updates the list after model changes.
Sequences tab: New, enter a name, choose a part and Add step. Choose Open or
Close and Wait. Default Timing is Together by action: consecutive Open steps
with Wait 0 start together, then consecutive Close steps with Wait 0 start
together after all opening parts finish. Positive waits stagger starts within
a phase. One after another retains serial playback if you choose it.
Use saved part delays is OFF by default, so a part's separate setup delay does
not unexpectedly offset a zero-wait sequence. Enable it only when desired.
Part delays still apply to ordinary Test motion and non-sequence exports.
Use up/down to reorder, or x to remove a step. Repeated Open /
Close steps reuse the same moving geometry. Save before Play or export.
Sequences are saved IN THIS SKETCHUP MODEL, up to 50 sequences / 100 steps.
Save the SKP to retain them across sessions. Copied-cabinet isolation keeps
stable descendant references; deleted/replaced assemblies need step repair.
Expand / Compact toggles the motion window size; its edges can also be dragged.
The step list grows with the window, while playback and Close stay visible.
Moving preview copies refresh their bounds; preview and test tools include
the moving geometry in their viewport extents to prevent stale-bounds clipping.
Play previews a saved sequence with one timer. Pause / Resume, Space and the
slider control playback. Scrubbing pauses the preview. Stop, Esc, finishing,
closing the manager or switching tools removes temporary copies and restores
source visibility. Source transforms, motion data and selection are kept.
Other visible occurrences of a shared moving definition get stationary
replacement copies during preview, so unrelated cabinets keep their doors.
In Export, choose the saved Sequence. Its steps replace Order / Cycle / Hold;
FPS and Speed still apply. With Selected scope, only steps within that scope
run; outside steps are omitted. ABC, FBX, PNG and scenes all use the same
sequence timeline. Normal non-sequence exports keep Order / Cycle / Hold.
Export > Preview objects counts the same visible mesh traversal as export,
lists included scope/parts, gives timing/FPS and an APPROXIMATE size range.
Green outlines show included scope; blue outlines show moving closed poses.
It creates no files and changes neither geometry nor selection. Size depends
on compression and maps; texture files are additional, not included in range.
Mirror: Copy a source motion (or load a preset), pick a target, then More >
Mirror X / Y / Z > Mirror paste. X means the mirror plane's normal is world X;
for left/right doors use the width axis of the cabinet, often world X.
The hinge moves to the opposite side of the target's world-aligned bounds;
travel is reflected and angular handedness reverses. Angle magnitude, full
travel distance, duration, easing and delay stay the same. No geometry is
mirrored. Preview and OK saves a picked setup; with native multi-selection,
Mirror paste saves the batch as one Undo. The original clipboard stays intact.
Folded targets still need their own linked leaves / secondary joints, as for
normal Paste. Choose the whole cabinet as export scope to include all leaves.

OPTIONAL LEAVES 3 AND 4
Select Folding, then Leaves: 2, 3, 4 or 5. Each enabled leaf has its own compact
row with Pick leaf / Axis N / Flip N. Leaf 3 adds one row; Leaf 4 adds another.
Rows 3 and 4 are hidden unless enabled. The window width stays 258px.
Axis 1 is the fixed cabinet hinge. All leaves must be separate sibling groups
or components under the same immediate parent.
For each enabled leaf in order:
- Select Leaf 2, Pick leaf, then pick Axis 2 on the shared edge with Leaf 1.
- Select Leaf 3, Pick leaf, then pick Axis 3 on the shared edge with Leaf 2.
- Select Leaf 4, Pick leaf, then pick Axis 4 on the shared edge with Leaf 3.
You can use an existing shared edge for Axis 2, 3, 4 or 5 too. Choose Edge axis
for Axis 1 first to keep edge mode, or press E / right-click during Axis N.
For two points, pick bottom then top. Reversed point order is aligned
with Axis 1 automatically. All hinge axes must be parallel and on distinct
edges. Axis guides are blue / orange / green / purple for joints 1–4.
Use Flip N to reverse only the selected relative joint direction. The main
+/- reverses the whole opening. Default relative factors are -2, +2, -2,
producing alternating accordion folds. Re-picking an earlier joint invalidates
downstream axes so you can confirm them in order. Preview is blocked until
all enabled leaves/joints are set. Reducing Leaves removes the higher links.
The chain keeps adjacent hinge joints connected. It is not a track, collision
or physical linkage solver; unusual widths/mechanisms may need other motion.
Create four-leaf demonstration in the Extensions submenu to test the chain.

HARDWARE / COPY-PASTE
Put each handle and attached hardware inside its own leaf group/component.
Nested parts follow automatically. Move together links separate sibling
hardware to the main leaf; Rail half travel is for drawer middle rails.
Fixed cabinet hardware stays outside the moving assembly and unlinked.
Copy preserves exact signed model-space travel, angle, duration/easing, the
primary axis direction, hinge anchor, leaf count and relative fold directions.
Paste maps world direction into the target local frame, so rotated, mirrored
or scaled local axes do not reverse drawer opening or change travel distance.
The source hinge anchor is mapped proportionally between world-aligned bounds
of source and target; it is not left at the old drawer's location. There is no
mandatory axis pick after Paste. Preview, then OK. Use Edge axis / 2 points /
local axes later only if the new target needs a different hinge/direction.
For unlike or rotated shapes, review the mapped hinge and adjust as needed.
Separate target leaves/hardware must still be linked to the target; source
entity references are never reused. A folding Paste copies the primary axis;
its optional target leaves and secondary shared hinges still need setup.
Cancel restores the target's prior setup and positions.

DELETE ANIMATION
Third toolbar icon: select a configured part (or linked hardware) and click
Delete animation. Without such a selection, the tool waits for you to click a
configured part/handle. It stays active for further parts; Esc exits. It is
only the third toolbar icon, immediately after Test motion; it is not in More.
Only this extension's motion and linked-trigger attributes are removed. The
geometry, materials and current visible pose are kept. Undo restores the
motion and hardware triggers. Undo restores the saved motion and its linked hardware triggers.
This does not delete existing baked scene tabs or exported ABC/FBX files;
rebake or re-export those if they should reflect the animation removal.

SCENE PLAYBACK / REPEAT FIX
Baked scene poses are copies; they are not the configured source objects.
Native scene playback can leave originals hidden and baked copies visible.
Set motion, Test motion and the Export window now stop the previous native
view animation and restore editable visibility automatically.
Use Export window > Replay scenes, or Extensions > ... > Play / replay last
baked scenes. Every replay resets to frame zero. Space pauses/resumes; Esc or
switching tools stops. Finishing/canceling restores the editable source parts.
The preview's visibility changes are inside an aborted operation, avoiding
one Undo entry per frame. Repeat playback is independent of which native
scene tab was last selected. Older v1.2 baked clips are recognized.
After changing leaf count, joints or motion, recreate the baked scenes.
Return to editable model after scene playback is also available in the menu.

EXPORT / FPS
Use the fourth toolbar icon, Export / FPS, or the Extensions menu. Export
saves the current setup before opening its options. Export is not in More.
Selected part / cabinet exports ONLY the selected objects and their contents,
including static cabinet geometry and configured motion within that selection.
Other project models are excluded from ABC, FBX, renderer packages, PNG frames
and baked scene visibility. Select the whole cabinet to include sibling leaves
and hardware. Whole visible model includes visible static geometry and all
configured visible assemblies. Each folding chain is one animation assembly.
Multiple chains can run Together or One assembly after another. Sequential
order follows model traversal, not prior click order. Choose open, close or
open > hold > close, a speed multiplier, and 24/25/30/60 FPS.
N intervals include N+1 endpoint poses. The motion duration is between the
endpoints; encoded image/renderer playback includes the final sample frame.

DIRECT ABC FOR D5 — WINDOWS 64-BIT
Select ABC direct. The RBZ includes a standalone Alembic Ogawa writer built
from Alembic 1.8.8 and Imath 3.1.12. There is NO Blender step and no Python or
external program to install. The bundled EXE runs only during ABC export and
has no non-system DLL dependencies. It is separate from SketchUp's Ruby ABI.
Produces animation.abc with sampled mesh positions/normals and UVs. ABC
default is D5 ×100: meter coordinates and all animated translations are
scaled by 100 for D5's centimeter import convention. Import fresh at D5 object
scale 1 (default / 100%); do not also multiply D5 scale by 100. Generic ×1 remains available
for meter-based importers. Default Y-up is intended for D5; Z-up is optional.
OBJ counter-clockwise faces are converted to Alembic clockwise winding, with
UV/normal corners reordered together to prevent inside-out/dark shading.
Material regions are separate meshes, each keeping its complete motion.
D5 does not automatically import ABC textures or SketchUp colors. Open the
exported MATERIALS.html for source color swatches, opacity and map links.
Flat colors also get small PNG maps. Use material picker I to assign them.
Optional reference.fbx is a STATIC closed-pose material reference with matching
mesh names. Hide/remove it after matching materials; leaving it on top of the
ABC creates overlapping surfaces. ABC remains the animation file.
Review roughness, metallic, opacity and specular settings in D5.
Direct ABC is currently bundled for Windows x64. On macOS the motion tools,
scene/PNG and direct Ruby FBX paths remain available, but an ABC helper must
be built for that platform. Native helper source/CMake and notices are included.

DIRECT ANIMATED FBX FOR LUMION
Select FBX direct; FPS is fixed to Lumion's documented 25 FPS. The extension
writes actual FBX 7.4 animation curves for translation, rotation and scale,
not a static FBX disguised as an animation. No Blender step is required.
The current build fixes compact ASCII block formatting that caused Autodesk's FBX
reader to report zero meshes despite the file containing polygon records.
All block fields/braces now use separate lines. This addresses the Lumion
12.5 "does not contain any 3D model data" report. Re-export to get the fix;
previously generated FBX files are unchanged. The 7.4 file format is retained.
Import animation.fbx with Import animations enabled. Keep the textures folder
beside the FBX. Basic diffuse colors/textures, UVs and normals are included;
review complex materials in the renderer. FBX uses meters and a declared Z-up
coordinate system. The writer bakes sample curves and includes final keys.
Use FBX for Lumion; this extension does not claim Lumion supports Alembic.

OTHER EXPORTS
Scenes: up to 601 native scene poses. Shared-definition copies and saved
visibility provide real geometry states. The bake is one Undo action. Use
only the desired CTS scenes in native video export, at the same FPS. Existing
scene inclusion flags are not changed. Native slideshow timing can vary;
the dedicated Replay command reliably rewinds the extension's baked clip.
PNG: fixed-camera SketchUp viewport frames, not Enscape/D5/Lumion renders.
Includes clip.json and a command/example for creating video with an editor.
Scene tabs alone do not transfer object-animation tracks into renderers.
Enscape general moving-door object animation is not supported by this tool.

MODEL SAFETY / LIMITS
Settings are stored in the SKP. Save your model. Editing/testing copied nested
wardrobes makes ancestors unique where needed so one copy moves independently;
this isolation is separately undoable and may increase model size.
Move/Rotate placement is rebased on the next test. After geometry or nonuniform
scale edits, recapture closed pose/axes. Use normal mesh groups/components;
Live/Procedural Components and arbitrary articulated support mechanisms are
not automatically solved. Export is fixed-camera object motion; camera paths,
renderer proxies/lights and renderer-specific materials are outside this route.
ABC / FBX extraction reads source faces directly into temporary files. It does
not regroup, mark, hide, move, delete or make source instances unique, and
does not invoke SketchUp's native model exporter or depend on Undo rollback.
Original entity IDs, hierarchy, current poses, visibility and saved motion
attributes remain intact, including on export failure. Shared definitions are
filtered by full instance path so an unanimated cabinet copy stays static.
Face meshes preserve triangulation, normals, front materials and UV mapping;
mirrored/nonuniform transforms use corrected winding and inverse-transpose
normals. This route exports normal face/group/component geometry; standalone
images, loose edges and renderer proxies are outside the mesh animation path.
PNG capture explicitly removes only its own temporary capture group and
restores original visibility after completion or failure. Scene baking still
adds requested scene tabs/pose copies while retaining the configured sources.
The original SKP can continue using Test motion after export.

VALIDATION
Automated checks cover 2–5-leaf joint continuity, reference/compiled frames,
copy/paste, multiple playback, Undo, repeated scene replay and source-state
restoration, scene baking and export settings. Generated ABC was reopened
with the Alembic SDK and animated FBX read by an independent Assimp importer.
The Windows writer was cross-compiled; its file format was tested with the
same-source Linux build. Live SketchUp / Windows helper / D5 / Lumion import
behaviour still needs testing in actual installations. Not Trimble-certified.
Third-party native library / runtime notices accompany the bundled helper.

PUBLIC VERSION
The extension and RBZ remain labeled 1.0.0 as requested. Internal build ID:
2026-10-29-batch-presets-delay-leaf-rows. Future rebuilds can use another internal
build/date without changing the displayed version number. Restart SketchUp
after installing an updated 1.0.0 RBZ so its Ruby code is reloaded.

D5 IMPORT FIX
D5-sized ABC default, correct clockwise Alembic faces, material-separated
meshes, color-map/HTML guide and static FBX material reference. Settings window
width remains compact; the toolbar has Set, Test and Delete. Re-export existing clips: updating
the RBZ cannot change an ABC that has already been exported.

MODEL PRESERVATION CHECKS
Repeated ABC/FBX export and file/converter failure checks reject all model
mutation methods, including native export, grouping, hiding, attribute writes
and Undo operations. They cover shared component definitions, active poses,
textures, mirrored transforms, scene/selection state and saved animation.
PNG cleanup is also checked when a host file writer closes the transaction.
The settings window stays 258px wide.

FBX / EDGE REFERENCE VALIDATION
Autodesk FBX SDK 2020.3.7 reproduced zero meshes in the previous ASCII output.
The fixed writer imports five mesh nodes and four animated leaves; all 204
world transforms (51 poses per leaf at 25 FPS) match expected matrices, with
final keys at two seconds. Geometry also imports with animations disabled.
An independent strict ufbx reader also reads the meshes and curves. Autodesk
SDK/ufbx are QA dependencies only, not shipped or required by this extension.
Live Lumion 12.5 and SketchUp verification remains required. Edge-pick checks
cover nested/scaled/mirrored world axes, active edit prefixes, each joint mode,
keyboard toggling, two-point fallback, invalid picks, retry and cancellation.
The settings window dimensions remain compact; the toolbar now has three icons.

COPY / DELETE VALIDATION
Checks cover signed model-space direction and distance on rotated, mirrored,
scaled and nested target frames; copied primary axes and mapped hinge anchors;
optional later axis edits; deletion through selected hardware, viewport click
through the third icon; retained geometry/materials/unrelated attributes, Undo and Esc.

MULTI-SELECT PASTE
Copy a motion first. Use SketchUp's Select tool to select the target groups or
components, exit editing, then click Paste selected under More (or Extensions
> CAD Tools Studio > Paste motion to selected parts). Header Paste also applies
to the selection when no individual setup part is active. Keep targets in
their intended closed poses. Up to 100 targets are applied in one Undo step;
locked/invalid targets are checked before writing, and failures roll back the
batch. Geometry, selection and poses are retained. If the copied source is
included among several selected objects, it is excluded from the batch.
Direction/distance, primary axis/hinge mapping, timing and delay are copied.
Existing target hardware links are retained, not replaced with source IDs.
Folding batch targets must already have configured, closed folding chains;
new leaf assemblies use single-part Paste and the separate leaf setup rows.

SAVED MOTION PRESETS
More > preset Save names the current ready motion. Use applies a preset to
an active setup part, or to the current SketchUp selection if no setup part
is active. Without a target it loads the clipboard for the next Paste.
Presets keep motion type, model-space direction/distance, primary hinge/axis
mapping, angle, duration, easing, start delay and folding directions/count.
They do not store source entity or hardware references. Presets persist in
SketchUp user preferences across restarts of that SketchUp installation.
Saving an existing name updates it. The small x removes that preset only;
existing model animations remain. Keep up to 100 presets, names up to 48 chars.

INDIVIDUAL START DELAY
More > Delay is 0–30 seconds for the currently picked part; default is zero.
Save with OK. Linked leaves/hardware share their primary assembly's delay.
A new open/close request waits once before moving, using the existing single
playback timer. Other parts keep responding. Reversing/canceling an active or
queued part is immediate and does not repeat the delay. Preview honors delay;
the manual opening slider remains an immediate pose control.
Scene, PNG, ABC and FBX exports include each part's waiting poses. Together
starts each track after its own delay. Sequential includes that track's delay
after the preceding track ends. Export Speed scales motion and configured
start delays together; the explicit export Hold remains in clip seconds.
Close-only exports hold the open pose during the delay before closing.
After changing delays or motion, rebake/re-export existing clips.

CURRENT BUILD CHECKS
Checks cover batch direction and copied delay, source exclusion, untouched
poses/geometry, one-step Undo and rollback, stored presets and independent
preset deletion, sticky OK and native selection, delayed playback with one
timer and immediate reversal/cancellation, all export timing modes, separate
optional leaf rows and a real browser check at 242px content width.
A generated delayed FBX was read with Autodesk FBX SDK and an independent
ufbx reader; 202 world transforms and endpoint keys matched the timing.
Live SketchUp / renderer verification is still needed for this build.

BATCH DOORS / DRAWERS / FOLD CHAINS
Click the sixth Batch setup toolbar icon, or Extensions > CAD Tools Studio
> Batch setup. Select separate groups/components once and click Use selection, or use
Pick parts. Parts inside an edited cabinet can also be selected. Fold chains
must be siblings within the same cabinet. A containing shared cabinet must be
made unique before batch setup so its other copies keep their motion.

Fold chain: select 2–6 closed, roughly coplanar doors. Auto sorts their centres
across the cabinet and proposes the fixed hinge and every shared hinge. Choose
Left/Right root, a common hinge axis (or pick one existing reference edge),
Across direction, angle, and Front/Centre/Back hinge face. Alternate hinge faces
is on by default to account for panel thickness; otherwise leaf 3 can overlap
leaf 1 when fully folded. Turn it off only for a deliberately different hinge
arrangement. Preview before Apply. Automatic axes use oriented door bounds;
custom/irregular doors can need manual hinge correction. Each leaf, including
optional Leaf 5 / Axis 5, remains editable through normal Set motion.

Drawers: choose one physical travel direction and distance. Every selected
drawer receives that world direction even if its instance is mirrored/scaled.
Nested handles/hardware move with their own group. Separate linked hardware
must be included or linked later. Drawer animations stay independent.
Hinges: doors are sorted across the cabinet, and every alternate door receives
its opposite hinge edge and opposite signed angle. Disable the alternate option
if every door should use the same side. Negative 90 degrees is the initial
front-opening setting for a left hinge with upward axis.

Apply replaces selected motion settings atomically in one Undo step; the
original geometry, transforms, materials and selection stay in place. Existing
per-part sounds are retained. A fold has one owner and linked leaves, so clicking
any leaf/its nested hardware triggers the whole chain. Independent hinges and
drawers can be tested together with Batch Preview or saved Motions sequences.

ASSEMBLY PHASING · FIFTH TOOLBAR ICON
The current model is the assembled final position. Click Pick in order, then
click each group/component in assembly order; Tab selects a parent and Esc
finishes picking. Use selection imports the existing selection; its API order
is not click history, so use the row arrows or X/Y/Z/Name sorting when order
matters. Select a parent or its contents, not overlapping parents and children.

Effects: Drop, Rise, Ascend, Descend, Fly in/out, Pop in/out, Implode, Explode,
Mixed assembly and Random assembly.
Drop/Rise/Fly in/Pop in/Implode assemble into the current model. The corresponding
outgoing effects disassemble from it. Implode/explode directions radiate from
the selected parts' centre. Fly direction, travel distance, duration, easing,
optional rotation and bounce can be changed. Pop effects use a tiny nonzero
scale to keep renderer transforms invertible.

Timing: One after another, All together, Cascade (interval between starts), or
Phase groups. In Phase groups, equal phase numbers begin together; the next
phase starts when all parts in the previous phase finish. Each row has a phase
number, effect and wait in seconds. Expand Part time / distance for overrides.
Global controls apply to rows without overrides. Reorder, reverse, or remove
rows without changing model geometry. Enlarge the native window to show more
rows. Play/Pause/Resume/Stop and the timeline slider preview temporary copies;
Esc, switching tools, closing or Stop restores the original model.

Save stores named clips in the SKP without replacing existing shutter/drawer
animations. Reload a clip with Use. Deleting a clip removes only its metadata.
Export / FPS saves the clip and opens the common exporter with Source: Assembly
phasing. The fourth Export icon also offers saved assembly clips. Batch setup and Assembly
phasing are accessed from their toolbar icons; neither is under More. Selected part
/ cabinet exports only that scope, including static contents within it. Scenes,
viewport PNGs, direct ABC and animated FBX use the same sampled phase transforms.
Lumion FBX remains 25 FPS. Scene replay starts again at frame zero. Assembly
clips use their Arrival sound settings, independently of shutter sounds. Native renderer
imports and a live SketchUp installation still need checking on the target PC.

MIXED AND RANDOM XYZ ROTATION
Assembly phasing > Direction / rotation / bounce > Rotate offers X, Y, Z,
XY Mix, XZ Mix, YZ Mix, XYZ Mix and Random XYZ. Axis mixes rotate the chosen
axes together using the entered degrees. Random XYZ gives each part its own
signed X/Y/Z angles within that degree limit. A zero degree value disables
rotation. The small shuffle icon appears for Random XYZ and creates a new mix.
Preview, then Save to keep it. Saved per-part identities and the shuffle seed
make replay, scrub, selected exports and renderer outputs repeatable; playback
does not continually change random axes. Existing single-axis clips are kept.

MULTIPLE ARRIVAL DIRECTIONS / MATERIAL IMPACT SOUNDS
Choose Mixed assembly to distribute parts among ground, sky, left, right,
front, back and diagonal start positions. Random assembly gives each part its
own stable 3D approach direction. The effect shuffle button creates a new set
of approach directions independently from the rotation shuffle. Save keeps
both mixes stable during replay and exports.

Expand a part's Direction / sound / timing row to override its approach with
Ground, Sky, Left, Right, Front, Back, Diagonal or Random. These are world
start directions: the current source model remains the exact assembled pose.

Arrival selects Off, Wood, Stone, Glass or Auto by material name, with a volume
control. Each row can use a different sound or Off. Auto checks assigned
material and part names for glass/stone keywords and otherwise chooses wood;
choose an explicit material when names are generic. New phase setups initially
choose Wood; older saved clips remain silent until enabled.

An incoming part's sound starts at its own offset + movement duration, after
its phase/wait/speed settings. The recording plays at its natural pitch and
length; it does not loop during travel. Outgoing effects do not play assembly
arrival sounds. Natural preview completion preserves the final impact tail;
Stop, Pause, tool changes or closing cancel it. Global All mute controls live
playback, and per-row Off controls the saved arrival cue.

Export separate soundtrack WAV is available for assembly clips too. It includes
endpoint cues and the full final sound tail. Place it at time zero beside the
video in an editor, holding the last frame until the tail ends. Audio is not
embedded in ABC/FBX or transferred to D5/Lumion through geometry alone.

Material impacts are Kenney Impact Sounds (CC0); original license, source
filenames, processing and hashes are included in sounds/assembly. The original
eight supplied door/drawer recordings are unchanged.

BATCH OPENING CONTROLS / QUICK PREVIEW (1.0.0)
Opening defaults to 90 degrees. Reverse changes the opening direction without changing the angle amount, hinge edge, hinge side or selected part order. Across > Reverse order only changes the part order. Automatic outward/front inference has been removed.
Front edge / Back edge is shown directly under Reverse. It chooses the front or rear edge of the panel thickness for the hinge line. Hardware protrusions do not define the panel hinge. The separate Left / Right hinge side remains under More options. For fold chains this selects the fixed root hinge; shared leaf joints continue alternating faces to maintain the chain.
Whole door group picking uses only native bounds and a per-pick-session path cache; it does not scan face vertices or nearby model geometry during hover. Tab still cycles pick levels. Assembly phasing picking is unchanged. Panel analysis at setup is bounded (1024 faces, 4096 entries, 50ms per part); unusually complex panels may fall back to a conservative envelope. An exact picked axis remains available for unusual geometry.
Clearance in More options has three choices:
- Quick (default): only selected panel envelopes, sampled at up to 3 degrees of root travel. Skips detailed handles, unselected cabinets and nearby imported mesh scanning for responsive setup.
- Detailed: includes nested hardware boxes and nearby visible model faces, sampled at up to 1 degree. This can take longer and can produce conservative warnings for complex geometry.
- Off: manual preview with no clearance preflight.
Closed-position contacts are recorded as a notice instead of rejecting setup. A moving part/fixed component pair already touching at the closed pose is excluded until it completely separates; a later recontact and new pairs are checked. Existing intersecting geometry is not repaired. New contact can shorten the common opening angle before contact; the adjusted amount is displayed. These are sampled envelope checks, not continuous physical simulation. Check the actual model for nonrectangular geometry or independent motions at different progress values.
Preview/Apply cannot be queued repeatedly while a calculation is pending. Animations retain the shared fast playback timer; clearance calculations run only at setup. Geometry, materials, sounds and Undo behavior are preserved. Existing saved motions keep their own settings until Batch setup is reapplied.

CONCEALED HINGE MOTION / HISTORY / PERFORMANCE (1.0.0)
Swing / paired-door setup now offers Simple pivot, Concealed Full overlay, Concealed Half overlay and Concealed Inset. These are adjustable visual motion profiles, not measured manufacturer linkage simulations or collision-free guarantees. Existing motions remain Simple unless changed. Batch and single Set motion expose the profile; concealed single setup also exposes Front/Back hinge edge. Batch keeps 90 degrees, Reverse and Front/Back. No hinge hardware is generated or independently articulated; nested hardware follows the door group.
Concealed motion turns and shifts simultaneously. Outward shift and side shift use the actual current angle, not normalized duration, so an angle limit, closing, scrubbing and a mid-motion reversal follow the same path. Shift amplitudes are adjustable under More options along with door Thickness (Auto) and Gap (2mm). Signed shifts can reverse their direction. Auto defaults, as visual heuristics, are outward = thickness times 0.35/0.55/1.0 plus gap and side = thickness times 0.08/0.20/0.30 for Full/Half/Inset. Frame-local directions follow the hinge side. Check exact clearances in the real model; choose Simple/exact axis for unusual geometry.
Profiles are stored in the model, copied/pasted with the same world shift directions and amounts, preserved in saved presets, reflected by Mirror paste, and sampled by the shared scene/ABC/FBX transform pipeline. Source geometry/materials/audio are preserved. Closing at zero restores the exact saved base.
About, Updates & Support is now the final toolbar icon. Delete remains third; Export fourth; Assembly fifth; Batch sixth.
Undo/Redo: active timers and cached/draft motion are abandoned without committing, restoring old snapshots or starting/aborting transactions in the history callback. Tool cancellation for Undo is handled before Pause can commit a live animation. Native history owns the restored transforms/attributes. Valid selected objects are retained after Undo/Redo, while active timers and stale motion caches are cleared and saved settings are re-read. Temporary scene/sequence previews likewise stop their timers without writing over the restored state. Normal Escape/Stop retains its original restore behavior.
Performance: picking remains bounds-only and cached per pick session. Ordinary Batch previews with unique ancestor definitions now obtain actors directly without walking the entire model; shared ancestor definitions retain the stationary-copy traversal needed to avoid hiding other instances. Runtime hinge vectors/axes/parents are cached once; frame updates do not traverse meshes or parse motion JSON. Simultaneously moving doors share one bounds invalidation pass per tick.
Validation: 28 hinge fixtures / 528 poses covered Full/Half/Inset, Front/Back, reverse, mirrored/nonuniform parents, exact closed endpoints, live/export transform parity, copy/presets/mirror and single setup. Simulated transaction tests covered 20-part save/open/delete Undo+Redo, cache reset and safe preview/tool cancellation. Earlier 22 Batch/fold fixtures and browser checks passed. A pure-Ruby geometry mock processed 20 concurrent doors / 300 ticks / 6000 updates at about 3.0ms per 20-door tick on this test host; this excludes actual SketchUp API, picking, GPU redraw and input scheduling. It is not a production latency promise. A universal 0.001-second response cannot be guaranteed.
Compatibility target: SketchUp Desktop 2021–2027, Ruby 2.7-compatible syntax and long-standing Ruby API calls. Native sessions across all seven SketchUp releases, real GPU performance, exact manufacturer hardware paths, and D5/Lumion import could not be exercised in the build environment. Install with Extension Manager and restart SketchUp to load this build; the public version remains 1.0.0.

PREVIEW / EDIT SELECTION RETENTION FIX (1.0.0)
Preview completion, Stop, repeated Preview and setting changes keep the chosen parts and the reference axis. Temporary preview cleanup is scoped as an internal model rollback so Undo-style notifications do not clear an unrelated draft or Batch list. Genuine user Undo/Redo still cancels active timers and invalidates stale configuration; it retains surviving valid part paths and reloads current native attributes for the selected single-part setup without moving the restored model. Only deleted/replaced paths require choosing replacement objects. Deferred history refreshes are superseded by a newer history event or an explicit selection/cancel/model switch.
Regression checks exercised 12 consecutive preview/edit/re-preview cycles with changing angles, duration, reverse, Front/Back and concealed presets, plus Stop/Apply, native-history simulation, single-part setting edits/reload, deleted-path pruning and exception-safe rollback guards. Native SketchUp session verification remains outstanding.
