# Orcaflex Model Generator Mergeobject

> Sub-skill of orcaflex-model-generator: _merge_object() (+2).

- Skill: `vamseeachanta/orcaflex-model-generator-mergeobject` (Agent Skill)
- Install (CLI): `npx skillmds@latest add vamseeachanta/orcaflex-model-generator-mergeobject`
- Raw SKILL.md: https://api.skillmd.com/api/skills/vamseeachanta/orcaflex-model-generator-mergeobject/raw
- Safety review: PASS (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: vamseeachanta (https://skillmd.com/u/vamseeachanta)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/vamseeachanta/orcaflex-model-generator-mergeobject

---


# _merge_object() (+2)

## _merge_object()


Combines typed Pydantic fields with pass-through properties:

```python
@staticmethod
def _merge_object(obj: GenericObject) -> dict[str, Any]:
    merged = dict(obj.properties)           # 1. Start from properties bag
    explicitly_set = obj.model_fields_set    # 2. Track what was explicitly set

    for py_field, ofx_key in TYPED_FIELD_MAP.items():
        value = getattr(obj, py_field, None)
        if value is not None:
            merged[ofx_key] = value          # 3. Non-None typed fields override
        elif py_field in explicitly_set:
            merged[ofx_key] = value          # 4. Explicitly-set None preserved

    # 5. Priority keys first (Name, Category, ShapeType, etc.)
    ordered = {}
    for key in _PRIORITY_KEYS:
        if key in merged:
            ordered[key] = merged.pop(key)
    ordered.update(merged)
    return ordered
```


## Section Ordering (_SECTION_ORDER)


Critical: OrcaFlex validates references sequentially. Sections must appear in dependency order:

```
General → VariableData → ExpansionTables
→ RayleighDampingCoefficients, FrictionCoefficients, LineContactData
→ LineTypes, VesselTypes, ClumpTypes, StiffenerTypes, SupportTypes
→ Vessels, Lines, Shapes, 6DBuoys, 3DBuoys, Constraints, Links, Winches
→ MultibodyGroups, BrowserGroups, Groups
```


## Priority Keys (_PRIORITY_KEYS)


Mode-setting properties must appear before dependent properties within each object:

```python
_PRIORITY_KEYS = [
    "Name", "Category", "ShapeType", "Shape", "BuoyType",
    "Connection", "LinkType", "Geometry", "WaveType",
    "DegreesOfFreedomInStatics",
]
```

