pyTransmit


pyTransmit

Complete User Guide. Seed43 pyRevit Extension.

Version 250507

1 Overview

pyTransmit automates the full document transmittal workflow from inside Revit. It replaces the manual process of copying sheet numbers into a spreadsheet, building a distribution table, and formatting the output. Everything runs inside Revit via pyRevit. Nothing to open separately, no external platform to log into.

On each issue you select the revision you are issuing, fill in the recipient details, set the issue options, and click Publish. pyTransmit marks the revision as issued in Revit and writes your chosen output formats automatically.

Item Detail
Output formats Revit Schedule, Revit Drafting View, Revit Legend, Excel (.xlsx), PDF
Sheet data Live from the open Revit model. Revision sequence, sheet numbers, names, grouping parameters.
Config files JSON files in the Settings folder, shareable via a network path.
Revit versions 2025 and 2026
Version 250507

Back to top

2 Main Window

Clicking the pyTransmit button in the Seed43 tab opens the main window. At startup the tool reads the current Revit project and pre-fills fields from the last issued revision.

The pyTransmit main window
The pyTransmit main window

Header and menu

The header bar contains the tool name, the current Revit project name, and the Publish button. The button in the top right opens the settings menu.

The settings menu opened from the hamburger button
The settings menu opened from the hamburger button

The menu gives access to all settings panels and tools.

  • Recipient Manager: manage your client list and distribution list.
  • Options Manager: configure the reason, method, format, and print size dropdowns.
  • Setup: control which fields are visible and which output formats run on publish.
  • Export Format: assign a layout template to each output format.
  • File Naming: set the default filename and output folder path.
  • Export Settings: share your config files with other team members.
  • Import Settings: pull config files from a shared folder.
  • Document Layout: open the Layout Builder to edit transmittal templates.
  • Enable Log: capture a full debug log of the next publish run.
  • Help: opens this page.
  • About: opens seed43.org.

Revision selector

Lists all un-issued revisions from the Revit project. Selecting a revision is required before you can publish.

Control What it does
Revision dropdown Lists all un-issued Revit revisions by sequence number and description.
Rev type dropdown Appears only when the project has revisions from multiple numbering sequences. Hidden when only one type exists.
Group Label toggle Text On or Text Off. Controls whether group header rows appear in the output between drawing groups. Persists between sessions.
Sheet grouping combos Select Revit sheet parameters to group the drawing list by. Selecting a value in the last combo adds a new one below for multi-level grouping.

Project info fields

Four optional fields pre-filled from Revit Project Information on startup. Each is shown or hidden by the Setup toggles.

Field Source
Organisation Organization Name project parameter
Client Client Name project parameter
Project No. Project Number project parameter
Project Project Name parameter, falling back to the Revit file title

Issue fields

Field Description
Issued By Free text initials. Written to the Revit revision IssuedBy field on publish.
Reason for Issue Dropdown driven by reason.json. e.g. A, Approval. C, Construction.
Method of Issue Dropdown driven by method.json. e.g. E, Email. M, Mail.
Document Format Dropdown driven by format.json. e.g. PDF, DWG.
Print Size Dropdown driven by printsize.json. e.g. A1, A3.

Recipient section — Distribution List mode

Shows fixed role rows loaded from distribution.json. Each row has a label (read-only role name), an Attention To text field, and a Copies number field. Pre-filled from the last issued revision.

Recipient section — Client List mode

Shows rows with Company and Contact dropdowns plus a Copies field, driven by recipients.json. Selecting a company filters the Contact dropdown to that company’s contacts. Selecting any value in the last row adds a new blank row below it automatically.

Back to top

3 Setup

Opened from ☰ > Setup. Controls what fields are visible in the main window and which output formats run on Publish. Settings save to pytransmit_setup.json immediately.

Setup panel
Setup panel

Project info

Checkbox Effect
Organisation Shows or hides the Organisation Name field.
Client Shows or hides the Client Name field.
Project No. Shows or hides the Project Number field.
Project Shows or hides the Project Name field.
If all four are unticked the entire project info card is hidden and the window is more compact.

Issue fields

Checkbox Effect
Initials Shows or hides the Issued By field. When hidden, IssuedBy is left blank on publish.
Reason Shows or hides the Reason for Issue dropdown.
Method Shows or hides the Method of Issue dropdown.
Format Shows or hides the Document Format dropdown.
Print Size Shows or hides the Print Size dropdown.

Recipient mode

Mode Effect
Distribution List Fixed role rows from distribution.json with Attention To and Copies per row.
Client List Company and Contact dropdowns driven by recipients.json.

Output formats

Format Effect
Revit Schedule Generates a ViewSchedule in the current Revit model. Default on.
Excel Generates an Excel workbook (.xlsx). Prompts for save path.
PDF Generates a PDF file. Prompts for save path.
Revit Drafting View Generates a drafting view with the transmittal placed inside it.
Revit Legend Generates a legend view with the transmittal.
Multiple formats can be on at once. pyTransmit runs each in sequence on the same Publish click.

Page height

Option Effect
A4 Standard A4 page height (287mm usable). Splits across multiple schedule views when needed. Default.
Custom Enter a custom usable height in mm.
No Page Break Single schedule view regardless of length.

Back to top

4 Export Format

Opened from ☰ > Export Format. Controls which output formats are generated when Publish runs, and assigns a layout template to each one. Each format can use a different template independently.

Export Format panel
Export Format panel
Row Description
Revit Schedule Checkbox enables or disables this output. The dropdown on the right selects the layout template to use. Default on, uses the Revit Schedule template.
Revit Drafting View Checkbox enables or disables this output. Dropdown selects the layout template.
Revit Legend Checkbox enables or disables this output. Dropdown selects the layout template.
Excel Checkbox enables or disables this output. Dropdown selects the layout template.
PDF Checkbox enables or disables this output. Dropdown selects the layout template.
Each dropdown lists all template JSON files in the Layout/Layouts/ folder. New templates created in the Layout Builder appear here automatically. Settings are saved when you close the panel.

Back to top

5 Recipient Manager

Opened from ☰ > Recipient Manager. Manages the two data sources for the recipient section: the Distribution List (role labels) and the Client List (companies and contacts).

Distribution List tab

Stores the role labels shown in Distribution List mode. e.g. Architect/Designer, Owner/Developer, Contractor, Local Authority. Add, delete, and reorder rows here. The Attention To and Copies values are filled per-issue in the main window and are not stored here.

Recipient Manager, Distribution List tab
Recipient Manager, Distribution List tab
  • Add: adds a blank row at the bottom.
  • Delete: removes highlighted rows after confirmation.
  • Drag to reorder: controls the order roles appear in the main window.
  • Column header click: sorts ascending or descending.
  • Right-click: Select All, Select None, Duplicate, Delete, Copy.

Client List tab

Stores companies and contacts for Client List mode. Multiple records with the same Company name give multiple contact options in the dropdown.

Recipient Manager, Client List tab
Recipient Manager, Client List tab
Column Description
Company The organisation name. Populates the Company dropdown in client mode.
Attention To The contact name. Multiple records with the same Company give multiple contact options.

Import

Click Browse to select a CSV or Excel file. The tool auto-detects Company and Attention To columns, shows a preview of up to 100 rows, and skips exact duplicates.

Export

Click Export in the header. Choose Excel (.xlsx) or CSV. With rows highlighted you can export selected records only, or all records.

Back to top

6 Options Manager

Opened from ☰ > Options Manager. Manages the four configurable dropdown lists: Reason for Issue, Method of Issue, Document Format, and Print Size.

Reason for Issue tab

Coded records with three fields. The Code is a short abbreviation (e.g. A, BC, C) written into the Revit IssuedTo field on publish. The Separator sits between code and description in the dropdown label. Changing it on any row updates all rows in the list. The Description is the full label, e.g. Approval, Building Consent, Construction.

Options Manager, Reason for Issue tab
Options Manager, Reason for Issue tab

Method of Issue tab

Same structure as Reason. Code, Separator, Description. e.g. E, Email. M, Mail. H, Hand. CT, Cloud Transfer.

Options Manager, Method of Issue tab
Options Manager, Method of Issue tab

Document Format tab

Simple records with a single Value each. e.g. PDF, DWG, IFC. Shown as-is in the Format dropdown.

Options Manager, Document Format tab
Options Manager, Document Format tab

Print Size tab

Simple records with a single Value each. e.g. A4, A3, A1, A0. Shown as-is in the Print Size dropdown.

Options Manager, Print Size tab
Options Manager, Print Size tab

Common controls

  • Add: adds a blank row at the bottom of the current tab.
  • Delete: removes highlighted rows after confirmation.
  • Drag to reorder: controls the order items appear in the dropdown.
  • Column header click: sorts ascending or descending.
  • Right-click: Select All, Select None, Duplicate, Delete, Copy.

Import and Export

Import loads from Excel or CSV. The expected format has sheets or sections named Reason, Method, Format, and Print Size with a header row. Export saves all four tabs to Excel (four sheets) or CSV (labelled sections).

Back to top

7 Export Settings

Opened from ☰ > Export Settings. Shares your settings JSON files with other team members by copying them to a network folder.

Export Settings panel
Export Settings panel
Setting Description
Export Path Destination folder. Files are copied into a pyTransmit Settings subfolder here.
Auto-Update on Save When ticked, silently re-exports every time you save changes in Recipient Manager or Options Manager. Keeps a shared network folder current automatically.
Recipients Includes recipients.json in the export.
Reason, Method, Format, Print Size Includes the respective JSON files.
Layout templates (Layout/Layouts/*.json) are always included in the export alongside the selected items.

Back to top

8 Import Settings

Opened from ☰ > Import Settings. Pulls config files from a shared folder into your local Settings directory.

Import Settings panel
Import Settings panel
Setting Description
Import Path Source folder. The tool looks for a pyTransmit Settings subfolder here.
Auto-Update on Open When ticked, silently imports the selected files every time the tool opens.
Recipients, Reason, Method, Format, Print Size Which JSON files to pull in.
Importing overwrites your local JSON files with the shared copies. Confirm the shared folder has valid files before enabling Auto-Update on Open.

Back to top

9 File Naming

Opened from ☰ > File Naming. Controls the default filename and output folder path used when pyTransmit prompts you to save Excel and PDF files.

File Naming panel
File Naming panel

Transmittal naming template

Type the filename template or drag token chips from the palette into the field. The live preview below shows the resolved filename using values from the current Revit project.

Token Resolves to
{proj_number} Project Number from Revit Project Information
{proj_name} Project Name from Revit Project Information
{current_date} Today’s date in YYYY-MM-DD format
{date_yy}, {date_mm}, {date_dd} Two-digit year, month, day
{rev_number} Revision number, e.g. 01
{rev_desc} Revision description, e.g. ASI01
{username} Current Windows username
{revit_version} Active Revit version number

Default: {proj_number}-TRA-{current_date}.pdf

Output path template

Sets the default folder for file save dialogs. The path preview turns green when the resolved folder exists on disk, orange when it resolves but the folder is missing, and red when the root is not configured.

Token Resolves to
{projects_root} The Projects Root folder set below
{bucket_folder} Full bucket folder name found on disk, e.g. #JOB-4251-4300
{bucket_min}, {bucket_max} Lower and upper numbers of the bucket range
{job_number} Full project folder name as found on disk, e.g. 4286 – Alterations

Projects Root

Set this to the root folder where your project folders live. pyTransmit scans it to find the correct bucket folder for the current job number. If the job is not found it tries the Older Jobs Root. Use Browse or type the path directly.

Back to top

10 Layout Builder

Opened from ☰ > Document Layout. Visual editor for transmittal layout templates. Each template is a JSON file in Layout/Layouts/. Each output format can use a different template, assigned in Export Format.

Layout Builder settings

Layout Builder settings
Layout Builder settings

Column widths

Set A, B, and C as percentages of the page width. D takes the remainder and is divided equally across revision columns.

Zone Role
A First column. Typically sheet number, e.g. 11%.
B Second column, e.g. 11%.
C Third column. Typically the widest data column, e.g. 33%.
D (auto) Revision spine. Calculated as 100 minus A minus B minus C, split across revision columns.
A + B + C must total less than 100. If they meet or exceed 100 the revision spine collapses to zero width.

Text styles

Style Default
Data Arial 2.3mm. Body text.
Header Arial 2.5mm bold. Column headers.
Title Arial 4.5mm bold. Title row.

Each style supports: font family, size in mm, bold, italic, underline, and text colour as a hex value.

Block palette and Inspector

Block palette
Block palette
Inspector panel
Inspector panel

Window areas

Layout Builder, Canvas and Preview
Layout Builder, Canvas and Preview
Area Purpose
Template selector Dropdown at the top. Select a template to load it or create a new one.
Block palette (left) All available block types, grouped. Click or drag to add to the canvas.
Canvas (centre) The row editor. Each row shows its blocks. Click to select. Drag rows to reorder.
Inspector (right) Settings for the selected row or block. Changes apply immediately.

Block types

Layout

Block Content
Logo Company logo image from branding settings.
Text Static label. Supports token substitutions.
Blank Row Empty spacer. Height controlled by the height percentage field.
Page Count Page X of Y. Format is configurable.
Current Issue Date Date of the latest revision.

Project Info

Block Content
Organisation, Client, Project Number, Project Name Project info fields from the main window.

Distribution

Block Content
Sent To Expands to one row per recipient. Company name or role label.
Attention To Expands to one row per recipient. The named contact.

Documentation

Block Content
Sheet Number Expands to one row per sheet. Shows the Revit sheet number.
Sheet Description Expands to one row per sheet. Shows the sheet name.
Drawing Group Group header label between drawing groups when grouping is active.

Revision

Block Content
Date of Issue Header row across revision columns. Supports text rotation.
Number of Copies One cell per recipient per revision column.
Revision Marks One cell per sheet per revision column. The revision letter or number.
Initials IssuedBy initials per revision column.
Reason, Method, Doc Type, Print Size codes The encoded value per revision column.

Metadata

Block Content
Reason, Method list Legend row listing all codes and descriptions.
Document Type, Print Size The value for the current issue.

Inspector block settings

Setting Description
Text Style Data (small body), Header (medium bold), or Title (large bold).
Justification Horizontal: Left, Centre, Right.
Vertical Justification Top, Middle, Bottom.
Span How many column slots this block occupies.
Borders Toggle top, bottom, left, right cell borders independently.
Data Borders Horizontal and vertical borders between expanded rows.
Background Color Optional hex colour for the cell background.
Alt Rows, Alt Color Alternating row background for expandable blocks.
Content For Text blocks. Static text or token string.
Rotation For spine header blocks. Rotate text 90 degrees.
Prefix, Suffix Text prepended or appended to the block value.
List Style One line or separate rows. For Reason and Method lists.
Date Format dd/MM/yyyy, dd MMMM yyyy, and others.
Page Format Page X, Page X of Y, X of Y, and others.
Repeat every page Row appears on every overflow page.

Template management

Action How
New template Click + next to the selector. A copy of the current template is created with your chosen name.
Rename Click the pencil icon. The JSON file is renamed on disk.
Delete Click the trash icon. Deletes the JSON file permanently.
Auto-save Changes save to the active template JSON as you make them.

Back to top

11 Enable Log

Accessed from ☰ > Enable Log. Captures a full record of a publish run for troubleshooting or bug reports.

Enable Log, file save dialog
Enable Log, file save dialog
  1. Click ☰ > Enable Log.
  2. A file save dialog opens. Choose where to save the log zip and give it a name.
  3. The menu label changes to Log: ON (click to cancel).
  4. Click Publish as normal.
  5. After the run completes the log is saved and a dialog confirms the path. Logging turns off automatically.

The log zip contains a plain-text log with timestamped START, DONE, CANCELLED, and ERROR entries for each output type, a copy of the layout JSON used, and the project number and name.

Back to top

12 Settings Mismatch

When you open pyTransmit on a project that was previously issued, the tool compares your current Setup settings against what was active when the last revision was issued. If they differ, a Settings Mismatch dialog appears before the window is ready.

Option Effect
Update Settings Permanently updates your Setup config to match what was used last time. Saves to disk.
This Issue Only Applies the previous settings for this session only. Not written to disk.
Ignore Proceeds with your current settings unchanged.
The check compares which info rows and output formats were active. It does not compare dropdown selections or recipient data.

Back to top

13 Publish Workflow

What happens when you click Publish:

  1. pyTransmit reads all field values from the main window.
  2. It builds the IssuedTo string encoding all metadata as space-separated tags.
  3. In a single Revit transaction it writes IssuedTo, writes IssuedBy, and marks the revision as Issued.
  4. For file outputs (Excel, PDF) a file save dialog opens. Cancelling skips only that format.
  5. For Revit outputs (Schedule, Drafting View, Legend) it writes directly into the current model.
  6. After all outputs complete the main window closes.
Cancelling a file save dialog skips only that format. The revision is marked as Issued regardless.

IssuedTo encoding

All issue data is stored in the Revit revision IssuedTo field as a compact encoded string so future sessions can pre-fill the main window without needing an external database.

R:C M:E F:PDF S:A1 | DL: 1A.[Jane Smith]3 2O.[Bob Jones]1 | RT:Numeric | VIS:FR,CL,PN,PJ | EX:RS,Excl | RPG:1 | GP:Discipline
Tag Meaning
R: Reason for Issue code, e.g. R:C for Construction.
M: Method of Issue code, e.g. M:E for Email.
F: Document Format, e.g. F:PDF.
S: Print Size, e.g. S:A1.
DL: Distribution List recipients. Format: index, letter, attention, copies.
CL: Client List recipients. Format: Company, Contact, copies.
RT: Revision numbering type, e.g. Numeric, Alphanumeric.
VIS: Active info rows. FR=Organisation, CL=Client, PN=Project No., PJ=Project.
EX: Active outputs. RS=Schedule, RD=Drafting, RL=Legend, Excl=Excel, PDF=PDF.
RPG: Page break. 0=none, 1=A4, or a mm value for custom.
GP: Sheet grouping parameters, separated by ~~ for multiple levels.

Back to top

14 Troubleshooting

Main window does not open

  • Reload pyRevit from the pyRevit tab and try again.
  • Check the pyRevit output window for a XAML load error.
  • Make sure Seed43Styles.xaml is present in the extension root folder.

Revision not in the dropdown

  • Only un-issued revisions appear. Add a new revision sequence entry in Revit if all are already issued.

Settings Mismatch appears every time

  • Choose Update Settings to permanently save the project settings. The dialog will not reappear unless settings change again.

Revit Schedule output looks wrong

  • Open Layout Builder and check that column percentages A + B + C are less than 100.
  • Check row heights are not too small for the text size.
  • Delete any stale schedule pages from a prior run and publish again.

File save dialog does not appear for Excel or PDF

  • Confirm the Excel or PDF checkbox is ticked in Export Format.
  • Confirm the format has a layout template assigned in Export Format, not set to (none).

Output folder not resolving in File Naming

  • Check that Projects Root is set and the folder exists on disk.
  • Check that bucket folder names on disk contain numbers matching the job number.

Logo not appearing

  • Check the logo source path in Branding settings points to a PNG or JPG that exists.
  • If using a network path, confirm it is accessible from the machine running Revit.
Raise issues at github.com/Seed-43/Seed43/issues. Include the pyRevit output window error and a log file if possible.

Back to top