I've just got the 3dchameleon and I think its mk3.1 (3 at least). I set it up on an ender 3 pro. I've taken off the old extruder and want to use the 3dchameleon filament loader drive as the extruder. However T0 and T1 drive backwards. So I installed python and setup prusasliser to do the post processing, but it is not working. I don't get the backup file, so that means python is not processing the output g-code file. I'm using prusaslicer 2.5.2 and python 311 on win11. Any tips to make it work? Or is there any other way to do it? Also for extruder to hotend measurement in this setup do you measure from the 3dchameleon extruder or from where you park the filament 1inch before the y adapter?
top of page
To test this feature, visit your live site.
MK3 on Ender 3 pro mode 1 extruder replacement, T0 and T1 run backwards, how to fix?
MK3 on Ender 3 pro mode 1 extruder replacement, T0 and T1 run backwards, how to fix?
16 comments
Like
16 Comments
bottom of page
You are right the python is working. I does show the 3dchameleon header in the gcode file. However I still haven't got it working properly. I can get two (T0,T1) going in the right direction, but two (T2,T3) will go wrong or vice versa. In the reversedrive.py file for tools T0, T1, T2, T3 I can put True, True, False, False OR False, False, True, True and T0 and T1 will be correct and T2 and T3 will be wrong and vice versa, but I can't get all going in the right direction. Here is my reversedrive.py file data:
#!/usr/bin/python
# 3D Chameleon - T2 and T3 reverser post processor
# Copyright 2020 - 3D Chameleon, LLC, All Rights Reserved
import re
import os
import sys
reverse_mod = True
# set io files
file_input = sys.argv[1]
file_output = re.sub('.gcode.pp$', '.reversedrive.gcode', file_input)
if os.path.exists("{}.backup".format(file_input)):
os.remove("{}.backup".format(file_input))
if os.path.exists(file_output):
os.remove(file_output)
if (file_output == file_input):
file_output = "{}.reversedrive".format(file_input)
with open(file_input) as input:
with open(file_output, 'w', newline='') as output:
#print >> output, "; 3D Chameleon Postprocessor"
#print >> output, "; Copyright 2020 by 3D Chameleon, LLC"
#print >> output, "; All Rights Reserved"
#print >> output, ";"
#print >> output, ";"
print("; 3D Chameleon Postprocessor", file=output, end='\n')
print("; Copyright 2020 by 3D Chameleon, LLC", file=output, end='\n')
print("; All Rights Reserved", file=output, end='\n')
print(";", file=output, end='\n')
print(";", file=output, end='\n')
for line in input:
line = line.strip()
# ignore extruder
if (re.search('- 3DC Process Tool 0 -', line)):
reverse_mod = False
# ignore extruder
if (re.search('- 3DC Process Tool 1 -', line)):
reverse_mod = False
# flip extruder direction
if (re.search('- 3DC Process Tool 2 -', line)):
reverse_mod = True
# flip extruder direction
if (re.search('- 3DC Process Tool 3 -', line)):
reverse_mod = True
# reverse E values if in T2 or T3
if(reverse_mod):
if('G92 E' in line):
line = line.replace("E","E-")
line = line.replace("E-0", "E0")
if(('G0' in line) or ('G1' in line)):
if ('E-' in line):
line = line.replace("E-", "E")
else:
if ('E' in line):
line = line.replace("E", "E-")
# normal output; copy to new file
#print >> output, line
print(line, file=output, end='\n')
# backup old file
os.rename(file_input,"{}.backup".format(file_input))
# rename temp file to original filename
os.rename(file_output, file_input)