
Perfect Circles & Quick Copy
A tool for creating perfect foundation circles, quickly!
Description
<article id="modPerfectCircles">
<style>#modPerfectCircles * {--modpc-font-sans: Open Sans,Roboto,Helvetica Neue,sans-serif;--modpc-font-mono: Lucida Console,Consolas,ui-monospace,SFMono-Regular,Menlo,Monaco,Liberation Mono,Courier New,monospace;--modpc-font-serif: Georgia,serif;}.perfCircHeader {margin: 2rem auto;display: block !important;border-radius: 10px;box-shadow: 0.8rem 0.8rem 0.8rem #112;max-height: 24rem;}.perfCircTag {text-align: center;font-style: italic;}.perfCircOnline {width: calc(600px + 4rem);float: none;margin: auto;max-width: 100%;display: flex;flex-wrap: wrap;justify-content: center;}.perfCircOnline img {max-width: 100%;width: 300px;margin: 1rem;}.perfCircFooter a {color: #fff;text-decoration: underline !important;text-decoration-style: dotted !important;}#modPerfectCircles p, #modPerfectCircles li {line-height: 2rem;}.perfCircFooter {opacity: 0.8;padding: 0 2rem;font-family: var(--modpc-font-sans);}.perfCircFooterPC {font-family: var(--modpc-font-serif);font-style: italic;}.perfCircFooterUsSchmucks {opacity: 0.3;padding-left: 0.3rem;}.perfCircCaps {font-variant: small-caps;}.perfCircSection {background-color: rgba(150,150,200,0.1);border-radius: 4px;padding: 1rem;margin: 0.5rem 0.5rem 3rem;}.perfCircSectionLast {margin-bottom: 1rem;}.perfCircSubSection {padding: 1rem;border: 1px solid #556;margin: 1rem 1rem 2rem;display: inline-block;width: calc(100% - 2rem);border-radius: 10px;}.perfCircSubSectionFirst {margin: 2rem 1rem;}.perfCircGuideSection {padding: 10px 20px;border: 1px dashed #99A;margin: 10px 10px 20px;display: inline-block;width: calc(100% - 20px);border-radius: 10px;}.perfCircSubGuide {padding: 0 0 0 0.75rem;}.perfCircIntro {padding-left: 1rem;}.perfCircSummary {text-transform: uppercase;font-size: 2rem;padding: 10px;}.perfCircSummary:hover {text-decoration: underline dotted 2px;}.perfCircSubSection h2 {left: -5px;position: relative;border-bottom: 1px solid #556;margin: 0 0 2rem 0;}.perfCircGuideSection h3 {border-bottom: 1px dashed #99A;position: relative;left: -5px;margin: 0.5rem 0 2rem 0;font-variant: small-caps;}.perfCircSubGuide li {margin: 0.3rem 0;}#modPerfectCircles a {text-decoration: none;}#modPerfectCircles a:hover {text-decoration: underline;text-decoration-style: double;}.perfCircJump {font-variant: small-caps;text-transform: lowercase;margin: 0 0.3rem;}.perfCircSummary a, .perfCircSubSection h2 a, .perfCircGuideSection h3 a {visibility: hidden;text-decoration: none !important;padding-right: 5px;}.perfCircSummary:hover a, .perfCircSubSection h2:hover a, .perfCircGuideSection h3:hover a {visibility: hidden;}.perfCircSummary a::before, .perfCircSubSection h2 a::before, .perfCircGuideSection h3 a::before {content: "\2607";}.perfCircSummary a {padding-left: 0.5rem;}.perfCircDetails:is([open=""]) .perfCircSummary::marker {content: "\21F1";}.perfCircDetails:not([open=""]) .perfCircSummary::marker {content: "\21F2";}.perfCircListB {list-style-type: circle !important;}.perfCircZoopIssues {padding: 1rem;background-color: #445;border-radius: 10px;margin: 2rem 1rem;color: #bbb;}.perfCircZoopIssues h5 {margin: 0 1rem 1rem;}.perfCircZoopIssues li {font-style: italic;font-family: var(--modpc-font-sans);}.perfCircTitle {font-style: italic;font-family: var(--modpc-font-sans);font-size: 1.1rem;background-color: #00d200;padding: 0 0.4rem 0.1rem 0.3rem;border-radius: 3px;color: #000;font-weight: 600;margin-right: 0.2rem;}#modPerfectCircles mark {border-radius: 3px;white-space: nowrap;}#modPerfectCircles mark a {color: unset;text-decoration: underline;text-decoration-style: dashed;}.perfCircNameLink, .perfCircNameRef, .perfCircMark, .perfCircMarkWarning {padding: 0 0.4rem 1px 0.3rem;font-family: var(--modpc-font-sans);}.perfCircName, .perfCircFuncLink, .perfCircFunc, .perfCircFuncRef, .perfCircMenuLink, .perfCircMenu, .perfCircMenuRef, .perfCircDefault, .perfCircFixed {font-family: var(--modpc-font-mono);padding: 0.3rem 0.4rem 0.2rem 0.3rem;}.perfCircMarkLink {border: 1px dashed #fff;}.perfCircNameLink {background-color: rgba(0, 210, 0, 1);color: #000;font-style: italic;border: 1px dashed #fff;}.perfCircName {background-color: #62ae62;color: #000;font-style: italic;border: 1px solid #fff;}.perfCircNameRef {background-color: #66ff6629;color: #fff;font-style: italic;font-variant: small-caps;}.perfCircNameClear {background-color: transparent;padding: 0 0 0 0.3rem;}.perfCircFuncLink {background-color: #0064ff;color: #fff;border: 1px dashed #fff;}.perfCircFunc {background-color: #6aa4ff;color: #000;border: 1px solid #fff;}.perfCircFuncRef {background-color: #72a6f75e;color: #fff;}.perfCircMenuLink {background-color: #00ffe7;color: #000;border: 1px dashed #fff;}.perfCircMenu {background-color: #00bdab;color: #000;border: 1px solid #fff;}.perfCircMenuRef {background-color: #3bc4b66b;color: #fff;}.perfCircFixed {background-color: #ff6131;color: #000;border: 1px solid #000;}.perfCircDefault {background-color: #c466c4a8;color: #fff;}.perfCircMark {background-color: #ffff56;color: #000;}.perfCircMarkBright {background-color: #ff0;color: #000;}.perfCircNameRefStrong {background-color: #006400;color: #fff;}.perfCircMarkWarning {background-color: #ff0;color: #000;font-size: 1.2rem;border: 3px solid #f00;padding: 0.1rem 0.4rem 1px 0.3rem;}.perfCircHilight {background-color: #ff8d6a;font-family: var(--modpc-font-sans);font-style: italic;font-variant: small-caps;border: 1px solid #000;padding: 0 0.3rem;display: inline-block;font-size: 1.1rem;height: 1.2rem;top: 1px;position: relative;line-height: 1.0rem;}.perfCircAsideBlock {padding: 1rem;border-radius: 5px;clear: both;margin: 1rem;border: 1px dashed #ff0;background: repeating-linear-gradient( -45deg, #334, #334 10px, #2c2c34 10px, #2c2c34 20px );}.perfCircAsideInline {border-radius: 5px;border: 1px solid #ff0;display: inline;padding: 0.3rem 1rem;border-top: 0;border-bottom: 0;margin: 0 1rem;background: repeating-linear-gradient( 45deg, #334, #334 10px, #2c2c34 10px, #2c2c34 20px );line-height: 1.8rem;}#modpc-broc {background-color: rgba(150,250,150,0.05);border: 1px dashed #353;}.perfCircBrocImg img {max-width: 80px;}.perfCircBrocImg {display: inline-block;padding: 0.5rem;margin: 0 2rem 0 0;border: 1px solid #464;border-radius: 10px;}.perfCircBrocBox {width: calc(100% - 121px - 1rem);display: inline-block;vertical-align: middle;color: #797;opacity: 0.75;}.perfCircBrocQuotePre, .perfCircBrocQuotePost {font-size: 4rem;font-family: var(--modpc-font-mono);position: relative;line-height: 1rem;opacity: 0.5;}.perfCircBrocQuotePre {top: 1.2rem;}.perfCircBrocQuotePost {top: 3rem;}.perfCircBrocText {font-style: italic;font-family: var(--modpc-font-serif);font-size: 1.2rem;line-height: 2.2rem;}.perfCircBrocText:hover {text-decoration: underline;text-decoration-style: dotted;}.perfCircBrocSig {font-family: 'Ink Free', 'Segoe Script', cursive;font-size: 2rem;margin-left: 0.5em;color: #9b9;white-space: nowrap;line-height: 2.4rem;}#modpc-footer .perfCircFooterDonate {font-variant: all-small-caps;text-decoration: none !important;color: #fa0;opacity: 0.8;padding: 0 0.25rem 0.1rem 0.25rem;margin-left: 0.25rem;}.perfCircFooterDonate:hover {background-color: #fa0;color: #000 !important;}</style>
<section id="modpc-Basics" class="perfCircSection">
<img src="https://i.imgur.com/2AtHq7Z.png" class="perfCircHeader" />
<p class="perfCircTag">Screenshots coming soon™</p>
<div id="modpc-Intro" class="perfCircSubSection">
<h2><a href="#modpc-Intro" target="_self"></a>INTRODUCTION</h2>
<div class="perfCircIntro">
<p><span class="perfCircTitle">Perfect Circles</span> is a tool for creating circular or curved arrangements quickly, and for copy/pasting existing structures. The mod consists of 3 main components, all of which have support for the majority of base-game and modded parts.</p>
<ul>
<li><span class="perfCircTitle">Circle Builder</span> <!-- a href="#modpc-CircleBuilder" target="_self" class="perfCircJump"><jump to manual></a --> ― a temporary placeable block which, when interacted with, allows you to create perfectly circular constructions.</li>
<ul class="perfCircListB">
<li>Primarily for creating complete circles, it also has the ability to slice the circle at a specified point to create fractional curves.</li>
<li>Multiple concentric rows can be spawned, or the circle can be filled in completely.</li>
<li>Granular control over positional offsets for the whole circle relative to the Circle Builder block for: rotation, radius, x/y/z position.</li>
<li>The ability to spawn with wall-pieces of your choice automatically connected to your foundations.</li>
<li>Additional functions: stack additional wall rows vertically / in-place rotation of parts, independent of the overall circle / ramp offset to stagger successive rows of walls (horizontally) and foundations (vertically)</li>
</ul>
<li><span class="perfCircTitle">Quick Curves</span> <!-- a href="#modpc-QuickCurves" target="_self" class="perfCircJump"><jump to manual></a --> ― a hand-tool used for quickly creating curved structures while on-the-go, it functions by zooping pieces along the radius of a virtual-circle.</li>
<ul class="perfCircListB">
<li>Primarily for creating partial curves made from almost any buildable, it will zoop a curve as far as you choose, including ultimately creating a full circle.</li>
<li>Can sample existing buildables, or select from a list of compatible parts.</li>
<li>Can zoop curves horizontally, vertically, or straight.</li>
<li>When working with beams, a custom beam-length can be specified.</li>
<li>Additional functions: initial placement rotation on all axes / the number of discrete segments the virtual-circle is divided into (ie: how tightly it curves) / angle offset per division / overall radius offset / third-axis ramp angle / memory & favourites.</li>
</ul>
<li><span class="perfCircTitle">Quick Copy</span> <!-- a href="#modpc-QuickCopy" target="_self" class="perfCircJump"><jump to manual></a --> ― always available through a keybinding, this function allows you to copy & paste multiple structures, replace them where they are, or delete them.</li>
<ul class="perfCircListB">
<li>Allows you to select components individually, or to generate a box around an area (using parts you select as its vertices) for mass-selection.</li>
<li>Can be used to mass-delete any selected parts, with no item count limit.</li>
<li>Selection filter, so only specific parts within an area will be acted upon.</li>
<li>In-place part replacement: existing structures can be replaced with any other part, and optionally moved or rotated on any axis.</li>
<li>Zoop splines, to create arbitrary curves or arcs, as well as full circles.</li>
<li>Memory function to re-select any items currently within a previously saved box area.</li>
</ul>
</ul>
<p><span class="perfCircTitle"><u>This mod is vanilla-friendly!</u></span> It does not alter the resource costs of any buildables. Furthermore, the structures it creates use only parts that are already present in your game. It adds no new buildings. Disabling or uninstalling this mod will not remove anything which you have built or modified using it.</p>
<aside class="perfCircAsideBlock"><mark class="perfCircMark perfCircMarkBright"><strong><u>Note:</u></strong></mark> <mark class="perfCircNameRef perfCircNameClear">Perfect Circles</mark> currently <mark class="perfCircFixed"><u><strong>does not support <span class="perfCircHilight">Multiplayer</span> or <span class="perfCircHilight">Dedicated Servers</span></strong></u></mark>. While support for online play is on the <strong>long-term</strong> roadmap, there are no estimates on a timescale for the delivery of this feature.</aside>
</div>
</div>
<div id="modpc-Unlock" class="perfCircSubSection">
<h2><a href="#modpc-Unlock" target="_self"></a>UNLOCKING</h2>
<ul>
<li><span class="perfCircTitle">Circle Builder</span> can be unlocked in the <mark class="perfCircMark"><strong>HUB at Tier 1</strong></mark> under the name <mark class="perfCircName">Perfect Circles: Builder Tool</mark></li>
<ul class="perfCircListB">
<li>It can then be found at the bottom of the <mark class="perfCircMark"><em>Foundations</em> category of the Build Menu</mark> with the name <mark class="perfCircName">Perfect Circles Builder</mark></li>
</ul>
<li><span class="perfCircTitle">Quick Qurves</span> can be unlocked in the <mark class="perfCircMark"><strong>HUB at Tier 1</strong></mark> under the name <mark class="perfCircName">Perfect Circles: Quick Curves</mark></li>
<ul class="perfCircListB">
<li>The <mark class="perfCircNameRef">Quick Curves</mark> tool additionally <mark class="perfCircMark"><u>needs to be built in the Equipment Workshop</u></mark>. Once you have equipped it to a hand slot, <mark class="perfCircFixed"><strong><u>Press [RMB] to activate</u></strong></mark></li>
</ul>
<li><span class="perfCircTitle">Quick Copy</span> does not require unlocking. It is always available through a hotkey, which can be customised through the game’s main <em>Keybindings</em> menu. Assignment name: <mark class="perfCircName">Activate Tool</mark> ― Default: <mark class="perfCircDefault">[Shift] + [Z]</mark></li>
</ul>
</div>
</section>
<section id="modpc-Guide" class="perfCircSection">
<div id="modpc-Foreword" class="perfCircSubSection">
<h2><a href="#modpc-Guide" target="_self"></a>REFERENCE GUIDE</h2>
<div class="perfCircIntro">
<p><em><u>Foreword:</u></em> Some of the sub-functions of this mod are still in a beta state. This may lead to some minor visual bugs, as well as some keybindings which are not yet fully finalized. While the in-game <em>Keybindings</em> menu will list most functions used by this mod, some are currently <u>hard-bound</u> and will be described below where relevant.</p>
<p>This is also not intended to be an exhaustive manual of what is possible with this mod. However, we hope that this will help you gain sufficient understanding of its fundamentals to be able to experiment further on your own. Should you have any specific questions after reading this guide, you can find us in the <a href="https://discord.ficsit.app/" target="_blank">Satisfactory Modding Discord</a> where our fully FICSIT-trained <s>doggos</s> engineers will be happy to help if we can.</p>
<p>Click or tap the headers below to expand the guide for that section.</p>
<p><strong><u>Key:</u></strong><br><mark class="perfCircMenu">Menu Function</mark> <mark class="perfCircFunc">Hotkey Function</mark> <mark class="perfCircDefault">Default State/Key</mark> <mark class="perfCircFixed">Fixed Keybinding</mark> <mark class="perfCircMark">Highlight Note</mark></p>
<p><mark class="perfCircMenuRef">Menu Reference</mark> <mark class="perfCircFuncRef">Function Reference</mark> <mark class="perfCircNameRef">Tool Name</mark> <span class="perfCircMarkLink"> Reference Link </span></p>
</div>
</div>
<div id="modpc-CircleBuilder" class="perfCircSubSection">
<details class="perfCircDetails">
<summary class="perfCircSummary"><a href="#modpc-CircleBuilder" target="_self"></a>Circle Builder</summary>
<div class="perfCircGuideSection">
<p><mark class="perfCircMark"><strong><u>TO ACTIVATE:</u></strong></mark> Place the <mark class="perfCircName">Perfect Circles Builder</mark> piece (referred to as the <mark class="perfCircNameRef">Circle Builder</mark> in this guide), found at the bottom of the <em>Foundations</em> menu in the base-game build-gun, at your desired starting location.</p>
<p>This is not a ‘real’ piece, and will not itself impact or interact with other buildables. It will serve as the centre-point of your construction (precise offsets can be set later). Interact with it, and it will display the Circle Builder UI menu. Main controls to the left, parts selection to the right, and relocation options at the top.</p>
<aside class="perfCircAsideBlock"><mark class="perfCircMark"><strong>Note:</strong></mark> If the cursor does not appear, and the mouse is still controlling your first-person view, click <mark class="perfCircFixed">[LMB]</mark> anywhere to switch. Once in cursor-mode, you can <mark class="perfCircFixed">hold [RMB]</mark> to move the view around. Most normal player-movement controls will continue to work regardless.</aside>
</div>
<div id="modpc-CB-Basic" class="perfCircGuideSection">
<h3><a href="#modpc-CB-Basic" target="_self"></a>Building Basics</h3>
<div class="perfCircSubGuide">
<p>Use the menu on the right to select the parts you wish to use in the circle. Both the <mark class="perfCircMenu">Foundation</mark> and <mark class="perfCircMenu">Wall</mark> submenus list <strong><u>all</u></strong> parts which are compatible with the <mark class="perfCircNameRef">Circle Builder</mark>, and provide a search-box to narrow down results.</p>
<p>Only one type of wall and foundation each can be selected per construction. However, the Circle Builder piece will remember your settings and remain in place until you dismantle it. This allows you to build additional circles at the same location with different pieces & offsets.</p>
<aside class="perfCircAsideBlock"><mark class="perfCircMark"><strong>Note:</strong></mark> It is safe to dismantle the <mark class="perfCircNameRef">Perfect Circles Builder</mark> piece after creating a circle. It will not dismantle any of your constructions. For performance reasons, it is considered ‘best practice’ to dismantle the builder piece once you are finished using it. However, leaving one behind is not in itself cause for concern.</aside>
<p>The menu on the left provides the primary size, rotation, and positional controls for the circle. Most important for basic building are:</p>
<ul>
<li id="modpc-CB-Divisions"><mark class="perfCircMenu">Divisions</mark> This number sets how many ‘slices’ the circle is divided into. Each ‘slice’ will contain one foundation and/or wall piece per row. By default, the <mark class="perfCircNameRef">Circle Builder</mark> will try to minimise overlap between parts in different slices. This is why increasing the <mark class="perfCircMenuRef">Divisions</mark> count will usually also increase the circle’s radius. As more parts are added to the circle, the <mark class="perfCircNameRef">Circle Builder</mark> has to make the circle bigger to fit them all in.</li>
<li><mark class="perfCircMenu">Radius Offset</mark> This value sets a positive or negative offset to the overall radius of the circle, relative to the default for your <mark class="perfCircMenuRef">Divisions</mark> setting above. The units are in centimetres (800 = 8 metres = 1 standard foundation block). This operates by moving each individual part closer to or further from the centre-point of the <mark class="perfCircNameRef">Circle Builder</mark>. The effect on the overall <em>diameter</em> of the circle is therefore double this value. This also means that it will override the distance between parts in each ‘slice’, and can result in either gaps between them, or significant overlap. </li>
<li><mark class="perfCircMenu">Location/Rotation</mark> These are direct positional controls for the overall structure you are building. Each option will move or rotate the entire circle on that axis, relative to the <mark class="perfCircNameRef">Circle Builder</mark> centre-point. <mark class="perfCircMenuRef">Location</mark> units are in centimetres, <mark class="perfCircMenuRef">Rotation</mark> units are in degrees.</li>
<li id="modpc-CB-BuildFoundations"><mark class="perfCircMenu">Build Foundations</mark> <mark class="perfCircDefault">[Default: ON]</mark></li>
<ul class="perfCircListB">
<li><mark class="perfCircMenu">Rows</mark> This increases the number of foundation rows that are added inwards towards the <mark class="perfCircNameRef">Circle Builder</mark> centre-point</li>
<li><mark class="perfCircMenu">Rotation</mark> This is an <em>in-place, per-part</em> rotation value, in degrees, relative to the circle’s horizontal plane. This means that each individual block will be rotated around its z-axis, within its current position.<br /><aside class="perfCircAsideBlock"><mark class="perfCircMark"><strong>NOTE:</strong></mark> Rotating non-square parts (eg: Half Foundations) may leave large spaces between each division. To counteract this, see <mark class="perfCircMenuLink"><a href="#modpc-RadiusSource" target="_self">Radius Source</a></mark> in the advanced section below.</aside></li>
<li><mark class="perfCircMenu">Ramp</mark> This staggers each subsequent row of foundations by the set amount <em>vertically</em> (z-axis), <u>relative to the previous row</u> (ie: cascading). Units in centimetres.</li>
</ul>
<li><mark class="perfCircMenu">Build Walls</mark> <mark class="perfCircDefault">[Default: OFF]</mark> This controls whether or not walls are added to the outer-edge of your foundation pieces.<br /><aside class="perfCircAsideBlock"><mark class="perfCircMark"><strong>NOTE:</strong></mark> Even if <mark class="perfCircMenuRef perfCircMarkLink"><a href="#modpc-CB-BuildFoundations" target="_self">Build Foundations</a></mark> above is disabled, the default position of Wall pieces <u>will still be based upon the dimensions of the Foundation you have selected in the right-hand menu</u>.</aside></li>
<ul class="perfCircListB">
<li><mark class="perfCircMenu">Rows</mark> <strong>Unlike foundation rows</strong>, this adds additional rows upwards on the z-axis from the first wall row.</li>
<li><mark class="perfCircMenu">Rotation</mark> As with rotation in <mark class="perfCircMenuRef perfCircMarkLink"><a href="#modpc-CB-BuildFoundations" target="_self">Build Foundations</a></mark>.</li>
<li><mark class="perfCircMenu">Ramp</mark> <strong>Unlike foundation ramps</strong>, this staggers each subsequent row of walls by the set amount <em>horizontally</em> (on a radial axis), <u>relative to the previous row</u> (ie: cascading). Units in centimetres.</li>
</ul>
</ul>
</div>
</div>
<div id="modpc-CB-TopBar" class="perfCircGuideSection">
<h3><a href="#modpc-CB-TopBar" target="_self"></a>Top Menu Bar</h3>
<div class="perfCircSubGuide">
<ul>
<li id="modpc-CB-SelectRadius"><mark class="perfCircMenu">Select Radius</mark> This allows you to <mark class="perfCircFixed">double-click [LMB]</mark> on one or more built objects in-game. On pressing <mark class="perfCircMenuRef">Accept</mark>, the game will calculate what the radius of the smallest hypothetical complete circle around your selected parts would be, and will expand or contract the radius of your circle to match.</li>
<ul class="perfCircListB">
<li><mark class="perfCircMenu">Location From</mark> This is a placeholder menu which is currently not in use. The only option will be <mark class="perfCircMenuRef">Average</mark></li>
<li><mark class="perfCircMenu">Rotation From</mark> The circle’s new rotational offset will be based on the attribute you select here.</li>
</ul>
<li><mark class="perfCircMenu">Select Center</mark> This allows you to <mark class="perfCircFixed">double-click [LMB]</mark> on one or more built objects in-game. On pressing <mark class="perfCircMenuRef">Accept</mark>, the game will calculate what the centre-point of the smallest hypothetical complete circle around your selected parts would be, and will move your circle to centre itself upon that point.</li>
<ul class="perfCircListB">
<li><mark class="perfCircMenu">Location From/Rotation From</mark> The same as in <mark class="perfCircMenuRef perfCircMarkLink"><a href="#modpc-CB-SelectRadius" target="_self">Select Radius</a></mark>.</li>
</ul>
<li><mark class="perfCircMenu">Reset Radius/Reset Center</mark> Both above options will serve as the new zero-point for your circles. This means that any offsets for Location, Rotation and Radius, will be relative to the values calculated in those steps. Use these buttons to reset the radius/centre zero-points to the <mark class="perfCircNameRef">Circle Builder</mark> defaults.</li>
</ul>
</div>
</div>
<div id="modpc-CB-Menu" class="perfCircGuideSection">
<h3><a href="#modpc-CB-Menu" target="_self"></a>Menu Options</h3>
<div class="perfCircSubGuide">
<p>In the main <mark class="perfCircMenuRef">Perfect Circles</mark> menu on the left of the screen, there is a small “drawer” tab on its right edge. Click that to access <mark class="perfCircNameRef">Circle Builder</mark> interface options for:</p>
<ul>
<li><mark class="perfCircMenu">Angle/Offset Increments</mark> The number of degrees/centimetres that can be increased or decreased per click, as well as setting larger increments when the given modifier keys are held.</li>
<li><mark class="perfCircMenu">Holograms</mark> Visual options for the appearance of <em>Build Holograms</em>. <mark class="perfCircMenu">Build Effects</mark> and <mark class="perfCircMenu">Simple Material</mark> can be toggled to minimise performance impacts when building large structures. </li>
</ul>
<p>There are also controls for an additional advanced build function:</p>
<ul>
<li><mark class="perfCircMenu">Auto Reduction</mark> This option is designed to limit the number of redundant overlapping pieces that are built in certain circumstances. For example:</li>
<ul class="perfCircListB">
<li>Circles with heavily-negative radius offsets.</li>
<li>On the innermost rows of fully filled-in circles, due to the fact that every row has the same number of pieces, but the available space decreases towards the centre of the circle.</li>
</ul>
<p>Additionally, there are counters below which surface some diagnostic information: <mark class="perfCircMenu">Holos</mark> shows the total number of individual pieces that your current settings will ultimately spawn in the game-world. <mark class="perfCircMenu">Rows to fill circle</mark> is a hypothetical indicator of how many rows it would take to fill in the circle with your current settings.</p>
</ul>
</div>
</div>
<div id="modpc-CB-Advanced" class="perfCircGuideSection">
<h3><a href="#modpc-CB-Advanced" target="_self"></a>Advanced Circles</h3>
<div class="perfCircSubGuide">
<ul>
<li><mark class="perfCircMenu">Slice Circle</mark> This option enables the building of partial circles, by showing only the pieces within the radial range specified (in degrees).</li>
<li id="modpc-RadiusSource"><mark class="perfCircMenu">Radius Source</mark> This alters the dimension used to calculate the effective space allocated to each part (and therefore its default radial position). </li>
<ul class="perfCircListB">
<li><mark class="perfCircMenu">Foundaton Width</mark> The Y-axis (green) of your selected foundation.</li>
<li><mark class="perfCircMenu">Foundation Depth</mark> The X-axis (red) of your selected foundation.</li>
<li><mark class="perfCircMenu">Wall Width</mark> The Y-axis (green) of your selected wall (if enabled)</li>
</ul>
<p>Most useful for non-square foundations which have been rotated in-place, to eliminate gaps between them by selecting <mark class="perfCircMenuRef">Foundation Depth</mark>. Note, however, that because of the decreased radius, the parts will now also be much closer to the centre of the circle. To return the parts to their pre-rotated radial positions, you should increase the overall <mark class="perfCircMenuRef perfCircMarkLink"><a href="#modpc-CB-Divisions" target="_self">Divisions</a></mark> value. This will be in inverse proportion to the difference between the part’s depth & width, eg: an 8x4 Half Foundation would need its <mark class="perfCircMenuRef perfCircMarkLink"><a href="#modpc-CB-Divisions" target="_self">Divisions</a></mark> value doubled, as its depth [4m] is half its width [8m].</p>
</ul>
</div>
</div>
</details>
</div>
<div id="modpc-QuickCurves" class="perfCircSubSection">
<details class="perfCircDetails">
<summary class="perfCircSummary"><a href="#modpc-QuickCurves" target="_self"></a>Quick Curves</summary>
<div class="perfCircGuideSection">
<p>A more powerful and advanced implementation of the <mark class="perfCircNameRef perfCircMarkLink"><a href="#modpc-CircleBuilder" target="_self">Circle Builder</a></mark> logic, this hand-tool can be used almost anywhere. While it can create complete circles, its primary function is to make open curves. As such, it has no ability to automatically fill-in circles or attach wall-pieces. However, it allows for much more precise control over the curve, and can be used in locations which would be hard to reach with the <mark class="perfCircNameRef">Circle Builder</mark>.</p>
<p>In addition, it has the ability to set custom lengths for all <em>Beam</em> type parts, in 1cm increments. This incredibly powerful function can allow you to create near-flawless curves with extremely tight angles. <aside class="perfCircAsideBlock"><mark class="perfCircMark"><strong>NOTE:</strong></mark> The smaller each individual beam segment is, the more segments will need to be built for any given curve. This may have performance implications on lower-end machines for some beam-types. This is an advanced option which should be used with caution.</aside></p>
<p><mark class="perfCircMark"><strong>TO ACTIVATE:</strong></mark> equip the <mark class="perfCircName">Quick Curves</mark> tool in any hand slot, and <mark class="perfCircFixed">press [RMB]</mark>.</p>
</div>
<div id="modpc-QCurve-Menu" class="perfCircGuideSection">
<h3><a href="#modpc-QCurve-Menu" target="_self"></a>Menu & UI Basics</h3>
<div class="perfCircSubGuide">
<p id="modpc-QCurve-PickPart"><mark class="perfCircFunc">Pick Part</mark> is the primary “Build Menu” for <mark class="perfCircNameRef">Quick Curves</mark>. After pressing this hotkey, visual & interface-behaviour settings will appear in a menu on the left, similar to the <mark class="perfCircNameRef">Circle Builder</mark>. One additional function of note:</p>
<ul>
<li><mark class="perfCircMenu">Auto Ramp</mark> is a setting which will attempt to correctly set the zoop angle for ramped parts, such that it zoops down their face rather than along their base.</li>
</ul>
<p>On the right is the main part selection interface. Listed will be <em>most</em> available parts; parts associated with beta functionality (see <mark class="perfCircFuncLink"><a href="#modpc-QCurve-Beta" target="_self">Beam Length/Fixture Angle</a></mark>) are currently only available through <mark class="perfCircFuncRef">Sampling</mark> (see next guide entry). The parts list can additionally be filtered using the search bar at the top, or the category toggles to the left. At the very bottom is a scrollbar which can be used to set the zoom level of icons in the list.</p>
<p>The other basic <mark class="perfCircNameRef">Quick Curves</mark> hotkeys are as follows:</p>
<ul>
<li><mark class="perfCircFunc">Sample Part</mark> Pick an existing part from the game-world, and start a new curve using that part.</li>
<li><mark class="perfCircFunc">Change Part</mark> This lets you scroll through the list of supported parts.</li>
<li><mark class="perfCircFunc">Build New</mark> This starts a new curve using the currently selected part.</li>
<li><mark class="perfCircFunc">Build Last</mark> This will start a new curve using the settings from the previously constructed curve.</li>
<li><mark class="perfCircFunc">Undo Last</mark> This will dismantle every part from the previously constructed curve. <aside class="perfCircAsideBlock"><mark class="perfCircMarkWarning"><strong><u>WARNING:</u></strong></mark> This function currently has no confirmation dialogue. We recommend temporarily re-binding it in the <em>Keybinding</em> menu to an assignment which uses <em>multiple</em> modifier keys (eg: Alt, Shift).</aside></li>
</ul>
</div>
</div>
<div id="modpc-QCurve-Core" class="perfCircGuideSection">
<h3><a href="#modpc-QCurve-Core" target="_self"></a>Curve Fundamentals</h3>
<div class="perfCircSubGuide">
<p>Choose a part using one of the options above. From here, you can <mark class="perfCircFuncRef">Rotate</mark> the piece using the scroll-wheel to select its starting angle, and the <mark class="perfCircFunc">Rotation Mode</mark> key can be used to toggle the axis the curve is being rotated around. You can then lock the holo with the <mark class="perfCircFunc">Lock Holo</mark> key. Once locked, you can start creating curves with the following controls.</p>
<aside class="perfCircAsideBlock"><mark class="perfCircMark">Note:</mark> Holos cannot currently be rotated once they have been locked. This <mark class="perfCircFuncRef">Lock Holo</mark> function also <u>uses a separate binding from the base-game holo lock assignment</u>, the key for which will be displayed in the UI.</aside>
<ul>
<li><mark class="perfCircFunc">Zoop</mark> This increases or decreases the length of the curve by adding or removing one part per scroll. <aside class="perfCircAsideInline"><mark class="perfCircMark">Note:</mark> Unlisted modifier: <mark class="perfCircDefault">hold [Shift]</mark> by default to zoop 10 parts per scroll.</aside></li>
<li id="modpc-QCurve-Divisions"><mark class="perfCircFunc">Divisions One/Ten</mark> Like in the <mark class="perfCircNameRef">Circle Builder</mark>, the <mark class="perfCircFuncRef">Divisions</mark> count is the main control over how tightly the circle will curve. It divides the virtual circle that QuickCurves is based on into this many individual “slices”.<br />However, compared to the <mark class="perfCircNameRef">Circle Builder</mark>, it has a slightly different apparent effect on the curve’s positioning. This is due to the the curve being based upon the fixed starting-piece (rather than the circle’s centre-point), and the open-ended nature of zooping. Pieces further along the curve will always appear to move more than those closer to the start. </li>
<li><mark class="perfCircFunc">Radius</mark> This will increase or decrease the overall radius of the curve by moving each individual part in or out along the radial axis. Like the <mark class="perfCircNameRef">Circle Builder</mark>, this option can result in overlap or gaps.</li>
<li><mark class="perfCircFunc">Left/Right</mark> & <mark class="perfCircFunc">Forward/Backward</mark> These options simply toggle which direction the curve will zoop towards from its starting point.</li>
</ul>
</div>
</div>
<div id="modpc-QCurve-Inter" class="perfCircGuideSection">
<h3><a href="#modpc-QCurve-Inter" target="_self"></a>Intermediate Functions</h3>
<div class="perfCircSubGuide">
<p>Some functions may only be available in certain contexts, usually before or after locking the build-holograms. These will be described below where relevant as <mark class="perfCircFuncRef">Pre-Lock</mark>, <mark class="perfCircFuncRef">Post-Lock</mark>, or <mark class="perfCircFuncRef">Both</mark>.</p>
<ul>
<li><mark class="perfCircFunc">Snap Mode [Pre-Lock]</mark> will alter the behaviour of how the first piece of the curve will snap to existing parts in the game-world. It has 3 modes which can be toggled between, all of which use the center-point of the starting-piece to align to the faces of existing structures.<br /><mark class="perfCircMenu">Center</mark> (the default) will snap faces center-to-center. <mark class="perfCircMenu">Incremental</mark> will allow you to move most parts on a 0.5 x 0.5m 3D grid, or whatever value you have set in the <mark class="perfCircMenuRef perfCircMarkLink"><a href="#modpc-QCurve-PickPart" target="_self">Pick Part</a></mark> options menu (beams excluded temporarily). <mark class="perfCircMenu">Freetrace</mark> essentially disables snapping altogether, and allows you to place holos freely on any surface.</li>
<li><mark class="perfCircFunc">Rotation Mode [Pre-Lock]</mark> This changes the axis around which the curve will rotate when using the scroll-wheel.</li>
<li id="modpc-QCurve-ZoopMode"><mark class="perfCircFunc">Zoop Mode [Both]</mark> <aside class="perfCircAsideInline"><mark class="perfCircMark">Note:</mark> UI hint currently only shown pre-lock, but does function post-lock as well.</aside> This changes the primary zoop axis of the curve, between <mark class="perfCircMenu">Horizontal</mark>, <mark class="perfCircMenu">Vertical</mark>, and <mark class="perfCircMenu">Straight</mark>. While <mark class="perfCircMenuRef">Straight</mark> may seem like ordinary zooping, the many other functions of <mark class="perfCircNameRef">Quick Curves</mark>, such as the <mark class="perfCircFuncRef">Rotate Parts</mark> option (see next entry) and the offsets, give you a much greater degree of control over how the zoop spreads (especially for beams).</li>
<li><mark class="perfCircFunc">Rotate Part [Post-Lock]</mark> This will rotate each individual part <em>in-place</em> (not the overall curve) on its current horizontal plane. Each press will rotate the part 90°.</li>
<li><mark class="perfCircFunc">Reset Offsets [Both]</mark> This will reset all offset values to zero (<mark class="perfCircFuncRef">Ramp</mark>, <mark class="perfCircFuncRef">Radius</mark>, & <mark class="perfCircFuncRef">Angle</mark>).</li>
<li><mark class="perfCircFunc">Reset Rotations [Pre-Lock]</mark> This will reset any rotation applied to the overall curve during the pre-lock stage to zero degrees.</li>
</ul>
</div>
</div>
<div id="modpc-QCurve-Advanced" class="perfCircGuideSection">
<h3><a href="#modpc-QCurve-Advanced" target="_self"></a>Advanced Functions</h3>
<div class="perfCircSubGuide">
<ul>
<li><mark class="perfCircFunc">Angle [Post-Lock]</mark> Similar to radius offsets, this option instead adds an offset to each division angle along the curve’s path. This is an incredibly powerful option, which can let you control the overlap of each part (and therefore how smoothly the curve will appear when built) without affecting the curve’s radius.</li>
<li><mark class="perfCircFunc">Step Height/Ramp [Post-Lock]</mark> Adds an inclination to each subsequent part in the zoop, perpendicular to the currently set <mark class="perfCircFuncRef perfCircMarkLink"><a href="#modpc-QCurve-ZoopMode" target="_self">Zoop Mode</a></mark> axis.</li>
<li><mark class="perfCircFunc">Inside/Outside [Post-Lock]</mark> Unlike <mark class="perfCircNameRef">Circle Builder</mark>, <mark class="perfCircNameRef">Quick Curves</mark> does not use the centre of the part in radius calculations such as <mark class="perfCircFuncRef perfCircMarkLink"><a href="#modpc-QCurve-Divisions" target="_self">Divisions</a></mark> (since it is not a strictly-enclosed circle, this would make little sense). This toggle will switch between the inner and outer circumferences of the curve being used in those calculations.</li>
<li id="modpc-QCurve-Beta"><mark class="perfCircFunc">Beam Length [Both]</mark> <strong>[BETA]</strong> This will alter the length of each individual beam part in the curve, at 1cm resolution.</li>
<li><mark class="perfCircFunc">Fixture Angle [Both]</mark> <strong>[BETA]</strong> Currently limited to base-game <em>Wall Mounted Flood Lights</em>, this option will allow you to set the <em>angle</em> of the light fixture head (and therefore the light cone angle).</li>
</ul>
</div>
</div>
</details>
</div>
<div id="modpc-QuickCopy" class="perfCircSubSection">
<details class="perfCircDetails">
<summary class="perfCircSummary"><a href="#modpc-QuickCopy" target="_self"></a>Quick Copy</summary>
<div class="perfCircGuideSection">
<p><mark class="perfCircMark"><strong>TO ACTIVATE:</strong></mark> Press the key set through the in-game Keybindings menu for Activate Tool, default: <mark class="perfCircDefault">[Shift] + [Z]</mark></p>
<p>Key assignments for the main functions will be now displayed along the bottom of the screen.</p>
</div>
<div id="modpc-QCopy-Simple" class="perfCircGuideSection">
<h3><a href="#modpc-QCopy-Simple" target="_self"></a>Simple Copy & Pasting</h3>
<div class="perfCircSubGuide">
<p>Select individual items with the <mark class="perfCircFunc">Select Parts</mark> key (which can be held down to multi-select).</p>
<aside class="perfCircAsideBlock"><mark class="perfCircMark"><strong>Note:</strong></mark> Visual bugs can currently result in unselected items occasionally appearing highlighted, and vice-versa. This tends to sort itself out as additional pieces are selected and deselected. However, the numerical count of selected items in the top-left of the screen can be used as an objective guide, and will always be correct.</aside>
<p>To paste them, press the <mark class="perfCircFunc">Copy Selection</mark> key, at which point a holo approximating your selected pieces will be spawned.</p>
<aside class="perfCircAsideBlock"><mark class="perfCircMark">Note:</mark> For performance reasons, with larger selections, not all pieces will be shown in the holo. However, the <mark class="perfCircFuncLink"><a href="#modpc-QCopy-Pivot" target="_self">Pivot</a></mark> and its surrounding pieces will always be displayed.</aside>
<p>Holos can be rotated with the mouse scroll-wheel, and the <mark class="perfCircFunc">Rotation Mode</mark> key can be used to toggle the axis you are rotating the assembly on. You can lock this holo as usual with the game’s own <mark class="perfCircFunc">Lock/Unlock Hologram</mark> binding, at which point, it may additionally be nudged on all 3 axes using the various nudge keys displayed on-screen. Use the <mark class="perfCircFixed">[CTRL]</mark> key to make “tiny” adjustments.</p>
<aside class="perfCircAsideBlock"><mark class="perfCircMark">Note:</mark> Holos cannot currently be rotated once they have been locked.</aside>
</div>
</div>
<div id="modpc-QCopy-Basic" class="perfCircGuideSection">
<h3><a href="#modpc-QCopy-Basic" target="_self"></a>Basic Functions</h3>
<div class="perfCircSubGuide">
<p>There are 3 additional keys which can be used in most contexts:</p>
<ul>
<li><mark class="perfCircFunc">Clear Selection</mark> will simply deselect all pieces, without affecting boxes or existing structures.</li>
<li id="modpc-QCopy-Filter"><mark class="perfCircFunc">Toggle Filter</mark> will select the part you currently have in your crosshairs, and will limit all subsequent selection & modifications operations to only that type of structure, as with the base-game <em>Build Gun</em> and <em>Dismantler</em>.</li>
<li><mark class="perfCircFunc">Dismantle Selection</mark> will destroy the currently selected pieces, without any numerical limit. This means that, unlike the base-game Dismantler’s 50 item limit, you can erase entire factories at once. <aside class="perfCircAsideInline"><mark class="perfCircMark">Note:</mark> This function has a confirmation dialogue before any destructive action is taken.</aside></li>
</ul>
</div>
</div>
<div id="modpc-QCopy-Boxes" class="perfCircGuideSection">
<h3><a href="#modpc-QCopy-Boxes" target="_self"></a>Mass Selection</h3>
<div class="perfCircSubGuide">
<p>It is possible to generate a box around an area, which will allow you to mass-perform several functions on the parts contained within. The primary way of doing this is to select multiple existing pieces in the game-world, and then press the <mark class="perfCircFunc">Generate Box</mark> key. This will use the selected parts as the vertices, or ‘anchors’, around which the box should be created. To remove the box itself (without affecting the selected items, or the contents of the box), press the <mark class="perfCircFunc">Clear Box</mark> key. To mass-select all items inside the box, press <mark class="perfCircFunc">Select Box Contents</mark>.</p>
<p>Once created, boxes can be manipulated in several ways. Press the <mark class="perfCircFunc">Edit Box</mark> key to access those functions.</p>
<ul>
<li>Their <em>dimensions</em> can be altered by aiming the crosshairs to the face of the box you wish you alter. Upon doing so, that face will turn orange. You can expand or contract the position of that face relative to the rest of the box by holding either the <mark class="perfCircFunc">Move Side Fine</mark> or <mark class="perfCircFunc">Move Side Course</mark> modifiers while scrolling the mouse-wheel, with the <mark class="perfCircFuncRef">Course</mark> version moving the face 4m per scroll, and the <mark class="perfCircFuncRef">Fine</mark> option moving by 1m per scroll. While you have these modifiers held, the face will turn green. </li>
<li>You can rotate the box around its current vertical axis, using the <mark class="perfCircFunc">Rotate Box</mark> keys <aside class="perfCircAsideBlock"><mark class="perfCircMark">Note:</mark> While only one key is shown, both left and right rotation functions are hard-linked to the bindings for <mark class="perfCircFixed">Nudge Y+</mark> & <mark class="perfCircFixed">Nudge Y-</mark> (left & right nudge). Default: <mark class="perfCircDefault">[Left]</mark> & <mark class="perfCircDefault">[Right]</mark></aside></li>
<li>Finally, the box’s <em>position</em> can be dragged with the mouse by holding the <mark class="perfCircFunc">Move Box Axial</mark> & <mark class="perfCircFunc">Move Box Free</mark> modifiers, with the <mark class="perfCircFuncRef">Axial</mark> version locking the box to the current horizontal plane (fixed Z-axis).</li>
</ul>
</div>
</div>
<div id="modpc-QCopy-Advanced" class="perfCircGuideSection">
<h3><a href="#modpc-QCopy-Advanced" target="_self"></a>Advanced Functions</h3>
<div class="perfCircSubGuide">
<ul>
<li id="modpc-QCopy-Pivot"><mark class="perfCircFunc">The Pivot</mark>, which is the piece that is used to align the holo during placement, can be altered with the <mark class="perfCircFunc">Move Pivot</mark> key after having highlighted multiple pieces ― pressing the key will move the <mark class="perfCircFuncRef">Pivot</mark> to the piece currently under your crosshairs. Otherwise, the <mark class="perfCircFuncRef">Pivot</mark> defaults to the first piece you selected.</li>
<li><mark class="perfCircFunc">Snap Mode</mark> will alter the behaviour of how holos will snap to existing pieces in the game-world. After having highlighted parts and pressed the <mark class="perfCircFuncRef">Copy Selection</mark> key to bring up the holo, the snap mode button will become available. It has 3 modes which can be toggled between, all of which use the center-point of the piece designated as <mark class="perfCircFuncRef">The Pivot</mark> to align to the faces of existing structures.<br /><mark class="perfCircMenu">Center</mark> (the default) will snap faces center-to-center. <mark class="perfCircMenu">Incremental</mark> will allow you to move most parts on a 0.5 x 0.5m 3D grid (with some exceptions using a 1 x 1m grid). <mark class="perfCircMenu">Freetrace</mark> essentially disables snapping altogether, and allows you to place holos freely on any surface.</li>
<li><mark class="perfCircFunc">Part Replacer</mark> will allow you to perform an <em>in-place</em> swap of existing built parts for almost any other part. This can be performed on multiple parts at once, but <strong><u>only when all highlighted parts are the same</u></strong> (the <mark class="perfCircFuncRef perfCircMarkLink"><a href="#modpc-QCopy-Filter" target="_self">Toggle Filter</a></mark> function described above can be helpful for this). When pressing the <mark class="perfCircFuncRef">Part Replacer</mark> key, a menu screen will appear which lists all possible replacement options. By default, new parts will be placed in the same position and rotation as the pieces they are replacing. However, the replacement selection screen has menu options for applying <em>in-place</em> X/Y/Z-axis positional & rotational offsets, relative to each replaced part’s original position.<br />The parts selection screen defaults to showing only parts from similar categories to the ones being replaced, but has additional toggle options above the list to only show items of the <mark class="perfCircMenu">Same Size</mark> (Default: <mark class="perfCircDefault">Enabled</mark>), as well as a true <mark class="perfCircMenu">Show All</mark> override (Default: <mark class="perfCircDefault">Disabled</mark>). <aside class="perfCircAsideBlock"><mark class="perfCircMarkWarning"><strong>WARNING:</strong></mark> The <mark class="perfCircMenuRef">Show All</mark> option can be very slow to load on saves with mods which add many new parts. On lower-end computers, this could potentially cause the game to hang. We recommend creating a new save before using this option for the first time.</aside></li>
<li><mark class="perfCircFunc">Zoop Splines</mark> <strong>[BETA]</strong> When only a single piece is selected, pressing the Copy Selection key will enable the 3 spline type keys. All splines use mouse-aim to define their primary positional characteristics. For features marked with <mark class="perfCircMark"> † </mark>, please see the <mark class="perfCircNameRef perfCircMarkLink"><a href="#modpc-ZoopSplineIssues" target="_self">Known Issues</a></mark> section below.</li>
<ul class="perfCircListB">
<li><mark class="perfCircFunc">Circle Spline</mark> will create more a traditional circle, like a simplified version of the <mark class="perfCircNameRef">Circle Builder</mark> tool.</li>
<li><mark class="perfCircFunc">Arc Spline</mark> will build a single curve with an arbitrary width & height, based on a virtual center point.</li>
<li><mark class="perfCircFunc">Freeform Spline</mark> is an incredibly powerful spline mode that can create arbitrary curves, with the option of adding multiple fixed waypoints along its route (<mark class="perfCircFunc">Add/Remove Point</mark>)<sup>†</sup>. Each point can be created as either a <mark class="perfCircMenu">Linear</mark> zoop, or a <mark class="perfCircMenu">Curved</mark> zoop by using the <mark class="perfCircFunc">Point Type</mark> toggle. In <mark class="perfCircMenuRef">Curved</mark> mode, the curve can be contoured over multiple axes at once. The final piece to be placed can also be rotated on the horizontal plane with the scroll-wheel, which the spline’s route will attempt to follow. Given the freeform nature of this mode, there is also a <mark class="perfCircFunc">Keep Flat</mark> toggle<sup>†</sup>, which will lock the spline to the horizontal plane (fixed Z-axis).</li>
</ul>
<p>All modes have an <mark class="perfCircFunc">Edit Spline</mark> function<sup>†</sup>, which functions similarly to the traditional <mark class="perfCircFuncRef">Lock Hologram</mark> key, and enables access to certain fine tuning options<sup>†</sup>:</p>
<ul class="perfCircListB">
<li>The <mark class="perfCircFixed">[Scroll Wheel]</mark> will control the number of parts included in the spline.</li>
<li>The <mark class="perfCircFixed">[Cursor Keys]</mark> will control dimensional characteristics of the spline. For <mark class="perfCircFuncRef">Circle Splines</mark>, the up/down keys control the radius. For <mark class="perfCircFuncRef">Arc Splines</mark>, the cursor keys control the width and the height of the curve’s bounding box<sup>†</sup>. For <mark class="perfCircFuncRef">Freeform Splines</mark> in <mark class="perfCircMenuRef">Curved</mark> mode, the up/down keys will control how tightly it curves/how steep the intersectional parts are (similar to symmetrical control points on cubic bezier curves).</li>
</ul>
</ul>
<div id="modpc-ZoopSplineIssues" class="perfCircZoopIssues">
<h5>Zoop Spline Known Issues</h5>
<ul>
<li>The <mark class="perfCircFuncRef">Edit Spline</mark> key does not appear on the UI for <mark class="perfCircFuncRef">Arc</mark> or <mark class="perfCircFuncRef">Circle</mark> curves. However, it does still function.</li>
<li>The <mark class="perfCircFuncRef">Remove Point</mark> & <mark class="perfCircFuncRef">Keep Flat</mark> functions for <mark class="perfCircFuncRef">Freeform Splines</mark> are not yet operational.</li>
<li>The keybindings for functions in <mark class="perfCircFuncRef">Edit Spline</mark> mode do not show up on the UI.</li>
<li>The cursor keys for <mark class="perfCircFuncRef">Arc Spline</mark> width/height alterations in <mark class="perfCircFuncRef">Edit Spline</mark> mode are not yet operational.</li>
</ul>
</div>
</div>
</div>
</details>
</div>
</section>
<footer id="modpc-footer" class="perfCircSection">
<p class="perfCircFooter"><span class="perfCircFooterPC">Perfect Circles</span> by <a href="https://ficsit.app/user/EjaanymubGrxbD/">D4rk</a><a class="perfCircFooterDonate" href="https://www.paypal.com/donate?business=8T95JT4N54B66&item_name=Satisfactory+Modding¤cy_code=USD" target="_blank">[Donate]</a><span class="perfCircFooterUsSchmucks">// <span class="perfCircCaps">Bootstrap Development Support</span> by <a href="https://ficsit.app/user/6JmYooAefnXoRy/">BlogmasterAvery</a> // <span class="perfCircCaps">Logo</span> by <a href="https://ficsit.app/user/6dvhEL4fWEqwcg/">deantendo</a> // <span class="perfCircCaps">Documentation & Modpage</span> by <a href="https://ficsit.app/user/2VZUiFCkL25sRc/">McCovican</a></span></p>
</footer>
<a href="https://indifferentbroccoli.com/satisfactory-server-hosting?fpr=d4rk" target="_blank"><footer class="perfCircSection perfCircSectionLast" id="modpc-broc">
<div class="perfCircBrocImg">
<img src="https://indifferentbroccoli.com/img/broccoli_shadow_square.png">
</div><div class="perfCircBrocBox">
<span class="perfCircBrocQuotePre">“</span><span class="perfCircBrocText">I test my Dedicated Server mods on a server from Indifferent Broccoli and can’t recommend them enough. If you’re planning to run your own Satisfactory server, give their two-day free trial a shot.</span><span class="perfCircBrocQuotePost">”</span><span class="perfCircBrocSig">- D4rk</span>
</div>
</footer></a>
</article>
Versions
How to Install Perfect Circles & Quick Copy on Your Server
Order Satisfactory Server
Order a Satisfactory server with at least 4 GB RAM (6 GB recommended). For multiplayer: per 4 players.
Install Mod
Open the mod manager in the dashboard and search for "Perfect Circles & Quick Copy". Installation dependencies are installed automatically.
Restart Server
Restart the server so the mod is loaded. Players need to have the mod installed locally as well.
Frequently Asked Questions
Perfect Circles & Quick Copy not working after update – what to do?
After a Satisfactory update, mods need to be updated. Check ficsit.app whether Perfect Circles & Quick Copy has been updated for the new game version. With Mado Hosting: open the mod manager and click "Update All". If the mod hasn't been updated yet, temporarily remove it so the server starts.
Perfect Circles & Quick Copy causing crashes in multiplayer – solution
Most common cause: all players must have exactly the same mod version installed. Check server logs for "ModMismatch" or "Version Conflict". Ensure all players use Perfect Circles & Quick Copy v2.0.0 and the same SML. With Mado Hosting, Satisfactory servers run with 6 GB RAM for stable multiplayer performance.
Is Perfect Circles & Quick Copy compatible with other Satisfactory mods?
Perfect Circles & Quick Copy uses the Satisfactory Mod Loader (SML). Generally, SML-based mods are cross-compatible, but mods modifying the same game systems can cause conflicts. Test new mod combinations on a backup save. The Mado dashboard automatically detects known conflicts and warns you.
Rent Perfect Circles & Quick Copy Server
Play Perfect Circles & Quick Copy on your own Satisfactory server with mod support.
Mod Information
- Author
- D4rk, BlogmasterAvery, deantendo
- Latest Version
- v2.0.0
- Created
- June 18, 2021
- Last Updated
- July 7, 2026