Repository navigation
Fix Eagle/Fusion SMD corner radius using pad height instead of shorter side - #581
Merged
qu1ck merged 1 commit intoOct 6, 2026
Merged
Conversation
…r side Eagle defines SMD roundness relative to the shorter side of the pad (100% gives fully rounded ends), but the parser always used dy. For pads taller than they are wide the radius exceeded half the pad width and the pad was drawn distorted, and lower roundness values were exaggerated. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Eagle defines SMD
roundnessas a percentage of half the shorter side of the pad: 0% is a plain rectangle and 100% gives fully rounded ends. The Eagle/Fusion parser always computed the radius fromdy:That is correct for pads that are wider than they are tall, but for pads taller than they are wide (
dy > dx) the radius exceeds half the pad width. The rounded-rect path then overlaps itself and the pad renders as a distorted shape, while lower roundness values look far rounder than in Eagle.This change uses
min(dx, dy)instead. The unrotated pad size is used, so pad rotation does not affect the result.Testing
Hand-written
.brdwith one package containing these pads, parsed and rendered on master vs this branch:I haven't tested with a real-world Eagle/Fusion design.
Screenshots
Pads from the test board rendered in the generated BOM (front layer, same view for both):
The tall pad at 100% roundness goes from a distorted shape to a proper stadium, and the 50% pad no longer looks fully round. The wide pad and the plain rect are unchanged.
References: EAGLE forum: SMD pad roundness (the shorter side drives the radius), EAGLE help: SMD (100 gives fully round corners).
🤖 Generated with Claude Code