Override set_default_blending
- rodw
- Topic Author
- Offline
- Platinum Member
Less
More
- Posts: 10702
- Thank you received: 3531
08 Jul 2024 12:20 #304660
by rodw
Override set_default_blending was created by rodw
Hi guys, I want to make QTplasmac's custom filter insert a G91 in front of the G64 command but I get an error. This is what I have now to override the method
Can somebody help me straight please?
The actual reason for this is that the files from the nesting program is programmed in G91 but where QTP inserts the G53 command to move to the top of the Z axis, it is not permitted in G91 incremental mode. So I want to replace the G91 with G90 and then put the G91 back after you have made that change. Open to other methods.
Gcode example and filter attached.I have been able to replace the M07 and M08 with M3/M5 and insert the plasmac feedrate. I am also not sure why the M07 and M08 are still there.
def set_default_blending_new(self):
#return(f'G91 G64 P0.1\n\n{data}')
blend = self.blendTolerance * self.unitMultiplier
self.gcodeList.append(f'G91 G64 P{blend}')
self.pathBlend = True
self.set_default_blending = set_default_blending_new
Can somebody help me straight please?
The actual reason for this is that the files from the nesting program is programmed in G91 but where QTP inserts the G53 command to move to the top of the Z axis, it is not permitted in G91 incremental mode. So I want to replace the G91 with G90 and then put the G91 back after you have made that change. Open to other methods.
Gcode example and filter attached.I have been able to replace the M07 and M08 with M3/M5 and insert the plasmac feedrate. I am also not sure why the M07 and M08 are still there.
Attachments:
Please Log in or Create an account to join the conversation.
- Aciera
- Online
- Administrator
Less
More
- Posts: 3933
- Thank you received: 1694
08 Jul 2024 13:12 - 08 Jul 2024 13:19 #304662
by Aciera
Replied by Aciera on topic Override set_default_blending
As for why the 'M07' and 'M08' are still there:
Note how your code will attach the original string (ie 'M07' and 'M08') stored in the variable 'data' to the return string, so try this:
As for the other problem, what is the error you are getting?[/code][/code]
# for custom parsing before standard parsing
def custom_pre_parse(data):
if data[:3] == 'M07':
return(f'M3 $0 \nF#<_hal[plasmac.cut-feed-rate]>\n{data}')
if data[:3] == 'M08':
return(f'M5 $0\n\n{data}')
if data[:3] == 'G91':
return(None)
return(data)
self.custom_pre_parse = custom_pre_parse
Note how your code will attach the original string (ie 'M07' and 'M08') stored in the variable 'data' to the return string, so try this:
def custom_pre_parse(data):
if data[:3] == 'M07':
return(f'M3 $0 \nF#<_hal[plasmac.cut-feed-rate]>\n')
if data[:3] == 'M08':
return(f'M5 $0\n')
if data[:3] == 'G91':
return(None)
return(data)
self.custom_pre_parse = custom_pre_parse
Last edit: 08 Jul 2024 13:19 by Aciera. Reason: Fix forgotten line ' return(data) '
The following user(s) said Thank You: rodw
Please Log in or Create an account to join the conversation.
- rodw
- Topic Author
- Offline
- Platinum Member
Less
More
- Posts: 10702
- Thank you received: 3531
08 Jul 2024 13:21 #304663
by rodw
Replied by rodw on topic Override set_default_blending
Thanks, that fixed the M07/M08
This is the error I get when I uncomment the set_default_blending_new
Traceback (most recent call last):
File "/usr/bin/qtplasmac_gcode", line 1439, in <module>
app = Filter(sys.argv)
^^^^^^^^^^^^^^^^
File "/usr/bin/qtplasmac_gcode", line 153, in __init__
self.process_file()
File "/usr/bin/qtplasmac_gcode", line 244, in process_file
line = self.parse_code(line)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/bin/qtplasmac_gcode", line 308, in parse_code
self.set_default_blending()
TypeError: set_default_blending_new() missing 1 required positional argument: 'self'
This is the error I get when I uncomment the set_default_blending_new
Traceback (most recent call last):
File "/usr/bin/qtplasmac_gcode", line 1439, in <module>
app = Filter(sys.argv)
^^^^^^^^^^^^^^^^
File "/usr/bin/qtplasmac_gcode", line 153, in __init__
self.process_file()
File "/usr/bin/qtplasmac_gcode", line 244, in process_file
line = self.parse_code(line)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/bin/qtplasmac_gcode", line 308, in parse_code
self.set_default_blending()
TypeError: set_default_blending_new() missing 1 required positional argument: 'self'
Please Log in or Create an account to join the conversation.
- Aciera
- Online
- Administrator
Less
More
- Posts: 3933
- Thank you received: 1694
08 Jul 2024 13:23 #304664
by Aciera
Replied by Aciera on topic Override set_default_blending
maybe try:
def custom_pre_parse(data):
if data[:3] == 'M07':
return(f'M3 $0 \nF#<_hal[plasmac.cut-feed-rate]>\n')
if data[:3] == 'M08':
return(f'M5 $0\n')
if data[:3] == 'G91':
return(None)
if data[:3] == 'G64':
return(f'G91\n\n{data}'
return(data)
self.custom_pre_parse = custom_pre_parse
Please Log in or Create an account to join the conversation.
- rodw
- Topic Author
- Offline
- Platinum Member
Less
More
- Posts: 10702
- Thank you received: 3531
08 Jul 2024 13:30 #304666
by rodw
Replied by rodw on topic Override set_default_blending
Good try but no go It fixed the error but did nothing!
SO back to the python error.
SO back to the python error.
Please Log in or Create an account to join the conversation.
- Aciera
- Online
- Administrator
Less
More
- Posts: 3933
- Thank you received: 1694
08 Jul 2024 13:48 #304667
by Aciera
Replied by Aciera on topic Override set_default_blending
have you tried not calling 'self' as an argument:
def set_default_blending_new():
blend = self.blendTolerance * self.unitMultiplier
self.gcodeList.append(f'G91 G64 P{blend}')
self.pathBlend = True
self.set_default_blending = set_default_blending_new
Please Log in or Create an account to join the conversation.
- rodw
- Topic Author
- Offline
- Platinum Member
Less
More
- Posts: 10702
- Thank you received: 3531
08 Jul 2024 20:17 #304694
by rodw
Replied by rodw on topic Override set_default_blending
Sorry, went past my bed time!
The only way I got it to work was to set incremental mode with the M03
And a bit more gymnastics because you can't always assume G90 is active
The only way I got it to work was to set incremental mode with the M03
def custom_pre_parse(data):
if data[:3] == 'M07':
return(f'G91 M3 $0 \nF#<_hal[plasmac.cut-feed-rate]>\n')
And a bit more gymnastics because you can't always assume G90 is active
Please Log in or Create an account to join the conversation.
- phillc54
- Offline
- Platinum Member
Less
More
- Posts: 5697
- Thank you received: 2081
09 Jul 2024 00:15 #304714
by phillc54
Replied by phillc54 on topic Override set_default_blending
@rodw Is this working OK for you?
Please Log in or Create an account to join the conversation.
- rodw
- Topic Author
- Offline
- Platinum Member
Less
More
- Posts: 10702
- Thank you received: 3531
09 Jul 2024 01:38 #304719
by rodw
Thans for asking. Its kind of working but not ideal becasue it issues a G91 on every M03. I really want to be able to redfine this function so it inserts G91 just once. Any help or guidance is appreciated as this is the first time I have ventured into filters.
The gcode is being generated by Hypertherm nestmaster so it will be cool to get it supported by qtplasmac out of the box.
Replied by rodw on topic Override set_default_blending
Phill,@rodw Is this working OK for you?
Thans for asking. Its kind of working but not ideal becasue it issues a G91 on every M03. I really want to be able to redfine this function so it inserts G91 just once. Any help or guidance is appreciated as this is the first time I have ventured into filters.
def set_default_blending_new(data):
blend = self.blendTolerance * self.unitMultiplier
self.gcodeList.append(f'G91 G64 P{blend}')
self.pathBlend = True
self.set_default_blending = set_default_blending_new
The gcode is being generated by Hypertherm nestmaster so it will be cool to get it supported by qtplasmac out of the box.
Please Log in or Create an account to join the conversation.
- phillc54
- Offline
- Platinum Member
Less
More
- Posts: 5697
- Thank you received: 2081
09 Jul 2024 03:59 - 09 Jul 2024 04:00 #304722
by phillc54
Replied by phillc54 on topic Override set_default_blending
I think that all you need in the custom filter is:
def custom_pre_parse(data):
if data[:3] == 'M07':
return(f'\nF#<_hal[plasmac.cut-feed-rate]>\nM3 $0')
if data[:3] == 'M08':
return(f'M5 $0\n')
return(data)
self.custom_pre_parse = custom_pre_parse
def custom_post_parse(data):
if data[:3] == 'M30':
return(f'G90\n{data}')
return(data)
self.custom_post_parse = custom_post_parse
Last edit: 09 Jul 2024 04:00 by phillc54.
Please Log in or Create an account to join the conversation.
Moderators: snowgoer540
Time to create page: 3.072 seconds