Hello Guest it is February 25, 2021, 10:50:30 PM

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Topics - j1sys

Pages: 1
Greetings -

Tonight I am releasing a BETA version of my new MachPluginWizard (MPW).

This release only supports Win32 and .Net programming. It does not support ATL or MFC. I will add ATL and MFC support in the very near future.

I need to get this BETA release out into the field for testing. If you have some time to try it out and to start familiarizing yourself with this new development environment I would appreciate your help and comments.

MPW requires that you first install either Visual C++ 2008 Express Edition or Visual Studio C++ 2008 Standard (or above). Express Edition is available free of charge from www.microsoft.com/express/vc

I have attached the .msi for you to install.

I have uploaded a 12 minute tutorial on installing MPW and creating a quick plugin to: www.j1sys.com/MPWInstall.swf

I am working on another set of programming tutorials that take an in depth look at the source code generated by MPW. I just finished a trial run of the tutorial and my screen recording software failed to save it to disk. It ran out of memory. I will generate another version of the tutorial tomorrow morning. It will be broken into 15-20 minute segments. I will post a follow up with the urls.

I hope you enjoy testing MPW and can see it's power and ease of use in the install tutorial.


Edward D. Bryson
Joshua 1 Systems Inc.
Knoxville TN USA

Hello All -

I am 99.99% confident I have found the "Why" on why development can't be done on VS2005/VS2008.

I am 97% confident I can "fix" the problem and will soon be releasing ".h" files and instructions for others to use.

The problem IS that Mach is passing you four VERY important pointers. (Thank you Art/Brian). The problem is that several of these are pointers to CLASSes not STRUCTs.

To track down the problem I turned on "Assembly Code Listing" in both 2003 and 2008 and compared the generated code line by line. (Yes I'm that crazy). I immediately found that most of the offsets on MainPlanner (TrajectoryControl *) are WAY off. The reason is that TrajectoryControl inherits CWnd and CWnd changed in the MFC libraries between versions. There may be other inheritance differences that add to the problem.

To test my theory I cast the pointer to a hand crafted struct pointer to allow acces to the TCPModBusData struct down near the end of the data area. Using the struct I was then able to access and display the cgf array in a simple MessageBox in myConfig. I use this same technique in VS2003 to have a look at the raw data inside Mach for debugging a stand-alone MODBUS TCP Simulation Server I am working on for release to the Mach community. I now have two versions of the data dumping plugin. One compiled in VS2003 and one, with minor changes, compiled in VS2008.

I am in the process of analyzing TrajectoryControl.h line by line with the intent of creating a STRUCT that can be used in place of the CLASS. This should allow greater portability across different version of the compiler. I am INITIALLY only targeting the Data areas. After completion I will then target the public functions. I don't know if anyone is, or IMHO even should, or can be calling functions in the class currently in VS2003.

This is not just a tease. I am making rapid progress daily and wanted to "leak" to the community that we may have a clean solution soon.

My ultimate goal will be to then wrap ALL interfaces with Mach in a both a managed C++ class and a C# class to allow using .NET. Using .NET may be optimistic but I believe I can do it. If I can't do it directly then I will wrap it all in COM and interact that way.


Edward D. Bryson
Joshua 1 Systems Inc.
Knoxville TN USA

Hi -

I'm new to this forum and am reading through some of the old posts to get answers (lots of 'em) to my questions. This will help me not ask the same question again sometime.

Anyway on several other forums it either through default or by profile shows the 'original' post first followed by all answers in ascending order. For 'historical' browsing I find this much easier to read. First the question then all the answers.

Is there anyway to set that as an option on this forum? I've read through the 'Help' and searched for 'descending' and 'ascending' to no avail.

Again, I'm talking about within a topic. I like 'new' topics or answered topics coming out on top of the topic list and know how to click on 'last' to reverse it.



I have Mach 2 6.11N and Mach 3 2.0.040 installed on my laptop to test some g-code I'm trying to write.

My goal is to have a dynamic step and repeat that can be given the size of a piece of wood, left, right, top, bottom borders, cutter size, # of rows, # of columns, vertical divider size, and horizontal divider size and it will then route a set of niches with little ridges between each one.

I've worked on this for two or three days and have been frustrated in many ways. I have tried using G92 / G92.1 combo to set the lower left corner of each niche. I've switched to G52 to try and get around the two problems I'm running into.

My technique may not be the best method but it is my first attempt at parameterized g-code. For visual testing I've not yet added any spindle on/off or Z axis movement.

To make each niche I first pass around the outside of the niche, then inset a little and zig-zag up from the bottom to remove the rest of the inside.

The problem with Mach 2 is:

It completely ignores the O2100 subroutine and/or resets or destroys the #501 and #502 parameters. So it both displays and executes the toolpath with just the first pass around each niche. So it won't work for me.

The problem with Mach 3 is:

It displays the toolpath properly (including the zig zag cuts to clean the interior of each niche) but when it goes to run the program it 'screws' up the display by only displaying the excuted toolpath for each niche on top of the lower left niche. Based on switching the x/y/z display to "Machine Coords" it appears that it will actually route correctly since the x/y go up correctly for each niche. It also doesn't, IMHO, report the workpiece movement extremes correctly.

So what stupid thing am I doing? What stupid assumption am I making? Or have I found two idiosyncrasies of the two versions?

Any help would be appreciated.


Ed Bryson

Script Follows:

% GCodeGenericGameBoard - route pockets in flat surface for tiles

% design parameters used:

#101=3.      ( board width )
#102=3.      ( board height )
#103=.5      ( left border )
#104=.5      ( right border )
#105=.25   ( top border )
#106=.25   ( bottom border )
#107=.05   ( horizontal divider )
#108=.05   ( vertical divider )
#109=.1      ( depth of pockets )

#111=4      ( rows )
#112=4      ( columns )

#201=.1875   ( cutter size )
#202=.050   ( cutter depth of cut per pass )
#203=6.      ( feed rate )

% calculated parameters:

#301=[[#101-#103-#104-[[#111-1]*#107]]/#111]   ( pocket width )
#302=[[#102-#105-#106-[[#112-1]*#108]]/#112]   ( pocket height )


% main progam - move to start and iterate rows
m98 p1000 l#111
g52 x0 y0
g0 x0 y0

; o1000 - do a row
m98 p1100 l#112

% o1100 - do a single box within a row
g52 x#311 y#312 z0
g0 x0 y0
m98 p2000
g0 x0 y0

% o2000 - do a layer of routing for a box
#401=[#201/2]         ( half the cutter size )
#411=[#301-#401]      ( width of path based on cutter size )
#412=[#302-#401]      ( height of path based on cutter size )
g0 x#401 y#401
g1 y#412
g1 x#411
g1 y[0-#412]
g1 x[0-#411]
#501=[[#411]-.02]      ( left/right pass size )
#502=[[#201]-.02]      ( y move each pass )
#503=[FIX[[[#302-.02]/#502]]-1]   ( left/right pass count )
g1 x.01 y.01
m98 p2100 l#503

% o2100 - do a left/right pass to route the area withing a box
g1 y#502      ( move to next pass )
g1 x#501      ( do a pass )
#501=[0-#501]      ( setup for reverse )

% end of file!!

Pages: 1