So how do you set FreeCAD Path to use absolute arc centers?

Not absolute coords or distance mode, but absolute arc centers.

The postprocessor has to handle this.

Yea - I kinda figured that… but where in the py file do you set it? I saw no variable for that, nor any arguments. Is there a specific place in the py file to enable absolute arcs? And what is the format?

Since my mill is broken since quite some time I didn’t maintain the philips postprocessor - it’s too frustrating. But there you can switch between different ways to handle G2 and G3. Ask back if you can’t find it.

Can you explain more about the need for this?

I’m not even sure I understand what format you’re referring to. As i understand gcode arcs, the center is either stated as an offset from the endpoints or calculated by the control from the R word.

What kind of control is this?

My Mach 3 has been set this way for years - 15 to be exact. As mentioned in this topic:
https://forum.freecadweb.org/viewtopic.php?f=15&t=45587
having the wrong arc setting shows what’s in that topic.

See vid here of what ncplot shows incr arc vs absolute:
http://www.ajawamnet.com/absolutevsrelativearccenters.mp4

I have four other CAM programs that all use absolute arcs, 3 backplot programs that all use absolute arc’s, and hundreds of Gcode files that all use absolute arcs

There needs to be a way to select absolute arc’s - either a simple – type argument or a variable in the .py post file.

And using a preamble of G91.1 won’t work 'cause the posted code is still in incr arc format.

Better would be a GUI setting…

  • For instance in CAM BAM:

In visual mill

I have two more programs that also allow setting between abs or incr arc mode…

So I really can’t set up my machine and all my other CAM tools, as well as my machines to incr arcs without causing the hundreds of G Code files I have not being able to be run without major pain.

Kind of a showstopper of using Freecad for me - shame too, cause it looks pretty cool.

Oh well…

Look, I get that you’re probably frustrated. I don’t know if you intend it or not but the attitude is kind of off-putting. I just asked a question.

We’re all volunteers here and you’re acting like you just spent thousands of dollars on software that doesn’t meet your needs. Why haven’t you volunteered to implement the feature yourself?

Are you seriously asking us to drop everything to implement something that most of us don’t need just avoid losing you as a user?

If you want help, you’ll get it, but please just relax a bit.

Why don’t you just set it to incremental mode? Whats the problem?

The Philips 432 control uses absolute coordinates. That’s why I like to see the GCode for this small tombstone like path in the wiki.
Bildschirmfoto 2020-04-24 um 16.44.31.png

It would trash the ability of me running the hundreds of Gcode files I already have that use abs arc mode.

I understand that you’re all volunteers - I’m on at least 15 forums of various things - From EDA to CAM to CAD to music production - and try to help anyone I can.

In the case of my original problem of not being able to produce usable GCode - I had to figure it out myself. And I hope that any other future user of FC that has the same issue will be helped with what I found.

So no, I really don’t care so much - I still have V Mill and CAMBam but as I stated, FC Path looks really cool. Wish I could use it.

Anything that sticks it to the man (ie - big commercial companies) I’m all for..

Tho, when I was working with ex-NSA guys and some of the best computer hackers here in D.C. I had the opportunity to deal with various “open source” projects - but mainly OpenBSD since it’s used by a lot of security conscious products (single thread).

But one person I came across - when doing the hardware crypto stuff and the ports from BSD to Linux - was Richard Stallman - the founder of the GNU license thing

I mentioned the term “open source” to him… the second time I did, he stated, “If you use that term one more time I’ll never speak to you again… It’s FREE SOFTWARE”

https://en.wikipedia.org/wiki/Richard_Stallman#Terminology
yea the halo thing is a bit much - but so is he…

Most of the companies I deal with prefer a more “permissive free” license as opposed to the GNU thing. BSD license is one of them.

https://en.wikipedia.org/wiki/BSD_licenses

"BSD licenses are a family of permissive free software licenses, imposing minimal restrictions on the use and distribution of covered software. This is in contrast to copyleft licenses, which have share-alike requirements. The original BSD license was used for its namesake, the Berkeley Software Distribution (BSD), a Unix-like operating system. The original version has since been revised, and its descendants are referred to as modified BSD licenses.

BSD is both a license and a class of license (generally referred to as BSD-like). The modified BSD license (in wide use today) is very similar to the license originally used for the BSD version of Unix. The BSD license is a simple license that merely requires that all code retain the BSD license notice if redistributed in source code format, or reproduce the notice if redistributed in binary format. The BSD license (unlike some other licenses) does not require that source code be distributed at all. "

Yea - I tried the Philips and a few others and it didn’t even open up a Gcode preview window - nor write any file that I could see.

I guess I am missing something. Why can’t you just issue a G91.1 code in the preamble?

Mach 3 should handle that with absolutely zero problems or required changes. Nothing would change at all for processing the other thousands of files you already have.

That is the entire point of G-code functions; namely, to tell the (Mach 3) controller what the code is based on.

Gene

There’s two different concepts to be aware of and a philosophical question to answer.

First we need to distinguish between incremental and absolute gcode (G90 vs G91). FreeCAD internal commands (which are technically NOT gcode but look a lot like it) are all in the job coordinate system. That is they’re stored internally as absolute coordinates and equiivalent to G90.

Arcs can have their centers defined as either relative (IJK) or calculated by the control by passing the radius (R) If IJK and R are all passed, the control is supposed to use R. When IJK are passed, the center is calculated relative to another point. That other point is either the endpoints of the arc move (G91.1) or the coordinate origin (G90.1). G91.1 is the default and this is the first time anyone has asked for the alternative. Internally, FreeCAD stores arc commands relative to the arc start/endpoint.

As far as I know in gcode ouput, any combination of G90/G91 and G90.1/G91.1 is valid.

Now the philosophical question is whether we have one post-processor with options to support every combination or multiple posts.

It looks pretty easy to slap together a post to meet this particular user’s need. Modifying the existing linuxcnc post will probably be more difficult because it will have to account for all combinations.

Most people don’t care about the flavor used in the gcode as long as their control can read it and process it correctly. So absolute gcode with relative arc centers has worked for most people. The few oddball controls that require something else have been addressed in unique posts that are often less well maintained.

Yep - two different concepts… I can put whatever I want as a preamble but FC Path will output relative arcs regardless. Tried it - no luck

As to the philosophical question - I’d think a separate post for mach 3 ABS would be much easier. As you mention, trying to hack the existing LinuxCNC post is painful (I’m trying it right now - no luck)

Again - not sure why the philips post as well as some others outputs nothing. Be interesting to see what my stuff does with that - tho I use Inches and did not see anything but a units call out at the top.

I did see this in the philips post:

ABSOLUTE_CIRCLE_CENTER = True
USE_RADIUS_IF_POSSIBLE = True
USE_RADIUS_IF_POSSIBLE = True

and this under defexport:

elif param == ‘I’ and (command == ‘G2’ or command == ‘G3’):
#test print(“param = ‘I’”)

this is the special case for circular paths,

where relative coordinates have to be changed

to absolute

i = c.Parameters[‘I’]

calculate the radius r

j = c.Parameters[‘J’]
r = math.sqrt(i2 + j2)
if USE_RADIUS_IF_POSSIBLE and angleUnder180(command, lastX, lastY, c.Parameters[‘X’], c.Parameters[‘Y’], i, j):
outstring.append(
‘R’ + PostUtils.fmt(r, AXIS_DECIMALS, UNITS))
else:
if RADIUS_COMMENT:
outstring.append(
‘(R’ + PostUtils.fmt(r, AXIS_DECIMALS, UNITS) + ‘)’)
if ABSOLUTE_CIRCLE_CENTER:
i += lastX
outstring.append(
param + PostUtils.fmt(i, AXIS_DECIMALS, UNITS))
elif param == ‘J’ and (command == ‘G2’ or command == ‘G3’):

this is the special case for circular paths,

where incremental center has to be changed to

absolute center

i = c.Parameters[‘I’]
j = c.Parameters[‘J’]
if USE_RADIUS_IF_POSSIBLE and angleUnder180(command, lastX, lastY, c.Parameters[‘X’], c.Parameters[‘Y’], i, j):

R is handled with the I parameter, here:

do nothing at all, keep the structure as

with I command

pass
else:
if ABSOLUTE_CIRCLE_CENTER:
j += lastY
if SWAP_Y_Z:

we have to swap j and k as well

outstring.append(
‘K’ + PostUtils.fmt(j, AXIS_DECIMALS, UNITS))
else:
outstring.append(
param + PostUtils.fmt(j, AXIS_DECIMALS, UNITS))
elif param == ‘K’ and (command == ‘G2’ or command == ‘G3’):

this is the special case for circular paths,

where incremental center has to be changed to

absolute center

outstring.append(
‘(’ + param + PostUtils.fmt(c.Parameters[param], AXIS_DECIMALS, UNITS) + ‘)’)
z = c.Parameters[‘Z’]
k = c.Parameters[‘K’]
if USE_RADIUS_IF_POSSIBLE and angleUnder180(command, lastX, lastY, c.Parameters[‘X’], c.Parameters[‘Y’], i, j):

R is handled with the I parameter, here:

do nothing at all, keep the structure as

with I command

pass
else:
if ABSOLUTE_CIRCLE_CENTER:
k += lastZ

Tried adding it to the bastardized LinuxCNC I was editing but no go - still get relative output

What? That makes no sense at all. Those files are unchanged. They’ll run just like they always did.

That is exactly correct, because the effect of G91.1 is on the controller, not FreeCAD.

Based on what you showed previously it appears you are using Mach 3. It will accept and process G91.1 just fine and give you exactly the desired result. No baggage left behind either. The next job will run with whatever default you have set up.

Gene

Nope don’t work that way… I’d have to keep toggling Mach 3’s setting (as well as all my other CAM tools) between ABS arc (since that’s what the 300+ files are as well as other stuff I do from other CAM tools) and INCR arc for Freecad. You can see that here:

From my test at the other topic in Mach 3 as it works with my other CAM tools:

As you can see, Mach 3 does the same thing my backplot programs do.

I just wish Freecad would support ABS arc centers … Every other CAM tool I have can do this. Been running this way for years…

Oh well…
http://www.ajawamnet.com/ajawam3/swarf/swarf.htm

Funny, you complain several threads that FC doesn’t support all of your special features, even though you could it implement yourself since it’s Open Source Software.
Yet you have no problem with paid software not processing gcode right.

And all of the commercial as well as other low-cost commercial software can do it.

And ABS Arc’s is not a special feature -

https://cnc-professional-forum.com/forum/cnc-machinist-help-cnc-troubleshooting-forums/programming-applications/3971-g-code-radial-arc-blending#post17427

https://www.cnczone.com/forums/g-code-programing/138135-software-2.html

The Fadal’s we used back in the day were Abs Arc Center… again - not a “Special Feature”

And again - read my post about how Richard Stallman (head guy of GNU - that’s what FC license is) HATES the term “Open Source”.
I found that out by experience, but here’s a repost of the wiki link:
https://en.wikipedia.org/wiki/Richard_Stallman#Terminology

From that link:

"Rejections
Open source for free software

His requests that people use certain terms, and his ongoing efforts to convince people of the importance of terminology, are a source of regular misunderstanding and friction with parts of the free software and open-source communities.

After initially accepting the concept,[102] Stallman rejects a common alternative term, open-source software, because it does not call to mind what Stallman sees as the value of the software: freedom.[103] He wrote, “Free software is a political movement; open source is a development model.”[104] Thus, he believes that the use of the term will not inform people of the freedom issues, and will not lead to people valuing and defending their freedom.[105] Two alternatives which Stallman does accept are software libre and unfettered software, but free software is the term he asks people to use in English. For similar reasons, he argues for the term proprietary software rather than closed-source software, when referring to software that is not free software. "



Been around for years .. a lot longer than Freecad.


And believe me - I tried to tweak the Linux post to do it - just the documentation for the Post processors is a bit lacking.

We have a saying at the place I work:
“good thing about it - it’s open source… bad thing about it - it’s open source”

http://www.ajawamnet.com/

If I find some time this weekend I will give some love to the philips postprocessor - I know it is currently broken.