Jump to content

Welcome to eMastercam

Register now to participate in the forums, access the download area, buy Mastercam training materials, post processors and more. This message will be removed once you have signed in.

Use your display name or email address to sign in:

Switch from M01 to M0 if MANNUAL ENTRY used AS CODE?


Recommended Posts

Hello everyone,

I'm often using "M0" after roughing operation by using "MANUAL ENTRY" and choose AS CODE. One of the tiny issue is after the tool it has M01 and M0 together, is there away I can make it only appear M0 if I want to? Please see code?

 

------------------------------------

%

O3296 (715-154296-001-REVD-OP3.NC)

(P/NAME= BRKT, DIN RAIL)

(UNPROVEN SOURCE FILE)

(SOURCE= 715-154296-001-REVD.MCX-7)

(POSTED ON JUL.03.2014 AT 12*42PM)

(HAAS - VERTICAL)

(*)

(TOOLS LIST)

(T2 -.5000, 1/2 CEM 2FLT 1.375LOC -H2) ---------> first tool

(T6 -.5000, 1/2 CEM 2FLT 1.375LOC HELICAL FINISHER -H6)

(T7 -.125, 1/4 X 90DEG CHMF 2FLT -H7)

N2(.5000, 1/2 CEM 2FLT 1.375LOC )

G0 G17 G40 G49 G53 G80 G90 Z0

T2 M6(ROUGH OUT MILL WALL, CUT#26)

G0 G90 G54(Z STK= .01)

X1.6 Y-.6 S7000 M3

G43 H2 Z1. T6 M8(DOC= Z-1.24)

Z.125

G1 Z-.0488 F50.

X1.25

X0.

X-.35

G0 Z.25

X1.6

Z.125

G1 Z-.0975

X1.25

X0.

X-.35

G0 Z.25

X1.6

Z.125

G1 Z-.1462

X1.25

X0.

X-.35

G0 Z.25

X1.6

Z.125

G1 Z-.195

X1.25

X0.

X-.35

G0 Z.25

X1.6

Z.125

G1 Z-.2437

X1.25

X0.

X-.35

G0 Z.25

X1.6

Z.125

G1 Z-.2925

X1.25

X0.

X-.35

G0 Z.25

X1.6

Z.125

G1 Z-.3413

X1.25

X0.

X-.35

G0 Z.25

X1.6

Z.125

G1 Z-.39

X1.25

X0.

X-.35

G0 Z.25

X1.6

Z.125

G1 Z-.4387

X1.25

X0.

X-.35

G0 Z.25

X1.6

Z.125

G1 Z-.4875

X1.25

X0.

X-.35

G0 Z.25

X1.6

Z.125

G1 Z-.5363

X1.25

X0.

X-.35

G0 Z.25

X1.6

Z.125

G1 Z-.585

X1.25

X0.

X-.35

G0 Z.25

X1.6

Z.125

G1 Z-.6338

X1.25

X0.

X-.35

G0 Z.25

X1.6

Z.125

G1 Z-.6825

X1.25

X0.

X-.35

G0 Z.25

X1.6

Z.125

G1 Z-.7312

X1.25

X0.

X-.35

G0 Z.25

X1.6

Z.125

G1 Z-.78

X1.25

X0.

X-.35

G0 Z.25

X1.6

Z.125

G1 Z-.8287

X1.25

X0.

X-.35

G0 Z.25

X1.6

Z.125

G1 Z-.8775

X1.25

X0.

X-.35

G0 Z.25

X1.6

Z.125

G1 Z-.9263

X1.25

X0.

X-.35

G0 Z.25

X1.6

Z.125

G1 Z-.975

X1.25

X0.

X-.35

G0 Z.25

X1.6

Z.125

G1 Z-1.0237

X1.25

X0.

X-.35

G0 Z.25

X1.6

Z.125

G1 Z-1.0725

X1.25

X0.

X-.35

G0 Z.25

X1.6

Z.125

G1 Z-1.1213

X1.25

X0.

X-.35

G0 Z.25

X1.6

Z.125

G1 Z-1.17

X1.25

X0.

X-.35

G0 Z.25

X1.6

Z.125

G1 Z-1.205

X1.25

X0.

X-.35

G0 Z.25

X1.6

Z.125

G1 Z-1.24

X1.25

X0.

X-.35

G0 Z1.

(T2= .5000, 1/2 CEM 2FLT 1.375LOC )

(ROUGH OUT BOTH WALLS, CUT#27)

(Z STK= .01)

(XY STK= .01)

(DOC= Z-1.24)

X1.6 Y-.46

Z.125

G1 Z-.0488

X1.25

X0.

X-.35

G0 Z.25

X1.6

Z.125

G1 Z-.0975

X1.25

X0.

X-.35

G0 Z.25

X1.6

Z.125

G1 Z-.1462

X1.25

X0.

X-.35

G0 Z.25

X1.6

Z.125

G1 Z-.195

X1.25

X0.

X-.35

G0 Z.25

X1.6

Z.125

G1 Z-.2437

X1.25

X0.

X-.35

G0 Z.25

X1.6

Z.125

G1 Z-.2925

X1.25

X0.

X-.35

G0 Z.25

X1.6

Z.125

G1 Z-.3413

X1.25

X0.

X-.35

G0 Z.25

X1.6

Z.125

G1 Z-.39

X1.25

X0.

X-.35

G0 Z.25

X1.6

Z.125

G1 Z-.4387

X1.25

X0.

X-.35

G0 Z.25

X1.6

Z.125

G1 Z-.4875

X1.25

X0.

X-.35

G0 Z.25

X1.6

Z.125

G1 Z-.5363

X1.25

X0.

X-.35

G0 Z.25

X1.6

Z.125

G1 Z-.585

X1.25

X0.

X-.35

G0 Z.25

X1.6

Z.125

G1 Z-.6338

X1.25

X0.

X-.35

G0 Z.25

X1.6

Z.125

G1 Z-.6825

X1.25

X0.

X-.35

G0 Z.25

X1.6

Z.125

G1 Z-.7312

X1.25

X0.

X-.35

G0 Z.25

X1.6

Z.125

G1 Z-.78

X1.25

X0.

X-.35

G0 Z.25

X1.6

Z.125

G1 Z-.8287

X1.25

X0.

X-.35

G0 Z.25

X1.6

Z.125

G1 Z-.8775

X1.25

X0.

X-.35

G0 Z.25

X1.6

Z.125

G1 Z-.9263

X1.25

X0.

X-.35

G0 Z.25

X1.6

Z.125

G1 Z-.975

X1.25

X0.

X-.35

G0 Z.25

X1.6

Z.125

G1 Z-1.0237

X1.25

X0.

X-.35

G0 Z.25

X1.6

Z.125

G1 Z-1.0725

X1.25

X0.

X-.35

G0 Z.25

X1.6

Z.125

G1 Z-1.1213

X1.25

X0.

X-.35

G0 Z.25

X1.6

Z.125

G1 Z-1.17

X1.25

X0.

X-.35

G0 Z.25

X1.6

Z.125

G1 Z-1.205

X1.25

X0.

X-.35

G0 Z.25

X1.6

Z.125

G1 Z-1.24

X1.25

X0.

X-.35

G0 Z.25

Y-.74

Z.125

G1 Z-.0488

X0.

X1.25

X1.6

G0 Z.25

X-.35

Z.125

G1 Z-.0975

X0.

X1.25

X1.6

G0 Z.25

X-.35

Z.125

G1 Z-.1462

X0.

X1.25

X1.6

G0 Z.25

X-.35

Z.125

G1 Z-.195

X0.

X1.25

X1.6

G0 Z.25

X-.35

Z.125

G1 Z-.2437

X0.

X1.25

X1.6

G0 Z.25

X-.35

Z.125

G1 Z-.2925

X0.

X1.25

X1.6

G0 Z.25

X-.35

Z.125

G1 Z-.3413

X0.

X1.25

X1.6

G0 Z.25

X-.35

Z.125

G1 Z-.39

X0.

X1.25

X1.6

G0 Z.25

X-.35

Z.125

G1 Z-.4387

X0.

X1.25

X1.6

G0 Z.25

X-.35

Z.125

G1 Z-.4875

X0.

X1.25

X1.6

G0 Z.25

X-.35

Z.125

G1 Z-.5363

X0.

X1.25

X1.6

G0 Z.25

X-.35

Z.125

G1 Z-.585

X0.

X1.25

X1.6

G0 Z.25

X-.35

Z.125

G1 Z-.6338

X0.

X1.25

X1.6

G0 Z.25

X-.35

Z.125

G1 Z-.6825

X0.

X1.25

X1.6

G0 Z.25

X-.35

Z.125

G1 Z-.7312

X0.

X1.25

X1.6

G0 Z.25

X-.35

Z.125

G1 Z-.78

X0.

X1.25

X1.6

G0 Z.25

X-.35

Z.125

G1 Z-.8287

X0.

X1.25

X1.6

G0 Z.25

X-.35

Z.125

G1 Z-.8775

X0.

X1.25

X1.6

G0 Z.25

X-.35

Z.125

G1 Z-.9263

X0.

X1.25

X1.6

G0 Z.25

X-.35

Z.125

G1 Z-.975

X0.

X1.25

X1.6

G0 Z.25

X-.35

Z.125

G1 Z-1.0237

X0.

X1.25

X1.6

G0 Z.25

X-.35

Z.125

G1 Z-1.0725

X0.

X1.25

X1.6

G0 Z.25

X-.35

Z.125

G1 Z-1.1213

X0.

X1.25

X1.6

G0 Z.25

X-.35

Z.125

G1 Z-1.17

X0.

X1.25

X1.6

G0 Z.25

X-.35

Z.125

G1 Z-1.205

X0.

X1.25

X1.6

G0 Z.25

X-.35

Z.125

G1 Z-1.24

X0.

X1.25

X1.6

G0 Z1. M9

M5

G0 G17 G40 G49 G53 G80 G90 Z0

G53 Y0

M1--------------> I would like to remove this if MANUAL ENTRY is used as AS CODE

M0 (RECLAMP THE PART)

(*)

N6(.5000, 1/2 CEM 2FLT 1.375LOC HELICAL FINISHER )

G0 G17 G40 G49 G53 G80 G90 Z0

T6 M6(FINISH BOTH WALLS, CUT#29)

G0 G90 G54

X1.6281 Y-.6501 S7000 M3

G43 H6(D36) Z1. T7 M8(DOC= Z-1.25)

Z.125

G1 Z-1.25 F30.

G41 D36 X1.325 Y-.4751

G3 X1.25 Y-.455 I-.075 J-.1299

G1 X0.

G3 X-.075 Y-.4751 I0. J-.15

G1 G40 X-.3781 Y-.6501

G0 Z.25

X1.6281 Y-.6451

Z.125

G1 Z-1.25

G41 D36 X1.325 Y-.4701

G3 X1.25 Y-.45 I-.075 J-.1299

G1 X0.

G3 X-.075 Y-.4701 I0. J-.15

G1 G40 X-.3781 Y-.6451

G0 Z.25

Y-.5499

Z.125

G1 Z-1.25

G41 D36 X-.075 Y-.7249

G3 X0. Y-.745 I.075 J.1299

G1 X1.25

G3 X1.325 Y-.7249 I0. J.15

G1 G40 X1.6281 Y-.5499

G0 Z.25

X-.3781 Y-.5549

Z.125

G1 Z-1.25

G41 D36 X-.075 Y-.7299

G3 X0. Y-.75 I.075 J.1299

G1 X1.25

G3 X1.325 Y-.7299 I0. J.15

G1 G40 X1.6281 Y-.5549

G0 Z1. M9

M5

G0 G17 G40 G49 G53 G80 G90 Z0

G53 Y0

M1

(*)

N7(.125, 1/4 X 90DEG CHMF 2FLT )

G0 G17 G40 G49 G53 G80 G90 Z0

T7 M6(DEBURR TOP WALL, CUT#30)

G0 G90 G54

X.0255 Y-.9262 S7000 M3

G43 H7 Z1. T2 M8(DOC= Z-.03)

Z.125

G1 Z-.03 F30.

X.1013 Y-.97

G3 X.12 Y-.975 I.0187 J.0325

G1 X1.13

G3 X1.1487 Y-.97 I0. J.0375

G1 X1.2245 Y-.9262

G0 Z.25

Y-1.3238

Z.125

G1 Z-.03

X1.1487 Y-1.28

G3 X1.13 Y-1.275 I-.0187 J-.0325

G1 X.12

G3 X.1013 Y-1.28 I0. J-.0375

G1 X.0255 Y-1.3238

G0 Z1.

(T7= .125, 1/4 X 90DEG CHMF 2FLT )

(DEBURR SHORT WALLS, CUT#31)

(DOC= Z-.53)

Y.0738

Z.125

G1 Z-.53

X.1013 Y.03

G3 X.12 Y.025 I.0187 J.0325

G1 X1.13

G3 X1.1487 Y.03 I0. J.0375

G1 X1.2245 Y.0738

G0 Z.25

Y-.2738

Z.125

G1 Z-.53

X1.1487 Y-.23

G3 X1.13 Y-.225 I-.0187 J-.0325

G1 X.12

G3 X.1013 Y-.23 I0. J-.0375

G1 X.0255 Y-.2738

G0 Z1.

(T7= .125, 1/4 X 90DEG CHMF 2FLT )

(DEBURR SHORT WALLS, CUT#32)

(DOC= Z-1.305)

X1.3488 Y-.3555

Z.125

G1 Z-1.305

X1.305 Y-.4313

G3 X1.3 Y-.45 I.0325 J-.0187

G1 Y-.75

G3 X1.305 Y-.7688 I.0375 J0.

G1 X1.3488 Y-.8445

G0 Z.25

X-.0988

Z.125

G1 Z-1.305

X-.055 Y-.7688

G3 X-.05 Y-.75 I-.0325 J.0188

G1 Y-.45

G3 X-.055 Y-.4313 I-.0375 J0.

G1 X-.0988 Y-.3555

G0 Z1. M9

M5

G0 G17 G40 G49 G53 G80 G90 Z0

G53 Y0

M1

T2 M6 ---------> is there away that I can make it not appear if LAST TOOL equal FIRST TOOL?

M30

%

Link to comment
Share on other sites

Why the hekkkkkk you post a long NC sample to show 3 sample lines?

Nevermind... :D

 

instead of this:

if stagetool = 1, first_tool$, "M6", e$

 

Use this:

if stagetool = 1 & (last_tool$ <> first_tool$), first_tool$, "M6", e$

 

 

To M0/M1 stuff, think on a different way, to deal with output of ManulaEntry is not a black/white thing.

Look at CannedText

Link to comment
Share on other sites

Why the hekkkkkk you post a long NC sample to show 3 sample lines?

Nevermind... :D

 

instead of this:

if stagetool = 1, first_tool$, "M6", e$

 

Use this:

if stagetool = 1 & (last_tool$ <> first_tool$), first_tool$, "M6", e$

 

 

To M0/M1 stuff, think on a different way, to deal with output of ManulaEntry is not a black/white thing.

Look at CannedText

 

Agreed and if you are doing manual entry why not write the M01/M00 in the manual entry and be done with it?

Link to comment
Share on other sites

Hi Crazy Millman,

I want to MANUAL ENTRY AS CODE because I can input my OWN NOTATION whereas I cannot in the M00 in the OPERATION. Thanks for suggestions.

 

Okay well I missed you were asking 2 question because of all the unneeded code between the 2 different questions.

 

Peter helped you with the 2nd or the 1st Question since to be honest I cannot make heads of tails of it. The other question with M01/M00 is what me reference was about. No need for all the code in between the important sections will make it easier for someone to figure what you are really asking. Cantext has all types of control, but yes you are limited to being able to put in your OWN NOTATIONS. Manual Entry is treated like a comment and problem with comments is they can be handled so many different ways because in my understanding they are many different things. Why do I say that well I look to the post and see this:

 

pcomment$	 #Comment from manual entry (must call pcomment2)
 pcomment2 #Required if doing boolean 'if' logic testing!

pcomment2	 #Output Comment from manual entry
 scomm$ = ucase (scomm$)
 if gcode$ = 1005, sopen_prn, scomm$, sclose_prn, e$ #Manual entry - as comment
 if gcode$ = 1006, scomm$, e$						 #Manual entry - as code
 if gcode$ = 1007, sopen_prn, scomm$, sclose_prn	 #Manual entry - as comment with move NO e$
 if gcode$ = 1026, scomm$							 #Manual entry - as code with move NO e$
 if gcode$ = 1008, sopen_prn, scomm$, sclose_prn, e$ #Operation comment
 if gcode$ = 1051, sopen_prn, scomm$, sclose_prn, e$ #Machine name
 if gcode$ = 1052, sopen_prn, scomm$, sclose_prn, e$ #Group comment
 if gcode$ = 1053, sopen_prn, scomm$, sclose_prn, e$ #Group name
 if gcode$ = 1054, sopen_prn, scomm$, sclose_prn, e$ #File Descriptor

 

That tells me about 9 different things are going on with pcomment$ and you want to narrow it down to using 2 others processes most people handle with a mi or mr process or with cantext. Again like Perter said and I agreed with on this topic not an easy one to narrow down. Again like I pointed out much easier if you want M00/M01 with Manual Entry put it in like I an many other programmers I know do and call it a day. You still have not got the very easy and basic process of G13 and you want to throw something like this into the mix? Get G13 figured out with drilling cycles and then start to mess around with cantext and see how it can be used then see where the question you are asking is not a black and white question. pcomment$ I think could be tailored to do what you are after, but it is going to take some work and if you are still struggling with G13, why not just use an tried trued and proven process by putting in in the Manual Entry and be done with it?

 

Only thing I can think of is maybe you do not fully understand how to use Manual Entry. I will give this example of how I use Manual entry with M00 and if it is how you are doing it and still not like you want then put up a sample file like you say it needs to be for your liking with bad outputted code and then that code changed to how you need to see it and then maybe someone can help you. But please remove the code in between the important sections it is not needed to help you figured out your problem.

 

M00MANUALENTRY_zpsaee83241.png

 

Here is what the output looks like unedited from any X7 post.

N3(TOOL - 3 OFFSET - 3)
(RF151.22-2020-40 - N-5P-D4.0 INSERT - N151.2-400-40-5P)
(BETTS OI FANUC)
()
(FINISH UPPER SECTION OFFSET 3)
N565 M150
N566 G0G18G40G80G97G99
N567 T0303 M6
N568 G54
N569 G18
N570 G97 S14 M03
N571 G0 X94. Z1. M8
N572 Z1.0928
N573 X89.815
### REMOVED #####
N584 X87.9534 Z-.9057
N585 G0 X94.
N586 Z-1.
M00
(REMOVE CLAMP FROM FRONT SECTION)
M00
(PUT CLAMP ONTO BACK SECTION)
M00
(THIS IS A TEST)
(FINISH LOWER SECTION OFFSET 13)
N587 M160
N588 T0313
N589 X94. Z-2.75
### REMOVED #####
N600 G0 X94.
N601 Z-.7
N602 M9
N603 G28 W0 /M05
N604 G28 U0
N605 M165
N606 M00
N607 S0
N608 M30

 

I used a program for a dual ram VTL to give you the example and removed the sections of code not needed to help.

Link to comment
Share on other sites

Hi Crazy Millman,

I'm apologized for asking redundant questions since I'm at the position of a must "ACT FAST" and that's how I'm trying to ask people around this forum. And honestly, I'm stuck on some of the answers that I'm trying to figure out from other members' help.

 

About the the MANNUAL ENTRY AS CODE, I think I have a little light under the TUNNEL. Here how I did and I hope I did it right like the way you thought it would be.

 

 

 

Once again, thank you for your valuable time and being patient with me.

 

 

 

 

 

pcomment2 #Comment from manual entry

#1005 - As Comment

#1006 - As Code

#1007 - As Comment with output line, change at point

#1026 - As Code with output line, change at point

#1008 - Operation comment

 

#1051 - Machine Name

#1052 - Group Comment

#1053 - Group Name

#1054 - File Descriptor

 

spaces$ = 0

scomm$ = ucase (scomm$)

if sof & gcode$ = 1052, scomm_str, scomm$, scomm_end, e$

if sof & gcode$ = 1053, scomm_str, "P/NAME= ", scomm$, scomm_end, e$

#if gcode$ = 1005, n$, pspc, scomm_str, scomm$, scomm_end, e$

if gcode$ = 1006, n$, pspc, scomm$, e$

#if gcode$ = 1007, scomm_str, scomm$, scomm_end

#if gcode$ = 1026, scomm$

#if gcode$ = 1008 & header = zero, n$, pspc, scomm_str, scomm$, scomm_end, e$

if gcode$ = 1008, scomm_sav = ucase(scomm$)

spaces$ = sav_spc

 

ptlchg$ #Tool change

ptlchg_errorcheck #Check for common toolchange errors

pcuttype

toolchng = one

toolcount = toolcount + 1

if toolcountn <= tooltotal, nexttool = rbuf(4,toolcountn)

else, nexttool = first_tool$

if wcstype = one, #Work coordinate system

[

pfbld, n$, *sg28, "X0.", "Y0.", e$

pfbld, n$, "G92", *xh$, *yh$, *zh$, e$

]

pbld, *sg53, "Y0", e$

[if indx_out <>0, "A0.", else, ""], e$

if sof & gcode$ = 1053, n$, *sm00, e$

else, pbld, n$, *sm01, e$

comment$,e$

"(*)", e$

ptlchg_com

  • Like 1
Link to comment
Share on other sites

 

pcomment2 #Comment from manual entry

#1005 - As Comment

#1006 - As Code

#1007 - As Comment with output line, change at point

#1026 - As Code with output line, change at point

#1008 - Operation comment

 

#1051 - Machine Name

#1052 - Group Comment

#1053 - Group Name

#1054 - File Descriptor

 

spaces$ = 0

scomm$ = ucase (scomm$)

if sof & gcode$ = 1052, scomm_str, scomm$, scomm_end, e$

if sof & gcode$ = 1053, scomm_str, "P/NAME= ", scomm$, scomm_end, e$

#if gcode$ = 1005, n$, pspc, scomm_str, scomm$, scomm_end, e$

if gcode$ = 1006, n$, pspc, scomm$, e$

#if gcode$ = 1007, scomm_str, scomm$, scomm_end

#if gcode$ = 1026, scomm$

#if gcode$ = 1008 & header = zero, n$, pspc, scomm_str, scomm$, scomm_end, e$

if gcode$ = 1008, scomm_sav = ucase(scomm$)

spaces$ = sav_spc

 

ptlchg$ #Tool change

ptlchg_errorcheck #Check for common toolchange errors

pcuttype

toolchng = one

toolcount = toolcount + 1

if toolcountn <= tooltotal, nexttool = rbuf(4,toolcountn)

else, nexttool = first_tool$

if wcstype = one, #Work coordinate system

[

pfbld, n$, *sg28, "X0.", "Y0.", e$

pfbld, n$, "G92", *xh$, *yh$, *zh$, e$

]

pbld, *sg53, "Y0", e$

[if indx_out <>0, "A0.", else, ""], e$

if sof & gcode$ = 1053, n$, *sm00, e$

else, pbld, n$, *sm01, e$

comment$,e$

"(*)", e$

ptlchg_com

 

I am sorry please do not think I am picking on you, but there is a balance of asking for help and asking someone to keep doing it for you. I see you keep making effort and I do appreciate and see it just so you know.

 

That was great and if that accomplishes what you are after the way you want then you have answered your own question. :unworthy: :unworthy:

 

Another way to think about is using a mi or mr trigger so you can keep the other comments in the post active. So you would have a 3rd condition to active the output verses the 2 conditions you have now to have it output. Not sure why you are using 1053 instead of 1005 or 1006, but again if it does what you want then mission accomplished.

Link to comment
Share on other sites
  • 5 weeks later...

Hi Crazy Millman,

Well, I do understand how you feel and I'm probably feel the same way if were you. On the other hand, I'm on a pressure of "CAN DO ATTITUDE" in a job market that everyone must be on a RAT RACE. My company needs within days not weeks for MASTERCAM responds. Therefore, I just bite my lips for the feedback and dare to try.

 

For your tips, thank you. I will try that and let see how it works then I will feedback the result, if you don't mind. Once again, thank you for your valuable time for explainning to me about the MI and MR functionablities.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.

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.

Follow us

×
×
  • Create New...