All Activity
- Past hour
-
5-Axis Curve, Follow Method is Max Step 1,000, Z Drops
Chally72 replied to Mr. Saturday's topic in Industrial Forum
Check out what's happening with the tool at the start and end of the path, with the lead angle you requested, and the projection method to the surface you've set up. Here's the start of the path: Ok, looks good, and looks like what I expect. The posted position of the tool in the NC code is the center tip, so in this case the Z position is above your surface. Now let's take a look at the end of your toolpath. Because you're projecting to a surface, and your surface is basically the same length as the line you're using as the path, you get something you might not have wanted- the compensation point on the tool changes as it rolls off the edge, and this means your path slants downwards at the end, BEFORE you've gotten to the end of the wireframe line you're cutting and before it starts the lead out motion: Ok so now we've seen why you have different Z heights being posted. But why are there Y changes being posted? Well, for that, we need to look at the toolpath from a different angle: You're on an angle here and when the tool contact changes and the "z" drops, you're dropping it straight down from the frame of reference of the spindle Z, but not straight from the frame of reference of the toolpath or the WCS. You're divorcing the tool vector from the tool plane/wcs vector and creating a scenario you would never encounter in a contour, so you can't lean on that behavior when you step into a multiaxis world. -
5-Axis Curve, Follow Method is Max Step 1,000, Z Drops
Mr. Saturday replied to Mr. Saturday's topic in Industrial Forum
I always use lead in/out on contours, how is a toolpath in the Z axis any different than one in a Y axis? I mean, I understand what you're saying, but I cannot wrap my head around the supposed logic of how the toolpath, when it finishes it's lead in, can somehow NOT be at the specified coordinate that begins the cut, regardless of what axis it's in. Regardless, the filter did work so it's an easy fix, but the logic here is baffling. - Today
-
5-Axis Curve, Follow Method is Max Step 1,000, Z Drops
Chally72 replied to Mr. Saturday's topic in Industrial Forum
Took a look at the file. Turning Filtering on reduces the number of points to the theoretical minimum and gets you what you're after. Note that the areas where you're still seeing points added in-cut are because you're rolling the front edge of the tool and following the profile- it has to do with the lead angle you're requesting and how it follows the tool profile. This is also why when you put it to 1000 it gouges. You're telling the toolpath to wipe out everything in between the first and last move with such a big number, and the first move has the leading edge of the tool in contact with the front edge of the part, and the last move has the CENTER of the tool in contact with the back edge of the part- giving you a Z difference in effective tip position. An XY contour will never do that because you're not using a lead angle. Since you've got a multiaxis toolpath here, you have to think about the tool contact point a little differently, and how lead and side tilt angles can shift that contact point on different geometry. Yes, deburr in particular could use these basic point filtering capabilities to solve the same scenario. -
5-Axis Curve, Follow Method is Max Step 1,000, Z Drops
jstell replied to Mr. Saturday's topic in Industrial Forum
Same problem with deburr. Posts multiple X-only lines. No filter in that one, only cut tolerance on cut pattern tab. -
Toolpath incomplete when using custom tool geometry
AHarrison1 replied to bulletfab's topic in Industrial Forum
It doesn't save automatically, once you green check out it will ask if you want to save the current library. -
Toolpath incomplete when using custom tool geometry
jstell replied to bulletfab's topic in Industrial Forum
The other way is if you're in the operation itself on tool page, right-click on the tool and select 'save tool to library...' and then navigate to which library you want it in. Default will be whatever library you last grabbed a tool from. -
5-Axis Curve, Follow Method is Max Step 1,000, Z Drops
Mr. Saturday replied to Mr. Saturday's topic in Industrial Forum
Imagine your toolpath doing that in a regular X Y contour. Would you ever expect the cut between the end of the lead in and beginning of the lead out to taper if the geometry didn't taper? Seems to me when the tool finishes the lead in it should be at the finished Z level for the entire cut regardless of the Max Step setting. Also, the "Max" step should not eliminate any required positions along the toolpath, i.e. in the beginning of the geometrically defined cut. Forcing the program to have multiple, redundant Y moves just to be able to position itself correctly in the Z does not seem logical, desired nor safe. -
5-Axis Curve, Follow Method is Max Step 1,000, Z Drops
Chally72 replied to Mr. Saturday's topic in Industrial Forum
By setting that max step to a huge value, you're not allowing the toolpath to insert points to allow any sort of vector transition or profile following. You're essentially allowing the machine then to "choose your own adventure" both from a linear position and a vector position standpoint, to get from the start to the finish of the path. I would not expect a very great toolpath by setting that value so large- it destroys the profile and movement. I haven't looked at the file. Have you tried using the Filter settings on the Filter page to clean up linear points instead? -
Toolpath incomplete when using custom tool geometry
Mr. Saturday replied to bulletfab's topic in Industrial Forum
OIC. So by loading the library I want into the bottom panel, dragging the tool from the top panel in there, saves the library? Good stuff. Thanks. -
Doing a 5 Axis Curve Toolpath with a saw to mill an angled flat along the part. Leaving the Max Step at default of .100, I get a bunch of code to represent a straight line. Makes the programs huge and the machine jumps around like a Latino jumping bean but it results in a good part. Setting the Max Step to 1,000 eliminates all the Y moves and condenses it to 1 line (after the lead in and lead out). The problem is, as the tool is moving across the flat on that one line the Z is moving down, creating a taper. The red box below is the move across the part and the orange box shows the Z move that's not supposed to be there. The lines before the boxes are the vertical lead in. I've attached a MC file (2022) but not a Zip to Go (too much proprietary info). Is this a post issue or a mastercam issue or...? Solar Panel Z Drops at Long Max Step Setting.mcam
-
Toolpath incomplete when using custom tool geometry
Aaron Eberhard replied to bulletfab's topic in Industrial Forum
If you're in the tool manager in Mastercam, drag the tool from the top window down to the bottom window. If you're in the standalone tool manager program, it's saved automagically as you work. -
Toolpath incomplete when using custom tool geometry
Mr. Saturday replied to bulletfab's topic in Industrial Forum
Sweet! No custom tool needed. Thanks again, Aaron. :edit: Uhhh... Hate to sound ignorant, but how do I save the tool to a library from the Tool Manager? -
Toolpath incomplete when using custom tool geometry
Aaron Eberhard replied to bulletfab's topic in Industrial Forum
It's a lens form accelerated finishing: It's been quite a while since I've used 2022, but I think there might be some limitations on what toolpaths can properly use them. I know all of the 5 axis surfacing ones can (Unified, Parallel, Morph, etc.). I believe that the 3d Surfacing ones can (Waterline, Equal Scallop, etc.), but I think it's limited to those. -
Toolpath incomplete when using custom tool geometry
Mr. Saturday replied to bulletfab's topic in Industrial Forum
I LOLed. I don't have these options in 2022. Was that from a bull, a ball or a flat EM? And how did you get it to that shape? -
James Shaler joined the community
-
Toolpath incomplete when using custom tool geometry
Mr. Saturday replied to bulletfab's topic in Industrial Forum
Did some testing, the skirt on the Ball EM doesn't interfere with the part/toolpath. Goes right through it. Would still love to know how to make this the way it should be done. -
rsann joined the community
-
Capture and output value from NCI to NC
S.Luong replied to lim-mazak's topic in Post Processor Development Forum
Hello @Peter - Avivi CNC Solutions, Thank you so much, you have gave me a great info for me to make an error message as a breakthrough to knowledge. ps: Look for the "cycle color". Thank you. +++++++++++++++++++++ #Region, pGetToolInfo(tool) pGetToolInfo(tool) ToolIndex = zero ToolMinZ = HIGH@ OpToolNumber = opinfo(10002, ToolIndex) while OpToolNumber <> InvalidQuery@, [ if OpToolNumber = Tool, [ OpZMin = opinfo(19, ToolIndex) if OpZMin < ToolMinZ, [ ToolMinZ = OpZMin ] ] ToolIndex = ToolIndex + one OpToolNumber = opinfo(10002, ToolIndex) ] spaces$ = 0 HolderToolProjection = opinfo(75011, 0) sToolFluteLength = opinfo(20007, 0) #flute_len ToolFluteLength = rparsngl (sToolFluteLength, 2) [ if not(strstr("DRILL", sToolName)) & not(strstr("TAP", sToolName)) & not(strstr("REAMER", sToolName)) & not(strstr("SINK", sToolName)) & not(strstr("ENG", sToolName)), *ToolFluteLength ] NumberOfFlutes = opinfo(15143, 0) sparameter$ = opinfo(20007, zero) ToolOverAllLength = rparsngl(sparameter$, 3) [if NumberOfFlutes > 2, *NumberOfFlutes], ToolRadius = opinfo(10006, 0) # [if (tool_typ$ = 13 | tool_typ$ = 15 | tool_typ$ = 16 | tool_typ$ = 19) & ToolRadius > 0, *ToolRadius], IDToolMaterial = opinfo(10093, 0) # #[if IDToolMaterial = 1, "HS"], [if IDToolMaterial = 2, "CB, "], [if IDToolMaterial = 3, "TiCoated, "], sToolGrade = opinfo(75001,0) [if strstr("DRIL", sToolName) & sToolGrade <> sBlank & not(strstr("999", sToolGrade)) & not(strstr("Master", sToolGrade)), *sToolGrade, ", "], #[if IDToolMaterial = 4, "CRM"], #[if IDToolMaterial = 5, "USER"], #[if IDToolMaterial = 6, "USER2"], #, scomm_end, e$ sHolderName = opinfo(20020, 0) sHolderAssemblyName = opinfo(20021, 0) sToolBrand = opinfo(75004, 0) *ToolMinZ, *HolderToolProjection, [if sHolderAssemblyName <> sblank, ",", *sHolderAssemblyName], no_spc$, scomm_end, e$ [ sToolEDPNumber = opinfo(75003,0) if not(strstr("*", sToolPathGroupName)) & (sToolEDPNumber <> sblank & not(strstr(" ", sToolEDPNumber)) & not(strstr("999", sToolEDPNumber)) & not(strstr("Default", sHolderName))), scomm_str, no_spc$, if not(strstr("*", sToolPathGroupName)) & (sToolEDPNumber <> sblank & not(strstr(" ", sToolEDPNumber)) & not(strstr("999", sToolEDPNumber)) & not(strstr("Default", sHolderName))), "EDP# ", *sToolEDPNumber, if not(strstr("*", sToolPathGroupName)) & (sToolEDPNumber <> sblank & not(strstr(" ", sToolEDPNumber)) & not(strstr("999", sToolEDPNumber)) & sHolderName <> sblank & not(strstr("999", sHolderName)) & not(strstr("Default", sHolderName))), ", ", *sHolderName, if not(strstr("*", sToolPathGroupName)) & (sToolEDPNumber <> sblank & not(strstr(" ", sToolEDPNumber)) & not(strstr("999", sToolEDPNumber)) & not(strstr("Default", sHolderName))), no_spc$, scomm_end, e$ if not(strstr("*", sToolPathGroupName)) & (sToolEDPNumber <> sblank & not(strstr(" ", sToolEDPNumber)) & not(strstr("999", sToolEDPNumber)) & not(strstr("Default", sHolderName))), scomm_str, no_spc$, "===", no_spc$, scomm_end, e$ ] spaces$ = sav_spc if ProgramQCIO = 1 & sToolEDPNumber <> sblank & sHolderName = sblank, [if mprint(sHolderSpecifyWhileEDPPresented), exitpost$] if ProgramQCIO = 1 & sToolEDPNumber <> sblank & sToolBrand = sblank, [if mprint(sToolBrandSpecifyWhileEDPPresented), exitpost$] if abs(ToolMinZ) > ToolOverAllLength, [if mprint(sToolStickOutIsTooShort, 1) = 1, exitpost$] #EndRegion, pGetToolInfo(tool) #Region, pToolName pToolName #Comment for tool sToolName = opinfo(10094, zero) if sToolName <> sblank | sToolName <> sQueryInvalid, [ sToolName = regex("^\s+", sblank, two) #Remove leading whitespace sToolName = ucase(sToolName) *sToolName, no_spc$, ", ", no_spc$ ] #EndRegion, pToolName #Region, ptooltable$ ptooltable$ if tt_count$ = ToolNotOutput@, [ result = fprm(101, zero) scomm_str, no_spc$, *tt_tool$, no_spc$, ",", pToolName, pGetToolInfo(tt_tool$), e$ ] #EndRegion, ptooltable$ #Region, pheader$ pheader$ #Call before start of file pCopyRightTimeLimit hour = int(time$) min = int((time$ - hour)* 100) if hour > 12, hour = hour - 12 if hour = 0, hour = 12 year$ = year$ + 2000 #Scan forward through all operations, to determine if only one toolplane # is used. #Use this to "force off" rot_on_x to disable rotary s1013 = opinfo(1013, 0, 0) #return NCI 1013 as string for current Operation #"DEBUG: ", s1013, e$ comm_1013_p1 = rpar(s1013, 8) #Read first 8 params from s1013 first_pln_num = pln_num #Save first plane number #"DEBUG: ", first_pln_num, e$ #By scanning forward to check plane numbers, you can program on any "single plane" #and suppress both Rotary Comment and Rotary Output. -cmg 12-23-2024 while loop_cnt2 < 10001, #Check up to 10,000 Ops, to detect if only one plane used. [ s1013 = opinfo(1013, loop_cnt2, 0) #return NCI 1013 as string for each Operation comm_1013_p1 = rpar(s1013, 8) #Read first 8 params from s1013 if pln_num <> first_pln_num, one_plane = no$ #"DEBUG: ", ~pln_num, e$ #g10_flg = finc(3, pln_num) #increment 1st column of lookup table, return incremented value. "1" is first instance. if loop_cnt2 = 10000, [ s1013 = "0 0 0 0 0 0 0 0" comm_1013_p1 = rpar(s1013, 8) #Reset array to zero ] loop_cnt2 = loop_cnt2 + 1 #Increment counter, otherwise buckle up! ] #"DEBUG: ", ~one_plane, e$ "%", e$ spaces$=0 *progno$, scomm_str, sprogname$, sextnc$, scomm_end, e$ spathnc$ = ucase(spathnc$) smcname$ = ucase(smcname$) spaces$=0 #scomm_str, "PROGRAM NAME - ", sprogname, scomm_end, e #scomm_str, "DATE=DD-MM-YY - ", date, " TIME=HH:MM - ", time, scomm_end, e #scomm_str, "MASTERCAM - V", *vers_no$, scomm_end, e$ #scomm_str, "MASTERCAM - X", scomm_end, e$ scomm_str, smcname$, smcext$, scomm_end, e$ if spostname_sav = snull, spostname_sav = spostname #scomm_str, "POST - ", snamepst$, scomm_end, e$ #scomm_str, "MP - V", *dll_vers$, scomm_end, e$ stck_matl$ = ucase(stck_matl$) #scomm_str, "MATERIAL - ", stck_matl$, scomm_end, e$ #scomm_str, "CODES= ", sprogname$, sextnc$, scomm_end, e$ scomm_str, *smonth, ".", *day$, ".", *year$, # MON-DD-YYYY #scomm_str, "DATE - ", *year$, "/", *month$, "/", *day$, scomm_end, e$ # YYYY/MN/DD #scomm_str, "DATE - ", *day$, "/", *month$, "/", *year$, scomm_end, e$ # DD/MN/YYYY #scomm_str, "DATE - ", date$, scomm_end, e$ # DD-MM-YR ", ", *hour, ":", *min, [if time$ < 12, " AM"], [if time$ >= 12, " PM"], scomm_end, e$ # 12 hour #scomm_str, "TIME - ", time$, scomm_end, e$ # 24 hour #*SmoothingToleranceValue, *SmoothingToleranceValueEXT, e$ #scomm_str, "POST DEV - ", *slicense, scomm_end, e$ spaces$=sav_spc if seqno$ = 0, omitseq$ = yes$ sav_progno = progno$ if tseqno = 1 & omitseq$ = 1, [ seqno$ = 1 seqinc$ = 1 n$ = seqno$ ] sav_rot_on_x = 0 header = 0 "(*)", e$ sMachineGroupComment = opinfo(1052, 0) scomm_str, no_spc$, *sMachineGroupComment, no_spc$, scomm_end e$ sGroupName = opinfo(1053, 0) scomm_str, no_spc$, *sGroupName, no_spc$, scomm_end, e$ stck_matl$ = (stck_matl$) if stck_matl$, if RawStockShape = 0, [ [if stck_ht$, scomm_str, no_spc$, stck_matl$, no_spc$, scomm_end, e$, scomm_str, no_spc$, "BAR STOCK = ", *stck_ht$, "x"], [if stck_wdth$, *stck_wdth$, "x"], [if stck_thck$, *stck_thck$, no_spc$], [if stck_ht$ > 0 | stck_wdth$ > 0 | stck_thck$ > 0, no_spc$, scomm_end,], e$ ] if RawStockShape = 1, [ LatheStockDiameter = stck_ht$ LatheStockThickness = stck_wdth$ [if stck_ht$ > 0 | stck_wdth$ > 0 | stck_thck$ > 0, scomm_str, no_spc$, stck_matl$, ", ROUND STOCK= "], [if stck_ht$, *LatheStockDiameter, " "], [if stck_wdth$, *LatheStockThickness, "x"], [if stck_thck$, "x", *stck_thck$, ""], [if stck_ht$ > 0 | stck_wdth$ > 0 | stck_thck$ > 0, no_spc$, scomm_end,] ] if RawStockShape = 2, [ [scomm_str, no_spc$, stck_matl$, no_spc$, ", FROM SOLID MODEL", no_spc$, scomm_end], e$ ] if RawStockShape = 3, [ [scomm_str, no_spc$, stck_matl$, ", FROM FILE", no_spc$, scomm_end], e$ ] e$ if sMaterialComment, [ scomm_str, no_spc$, *sMaterialComment, "=", else, "", e$ ] if sWCSPlaneName <> sToolPlaneName,, "4 AXIS", [ if mr1$ = 1, no_spc$, " - FANUC", no_spc$, scomm_end, e$ if mr1$ = 2, no_spc$, ", - HAAS", no_spc$, scomm_end, e$ if mr1$ = 3, no_spc$, ", - MITSUBISHI", no_spc$, scomm_end, e$ if mr1$ = 4, no_spc$, " - MAZAK", no_spc$, scomm_end, e$ if mr1$ = 5, no_spc$, " - OKUMA", no_spc$, scomm_end, e$ if mr1$ <> 1 & mr1$ <> 2 & mr1$ <> 3 & mr1$ <> 4 & mr1$ <> 5, scomm_end, e$ ] if sWCSPlaneName = sToolPlaneName, "3 AXIS", [ if MR1Value = 1, no_spc$, " - FANUC", no_spc$, scomm_end, e$ if MR1Value = 2, no_spc$, ", - HAAS", no_spc$, scomm_end, e$ if MR1Value = 3, no_spc$, ", - MITSUBISHI", no_spc$, scomm_end, e$ if MR1Value = 4, no_spc$, " - MAZAK", no_spc$, scomm_end, e$ if MR1Value = 5, no_spc$, " - OKUMA", no_spc$, scomm_end, e$ ] "(*)", e$ if not(strstr("***", sToolPathGroupName)) & ntools$ = 1, scomm_str, no_spc$,"TOTAL TOOL = ", *ntools$, no_spc$, scomm_end, e$ if not(strstr("***", sToolPathGroupName)) & ntools$ > 1, scomm_str, no_spc$,"TOTAL TOOLS = ", *ntools$, no_spc$, scomm_end, e$ if not(strstr("***", sToolPathGroupName)) & tool_info > ONE@, x_tooltable$ #Run enhanced tool table, calls ptooltable$ HolderToolProjection = opinfo(75011, 0) #EndRegion, pheader$ #Region, Error messages #Region sToolStickOutIsTooShort sToolStickOutIsTooShort = "CUT#"+sToolPathNumber+", TOOL STICK OUT IS TOO SHORT!!!" +no2asc(13)+" HOLDER WILL CRASH INTO PART!!!" +no2asc(13) +no2asc(13)+"TOOL#"+no2str(t$)+" ("+s20001+")" +no2asc(13) +no2asc(13) +no2asc(13)+" Deepest Depth: "+no2str(abs(ToolMinZ)) +no2asc(13)+" Stick Out: "+no2str(HolderToolProjection) +no2asc(13) +no2asc(13) +no2asc(13)+"=======================================" +no2asc(13)+"CUT COMMENT: " +no2asc(13) + " " + sOperationComment +no2asc(13) +no2asc(13) +no2asc(13) +no2asc(13) +no2asc(13) + sToolPathType #EndRegion sToolStickOutIsTooShort #EndRegion, Error messages -
Toolpath incomplete when using custom tool geometry
Aaron Eberhard replied to bulletfab's topic in Industrial Forum
That's a lens form tool (where the radius at the bottom is larger than the physical radius of the tool): Give me a minute to go delete some attachments and I'll throw up a screen shot. Edit, I hope no one needs those posts from from 2012 & 13...: -
Toolpath incomplete when using custom tool geometry
Mr. Saturday replied to bulletfab's topic in Industrial Forum
This sounds like what I want to do is possible, but I can't get it to work. I've tried many different variations/settings. Best I got was a ball EM with a skirt (no woke innuendoes intended, sorry) My tool profile: This is from a Ball EM. Notice the skirt that helps define the .625 cut length. It works in the parallel toolpath but if I try to climb too steep of a wall it will probably alarm out. Tried creating a tool, then linking to the profile, tried a new tool, tried modifying the Ball EM. -
Thank you that part was sitting in our shop for 8 years waiting for the day you would answer this thread. Funny I get this from time to time answering threads.
-
Stuart Campbell joined the community
-
jdorais joined the community
-
Error opening file - "Unable to regenerate planes"
Aaron Eberhard replied to Cavi Mike's topic in Industrial Forum
Another handy trick if you're ever in a situation like this you can right click on the plane, choose "report" and then choose "Selected plane." That'll give you a report on that plane, what's associated to it, what it's associated to, etc. -
Wario_1 joined the community
-
ArleneS20 joined the community
-
Toolpath incomplete when using custom tool geometry
JParis replied to bulletfab's topic in Industrial Forum
Aaron, I am not in disagreement with you on surfacing tools, not at all... I do a TON of undercutting of various shapes....my point is only that you simply cannot define some shapes as anything other than a custom because of the very limited parameters available in a tool definition -
Toolpath incomplete when using custom tool geometry
Aaron Eberhard replied to bulletfab's topic in Industrial Forum
Regardless of the library management, my point was that if you're using a Custom tool, then the toolpath algorithm is using a square cornered endmill. If you want to define a keyseat cutter, start with the "slotmill" profile. A lollipop should be defined as a lollipop tool A corner radius tool should be defined as a bull-nosed or corner radius endmill. All of those (and any tool) can have a custom tool profile overlayed on top of it, but in the background, the toolpath will then know to comp to the radius (in the case of the bull or lollipop). Here's an example file with a very simple toolpath illustrating it. I created a .125R endmill, then, saved the profile to level 100. Then, I copy/pasted the toolpath and created a Custom Tool using level 100's profile: Notice how the Custom Tool is show with the sharp corner there? Let's apply that to a cone: Notice how the custom tool isn't touching the cone? That's because in in the background, the tool is being compensated to the sharp corner. In all of your examples, you would have been better off starting with the correct "base" tool, and the applying a custom tool profile on top of, then you don't have to fudge all of the tool contact point shifts in the toolpaths. Radius vs Custom.zip
Join us!
eMastercam - your online source for all things Mastercam.
Together, we are the strongest Mastercam community on the web with over 56,000 members, and our online store offers a wide selection of training materials for all applications and skill levels.