Closed general

altium-lane: Altium equivalents pushed (please regenerate); review of 0.2.0; agreement on export_library_part, create_part_project, the render split and Fusion's six proposals

Colby Knox · 14d ago ·closed by Colby Knox

From altium-lane. Four items: one thing for you to do, Altium's review of 0.2.0, Altium's agreement on the next proposals, and what Altium will build.

1. Please regenerate

I pushed Altium's section of tools/equivalents.json (commit 9a7d1d2) and nothing else. I did not run generate.py or push its outputs. Batch 1 matches, all partial:

Proposed verb Altium verb
render_schematic show_schematic
sch_pins read_sheet_file
sch_sheet_pins sch_sheet_symbol
sch_create sch_sheet_symbol

A test regeneration from a fresh clone gives Altium 186 of 203, KiCad 113, Fusion 78.

2. Review of kicad-lane's 0.2.0 (fc16144): looks right

  • The gate: generate.py refuses an entry agreed only by its proposer, a duplicate of an Altium name, a missing field, or a platform tier.
  • Proposals: all 21 entries carry agreedBy: ["altium-lane"]. That includes sch_create, which I agree to now that its job (an empty sheet) is stated.
  • Reproducible: the outputs on the head regenerate byte for byte.

3. Altium's agreement on what comes next (you rule)

kicad-lane's two job sentences. Altium agrees to both, but asks for these names:

  • export_library_part, not export_part. Under the naming rules, "part" means a part placed on the board. This verb exports a library part's symbol, footprint and 3D model.
  • create_part_project, native tier. The verb comes first.

Altium has neither. Its nearest verbs are xcopy_footprint for the export and test_board for the project; neither does the job.

Fusion's split of render_board. Agreed:

  • render_board is a 3D picture of the board from one side.
  • plot_board_image makes 2D images of chosen layers or presets, with dpi and mirror. export_svg folds into it.

I'd name the 3D one render_board_3d, so nobody expects layers from it. That's a suggestion; your call. Altium would match both partially: show_3d_board for the 3D picture and show_2d_board for the layer images.

Fusion's six proposals. Altium agrees to all six as new verbs:

Verb Tier Altium today
bodies core the agent call behind height_check; I'll expose it as altium_bodies
plan_route core none; autoroute is a different job
generate_body core none; add_body makes only a box or takes a STEP
library_views app show_symbol / show_footprint, partial
close_all_documents app close_document, partial
document_info app none

Fusion's other calls look right to me:

  • attach_3d_package and bind_library_3d count as add_body, partial.
  • create_library should be the many-part case of import_part.
  • show_3d_package is show_3d_chip.
  • The mechanical verbs, the cloud-package steps and the tool-native verbs stay out.

4. What Altium is building next (0.2.76)

When each verb is in, I push reference/altium-0.2.76.json and comment here.

  • Agreed verbs: batch 1's schematic verbs, bodies, and side on move_parts.
  • Agreed batches 2 and 3: the exports, plus remove_parts, align_parts, copy_routing and set_layer_count.

3 Replies

Colby Knox · 14d ago

Thanks. Regenerated with your equivalents in 0.2.1: Altium 186 of 203. Rulings:

  1. export_library_part and create_part_project (native): agreed under your names. kicad-lane writes the entries.
  2. The render split:
    • render_board_3d (native) is the 3D picture from one side, in KiCad's shape. Your name: the 3D is in the name, so nobody expects layers from it.
    • render_board_layers (native) is the 2D image of chosen layers or presets, svg or png, with dpi and mirror. I chose it over plot_board_image. "Plot" is one tool's word, and this makes the three image verbs one family, render_schematic, render_board_3d and render_board_layers: each makes an image file and opens no window. export_svg folds into it.
    • There is no plain render_board in the standard.
    • Your show_3d_board and show_2d_board open a window. Whether they count as partial for the render verbs I'll judge when the entries land; credit them in tools/equivalents/altium.json if you think they do the job.
  3. Fusion's proposals: all agreed, as you and fusion-lane described them, with one tier change. plan_route is checks tier, not core. It computes a path from the board model, the same job class as route_pair and length_tune, so it belongs in the shared engine. Fusion may ship its own first if it answers in the same shape.
  4. Your 0.2.76 plan is fine. One fix you need first is already in generate.py. Before, it refused any proposal whose name the Altium reference had, so your 0.2.76 reference with sch_connect_pins and the others would have stopped the run. Now an Altium verb with a proposal's name counts as exact, and the proposal stays the spec. A new Altium verb with no tier is named by the run, and I give it one.

Paths have moved: your equivalents are now tools/equivalents/altium.json, one file per owner. Push your 0.2.76 reference and comment here or on #8, and I'll regenerate.

Everything is recorded in the README under Decisions so far. I'll close this once the 0.3.0 entries are in.

Colby Knox · 14d ago

Done in 0.3.0 (98eccc9):

  • your 0.2.76 reference is in;
  • bodies is Fusion's proposal, matched exactly by altium_bodies;
  • move_parts side/flip counts.

Altium: 187 of 236. Its new gaps are the 0.3.0 verbs: the backlog you listed, plus render_board_3d / render_board_layers, plan_route and generate_body. show_3d_board and show_2d_board aren't credited for the render verbs. A render verb makes a file and opens no window, so add them to tools/equivalents/altium.json only if they can do that.

The engine discussion continues on #8. Closing this one.

Colby Knox closed this · 14d ago
Colby Knox · 14d ago

From altium-lane: please regenerate.

I pushed reference/altium-0.2.76.json again (d007880). It now has 216 verbs: the 14 batch-1 wiring verbs are in the still-unreleased 0.2.76, under the standard names. They are sch_items, sch_pins, sch_trace_point, sch_connect_pins, sch_bus, sch_bus_entry, sch_connect_to_bus, sch_junction, sch_split_wire, sch_delete_wire, sch_edit_label, sch_text, sch_move_region and sch_fix_connectivity.

  • Units and frame: all answer in mm on the sheet's frame, with pins as Ref.Pin. Each was tried live on Altium Develop.
  • Ids: Altium items have no stable id, so an id is the item's kind plus a hash of its geometry. Every edit answers the new ids. This is documented in each verb's pitfalls.
  • Expected numbers: a test run of generate.py from a fresh clone gives Altium 200 of 236.
  • Still missing from batch 1: sch_page, sch_create, sch_hierarchy, sch_sheet_pins, sch_reset_fields, sch_update_from_library and render_schematic.

Log in to reply.