fusion360 .pp

Alle vragen die betrekking hebben over Mach cnc controllers

Moderator: Moderators

Plaats reactie
Gebruikersavatar
zeeschuim
Donateur
Berichten: 880
Lid geworden op: 05 jun 2015 21:54
Locatie: Lelystad
Contacteer:

fusion360 .pp

Bericht door zeeschuim »

Zijn er hier ook fusion 360 mach3 4 asser postprocessor bouwers/gebruikers?
Wij van cncfrees adviseren cncfrees.
Gebruikersavatar
Bjornski1976
Berichten: 1130
Lid geworden op: 01 feb 2013 14:10
Locatie: Gorinchem

Re: fusion360 .pp

Bericht door Bjornski1976 »

Ja, ennnn? :mrgreen:
Gebruik mach3, kom van inventor.
Kennis en wijsheid zijn relatief, gevormd door perceptie & invloed van anderen, Ik wens je veel wijsheid toe bij het toepassen van je kennis.
Gebruikersavatar
zeeschuim
Donateur
Berichten: 880
Lid geworden op: 05 jun 2015 21:54
Locatie: Lelystad
Contacteer:

Re: fusion360 .pp

Bericht door zeeschuim »

Ik ben op zoek naar iemand die tegen betaling dat wil doen. Het gaat om een vijf asser met een A as haaks op het YZ vlak plus een rotatieas (draaibank)
Wij van cncfrees adviseren cncfrees.
Gebruikersavatar
zeeschuim
Donateur
Berichten: 880
Lid geworden op: 05 jun 2015 21:54
Locatie: Lelystad
Contacteer:

Re: fusion360 .pp

Bericht door zeeschuim »

Aanpassen misschien? Dit is niet de hele postprocessor!!

Code: Selecteer alles

/**
  Copyright (C) 2012-2022 by Autodesk, Inc.
  All rights reserved.

  5AXISMAKER post processor configuration.

  $Revision: 43844 24dd7accaac0dd72bbe1be7ed986d994b45a712c $
  $Date: 2022-06-17 16:48:43 $

  FORKID {61167F95-13C8-423D-B5C7-A64F747AAA5E}
*/

description = "5AXISMAKER";
vendor = "5AXISWORKS";
vendorUrl = "http://www.5axismaker.com";
legal = "Copyright (C) 2012-2022 by Autodesk, Inc.";
certificationLevel = 2;
minimumRevision = 45702;

longDescription = "Generic 5-axis post for 5AXISMAKER with Mach3 control.";

extension = "tap";
setCodePage("ascii");

capabilities = CAPABILITY_MILLING;
tolerance = spatial(0.002, MM);

minimumChordLength = spatial(0.25, MM);
minimumCircularRadius = spatial(0.01, MM);
maximumCircularRadius = spatial(1000, MM);
minimumCircularSweep = toRad(0.01);
maximumCircularSweep = toRad(180);
allowHelicalMoves = true;
allowedCircularPlanes = undefined; // allow any circular motion

// user-defined properties
properties = {
  writeMachine: {
    title      : "Write machine",
    description: "Output the machine settings in the header of the code.",
    group      : "formats",
    type       : "boolean",
    value      : true,
    scope      : "post"
  },
  writeTools: {
    title      : "Write tool list",
    description: "Output a tool list in the header of the code.",
    group      : "formats",
    type       : "boolean",
    value      : true,
    scope      : "post"
  },
  safePositionMethod: {
    title      : "Safe Retracts",
    description: "Select your desired retract option. 'Clearance Height' retracts to the operation clearance height.",
    group      : "homePositions",
    type       : "enum",
    values     : [
      {title:"G28", id:"G28"},
      // {title:"G53", id: "G53"},
      {title:"Clearance Height", id:"clearanceHeight"}
    ],
    value: "clearanceHeight",
    scope: "post"
  },
  useM06: {
    title      : "Use M6",
    description: "Disable to avoid outputting M6. If disabled Preload is also disabled",
    group      : "preferences",
    type       : "boolean",
    value      : true,
    scope      : "post"
  },
  preloadTool: {
    title      : "Preload tool",
    description: "Preloads the next tool at a tool change (if any).",
    group      : "preferences",
    type       : "boolean",
    value      : false,
    scope      : "post"
  },
  useG43: {
    title      : "Use G43",
    description: "Use G43 tool offsets.",
    group      : "preferences",
    type       : "boolean",
    value      : false,
    scope      : "post"
  },
  showSequenceNumbers: {
    title      : "Use sequence numbers",
    description: "'Yes' outputs sequence numbers on each block, 'Only on tool change' outputs sequence numbers on tool change blocks only, and 'No' disables the output of sequence numbers.",
    group      : "formats",
    type       : "enum",
    values     : [
      {title:"Yes", id:"true"},
      {title:"No", id:"false"},
      {title:"Only on tool change", id:"toolChange"}
    ],
    value: "false",
    scope: "post"
  },
  sequenceNumberStart: {
    title      : "Start sequence number",
    description: "The number at which to start the sequence numbers.",
    group      : "formats",
    type       : "integer",
    value      : 10,
    scope      : "post"
  },
  sequenceNumberIncrement: {
    title      : "Sequence number increment",
    description: "The amount by which the sequence number is incremented by in each block.",
    group      : "formats",
    type       : "integer",
    value      : 5,
    scope      : "post"
  },
  optionalStop: {
    title      : "Optional stop",
    description: "Outputs optional stop code during when necessary in the code.",
    group      : "preferences",
    type       : "boolean",
    value      : false,
    scope      : "post"
  },
  separateWordsWithSpace: {
    title      : "Separate words with space",
    description: "Adds spaces between words if 'yes' is selected.",
    group      : "formats",
    type       : "boolean",
    value      : true,
    scope      : "post"
  },
  useRadius: {
    title      : "Radius arcs",
    description: "If yes is selected, arcs are outputted using radius values rather than IJK.",
    group      : "preferences",
    type       : "boolean",
    value      : true,
    scope      : "post"
  },
  dwellInSeconds: {
    title      : "Dwell in seconds",
    description: "Specifies the unit for dwelling, set to 'Yes' for seconds and 'No' for milliseconds.",
    group      : "preferences",
    type       : "boolean",
    value      : true,
    scope      : "post"
  },
  setupAtCenterOfCAxis: {
    title      : "Setup at center of C axis",
    description: "Specifies if the machine is zeroed at the center of C-axis rotation.",
    group      : "multiAxis",
    type       : "boolean",
    value      : false,
    scope      : "post"
  },
  safeRetractDistance: {
    title      : "Safe retract distance",
    description: "A set distance to add to the tool length for rewind C-axis tool retract.",
    group      : "multiAxis",
    type       : "number",
    value      : 0.5,
    scope      : "post"
  },
  useRigidTapping: {
    title      : "Use rigid tapping",
    description: "Select 'Yes' to enable, 'No' to disable, or 'Without spindle direction' to enable rigid tapping without outputting the spindle direction block.",
    group      : "preferences",
    type       : "enum",
    values     : [
      {title:"Yes", id:"yes"},
      {title:"No", id:"no"},
      {title:"Without spindle direction", id:"without"}
    ],
    value: "yes",
    scope: "post"
  }
};

// wcs definiton
wcsDefinitions = {
  useZeroOffset: false,
  wcs          : [
    {name:"Standard", format:"G", range:[54, 59]},
    {name:"Extended", format:"G59 P", range:[1, 254]}
  ]
};

var permittedCommentChars = " ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.,=_-#:";

var singleLineCoolant = false; // specifies to output multiple coolant codes in one line rather than in separate lines
// samples:
// {id: COOLANT_THROUGH_TOOL, on: 88, off: 89}
// {id: COOLANT_THROUGH_TOOL, on: [8, 88], off: [9, 89]}
// {id: COOLANT_THROUGH_TOOL, on: "M88 P3 (myComment)", off: "M89"}
var coolants = [
  {id:COOLANT_FLOOD, on:8},
  {id:COOLANT_MIST, on:7},
  {id:COOLANT_THROUGH_TOOL},
  {id:COOLANT_AIR},
  {id:COOLANT_AIR_THROUGH_TOOL},
  {id:COOLANT_SUCTION},
  {id:COOLANT_FLOOD_MIST},
  {id:COOLANT_FLOOD_THROUGH_TOOL},
  {id:COOLANT_OFF, off:9}
];

var nFormat = createFormat({prefix:"N", decimals:0});
var gFormat = createFormat({prefix:"G", decimals:1});
var mFormat = createFormat({prefix:"M", decimals:0});
var hFormat = createFormat({prefix:"H", decimals:0});
var pFormat = createFormat({prefix:"P", decimals:(unit == MM ? 3 : 4), scale:0.5});
var xyzFormat = createFormat({decimals:(unit == MM ? 3 : 4), forceDecimal:true});
var rFormat = xyzFormat; // radius
var abcFormat = createFormat({decimals:3, forceDecimal:true, scale:DEG});
var feedFormat = createFormat({decimals:(unit == MM ? 0 : 1), forceDecimal:true});
var inverseFormat = createFormat({decimals:2, forceDecimal:true});
var toolFormat = createFormat({decimals:0});
var rpmFormat = createFormat({decimals:0});
var secFormat = createFormat({decimals:3, forceDecimal:true}); // seconds - range 0.001-99999.999
var milliFormat = createFormat({decimals:0}); // milliseconds // range 1-9999
var taperFormat = createFormat({decimals:1, scale:DEG});

var xOutput = createVariable({prefix:"X"}, xyzFormat);
var yOutput = createVariable({prefix:"Y"}, xyzFormat);
var zOutput = createVariable({onchange:function () {retracted = false;}, prefix:"Z"}, xyzFormat);
var aOutput = createVariable({prefix:"A"}, abcFormat);
var bOutput = createVariable({prefix:"B"}, abcFormat);
var cOutput = createVariable({prefix:"C"}, abcFormat);
var feedOutput = createVariable({prefix:"F"}, feedFormat);
var inverseTimeOutput = createVariable({prefix:"F", force:true}, inverseFormat);
var sOutput = createVariable({prefix:"S", force:true}, rpmFormat);
var pOutput = createVariable({}, pFormat);

// circular output
var iOutput = createReferenceVariable({prefix:"I", force:true}, xyzFormat);
var jOutput = createReferenceVariable({prefix:"J", force:true}, xyzFormat);
var kOutput = createReferenceVariable({prefix:"K", force:true}, xyzFormat);

var gMotionModal = createModal({}, gFormat); // modal group 1 // G0-G3, ...
var gPlaneModal = createModal({onchange:function () {gMotionModal.reset();}}, gFormat); // modal group 2 // G17-19
var gAbsIncModal = createModal({}, gFormat); // modal group 3 // G90-91
var gFeedModeModal = createModal({}, gFormat); // modal group 5 // G93-94
var gUnitModal = createModal({}, gFormat); // modal group 6 // G20-21
var gCycleModal = createModal({}, gFormat); // modal group 9 // G81, ...
var gRetractModal = createModal({}, gFormat); // modal group 10 // G98-99

// fixed settings
var pivotDistance = toPreciseUnit(27.5, MM); // distance to pivot point along B-axis
var cAxisOffset = toPreciseUnit(63.75, MM); // distance from B-axis CL to C-axis CL
var headOffset = pivotDistance; // can have the tool length added to it
var safeRetractFeed = (unit == IN) ? 40 : 1000;
var safePlungeFeed = (unit == IN) ? 25 : 625;

var WARNING_WORK_OFFSET = 0;

// collected state
var sequenceNumber;
var forceSpindleSpeed = false;
var currentWorkOffset;
var previousABC;
var retracted = false; // specifies that the tool has been retracted to the safe plane

/**
  Writes the specified block.
*/
function writeBlock() {
  var text = formatWords(arguments);
  if (!text) {
    return;
  }
  if (getProperty("showSequenceNumbers") == "true") {
    writeWords2(nFormat.format(sequenceNumber % 100000), arguments);
    sequenceNumber += getProperty("sequenceNumberIncrement");
  } else {
    writeWords(arguments);
  }
}

/**
  Writes the specified block - used for tool changes only.
*/
function writeToolBlock() {
  var show = getProperty("showSequenceNumbers");
  setProperty("showSequenceNumbers", (show == "true" || show == "toolChange") ? "true" : "false");
  writeBlock(arguments);
  setProperty("showSequenceNumbers", show);
}

/**
  Output a comment.
*/
function writeComment(text) {
  writeln("(" + filterText(String(text).toUpperCase(), permittedCommentChars) + ")");
}

function onOpen() {
  if (getProperty("useRadius")) {
    maximumCircularSweep = toRad(90); // avoid potential center calculation errors for CNC
  }

  if (true) {
    var bAxis = createAxis({coordinate:1, table:false, axis:[1, 0, 0], range:[-180.00, 180.00]});
    var cAxis = createAxis({coordinate:2, table:false, axis:[0, 0, 1], offset:[cAxisOffset, 0, 0], range:[-360.00, 360.00], cyclic:false});

    machineConfiguration = new MachineConfiguration(bAxis, cAxis);

    setMachineConfiguration(machineConfiguration);
    optimizeMachineAngles2(0); // map tip mode - we compensate below
  }

  if (!machineConfiguration.isMachineCoordinate(0)) {
    aOutput.disable();
  }
  if (!machineConfiguration.isMachineCoordinate(1)) {
    bOutput.disable();
  }
  if (!machineConfiguration.isMachineCoordinate(2)) {
    cOutput.disable();
  }

  if (!getProperty("separateWordsWithSpace")) {
    setWordSeparator("");
  }

  sequenceNumber = getProperty("sequenceNumberStart");

  if (programName) {
    writeComment(programName);
  }
  if (programComment) {
    writeComment(programComment);
  }

  // dump machine configuration
  var vendor = machineConfiguration.getVendor();
  var model = machineConfiguration.getModel();
  var description = machineConfiguration.getDescription();

  if (getProperty("writeMachine") && (vendor || model || description)) {
    writeComment(localize("Machine"));
    if (vendor) {
      writeComment("  " + localize("vendor") + ": " + vendor);
    }
    if (model) {
      writeComment("  " + localize("model") + ": " + model);
    }
    if (description) {
      writeComment("  " + localize("description") + ": "  + description);
    }
  }

  // dump tool information
  if (getProperty("writeTools")) {
    var zRanges = {};
    if (is3D()) {
      var numberOfSections = getNumberOfSections();
      for (var i = 0; i < numberOfSections; ++i) {
        var section = getSection(i);
        var zRange = section.getGlobalZRange();
        var tool = section.getTool();
        if (zRanges[tool.number]) {
          zRanges[tool.number].expandToRange(zRange);
        } else {
          zRanges[tool.number] = zRange;
        }
      }
    }

    var tools = getToolTable();
    if (tools.getNumberOfTools() > 0) {
      for (var i = 0; i < tools.getNumberOfTools(); ++i) {
        var tool = tools.getTool(i);
        var comment = "T" + toolFormat.format(tool.number) + "  " +
          "D=" + xyzFormat.format(tool.diameter) + " " +
          localize("CR") + "=" + xyzFormat.format(tool.cornerRadius);
        if ((tool.taperAngle > 0) && (tool.taperAngle < Math.PI)) {
          comment += " " + localize("TAPER") + "=" + taperFormat.format(tool.taperAngle) + localize("deg");
        }
        if (zRanges[tool.number]) {
          comment += " - " + localize("ZMIN") + "=" + xyzFormat.format(zRanges[tool.number].getMinimum());
        }
        comment += " - " + getToolTypeName(tool.type);
        writeComment(comment);
      }
    }
  }


    _zHome = machineConfiguration.getRetractPlane() != 0 ? machineConfiguration.getRetractPlane() : toPreciseUnit(0, MM);
  }
  for (var i = 0; i < arguments.length; ++i) {
    switch (arguments[i]) {
    case X:
      words.push("X" + xyzFormat.format(_xHome));
      xOutput.reset();
      break;
    case Y:
      words.push("Y" + xyzFormat.format(_yHome));
      yOutput.reset();
      break;
    case Z:
      words.push("Z" + xyzFormat.format(_zHome));
      zOutput.reset();
      retracted = true;
      break;
    default:
      error(localize("Unsupported axis specified for writeRetract()."));
      return;
    }
  }
  if (words.length > 0) {
    switch (method) {
    case "G28":
      gMotionModal.reset();
      gAbsIncModal.reset();
      writeBlock(gFormat.format(28), gAbsIncModal.format(91), words);
      writeBlock(gAbsIncModal.format(90));
      break;
    case "G53":
      gMotionModal.reset();
      writeBlock(gAbsIncModal.format(90), gFormat.format(53), gMotionModal.format(0), words);
      break;
    default:
      error(localize("Unsupported safe position method."));
      return;
    }
  }
}

function onClose() {
  writeln("");

  if (false) {
    setCoolant(COOLANT_OFF);
  }

  writeRetract(Z);

  // setWorkPlane(new Vector(0, 0, 0)); // reset working plane

  writeRetract(X, Y);

  onImpliedCommand(COMMAND_END);
  onCommand(COMMAND_STOP_SPINDLE);
  writeBlock(mFormat.format(30)); // stop program, spindle stop, coolant off
}

function setProperty(property, value) {
  properties[property].current = value;
}
Wij van cncfrees adviseren cncfrees.
Gebruikersavatar
zeeschuim
Donateur
Berichten: 880
Lid geworden op: 05 jun 2015 21:54
Locatie: Lelystad
Contacteer:

Re: fusion360 .pp

Bericht door zeeschuim »

2150 euro voor een 4 asser encrypted postprocessor plus 150 euro per jaar onderhoudscontract.
En 3000 voor een 5 asser.
Kijk dat zijn nog eens prijzen!
Wij van cncfrees adviseren cncfrees.
Gebruikersavatar
zeeschuim
Donateur
Berichten: 880
Lid geworden op: 05 jun 2015 21:54
Locatie: Lelystad
Contacteer:

Re: fusion360 .pp

Bericht door zeeschuim »

4 paginas leuteren, over het al dan niet koters met scherpe zakdoeken te laten spelen maar over een postprocessor een enkele reactie, het lijkt wel de Libelle zomerweek hier. :mrgreen:
Wij van cncfrees adviseren cncfrees.
Gebruikersavatar
hugo stoutjesdijk
Donateur
Berichten: 12054
Lid geworden op: 02 mar 2011 17:04
Locatie: elst (u)
Contacteer:

Re: fusion360 .pp

Bericht door hugo stoutjesdijk »

Tsja, scherpe messen en kinderen heeft iedereen wel ervaring mee.
Zijn er hier ook fusion 360 mach3 4 asser postprocessor bouwers/gebruikers?
Komt geen antwoordt op, dus blijkbaar voelt niemand zich aangesproken, en die ene die je zoekt is waarschijnlijk net vertrokken naar een zonnig zuidelijk oord om alles te vergeten en weer even op te laden voor het komende jaar.
Ik ben voor meer techniek op school, maar dan wel vanaf groep 1 basischool.
Gebruikersavatar
hainjedaf
Donateur
Berichten: 2469
Lid geworden op: 01 aug 2011 10:01
Locatie: Amsterdam
Contacteer:

Re: fusion360 .pp

Bericht door hainjedaf »

zeeschuim schreef: 13 jul 2023 08:05 4 paginas leuteren, over het al dan niet koters met scherpe zakdoeken te laten spelen maar over een postprocessor een enkele reactie, het lijkt wel de Libelle zomerweek hier. :mrgreen:
Libelle zomerweek?! Jij woont in die polder....

Ik woon ten minste in Sodom en Gomoorrah :)
Met vriendelijke groet,
Marout Sluijter-Borms,
Amsterdam

Prusa Mini+ Wifi & X1 Carbon met X1Plus
Sparren en tinkeren met iedereen en over alles wat techniek is.
Plaats reactie