Rooftop Workflow

Design rooftop solar systems with landscape-oriented panels. This workflow is optimized for commercial and industrial rooftop installations.

Found a bug?

Use the Report Bug button in the Branch toolbar to submit issues directly to our team. Include a description of what you were doing and any error messages you saw.

Overview

Rooftop systems typically use landscape orientation (panels wider than tall) to maximize coverage on pitched roofs. Branch automatically detects this orientation and optimizes string routing accordingly.

Before you start

Run BRANCHOPTIONS to open the settings UI and configure your project. You can set string length, panel detection, inverter settings, layer assignments, and more.

Step 1: Prepare Your Drawing

Start with your panel layout already drawn in AutoCAD. Panels can be:

  • Closed polylines representing panel outlines
  • Blocks with consistent naming (e.g., "PV_Module")
  • Rectangles at actual panel dimensions

Alignment matters

Panels should be aligned in rows. Branch uses an alignment tolerance (default: 36 units) to group panels into rows. Misaligned panels may create separate groups.

Step 2: Create Panel Groups

Panel groups organize your panels into logical arrays that can be strung together.

Command: PANELGROUPCREATE

Select panels in your drawing, then run this command. It breaks up the selected panels into sub-array groups based on proximity and alignment:

  1. Analyzes positions and orientations of selected panels
  2. Groups panels by proximity and alignment
  3. Creates a bounding polyline around each group (on the "Panel Group" layer)

After running, you'll see colored outlines around each panel group, along with header labels showing how many panels to add or subtract to achieve perfectly even string lengths.

Step 3: Adjust Panels for Even Strings

Each panel group header displays a recommendation (e.g., "+2" or "-1") indicating how many panels to add or remove to get perfectly even string lengths based on your configured string size.

Command: ADDPANELS

To balance your strings:

  1. Review the header recommendations on each panel group
  2. Run ADDPANELS
  3. Choose Auto to fill all incomplete groups in the drawing at once, or select a specific target group manually
  4. If manual, select panels from other panel groups or unassociated panels to transfer
  5. The transferred panels will visually join the target group

One-time transfers

Panels from other panel groups can only be added once. To reverse an ADDPANELS action or remove panels from a group, use REMOVEPANEL.

Jumper cables

When you run SOLVE after adding panels, you'll be prompted to indicate the two panels where the jumper cable will connect the transferred panels to their new group.

This step ensures all strings have the same number of panels, which simplifies inverter configuration and maximizes system efficiency.

Step 4: Solve Strings

The solver automatically generates optimized string connections within each panel group.

Command: SOLVE

The solver optimizes for:

  • Fastest install time — Minimizes jumps between rows and keeps them at row ends
  • Reduced UV-rated wire — Optimizes routing to minimize exposed cable runs

For rooftop systems, strings typically run horizontally along rows, then connect vertically between rows. The solver creates polylines on the "String" layer.

Step 4b: Edit Strings (Optional)

If the automatic solution doesn't work for certain areas, you can delete individual strings and redraw them manually or with the most recent string length.

Command: DELETESTRING

To edit strings:

  1. Run DELETESTRING and select the string(s) you want to remove
  2. Add strings back using one of these options:
    • SINGLESTRING — Adds all selected panels to a single string, regardless of the configured string length
    • MULTISTRING — Draws strings over all selected panels using the configured string length. If the panel count doesn't divide evenly, the program may use smaller string lengths for remaining panels
  3. The redrawn string will integrate with the existing solution

When to edit manually

Manual edits are useful for complicated array layouts, making quick changes, or adjusting and improving stringing solutions returned by the automatic solver.

Step 5: Place Inverter

Add your inverter to the drawing so homeruns can be routed to it.

Command: ADDINVERTER

This command offers three modes:

  • Automatic — Assigns the nearest unassigned strings based on the number of DC connections specified in settings
  • Manual — You select which strings to assign, up to the DC connections limit
  • Add Later — Places the inverter block without assigning any strings. Use ASSIGNSTRINGS afterward to batch-assign across all inverters at once

Once strings become associated with an inverter, their color and tagging will update to reflect the assignment. For multiple inverters, use ADDALLINVERTERS to automatically place inverters for all unassigned strings.

When to use Add Later

If you have multiple inverters, placing them all first and then running ASSIGNSTRINGS lets the optimizer distribute strings across all inverters simultaneously — producing better results than assigning one inverter at a time.

Moving inverters

Use MOVEINV to reposition inverter blocks. If you use AutoCAD's native MOVE command on these blocks, their location will not be properly updated in Branch's data model.

Step 5b: Assign Strings (if using Add Later)

If you placed inverters with Add Later mode, assign strings to them now.

Command: ASSIGNSTRINGS

Choose a mode:

  • Auto — Optimizes assignments across all inverters based on proximity. Minimizes total wiring distance
  • Manual — Select an inverter, then pick which strings connect to it. Repeat for each inverter

After assignment, string tags and colors update to show their inverter association.

Auto mode recommended

When you have multiple inverters, Auto distributes strings more evenly than manual selection and minimizes cable runs across the entire drawing.

Step 6: Balance inverters

After placing inverters, check that strings are evenly distributed across MPPT inputs.

Command: INVBALANCE

The Inverter Manager shows balance status for every inverter in your drawing. Inverters with mismatched string panel counts are flagged and sorted to the top. When a module and inverter are configured in BRANCHOPTIONS, each inverter row shows its DC/AC ratio, and each MPPT column displays its DC power in kW.

What to look for

  • Green rows — All MPPTs balanced, no action needed
  • Yellow/Red rows — Panel count mismatch on one or more MPPTs. Review the suggested swaps or click Auto-Balance All

Double-click any suggested swap to apply it, or click Auto-Balance All to fix all inverters at once. Every swap is tracked in the history panel — you can undo individual swaps or revert to any previous state.

Best results after ADDALLINVERTERS

The automatic inverter placement command assigns strings by proximity, not by panel count. Running INVBALANCE afterward ensures strings with matching panel counts end up on the same MPPT.

Step 7: Create homeruns

Route cables from string endpoints to the inverter or combiner box.

Command: HOMERUNS

This command generates schematic homerun routing:

  1. Identifies string endpoints
  2. Creates schematic routing to the inverter (not optimized pathing)
  3. Creates homerun polylines on the "HomeRun" layer

About schematic routing

The homerun command generates schematic routing that can be used to model circuit length. As long as your homeruns run at 90-degree angles (not diagonal), this schematic representation is just as accurate as an optimized path for length calculations. Optimized pathing is currently under development. Color-coding and text labeling are handled by the inverter assignment step, not the homerun command.

Step 7b: Adjust Homeruns (Optional)

Fine-tune homerun routing to match your actual site conditions.

Command: HOMERUNADJUST

Four editing operations:

  • Move Segment — Slide a trunk segment perpendicular to its direction
  • Angle Vertex — Drag a vertex freely to create angled routing
  • Insert Vertex — Add a waypoint along a segment for more control
  • Delete Vertex — Remove a waypoint to simplify routing

When to adjust

The automatic routing creates orthogonal paths that produce accurate lengths for most designs. Adjust homeruns when you need routing around obstacles or along specific paths like conduit runs or cable trays. Adjusted lengths are reflected in CABLEEXPORT automatically.

Step 8: Set Elevation Zones (Optional)

For rooftop systems with varying roof elevations, define zones to account for height differences in your circuit length calculations.

Command: ZONEHEIGHT

The Zone Height Manager lets you:

  1. Create named elevation zones with a height offset in drawing units
  2. Assign strings to zones by selecting them in the drawing
  3. Visualize zone boundaries — colored bounding boxes and labels appear around assigned strings while the form is open

When zones are defined, CABLEEXPORT adds three columns: Zone, Elev. Offset*, and Adj. Circuit Length*. The offset is applied independently to each +/− homerun.

When to use zone heights

Zone heights are useful for multi-level rooftop systems where strings at different elevations need adjusted circuit lengths. The offset accounts for the vertical cable run between roof levels.

Adjusted lengths are estimates

Elevation-adjusted circuit lengths are approximate — the offset is added to each homerun independently and may not reflect the exact cable path. Column headers are marked with an asterisk (*) to indicate this.

Step 9: Review & Export

Review your design and export data as needed.

CABLEEXPORT

Export string and homerun data to a spreadsheet. In the export UI, you can click on individual strings or homeruns to jump to their location in the drawing.

Troubleshooting

Panels not grouping correctly?

Check that panels are aligned within the tolerance (default 36 units). UseADDPANEL orREMOVEPANELto manually adjust groups.

Strings going the wrong direction?

Use FLIPSTRING to reverse string direction.

Need to swap inverter assignments between strings?

Use SWAP to swap inverter assignments between two strings. This moves which inverter each string is connected to, not the string routing itself.

Uneven panel counts across MPPTs?

Use INVBALANCE to open the Inverter Manager. It shows balance status for all inverters, suggests fixes, and can auto-balance the entire drawing with one click. Cross-inverter swaps show homerun length impact so you can weigh the tradeoff.

Need to move an inverter?

Use MOVEINV to reposition. Homeruns will need to be regenerated after moving.

Frequently Asked Questions

How does Branch compare to writing custom AutoLISP scripts?

Branch replaces fragile LISP routines with purpose-built solar automation. Unlike scripts that break when CAD standards change, Branch understands solar design context—automatically handling string sizing, voltage windows, and NEC requirements. You get workflow automation, not just task scripting.

Does Branch work with SolarEdge and Enphase optimizers?

Yes. Branch supports SolarEdge power optimizers, Enphase microinverters, and traditional string inverters. The string sizing algorithms respect manufacturer voltage windows and optimizer count limits automatically.

Can I import designs from Helioscope or PVsyst?

Branch works with panel layouts in AutoCAD format. You can export from Helioscope or other design tools to DWG, then use Branch to automate stringing, routing, and circuit length export. Branch also imports SolarEdge Designer PDFs directly.

What AutoCAD versions does Branch support?

The plugin works with AutoCAD 2018 through 2026 on Windows. It installs as a native plugin with a dedicated ribbon tab and command-line interface.

Related Guides

Start Free Trial — 14 days free