<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Feature Request - Specified Diameter Option for Circular &amp;amp; Thread Milling Operations in Fusion Manufacture Forum</title>
    <link>https://forums.autodesk.com/t5/fusion-manufacture-forum/feature-request-specified-diameter-option-for-circular-amp/m-p/14063448#M176601</link>
    <description>&lt;P&gt;I've been asking for this for atleast 2 years &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;DIV class=""&gt;&amp;nbsp;&lt;/DIV&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="image.png" style="width: 327px;"&gt;&lt;img src="https://forums.autodesk.com/t5/image/serverpage/image-id/1627896iD8226FAB12F9BEC9/image-size/large?v=v2&amp;amp;px=999" role="button" title="image.png" alt="image.png" /&gt;&lt;/span&gt;&lt;BR /&gt;&lt;BR /&gt;"&lt;SPAN&gt;What's not great about these cycles is that they do not allow for compensation, lead in's / lead out's, multiple passes, a finish pass, or stock to leave."&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;is this a typo?&lt;/P&gt;</description>
    <pubDate>Mon, 23 Mar 2026 13:54:22 GMT</pubDate>
    <dc:creator>programming2C78B</dc:creator>
    <dc:date>2026-03-23T13:54:22Z</dc:date>
    <item>
      <title>Feature Request - Specified Diameter Option for Circular &amp; Thread Milling Operations</title>
      <link>https://forums.autodesk.com/t5/fusion-manufacture-forum/feature-request-specified-diameter-option-for-circular-amp/m-p/14062751#M176577</link>
      <description>&lt;P&gt;I recently decided to explore some of the additional cycles within the drilling operation. Two that caught my attention were pocket milling and thread milling cycles.&lt;BR /&gt;&lt;BR /&gt;What I like about these cycles compared to the traditional circular or thread milling operations is that they &lt;STRONG&gt;ignore &lt;/STRONG&gt;the size of the hole in the model.&amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;I have been building out a file that contains templated tool paths for drilling, tapping, and thread milling operations. I am slowly switching over to TSC drills and form taps. After tapping I need to come back and spot or chamfer the top of the hole. If the major diameter of the tapped hole is bigger than the chamfer tool (I setup a 3/8" spot drill as a chamfer mill), I can very quickly have it chamfer the hole .010" larger than the major diameter without having to investigate what size the hole is in the model.&lt;BR /&gt;&lt;BR /&gt;The same situation applies to thread milling. Instead of having to investigate the diameter of the hole in the model, this&amp;nbsp; cycle will go to specified diameter.&lt;BR /&gt;&lt;BR /&gt;What's not great about these cycles is that they do not allow for compensation, lead in's / lead out's, multiple passes, a finish pass, or stock to leave.&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;Alternatively, instead of adding options to these cycles, I think it could be helpful to add an option to the circular and thread milling operations to go to specified diameter / ignore the hole size in the model. This would be a nice quality of life improvement / way to "automate" part of the CAM workflow.&lt;/P&gt;</description>
      <pubDate>Sun, 22 Mar 2026 18:23:13 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/fusion-manufacture-forum/feature-request-specified-diameter-option-for-circular-amp/m-p/14062751#M176577</guid>
      <dc:creator>josh.millerRQWRT</dc:creator>
      <dc:date>2026-03-22T18:23:13Z</dc:date>
    </item>
    <item>
      <title>Re: Feature Request - Specified Diameter Option for Circular &amp; Thread Milling Operations</title>
      <link>https://forums.autodesk.com/t5/fusion-manufacture-forum/feature-request-specified-diameter-option-for-circular-amp/m-p/14063448#M176601</link>
      <description>&lt;P&gt;I've been asking for this for atleast 2 years &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;DIV class=""&gt;&amp;nbsp;&lt;/DIV&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="image.png" style="width: 327px;"&gt;&lt;img src="https://forums.autodesk.com/t5/image/serverpage/image-id/1627896iD8226FAB12F9BEC9/image-size/large?v=v2&amp;amp;px=999" role="button" title="image.png" alt="image.png" /&gt;&lt;/span&gt;&lt;BR /&gt;&lt;BR /&gt;"&lt;SPAN&gt;What's not great about these cycles is that they do not allow for compensation, lead in's / lead out's, multiple passes, a finish pass, or stock to leave."&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;is this a typo?&lt;/P&gt;</description>
      <pubDate>Mon, 23 Mar 2026 13:54:22 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/fusion-manufacture-forum/feature-request-specified-diameter-option-for-circular-amp/m-p/14063448#M176601</guid>
      <dc:creator>programming2C78B</dc:creator>
      <dc:date>2026-03-23T13:54:22Z</dc:date>
    </item>
    <item>
      <title>Re: Feature Request - Specified Diameter Option for Circular &amp; Thread Milling Operations</title>
      <link>https://forums.autodesk.com/t5/fusion-manufacture-forum/feature-request-specified-diameter-option-for-circular-amp/m-p/14063599#M176610</link>
      <description>&lt;P&gt;The cycles contained within the drilling operation do not allow for compensation or lead in's / lead out's. The thread milling operation does not allow for multiple passes or stock to leave. Neither cycle allows for a finishing passes (nor do the circular or thread operations).&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Drilling - Pocket Milling compared with Circular Operation   &lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Drill - Pocket Mill.jpg" style="width: 400px;"&gt;&lt;img src="https://forums.autodesk.com/t5/image/serverpage/image-id/1627949i4FFB19FA37874446/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Drill - Pocket Mill.jpg" alt="Drill - Pocket Mill.jpg" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Circular - Passes.jpg" style="width: 400px;"&gt;&lt;img src="https://forums.autodesk.com/t5/image/serverpage/image-id/1627950i1CCECECF1A8EE504/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Circular - Passes.jpg" alt="Circular - Passes.jpg" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Circular - Linking.jpg" style="width: 400px;"&gt;&lt;img src="https://forums.autodesk.com/t5/image/serverpage/image-id/1627951i08E2F2D50D3E5FFA/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Circular - Linking.jpg" alt="Circular - Linking.jpg" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Drilling - Thread Milling compared with Thread Operation&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Drill - Thread Mill.jpg" style="width: 400px;"&gt;&lt;img src="https://forums.autodesk.com/t5/image/serverpage/image-id/1627959i87D9C30607B77816/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Drill - Thread Mill.jpg" alt="Drill - Thread Mill.jpg" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Thread Mill - Passes.jpg" style="width: 400px;"&gt;&lt;img src="https://forums.autodesk.com/t5/image/serverpage/image-id/1627961i4E7AD29426F283D2/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Thread Mill - Passes.jpg" alt="Thread Mill - Passes.jpg" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;  &lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Thread Mill - Linking.jpg" style="width: 400px;"&gt;&lt;img src="https://forums.autodesk.com/t5/image/serverpage/image-id/1627962i56AE092FB6B40CE2/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Thread Mill - Linking.jpg" alt="Thread Mill - Linking.jpg" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;   &lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 23 Mar 2026 15:01:52 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/fusion-manufacture-forum/feature-request-specified-diameter-option-for-circular-amp/m-p/14063599#M176610</guid>
      <dc:creator>josh.millerRQWRT</dc:creator>
      <dc:date>2026-03-23T15:01:52Z</dc:date>
    </item>
    <item>
      <title>Re: Feature Request - Specified Diameter Option for Circular &amp; Thread Milling Operations</title>
      <link>https://forums.autodesk.com/t5/fusion-manufacture-forum/feature-request-specified-diameter-option-for-circular-amp/m-p/14063616#M176612</link>
      <description>&lt;P&gt;Thanks for clarifying. I only ever do Thread mill from its own dedicated strategy.&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 23 Mar 2026 15:27:10 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/fusion-manufacture-forum/feature-request-specified-diameter-option-for-circular-amp/m-p/14063616#M176612</guid>
      <dc:creator>programming2C78B</dc:creator>
      <dc:date>2026-03-23T15:27:10Z</dc:date>
    </item>
    <item>
      <title>Re: Feature Request - Specified Diameter Option for Circular &amp; Thread Milling Operations</title>
      <link>https://forums.autodesk.com/t5/fusion-manufacture-forum/feature-request-specified-diameter-option-for-circular-amp/m-p/14069537#M176772</link>
      <description>&lt;P&gt;I was going to try and upload a PDF detailing some of the post modification I made. For some reason I cannot attach any documents. So copying and pasting the document below.&amp;nbsp;These modifications provide me with the desired output. I have only tested a few scenarios so far, so use at your own risk.&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;Cutter Compensation for Drill-Nested Pocket Milling &amp;amp; Thread Milling&lt;BR /&gt;=====================================================================&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;THE PROBLEM&lt;BR /&gt;-----------&lt;/P&gt;&lt;P&gt;Fusion's drilling operation includes nested strategies for circular pocket milling (circular-pocket-milling) and thread milling (thread-milling). These are useful because they let you specify a diameter directly — unlike the standalone Circular Milling and Thread Milling operations, which are tied to model geometry.&lt;/P&gt;&lt;P&gt;The problem: the drill-nested versions compute cutter compensation in CAM. The output coordinates already account for tool diameter, with no G41/G42 for the control to apply wear offsets. If your tool is slightly over/undersized or you need to dial in a bore, you have no D-offset adjustment on the control.&lt;/P&gt;&lt;P&gt;The standalone operations DO output G41/G42 with proper lead-in/lead-out geometry, but they don't have the "go to specified diameter" option that makes the drill-nested versions so practical.&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;THE SOLUTION&lt;BR /&gt;------------&lt;/P&gt;&lt;P&gt;This post modification intercepts the cycle-expanded motion events and injects G41/G40 cutter compensation with fabricated lead-in/lead-out geometry. The result matches the pattern Fusion uses for its standalone circular and thread milling operations.&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Thread Milling (Helical Lead-In)&lt;BR /&gt;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~&lt;/P&gt;&lt;P&gt;The cycle expansion includes a G01 XY move from hole center to circle start. We replace it with a helical lead-in:&lt;/P&gt;&lt;P&gt;1. G01 G41 DA — line to offset point (r = tool_diameter × 0.1 back from circle entry, at current Z)&lt;BR /&gt;2. G03 — helical quarter-arc from offset to circle entry, Z ramps up by pitch/4&lt;/P&gt;&lt;P&gt;The post does NOT add any extra Z plunge. The bottom height is the user's to control in CAM. The final G01 return-to-center gets G40. The exit helix is unchanged from the stock cycle expansion.&lt;/P&gt;&lt;P&gt;Stock output:&lt;/P&gt;&lt;P&gt;G01 X1.234 Y0.567 F20. (center to circle - no comp)&lt;BR /&gt;G03 X... Y... Z... I... J... (helical arc - 1st half)&lt;BR /&gt;G03 X... Y... Z... I... J... (helical arc - 2nd half)&lt;BR /&gt;G03 X... Y... Z... I... J... (helical arc - nth half)&lt;BR /&gt;G01 X0. Y0. (return to center - no comp)&lt;/P&gt;&lt;P&gt;Modified output:&lt;/P&gt;&lt;P&gt;G01 G41 X1.198 Y0.543 DA F20. (lead-in - comp on)&lt;BR /&gt;G03 X1.234 Y0.567 Z-0.475 I... J... (quarter-arc onto circle)&lt;BR /&gt;G03 X... Y... Z... I... J... (helical arc - 1st half - unchanged)&lt;BR /&gt;G03 X... Y... Z... I... J... (helical arc - 2nd half - unchanged)&lt;BR /&gt;G03 X... Y... Z... I... J... (helical arc - nth half - unchanged)&lt;BR /&gt;G01 G40 X0. Y0. (return to center - comp off)&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Circular Pocket Milling (Fabricated Lead-In/Lead-Out)&lt;BR /&gt;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~&lt;/P&gt;&lt;P&gt;The cycle expansion goes directly from a Z plunge into a G03 semicircle entry arc — there's no G01 XY move to activate G41 on. The post fabricates the geometry:&lt;/P&gt;&lt;P&gt;- Entry: Replace the semicircle entry arc with G01 G41 DA line + quarter-arc G03 onto the cutting circle&lt;BR /&gt;- Exit: Replace the G01 return-to-center with quarter-arc G03 off the circle + G01 G40 line to center&lt;/P&gt;&lt;P&gt;The lead-in arc radius is tool_diameter × 0.1 (matches Fusion's standalone default). Works correctly with multi-pass spiral-out patterns.&lt;/P&gt;&lt;P&gt;Stock output:&lt;/P&gt;&lt;P&gt;G01 Z-0.5 F10. (plunge)&lt;BR /&gt;G03 X1.234 Y0.567 I0.617 J0. (semicircle entry - no comp)&lt;BR /&gt;G03 X-1.234 Y-0.567 I... J... (circular arc - 1st half)&lt;BR /&gt;G03 X1.234 Y0.567 I... J... (circular arc - 2nd half)&lt;BR /&gt;G01 X0. Y0. (return to center - no comp)&lt;/P&gt;&lt;P&gt;Modified output:&lt;/P&gt;&lt;P&gt;G01 Z-0.5 F10. (plunge - unchanged)&lt;BR /&gt;G01 G41 X1.198 Y0.543 DA F20. (lead-in - comp on)&lt;BR /&gt;G03 X1.234 Y0.567 I... J... (quarter-arc onto circle)&lt;BR /&gt;G03 X-1.234 Y-0.567 I... J... (circular arc - 1st half - unchanged)&lt;BR /&gt;G03 X1.234 Y0.567 I... J... (circular arc - 2nd half - unchanged)&lt;BR /&gt;G03 X1.198 Y0.610 I... J... (quarter-arc off circle)&lt;BR /&gt;G01 G40 X0. Y0. F20. (lead-out - comp off)&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;================================================================================&lt;BR /&gt;IMPLEMENTATION&lt;BR /&gt;================================================================================&lt;/P&gt;&lt;P&gt;There are 6 code locations to modify. The surrounding context (function names, existing code) is included so you can find the right insertion point in your post.&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;1. State Variable Declaration&lt;BR /&gt;-----------------------------&lt;/P&gt;&lt;P&gt;Add this block before your `var settings = {` declaration:&lt;/P&gt;&lt;P&gt;// Cutter compensation injection for drill-nested cycle expansions&lt;BR /&gt;var drillCompState = {&lt;BR /&gt;active : false, // true when inside a comp-eligible cycle expansion&lt;BR /&gt;type : "", // "thread-milling" or "circular-pocket-milling"&lt;BR /&gt;entryDone : false, // true after G41 entry has been output&lt;BR /&gt;holeCenter : undefined, // {x, y, z} - position at start of cutting moves&lt;BR /&gt;circleEntryPoint: undefined, // {x, y} - point on cutting circle&lt;BR /&gt;circleRadius : 0, // distance from center to circle (pocket mill)&lt;BR /&gt;pitch : 0 // thread pitch (thread mill, from cycle.pitch)&lt;BR /&gt;};&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;2. Initialize State in onCycle()&lt;BR /&gt;--------------------------------&lt;/P&gt;&lt;P&gt;In your onCycle() function, add after the `writeBlock(gPlaneModal.format(17));` line. This activates the state machine once per cycle; per-hole fields are reset in onCyclePoint() (section 4).&lt;/P&gt;&lt;P&gt;// Initialize comp state for drill-nested cycles that need G41/G40.&lt;BR /&gt;// Activates the state machine once per cycle; per-hole fields (entryDone,&lt;BR /&gt;// holeCenter, etc.) are reset in onCyclePoint() for each hole.&lt;BR /&gt;if (cycleType == "thread-milling" || cycleType == "circular-pocket-milling") {&lt;BR /&gt;drillCompState.active = true;&lt;BR /&gt;drillCompState.type = cycleType;&lt;BR /&gt;drillCompState.entryDone = false;&lt;BR /&gt;drillCompState.holeCenter = undefined;&lt;BR /&gt;drillCompState.circleEntryPoint = undefined;&lt;BR /&gt;drillCompState.circleRadius = 0;&lt;BR /&gt;drillCompState.pitch = (cycleType == "thread-milling") ? cycle.pitch : 0;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;3. Clear State in onCycleEnd()&lt;BR /&gt;------------------------------&lt;/P&gt;&lt;P&gt;Add as the first line inside onCycleEnd():&lt;/P&gt;&lt;P&gt;drillCompState.active = false; // clear comp state&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;4. Per-Hole State Reset in onCyclePoint()&lt;BR /&gt;-----------------------------------------&lt;/P&gt;&lt;P&gt;Add at the very beginning of onCyclePoint(), before the existing inspection/probe/drill dispatch. Without this reset, only the first hole in a multi-hole pattern gets the fabricated G41 entry — subsequent holes use stale state from the first hole, producing wrong exit arc geometry and orphaned G40 without a matching G41.&lt;/P&gt;&lt;P&gt;function onCyclePoint(x, y, z) {&lt;BR /&gt;// Reset per-hole comp state so every hole gets its own G41/G40.&lt;BR /&gt;// onCycle() activates drillCompState.active once; here we reset the&lt;BR /&gt;// per-hole fields so each hole's semicircle entry is intercepted and&lt;BR /&gt;// holeCenter is freshly captured.&lt;BR /&gt;if (drillCompState.active) {&lt;BR /&gt;drillCompState.entryDone = false;&lt;BR /&gt;drillCompState.holeCenter = undefined;&lt;BR /&gt;drillCompState.circleEntryPoint = undefined;&lt;BR /&gt;drillCompState.circleRadius = 0;&lt;BR /&gt;}&lt;BR /&gt;// ... rest of onCyclePoint unchanged&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;5. Linear Move Interception in onLinear()&lt;BR /&gt;-----------------------------------------&lt;/P&gt;&lt;P&gt;Add at the very beginning of onLinear(), before existing x/y/z formatting:&lt;/P&gt;&lt;P&gt;function onLinear(_x, _y, _z, feed) {&lt;BR /&gt;if (drillCompState.active) {&lt;BR /&gt;var curPos = getCurrentPosition();&lt;BR /&gt;var isXYMove = xyzFormat.areDifferent(_x, curPos.x) ||&lt;BR /&gt;xyzFormat.areDifferent(_y, curPos.y);&lt;/P&gt;&lt;P&gt;if (drillCompState.type == "thread-milling") {&lt;BR /&gt;// ENTRY: Replace flat G01 with helical lead-in&lt;BR /&gt;if (!drillCompState.entryDone &amp;amp;&amp;amp; isXYMove) {&lt;BR /&gt;var Cx = curPos.x; var Cy = curPos.y;&lt;BR /&gt;var Ox = _x; var Oy = _y;&lt;BR /&gt;var R = Math.sqrt((Ox-Cx)*(Ox-Cx) + (Oy-Cy)*(Oy-Cy));&lt;BR /&gt;var r = tool.diameter * 0.1;&lt;BR /&gt;var theta = Math.atan2(Oy - Cy, Ox - Cx);&lt;BR /&gt;var zRamp = drillCompState.pitch / 4;&lt;BR /&gt;var bottomZ = curPos.z;&lt;/P&gt;&lt;P&gt;var leadInX = Cx + (R-r)*Math.cos(theta) + r*Math.sin(theta);&lt;BR /&gt;var leadInY = Cy + (R-r)*Math.sin(theta) - r*Math.cos(theta);&lt;BR /&gt;writeBlock(gMotionModal.format(1), gFormat.format(41),&lt;BR /&gt;xOutput.format(leadInX), yOutput.format(leadInY),&lt;BR /&gt;getToolOffsetCode("diameter"), getFeed(feed));&lt;/P&gt;&lt;P&gt;var arcI = -r * Math.sin(theta);&lt;BR /&gt;var arcJ = r * Math.cos(theta);&lt;BR /&gt;writeBlock(gMotionModal.format(3),&lt;BR /&gt;xOutput.format(Ox), yOutput.format(Oy),&lt;BR /&gt;zOutput.format(bottomZ + zRamp),&lt;BR /&gt;iOutput.format(arcI), jOutput.format(arcJ));&lt;/P&gt;&lt;P&gt;drillCompState.entryDone = true;&lt;BR /&gt;return;&lt;BR /&gt;}&lt;BR /&gt;// EXIT: G40 on return-to-center&lt;BR /&gt;if (drillCompState.entryDone &amp;amp;&amp;amp; isXYMove) {&lt;BR /&gt;writeBlock(gMotionModal.format(1), gFormat.format(40),&lt;BR /&gt;xOutput.format(_x), yOutput.format(_y), getFeed(feed));&lt;BR /&gt;return;&lt;BR /&gt;}&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;if (drillCompState.type == "circular-pocket-milling") {&lt;BR /&gt;// EXIT: quarter-arc off circle + G40 line&lt;BR /&gt;if (drillCompState.entryDone &amp;amp;&amp;amp; isXYMove) {&lt;BR /&gt;var Cx = drillCompState.holeCenter.x;&lt;BR /&gt;var Cy = drillCompState.holeCenter.y;&lt;BR /&gt;var Ox = curPos.x; var Oy = curPos.y;&lt;BR /&gt;var R = Math.sqrt((Ox-Cx)*(Ox-Cx) + (Oy-Cy)*(Oy-Cy));&lt;BR /&gt;var r = tool.diameter * 0.1;&lt;BR /&gt;var theta = Math.atan2(Oy - Cy, Ox - Cx);&lt;/P&gt;&lt;P&gt;var exitX = Cx + (R-r)*Math.cos(theta) - r*Math.sin(theta);&lt;BR /&gt;var exitY = Cy + (R-r)*Math.sin(theta) + r*Math.cos(theta);&lt;BR /&gt;var exitI = -r * Math.cos(theta);&lt;BR /&gt;var exitJ = -r * Math.sin(theta);&lt;/P&gt;&lt;P&gt;writeBlock(gMotionModal.format(3),&lt;BR /&gt;xOutput.format(exitX), yOutput.format(exitY),&lt;BR /&gt;iOutput.format(exitI), jOutput.format(exitJ),&lt;BR /&gt;getFeed(feed));&lt;BR /&gt;writeBlock(gMotionModal.format(1), gFormat.format(40),&lt;BR /&gt;xOutput.format(_x), yOutput.format(_y), getFeed(feed));&lt;BR /&gt;return;&lt;BR /&gt;}&lt;BR /&gt;}&lt;BR /&gt;}&lt;BR /&gt;// --- normal onLinear continues below ---&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;6. Circular Move Interception in onCircular()&lt;BR /&gt;----------------------------------------------&lt;/P&gt;&lt;P&gt;Add at the very beginning of onCircular(), before the pendingRadiusCompensation check:&lt;/P&gt;&lt;P&gt;function onCircular(clockwise, cx, cy, cz, x, y, z, feed) {&lt;BR /&gt;// Pocket mill entry - replace semicircle with fabricated lead-in&lt;BR /&gt;if (drillCompState.active &amp;amp;&amp;amp;&lt;BR /&gt;drillCompState.type == "circular-pocket-milling" &amp;amp;&amp;amp;&lt;BR /&gt;!drillCompState.entryDone) {&lt;/P&gt;&lt;P&gt;var curPos = getCurrentPosition();&lt;BR /&gt;var Cx = curPos.x; var Cy = curPos.y;&lt;BR /&gt;var Ox = x; var Oy = y;&lt;BR /&gt;var R = Math.sqrt((Ox-Cx)*(Ox-Cx) + (Oy-Cy)*(Oy-Cy));&lt;BR /&gt;var r = tool.diameter * 0.1;&lt;BR /&gt;var theta = Math.atan2(Oy - Cy, Ox - Cx);&lt;/P&gt;&lt;P&gt;drillCompState.holeCenter = {x:Cx, y:Cy, z:curPos.z};&lt;BR /&gt;drillCompState.circleEntryPoint = {x:Ox, y:Oy};&lt;BR /&gt;drillCompState.circleRadius = R;&lt;/P&gt;&lt;P&gt;var leadInX = Cx + (R-r)*Math.cos(theta) + r*Math.sin(theta);&lt;BR /&gt;var leadInY = Cy + (R-r)*Math.sin(theta) - r*Math.cos(theta);&lt;BR /&gt;var arcI = -r * Math.sin(theta);&lt;BR /&gt;var arcJ = r * Math.cos(theta);&lt;/P&gt;&lt;P&gt;writeBlock(gMotionModal.format(1), gFormat.format(41),&lt;BR /&gt;xOutput.format(leadInX), yOutput.format(leadInY),&lt;BR /&gt;getToolOffsetCode("diameter"), getFeed(feed));&lt;BR /&gt;writeBlock(gMotionModal.format(clockwise ? 2 : 3),&lt;BR /&gt;xOutput.format(Ox), yOutput.format(Oy),&lt;BR /&gt;iOutput.format(arcI), jOutput.format(arcJ));&lt;/P&gt;&lt;P&gt;drillCompState.entryDone = true;&lt;BR /&gt;return; // suppress original entry semicircle&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;if (pendingRadiusCompensation &amp;gt;= 0) {&lt;BR /&gt;// ... rest of onCircular unchanged&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;================================================================================&lt;/P&gt;&lt;P&gt;Optional: Allow Smoothing for Drill-Nested Milling&lt;BR /&gt;---------------------------------------------------&lt;/P&gt;&lt;P&gt;By default, the post disables smoothing for all drilling cycles. Since drill-nested pocket and thread milling expand into linear/circular moves, they benefit from smoothing. In initializeSmoothing(), replace the smoothing.isAllowed line:&lt;/P&gt;&lt;P&gt;var isDrillNestedMilling = hasParameter("operation:cycleType") &amp;amp;&amp;amp;&lt;BR /&gt;(getParameter("operation:cycleType") == "circular-pocket-milling" ||&lt;BR /&gt;getParameter("operation:cycleType") == "circular-pocket-milling-roughing" ||&lt;BR /&gt;getParameter("operation:cycleType") == "thread-milling");&lt;BR /&gt;smoothing.isAllowed = !(currentSection.getTool().type == TOOL_PROBE ||&lt;BR /&gt;(isDrillingCycle() &amp;amp;&amp;amp; !isDrillNestedMilling));&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;================================================================================&lt;/P&gt;&lt;P&gt;NOTES&lt;BR /&gt;-----&lt;/P&gt;&lt;P&gt;- getToolOffsetCode("diameter") outputs the appropriate D-offset code for your control (DA, DB, D##). This function already exists in the stock Okuma post.&lt;/P&gt;&lt;P&gt;- Lead-in arc radius is tool.diameter * 0.1 — matches Fusion's default for standalone circular/thread milling.&lt;/P&gt;&lt;P&gt;- Thread milling lead-in Z ramp = pitch/4 (quarter-turn of helix). If your bottom height doesn't account for this, adjust in CAM.&lt;/P&gt;&lt;P&gt;- The geometry math uses atan2 to handle any entry angle — works regardless of where on the circle the cycle expansion starts.&lt;/P&gt;&lt;P&gt;- For multi-hole patterns, the per-hole reset in onCyclePoint() (section 4) ensures each hole gets fresh entry/exit fabrication. Without it, only the first hole receives G41 and subsequent holes produce incorrect exit arcs from stale center coordinates.&lt;/P&gt;&lt;P&gt;- Tested on Okuma OSP-P300A (Genos M560-V). The G41/G40 with DA offset codes and fabricated arc geometry are standard G-code — should work on any OSP control.&lt;/P&gt;</description>
      <pubDate>Mon, 30 Mar 2026 23:41:40 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/fusion-manufacture-forum/feature-request-specified-diameter-option-for-circular-amp/m-p/14069537#M176772</guid>
      <dc:creator>josh.millerRQWRT</dc:creator>
      <dc:date>2026-03-30T23:41:40Z</dc:date>
    </item>
  </channel>
</rss>

