I believe that the check for the mismatched point looks for equality 
within .0001. So, try this again with lots of precision in your 
computations.

Ken

On 3/23/2010 10:41 AM, dave wrote:
> On Tue, 2010-03-23 at 09:47 +0100, Bernhard Kubicek wrote:
>    
>> The last week I was busy writing a c++ class that to some extend
>> interprets gcode.
>> Using this class, a general filter application was created. This than
>> can be a template for other filters.
>> However I am not completly finished yet.
>> Missing is interpretation of [blabla], just using it and doing
>> [-[blabla]] for a flip is working.
>> Variables and loops are not interpreted yet.
>> The "knive delay" compensation is also working already for entry and
>> exit moves, however to compensate in arc movements and intermediate
>> corners is something I still need to think about.
>> Conversion from relative to absolute movements is working also.
>> Curently the filters uses command line parameters to access it,
>> "filter scale 10, filter flipX, filter knive 0.5, filter rotate 45".
>> However, at some stage I want to create a gui (probably qt) that gives
>> the bounding box, so you select align left,right,..., to e.g. 0,0 and
>> specify the operations more nicely, with default settings wether N*
>> shall be ignored, XYZ Machine limit warnings and stuff. This should
>> perfectly work with the filter menu concept by Jeff.
>>
>> However I ran into some problems with general scaling operations. When
>> multiplying all coordinates by large factors( e.g. 25.4 for mm->inch)
>> also the arc radiuses and I and Js, axis complains that the radius is
>> to some very small extend different.
>> I even tried to recalculate the J values by geometric operations based
>> on the old and new position and the i.
>> Also outputting more decimal digits did not solve things, at least in
>> my feable first attempt.
>>
>> How are the conditions in axis or emc, so that an arc can be
>> interpreted sucessfully? Are there any pre-made solutions or methods
>> on how to scale an gcode arc?
>> Maybe it could make sense to change the required radius accuracy to
>> the number of decimal places in the gcode.
>>
>> If there is some more time, I will also need to split an arc into
>> segments, to have independent x and y scaling. Is there a way of doing
>> this, without slowing the trajectory planner, e.g. by specifying that
>> it may be allowed to round small-angled "corners" it the moves, or
>> using G0 with a lower "Jog-speed" for cutting)?
>>
>>
>>
>> greetings,
>>   Bernhard
>>      
> The code for arcs is in ..........rs274ngc/interp_arc.cc
>
> I believe it is G64.1 P nnn that allows  for blending between segments.
> P is a tolerance and even 0.001 can make quite a difference in machining
> speeds.
>
> HTH
>
> Dave
>
>
>    
>>
>>
>> On Tue, Mar 16, 2010 at 10:35 PM, Bernhard Kubicek
>> <[email protected]>  wrote:
>>          I posted some ugly hacked filters in the forum:
>>          
>> http://www.linuxcnc.org/component/option,com_kunena/Itemid,20/func,view/catid,38/id,2288/limit,6/limitstart,6/lang,english/#2326
>>          they might not be working perfectly, but its a start.
>>
>>
>>
>>          On 3/14/2010 11:09 PM, Dave wrote:
>>                  I really like this idea and want to patch my system
>>                  and try this
>>                  out....  I think the concept adds a lot of flexibility
>>                  to EMC2.
>>
>>                  This seems like a useful addition as it moves the
>>                  "filters" idea further
>>                  along.
>>
>>                  Dave  (Dave911 on the IRC)
>>
>>                  On 3/14/2010 10:55 AM, Jeff Epler wrote:
>>
>>                          this feature is inspired by Bernhard Kubicek's
>>                          work on a similar
>>                          feature.  Any number of filters may be listed
>>                          in the inifile as
>>                          [FILTER]PROGRAM=.  These work similarly to
>>                          extension-based filters,
>>                          except that the user chooses them explicitly
>>                          from the menu to apply
>>                          them to the already-loaded file.
>>                          ---
>>                          This seems like a good idea.  What do you
>>                          think of this approach?
>>
>>                            share/axis/tcl/axis.tcl               |    8
>>                          +++++-
>>                            src/emc/usr_intf/axis/scripts/axis.py |   41
>>                          +++++++++++++++++++++++++++++++++
>>                            2 files changed, 48 insertions(+), 1
>>                          deletions(-)
>>
>>                          diff --git a/share/axis/tcl/axis.tcl
>>                          b/share/axis/tcl/axis.tcl
>>                          index 24f0174..89caac6 100644
>>                          --- a/share/axis/tcl/axis.tcl
>>                          +++ b/share/axis/tcl/axis.tcl
>>                          @@ -26,6 +26,8 @@ menu .menu.file \
>>                                 -tearoff 0
>>                            menu .menu.file.recent \
>>                                 -tearoff 0
>>                          +menu .menu.file.filters \
>>                          +       -tearoff 0
>>                            menu .menu.machine \
>>                                 -tearoff 0
>>                            menu .menu.machine.home \
>>                          @@ -54,6 +56,10 @@ setup_menu_accel .menu.file
>>                          end [_ "Recent _Files"]
>>                                -command edit_program
>>                            setup_menu_accel .menu.file end [_
>>                          "_Edit..."]
>>
>>                          +.menu.file add cascade \
>>                          +    -menu .menu.file.filters
>>                          +setup_menu_accel .menu.file end [_ "F_ilter"]
>>                          +
>>                            .menu.file add command \
>>                                 -accelerator [_ "Ctrl-R"] \
>>                                 -command reload_file
>>                          @@ -1880,7 +1886,7 @@ proc update_state {args}
>>                          {
>>                                relief {$task_state == $STATE_ON}
>>                           .toolbar.machine_power
>>
>>                                state  {$interp_state == $INTERP_IDLE&&
>>                          $taskfile != ""} \
>>                          -        .toolbar.reload {.menu.file
>>                          "_Reload"}
>>                          +        .toolbar.reload {.menu.file
>>                          "_Reload"} {.menu.file "F_ilter"}
>>                                state  {$taskfile != ""} \
>>                                    .toolbar.reload {.menu.file "_Save
>>                          gcode as..."}
>>                                state  {$interp_state == $INTERP_IDLE&&
>>                          $taskfile != ""&&    $::has_editor} \
>>                          diff --git
>>                          a/src/emc/usr_intf/axis/scripts/axis.py
>>                          b/src/emc/usr_intf/axis/scripts/axis.py
>>                          index 702307f..da97406 100755
>>                          --- a/src/emc/usr_intf/axis/scripts/axis.py
>>                          +++ b/src/emc/usr_intf/axis/scripts/axis.py
>>                          @@ -1203,6 +1203,7 @@ widgets =
>>                          nf.Widgets(root_window,
>>
>>                                ("menu_view", Menu, ".menu.view"),
>>                                ("menu_file", Menu, ".menu.file"),
>>                          +    ("menu_filters", Menu,
>>                          ".menu.file.filters"),
>>                                ("menu_machine", Menu, ".menu.machine"),
>>                                ("menu_touchoff", Menu,
>>                          ".menu.machine.touchoff"),
>>
>>                          @@ -2407,6 +2408,28 @@ class
>>                          TclCommands(nf.TclCommands):
>>                                    else:
>>                                        add_recent_file(f)
>>
>>                          +    def filter_gcode(program):
>>                          +        global loaded_file
>>                          +        if not loaded_file: return
>>                          +        if get_filter(loaded_file):
>>                          +            srcfile = os.path.join(tempdir,
>>                          os.path.basename(loaded_file))
>>                          +        else:
>>                          +            srcfile = loaded_file
>>                          +        outfile =
>>                          tempfile.NamedTemporaryFile(
>>                          +            suffix="ngc", dir=tempdir,
>>                          delete=False)
>>                          +        exitcode, stderr =
>>                          filter_program(program, srcfile, outfile.name)
>>                          +        if exitcode:
>>                          +            root_window.tk.call("nf_dialog",
>>                          (".error", "-ext", stderr),
>>                          +                    _("Filter failed"),
>>                          +                    _("The program
>>                          %(program)r exited with code %(code)d.  "
>>                          +                    "Any error messages it
>>                          produced are shown below:")
>>                          +                        % {'program':
>>                          program, 'code': exitcode},
>>                          +                    "error",0,_("OK"))
>>                          +            return
>>                          +        dest = os.path.join(tempdir,
>>                          os.path.basename(loaded_file))
>>                          +        os.rename(outfile.name, dest)
>>                          +        open_file_guts(dest, True, False)
>>                          +
>>                            commands = TclCommands(root_window)
>>
>>                            vars = nf.Variables(root_window,
>>                          @@ -2778,6 +2801,23 @@ update_ms = int(1000 *
>>                          float(inifile.find("DISPLAY","CYCLE_TIME") or
>>                          0.020))
>>
>>                          
>> widgets.unhomemenu.add_command(command=commands.unhome_all_axes)
>>                            root_window.tk.call("setup_menu_accel",
>>                          widgets.unhomemenu, "end", _("Unhome All
>>                          Axes"))
>>
>>                          +filters = inifile.findall("FILTER",
>>                          "PROGRAM")
>>                          +for f in filters:
>>                          +    if ";" in f:
>>                          +        p, t = f.split(";", 1)
>>                          +    else:
>>                          +        p = t = f
>>                          +    p = p.strip()
>>                          +    t = t.strip()
>>                          +
>>                           
>> widgets.menu_filters.add_command(command=("filter_gcode", p), label=t)
>>                          +    try:
>>                          +
>>                           root_window.tk.call("setup_menu_accel",
>>                          ".menu.file.filters", "end", t)
>>                          +    except Tkinter.TclError:
>>                          +        # The inifile has an invalid string,
>>                          such as "Bogus_".  Rather than
>>                          +        # punishing the user by refusing to
>>                          start, skip the accelerator
>>                          +        # set-up logic
>>                          +        pass
>>                          +
>>                            s = emc.stat();
>>                            s.poll()
>>                            statfail=0
>>
>>
>>
>>                  
>> ------------------------------------------------------------------------------
>>                  Download Intel&#174; Parallel Studio Eval
>>                  Try the new software tools for yourself. Speed
>>                  compiling, find bugs
>>                  proactively, and fine-tune applications for parallel
>>                  performance.
>>                  See why Intel Parallel Studio got high marks during
>>                  beta.
>>                  http://p.sf.net/sfu/intel-sw-dev
>>                  _______________________________________________
>>                  Emc-developers mailing list
>>                  [email protected]
>>                  https://lists.sourceforge.net/lists/listinfo/emc-developers
>>
>>
>>
>>
>> ------------------------------------------------------------------------------
>> Download Intel&#174; Parallel Studio Eval
>> Try the new software tools for yourself. Speed compiling, find bugs
>> proactively, and fine-tune applications for parallel performance.
>> See why Intel Parallel Studio got high marks during beta.
>> http://p.sf.net/sfu/intel-sw-dev
>> _______________________________________________ Emc-developers mailing list 
>> [email protected] 
>> https://lists.sourceforge.net/lists/listinfo/emc-developers
>>      
>
> ------------------------------------------------------------------------------
> Download Intel&#174; Parallel Studio Eval
> Try the new software tools for yourself. Speed compiling, find bugs
> proactively, and fine-tune applications for parallel performance.
> See why Intel Parallel Studio got high marks during beta.
> http://p.sf.net/sfu/intel-sw-dev
> _______________________________________________
> Emc-developers mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/emc-developers
>    

-- 
Kenneth Lerman
55 Main Street
Newtown, CT 06470
203-426-3769

------------------------------------------------------------------------------
Download Intel&#174; Parallel Studio Eval
Try the new software tools for yourself. Speed compiling, find bugs
proactively, and fine-tune applications for parallel performance.
See why Intel Parallel Studio got high marks during beta.
http://p.sf.net/sfu/intel-sw-dev
_______________________________________________
Emc-developers mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/emc-developers

Reply via email to