# MSet Instruction Author 09 - Basic geometry and placement patterns

Status: **canonical-development**
Branch: **MSet 64-bit**
Current product: **MSet 2026 by GRAPHICO**
Format covered: **MSet 2026 native instruction format 2026.1 plus legacy-readable packages**

## Purpose

This module adds a small, evidence-classified vocabulary for **primitive geometry and placement workflows**. Its purpose is to let a new instruction contain useful line/circle/shape operations without turning historical material into unqualified MicroStation 2026 truth.

The evidence model is explicit:

- current MSet composition/substitution rules remain canonical,
- GRAPHICO historical instructions are supporting host-key-in evidence,
- GRAPHICO current-host tests may promote an exact key-in or variant to runtime evidence without promoting unrelated commands,
- module 08 supplies only the CONNECT-safe normalizations that are actually established,
- a historical geometry key-in remains **runtime-test-required** on the current host until stronger evidence exists.

This module does not create a complete MicroStation key-in catalogue.

## 1. Evidence-backed primitive geometry vocabulary

The following table combines historical GRAPHICO instruction evidence with exact current-host observations that GRAPHICO has separately runtime-tested.

| Operation | Historical source spelling | Canonical new-authoring spelling | Evidence state |
| --- | --- | --- | --- |
| simple line | `pla line` | `place line` | historical real-instruction evidence; current-host runtime test still required |
| line string | `pla lstring` / full-form examples also exist in later source material | `place lstring` | historical/supporting evidence; current-host runtime test still required |
| smart line | `pla smartline` and some full `place smartline` examples | `place smartline` | historical/supporting evidence; current-host runtime test still required |
| rotated block | - | `place block rotated` | **GRAPHICO runtime-verified on MicroStation 2026, 2026-08-26** |
| interactive circle | - | `place cir` | **GRAPHICO runtime-verified on MicroStation 2026, 2026-08-26**; radius is chosen interactively rather than supplied as a numeric key-in parameter |
| circle by edge | - | `place cir edge` | **GRAPHICO runtime-observed on MicroStation 2026, 2026-08-26**; invokes the three-point/circumference method, not the desired interactive-radius workflow |
| circle by radius | `pla cir radius <value>` | `place cir radius <value>` | historical real-instruction evidence; current-host runtime test still required for the parameterized form |
| shape | `pla shape` | `place shape` | historical real-instruction evidence; current-host runtime test still required |

Evidence examples include:

```text
Georeal_GP.xml: pla line
Georeal_GP.xml: pla lstring
Georeal_GP.xml: pla cir radius $S(2)
Georeal_PO.xml: pla shape
DTM_TP historical material: place smartline / pla smartline
```

Module 08 changes only the established leading command abbreviation:

```text
pla -> place
```

It does **not** authorize arbitrary expansion of later tokens.

## 1A. Authoring preference for line tools

Command evidence and authoring preference are tracked separately.

| Canonical form | Evidence state in this module | Authoring preference |
| --- | --- | --- |
| `place smartline` | historical/supporting; current-host runtime test still required | **preferred-general** for ordinary new multi-segment/general linework |
| `place line` | historical real-instruction; current-host runtime test still required | **preferred-single-segment** when the action is specifically one line/segment |
| `place lstring` | historical/supporting; current-host runtime test still required | **situational-element-type** when LineString output or that exact workflow is intentional |
| `place shape` | historical real-instruction; current-host runtime test still required | **situational-closed-area** when a Shape/closed-area workflow is intended |
| `place block rotated` | current-host runtime-verified | **block-specific** when a rotated block/rectangle workflow is intended |
| `place cir` | current-host runtime-verified | **preferred-interactive-circle** when the radius is to be chosen interactively |
| `place cir edge` | current-host runtime-observed as three-point/circumference placement | **three-point-circle-only**; do not use as a substitute for the interactive-radius workflow |
| `place cir radius ...` | historical real-instruction; current-host runtime test still required for the parameterized form | **explicit-radius-circle** when a numeric/scaled radius value is intentionally supplied |

The default for general linear CAD authoring is therefore `place smartline`, not mass use of `place lstring`. `place lstring` remains valid evidence-backed syntax, but its use should follow an explicit LineString/workflow reason rather than habit.

## 2. Circle spelling and variant boundary

Historical circle evidence uses:

```text
pla cir radius $S(2)
```

For new MSet 2026 authoring, the established normalization of that evidenced parameterized form is therefore:

```text
place cir radius $S(2)
```

The token `cir` must not be silently rewritten to `circle`. Current GRAPHICO runtime evidence now independently confirms that `cir` is also used by the working MicroStation 2026 variants below. Module 08 still forbids guessing unknown expansions.

### Runtime-verified interactive circle

GRAPHICO runtime test on MicroStation 2026 (2026-08-26) verified:

```text
place cir
```

as the desired interactive circle-placement workflow in which the radius is chosen interactively in the host rather than supplied as a numeric key-in parameter.

### Runtime-observed variants that are not substitutes

The same test session observed:

```text
place cir edge
```

invoking the three-point/circumference circle method. It is therefore not a substitute when the requested workflow is the interactive-radius `place cir` behavior.

The session also observed that invoking the `radius` variant **without supplying a new numeric radius value** reused the previous radius. Do not choose that incomplete form when the user asks to pick a new radius interactively. The historically evidenced parameterized form `place cir radius <value>` remains separately classified and should not be conflated with the no-value observation.

These are variant-specific observations. They do not certify untested circle subcommands or authorize inventing other `place cir ...` forms.

## 3. Primitive geometry can be resource-independent

A primitive line or circle need not depend on a named level, cell, TextStyle or custom line style.

A small geometry branch can therefore be authored without inventing environment resources. Example structure:

```xml
<Group Cpt="Pomocná geometria">co=bylevel;lc=bylevel;wt=bylevel
    <Group Cpt="Čiary">
        <Feature Cpt="Všeobecná línia">place smartline</Feature>
        <Feature Cpt="Jednoduchý úsek">place line</Feature>
    </Group>
    <Group Cpt="Kružnice">
        <Feature Cpt="Kružnica r=2">place cir radius $S(2)</Feature>
    </Group>
</Group>
```

This is an authoring pattern, not a claim that all three host operations have already been runtime-verified on MicroStation 2026. Their evidence state must remain visible in review/output until current runtime verification promotes them.

## 4. Tool placement may be local or inherited

The same semantic rule from modules 02 and 06 applies to geometry:

- a geometry Feature may contain its placement tool locally,
- or an ancestor Group may carry the tool while descendant Features provide only meaningful deltas.

Historical GRAPHICO instructions contain patterns such as a `pla lstring`/`place lstring` Group with child Features that select line style/weight/color variants.

A child Feature is complete in context when its **effective command** contains the intended drawing tool through Group ancestry.

## 5. Geometry captions must match the effective command

For a Feature presented as a concrete drawing operation, semantic review compares the caption with the complete effective command.

Examples:

- `Cpt="Jednoduchá čiara"` is consistent when the effective command activates `place line` locally or through ancestry.
- `Cpt="Kružnica r=2"` is consistent when the effective command contains the evidenced circle-radius operation.
- a state-only command such as `co=bylevel;wt=bylevel` is not a complete line/circle operation unless the caption/context clearly presents it as a preset or modifier.

This is **not** a rule that every Feature must activate a tool. It is the module-06 promise/effect/context rule applied to geometry.

## 6. Geometry baseline placement

Primitive geometry commonly depends on active graphical attributes. When deterministic symbology is required, an evidenced baseline such as:

```text
co=bylevel;lc=bylevel;wt=bylevel
```

belongs in the nearest common geometry Group that actually needs it.

The baseline is not automatically global. A text, measurement, external-document or unrelated action branch should not inherit line-style state merely because a geometry branch needs it.

Because `lc=` is a current MSet line-style scale trigger, `lc=bylevel` can produce:

```text
LINESTYLE SET SCALE <ScaleFactor>
```

That side effect remains part of the final-command review.

## 7. Circle radius and MSet scale

The historical GRAPHICO geometry pattern includes:

```text
place cir radius $S(2)
```

Current MSet 2026 module-03 semantics establish `$S(number)` as explicit standard-scale substitution. Circle `radius` is not one of the automatic `tx/th/tw/ls`, `PS/PD`, cell-scale or terminator-scale assignments.

Therefore `$S(...)` is an appropriate scale mechanism for a radius value when a scale-sensitive circle is intended and the host command itself is accepted by the target runtime.

Do not place `$S(...)` around assignments already handled automatically by module 03 unless deliberate double scaling is intended.

## 8. `dialogtext above/below` is element-relative

GRAPHICO clarification for the text patterns in module 07:

```text
place dialogtext above
place dialogtext below
```

represent placement **above/below an element**, not generically above/below a point.

Canonical captions/context should therefore use wording such as:

```text
Poloha k elementu
    Nad elementom
    Pod elementom
```

A caption such as `Nad bodom` / `Pod bodom` is semantically misleading for this evidenced operation and fails the module-06 context check.

## 9. Evidence labels for new geometry authoring

A generated instruction/review should keep these categories distinct:

```text
MSet-canonical behavior
    composition, macros, scale/substitution, DTD/package rules

GRAPHICO historical/supporting host evidence
    place line
    place lstring
    place smartline
    place cir radius ...
    place shape

Current-host runtime evidence
    place block rotated  (MicroStation 2026, GRAPHICO, 2026-08-26)
    place cir            (MicroStation 2026, GRAPHICO, 2026-08-26)
    place cir edge       (runtime-observed three-point/circumference variant, 2026-08-26)
    other operations only after the exact operation has been exercised on the target runtime
```

Historical evidence is sufficient to make a geometry operation a legitimate **candidate** in a benchmark or draft that explicitly calls for runtime verification. It is not sufficient to label the operation `runtime-verified MicroStation 2026`.

## 10. Geometry authoring review checklist

For a geometry branch, the review covers:

1. the effective command contains the intended tool locally or through ancestry,
2. `Cpt` describes what the effective command really does,
3. baseline attributes are placed only in the geometry scope that needs them,
4. `lc=` scale side effects are understood,
5. no named level/custom line style/cell is invented,
6. any `$S(...)` use is not double-scaled by another MSet rule,
7. historical host-key-in evidence is not mislabelled as current runtime verification,
8. CONNECT-safe normalization uses only mappings actually established by module 08,
9. `place smartline` is preferred for general linework unless a single-segment or specific element-type requirement justifies another tool,
10. circle variants are selected by their verified behavior: `place cir` for the current interactive-radius workflow, `place cir edge` only for the observed three-point/circumference method, and an explicit `place cir radius <value>` only when a supplied radius is intended.

## Current boundary

This module deliberately keeps a **small evidence-classified geometry vocabulary**. `place block rotated` and `place cir` are now current-host runtime-verified, and `place cir edge` has a specific runtime-observed three-point behavior. This does not certify every MicroStation drawing tool, construct command, constraint, arc/ellipse operation, custom line style, circle variant or application-specific placement command. Those items belong in the future evidence-classified key-in reference and are promoted individually after documentation/runtime verification.
