Skip to content

Commit

Permalink
Update to ver 0.6.5
Browse files Browse the repository at this point in the history
- g3drem header has additional information filled with data from Cura
- Exclude additional non-PLA materials from 3D20 profile
- Update Dremel PLA material to have higher print temperature (compatible with 0.75kg spools)
- Alphebetize printer definition, material definition, quality settings files
- make_release script now adds version number to .curapackage
  • Loading branch information
tim-schoenmackers committed Apr 10, 2021
1 parent 6289a04 commit 6545575
Show file tree
Hide file tree
Showing 16 changed files with 565 additions and 190 deletions.
Binary file modified README.pdf
Binary file not shown.
1 change: 1 addition & 0 deletions docs/octoprint/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ This page will walk you through how to set up an Octoprint enabled Dremel 3D20.
16. Add a Dremel 3D20 printer to Cura - now you should see a button to "connect octoprint" press it.
17. Follow the [instructions here](https://all3dp.com/2/cura-octoprint-plugin-connection/) to get the API key & connect cura to Octoprint
18. Enjoy
19. If you find the dremel functionality in octoprint useful, please go give thanks to [Mrnt](https://github.com/Mrnt/OctoPrint-FlashForge/blob/master/README.md)

***Note*** When Dremel plugin updates are installed, the update will overwrite the modified printer definition & you will have to re-modify the definition file after installing the update.

Expand Down
172 changes: 132 additions & 40 deletions plugins/Dremel3D20/Dremel3D20.py

Large diffs are not rendered by default.

69 changes: 52 additions & 17 deletions plugins/Dremel3D20/G3DremHeader.py
Original file line number Diff line number Diff line change
@@ -1,25 +1,32 @@
import struct
from enum import Enum

class MaterialType(Enum):
ABS = int("0x00", 16)
PLA = int("0x01", 16)
DISSOLVABLE = int("0x02", 16)
NONE = int("0xff", 16)

class G3DremHeader:
#initializes to expect an 80x60 thumbnail
def __init__(self):
self.startText = "g3drem 1.0 " # 16 byte char array
self.thumbnailStartLoc = int("0x3A", 16) # 4 byte unsigned int
self.imageStartLoc = int("0x38B0", 16) # 4 byte unsigned int
self.gcodeStartLoc = int("0x38B0", 16) # 4 byte unsigned int
self.numSeconds = 0 # 4 byte unsigned int
self.rightMaterialInMM = 0 # 4 byte unsigned int
self.leftMaterialInMM = 0 # 4 byte unsigned int
self.informationFlags = 1 # 2 byte unsigned int
self.heightPerLayer = 0 # 2 byte unsigned int
self.infillPercentage = 20 # 2 byte unsigned int
self.numShells = 3 # 2 byte unsigned int
self.printSpeed = 100 # 2 byte unsigned int
self.bedTemperature = 0 # 2 byte unsigned int
self.rightExtruderTemp = 220 # 2 byte unsigned int
self.leftExtruderTemp = 0 # 2 byte unsigned int
self.rightMaterialType = 1 # 1 byte unsigned int
self.leftMaterialType = int("0xff", 16) # 1 byte unsigned int
self.startText = "g3drem 1.0 " # 16 byte char array
self.thumbnailStartLoc = int("0x3A", 16) # 4 byte unsigned int
self.imageStartLoc = int("0x38B0", 16) # 4 byte unsigned int
self.gcodeStartLoc = int("0x38B0", 16) # 4 byte unsigned int
self.numSeconds = 0 # 4 byte unsigned int
self.rightMaterialInMM = 0 # 4 byte unsigned int
self.leftMaterialInMM = 0 # 4 byte unsigned int
self.informationFlags = 1 # 2 byte unsigned int
self.heightPerLayer = 0 # 2 byte unsigned int
self.infillPercentage = 20 # 2 byte unsigned int
self.numShells = 3 # 2 byte unsigned int
self.printSpeed = 100 # 2 byte unsigned int
self.bedTemperature = 0 # 2 byte unsigned int
self.rightExtruderTemp = 220 # 2 byte unsigned int
self.leftExtruderTemp = 0 # 2 byte unsigned int
self.rightMaterialType = MaterialType.PLA.value # 1 byte unsigned int
self.leftMaterialType = MaterialType.NONE.value # 1 byte unsigned int
self.thumbBmpByteArray = bytearray(80*60*3+54)

def setEstimatedTime(self, seconds):
Expand All @@ -29,6 +36,31 @@ def setMaterialLen(self, rightMM, leftMM=0):
self.rightMaterialInMM = rightMM
self.leftMaterialInMM = leftMM

def setMaterialType(self, rightType, leftType=MaterialType.NONE.value):
if type(rightType) is int:
self.rightMaterialType = rightType
elif isinstance(rightType, Enum):
self.rightMaterialType = rightType.value
else:
self.rightMaterialType = MaterialType.PLA.value

if type(leftType) is int:
self.leftMaterialType = leftType
elif isinstance(leftType, Enum):
self.leftMaterialType = leftType.value
else:
self.leftMaterialType = MaterialType.NONE.value

#0x01=right extruder, 0x02=left extruder, 0x04=bed heating, 0x08=support enabled
def setFlags(self, leftExtruderExists, heatedBed, supportEnabled):
self.informationFlags = 0x01
if leftExtruderExists:
self.informationFlags |= 0x02
if heatedBed:
self.informationFlags |= 0x04
if supportEnabled:
self.informationFlags |= 0x08

def setLayerHeight(self, height):
self.heightPerLayer = height

Expand All @@ -51,6 +83,9 @@ def setThumbnailBitmap(self, bytearray):
self.imageStartLoc = 58 + len(bytearray)
self.gcodeStartLoc = 58 + len(bytearray)

def setBedTemperature(self, bedTemp):
self.bedTemperature = bedTemp

def writeHeader(self, stream):
if stream is None:
return False
Expand Down
2 changes: 1 addition & 1 deletion plugins/Dremel3D20/plugin.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "Dremel 3D20 Printer Plugin",
"author": "Tim Schoenmackers",
"version": "0.6.4",
"version": "0.6.5",
"description": "Enables the user to add the Dremel Ideabuilder 3D20 printer to Cura and export the proprietary .g3drem files.",
"supported_sdk_versions": ["7.0.0","7.1.0","7.2.0","7.3.0","7.4.0"],
"i18n-catalog": "cura"
Expand Down
258 changes: 206 additions & 52 deletions resources/definitions/Dremel3D20.def.json
Original file line number Diff line number Diff line change
@@ -1,73 +1,227 @@
{
"version": 2,
"name": "Dremel3D20",
"inherits": "fdmprinter",
"metadata": {
"visible": true,
"author": "Tim Schoenmackers",
"manufacturer": "Dremel",
"category": "Dremel",
"exclude_materials": [
"Vertex_Delta_ABS",
"Vertex_Delta_PET",
"Vertex_Delta_TPU",
"dremel_eco_abs",
"dremel_nylon",
"dremel_petg",
"dsm_arnitel2045_175",
"dsm_novamid1070_175",
"eSUN_PETG_Black",
"eSUN_PETG_Grey",
"eSUN_PETG_Purple",
"emotiontech_abs",
"emotiontech_absx",
"emotiontech_acetate",
"emotiontech_asax",
"emotiontech_bvoh",
"emotiontech_hips",
"emotiontech_petg",
"emotiontech_pva-m",
"emotiontech_pva-s",
"emotiontech_tpu98a",
"fabtotum_abs",
"fabtotum_nylon",
"fabtotum_nylony",
"fabtotum_tpu",
"generic_abs",
"generic_abs_175",
"generic_bam",
"generic_cffcpe",
"generic_cffpa",
"generic_cpa",
"generic_cpe",
"generic_cpe_175",
"generic_cpe_plus",
"generic_gffcpe",
"generic_gffpa",
"generic_hips",
"generic_hips_175",
"generic_nylon",
"generic_nylon_175",
"generic_pc",
"generic_pc_175",
"generic_pet",
"generic_petg",
"generic_petg_175",
"generic_pp",
"generic_pp",
"generic_pva",
"generic_pva_175",
"generic_tough",
"generic_tpu",
"generic_tpu_175",
"imade3d_petg_175",
"innofill_innoflex60_175",
"leapfrog_abs_natural",
"leapfrog_pva_natural",
"redd_abs",
"redd_asa",
"redd_hips",
"redd_nylon",
"redd_petg",
"redd_tpe",
"structur3d_dap100silicone",
"tizyx_abs",
"tizyx_flex",
"tizyx_petg",
"tizyx_pva",
"ultimaker_abs_black",
"ultimaker_abs_blue",
"ultimaker_abs_green",
"ultimaker_abs_grey",
"ultimaker_abs_orange",
"ultimaker_abs_pearl-gold",
"ultimaker_abs_red",
"ultimaker_abs_silver-metallic",
"ultimaker_abs_white",
"ultimaker_abs_yellow",
"ultimaker_bam",
"ultimaker_cpe_black",
"ultimaker_cpe_blue",
"ultimaker_cpe_dark-grey",
"ultimaker_cpe_green",
"ultimaker_cpe_light-grey",
"ultimaker_cpe_plus_black",
"ultimaker_cpe_plus_transparent",
"ultimaker_cpe_plus_white",
"ultimaker_cpe_red",
"ultimaker_cpe_transparent",
"ultimaker_cpe_white",
"ultimaker_cpe_yellow",
"ultimaker_nylon_black",
"ultimaker_nylon_transparent",
"ultimaker_pc_black",
"ultimaker_pc_transparent",
"ultimaker_pc_white",
"ultimaker_pp_transparent",
"ultimaker_pva",
"ultimaker_tpu_black",
"ultimaker_tpu_blue",
"ultimaker_tpu_red",
"ultimaker_tpu_white",
"verbatim_bvoh_175",
"zyyx_pro_flex"
],
"file_formats": "application/x-g3drem",
"supports_usb_connection": false,
"has_machine_quality": true,
"has_materials": true,
"machine_extruder_trains": {
"0": "dremel_3d20_extruder_0"
},
"manufacturer": "Dremel",
"platform": "dremel_3D20_platform.stl",
"preferred_material": "dremel_pla",
"exclude_materials": [ "generic_hips","generic_hips_175",
"generic_petg","generic_petg_175",
"generic_abs", "generic_abs_175",
"generic_cpa", "generic_nylon",
"generic_nylon_175", "generic_bam",
"generic_pp","generic_pva_175",
"generic_pc", "generic_pva", "generic_tpu",
"generic_tough", "generic_cpe", "generic_cpe_175",
"generic_cpe_plus", "generic_pet"],
"preferred_quality": "normal",
"machine_extruder_trains":
{
"0": "dremel_3d20_extruder_0"
}
"supports_usb_connection": false,
"visible": true
},

"name": "Dremel3D20",
"overrides": {
"machine_name": { "default_value": "Dremel3D20" },
"machine_nozzle_size": { "default_value": 0.4 },
"material_diameter": { "default_value": 1.75 },
"speed_travel": { "default_value": 120 },
"prime_tower_size": { "default_value": 8.660254037844387 },
"infill_sparse_density": { "default_value": 20 },
"speed_wall_x": { "default_value": 45 },
"speed_wall_0": { "default_value": 40 },
"speed_topbottom": { "default_value": 35 },
"layer_height": { "default_value": 0.2 },
"speed_print": { "default_value": 60 },
"speed_infill": { "default_value": 48 },
"acceleration_enabled": { "default_value": true },
"print_sequence": { "enabled": false, "default_value": "all_at_once" },
"machine_center_is_zero": { "default_value": true },
"machine_heated_bed": { "default_value": false },
"machine_height": { "default_value": 140 },
"machine_gcode_flavor": { "default_value": "Marlin" },
"machine_depth": { "default_value": 150 },
"machine_width": { "default_value": 230 },
"retraction_speed": {"default_value":25},
"adhesion_type": { "default_value": "skirt" },
"acceleration_enabled": {
"default_value": true
},
"adhesion_type": {
"default_value": "skirt"
},
"gantry_height": {
"default_value": 30
},
"infill_sparse_density": {
"default_value": 20
},
"infill_sparse_thickness": {
"maximum_value_warning": 0.32
},
"layer_height": {
"default_value": 0.2
},
"machine_center_is_zero": {
"default_value": true
},
"machine_depth": {
"default_value": 150
},
"machine_end_gcode": {
"default_value": "M104 S0 T0\nG1 Z140 F3300\nG28 X0 Y0\nM132 X Y Z A\nG91\nM18\n"
},
"machine_gcode_flavor": {
"default_value": "Marlin"
},
"machine_head_with_fans_polygon": {
"default_value": [
[-15, -25],
[-15, 35],
[40, 35],
[40, -25]
[
-15,
-25
],
[
-15,
35
],
[
-25,
40
],
[
35,
40
]
]
},
"gantry_height": {
"default_value": 30
"machine_heated_bed": {
"default_value": false
},
"machine_height": {
"default_value": 140
},
"machine_name": {
"default_value": "Dremel3D20"
},
"machine_nozzle_size": {
"default_value": 0.4
},
"machine_start_gcode": {
"default_value": "G90\nG28\nM132 X Y Z A\nG1 Z100 F3300\nG1 X-110.5 Y-74 F6000\nM6 T0\nM907 X100 Y100 Z60 A100\nG1 Z0.6 F3300\nG4 P2000\nM108 T0\n"
},
"machine_end_gcode": {
"default_value": "M104 S0 T0\nG1 Z140 F3300\nG28 X0 Y0\nM132 X Y Z A\nG91\nM18\n"
"default_value": "G90\nG28\nM132 X Y Z A\nG1 Z100 F3300\nG1 X-110.5 Y-74 F6000\nM6 T0\nM907 X100 Y100 Z60 A100\nG1 Z0.6 F3300\nG4 P2000\nM108 T0\n"
},
"machine_width": {
"default_value": 230
},
"material_diameter": {
"default_value": 1.75
},
"prime_tower_size": {
"default_value": 8.660254037844387
},
"print_sequence": {
"default_value": "all_at_once",
"enabled": false
},
"retraction_speed": {
"default_value": 25
},
"speed_infill": {
"default_value": 48
},
"speed_print": {
"default_value": 60
},
"speed_topbottom": {
"default_value": 35
},
"speed_travel": {
"default_value": 120
},
"speed_wall_0": {
"default_value": 40
},
"speed_wall_x": {
"default_value": 45
}
}
},
"version": 2
}

0 comments on commit 6545575

Please sign in to comment.