You plan to solve problems that do not require the creation of 3-d models. They are solved by processing with several tools consistently, end and shaped milling cutters.
FC itself can create control programs not only on volume models, but also on contours, sketches without creation of 3-d models.
In the work I use for management of machine LinuxCNC and in it (as incorrect and in most other decisions) it is possible to use modules, subroutines. From the picture, you will be concerned about the running time of the program and the code that FC creates in this part is far from perfect (but safe in terms of protection against tool breakage).
The task that I would solve by your picture is as follows -
(a) There is a code block responsible for rectangular contours - one block per contour, = subroutine P1
b) code block responsible for curved contours - S1
c) the code block responsible for the burial algorithm A1 (different algorithms for different milling cutters, for example, a chamfering cutter - its processing zone increases squarely at burial = depth step and feed rate change)
In these code blocks you can do the math of scaling and even mirroring . It is especially easy to do it in cases when as a postprocessor to choose something absolutely primitive, not knowing codes g2 & g3 (then all trajectories will be rectilinear pieces which are easily mirrored and scaled).
The fragment looks like this -
Code: Select all
o<op5> if [#<OP> eq 4] (ЛИЦО, отрез, фреза 6 компрессионная)
G0 Z[#<_bzz>]
G10 L2 P0 R-90 X[#<r_x> - 30] y[#<r_y> + 30]
#<_pb> = 6000
#<_pm> = 1000
o<start> call [18000]
(отрез)
o<otrez> call [-3.5]
o<otrez> call [-6.5]
o<otrez> call [-9.5]
o<otrez> call [-11]
o<otrez> call [0.05 - #<_tf> ]
G0 Z[#<_bzz>]
o<d5> if [#<dubl> eq 2]
G10 L2 P0 R-90 X[#<r_x> - 30] y[#<r_y> + 30 - #<_dy>]
(отрез)
o<otrez> call [-3.5]
o<otrez> call [-6.5]
o<otrez> call [-9.5]
o<otrez> call [-11]
o<otrez> call [0.05 - #<_tf> ]
G0 Z[#<_bzz>]
o<d5> endif
o<op5> endif
Actually now I use FC only to create curved contours, for one pass and do it by subroutinear. For example, during the final cut I don't make any technological jumper, but I use a compression cutter and finishing passes, leaving 0.2, 0.1, 0.02-0.05 mm thick at the end - the compression cutter leaves a compacted chip that keeps the workpiece from displacement, the displacement force at the last pass (removing 0.0X mm) is very small. Accordingly, I do not need to process these same process jumpers later on.
sooner or later you will come to the manufacturing of grooves and spikes, landing sizes and suddenly it turns out that due to the elasticity of the material and the cutter rectangles X+/-x1 and Y+/-y1 are cut out instead of a square and you will need to make small corrections in the code to fit the grooves to the spikes based on the thickness of the workpiece (probably a furniture board) and do it easier and faster directly in the code of the program (t). i.e. right on the machine - performed slot = measured = entered correction = performed = checked = went further) than to change something in the Table in FC, etc.
I can send you an example program by e-mail.