-
Notifications
You must be signed in to change notification settings - Fork 6
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Unifying Dagoma import projects #27
Comments
Hi, thank to contact me. I'm agree with you, it's really better to scripting the export of xml_config.xml file but I don't have the necessary level of coding and i have all do manually. :) So, I think that I could help you to define the parameters and the specificed caracteristics, for example:
It could be really great if Cura could integrate our work. |
Oui, on peut bien sûr passer en français. Je me disais que ce serait bien d'avoir une trace anglaise mais la Dagoma s'adresse principalement à une clientèle française donc pas de soucis ;)
Le project Cura a intégré très vite l'export des Pour moi la priorité là c'est de terminer sur la génération de la definition de l'imprimante, avec le script |
Pour le Là où cela se complique c'est pour générer correctement les fichiers |
J'ai fini une première pass rapide des paramètres, puis j'ai utilisé un petit script pour différencier nos 2 outputs : import sys, json
i = sys.argv[1:]
o = ['/tmp/%s.json' % x for x in ('a', 'b')]
d = [json.loads(open(x).read()) for x in i]
for filename, data in zip(o, d):
open(filename, 'w').write(json.dumps(data, indent=4, sort_keys=True) + '\n')
print('diff -u ' + ' '.join(o)) Ce qui nous donne ça (résultat de mon script vers votre résultat) : --- /tmp/a.json 2017-02-07 19:42:04.553652845 +0100
+++ /tmp/b.json 2017-02-07 19:42:04.553652845 +0100
@@ -1,15 +1,28 @@
{
- "id": "dagoma_discoeasy200",
+ "id": "discoeasy200",
"inherits": "fdmprinter",
"metadata": {
- "category": "Other",
+ "author": "Delphin PETER",
+ "category": "Dagoma",
"file_formats": "text/x-gcode",
- "manfacturer": "Dagoma",
- "platform": "dagoma_discoeasy200_platform.stl",
+ "has_machine_materials": true,
+ "has_machine_quality": true,
+ "manufacturer": "DAGOMA",
+ "platform": "dagoma_discoeasy200_plateform.stl",
+ "platform_offset": [
+ -105,
+ -57,
+ 110
+ ],
+ "preferred_material": "*chromatik_pla*",
+ "preferred_quality": "*chromatik_pla_standard*",
"visible": true
},
- "name": "Dagoma DiscoEasy200",
+ "name": "DiscoEasy200",
"overrides": {
+ "adhesion_type": {
+ "default_value": "brim"
+ },
"brim_line_count": {
"default_value": 10
},
@@ -23,14 +36,23 @@
"default_value": 50,
"maximum_value": "100"
},
+ "cool_lift_head": {
+ "default_value": false
+ },
+ "cool_min_layer_time": {
+ "default_value": 10
+ },
+ "infill_overlap": {
+ "default_value": 10
+ },
"machine_center_is_zero": {
"default_value": false
},
"machine_depth": {
- "default_value": 211
+ "default_value": 200
},
"machine_end_gcode": {
- "default_value": "M104 S0\nM106 S255 ;start fan full power\nM140 S0 ;heated bed heater off (if you have it)\nG91 ;relative positioning\nG1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\nG1 Z+3 F{speed_travel} ;move Z up a bit and retract filament even more\nG90\nG28 X Y\nM107 ;stop fan\nM84 ;shut down motors"
+ "default_value": "; -- END GCODE --\nM104 S0\nM106 S255 ;start fan full power\nM140 S0 ;heated bed heater off (if you have it)\n;Home machine\nG91 ;relative positioning\nG1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\nG1 Z+3 F{speed_travel} ;move Z up a bit and retract filament even more\nG90\nG28 X Y\n;Ventilation forcee\nM107 ;stop fan\n;Shut down motor\nM84 ;shut down motors\n; -- end of END GCODE --"
},
"machine_extruder_count": {
"default_value": 1
@@ -42,11 +64,11 @@
"default_value": [
[
-17,
- -40
+ 70
],
[
-17,
- 70
+ -40
],
[
17,
@@ -62,23 +84,26 @@
"default_value": false
},
"machine_height": {
- "default_value": 205
+ "default_value": 200
},
"machine_name": {
"default_value": "DiscoEasy200"
},
"machine_nozzle_size": {
- "default_value": 0.4
+ "default": 0.4
},
"machine_start_gcode": {
- "default_value": "G90 ;absolute positioning\nM106 S250 ;fan on for the palpeur\nG28 X Y\nG1 X50\nM109 S180\nG28\nM104 S{material_print_temperature}\nM107 ;start with the fan off\nG1 X100 Y20 F3000\nG1 Z0.5\nM109 S{material_print_temperature}\nM82 ;set extruder to absolute mode\nG92 E0 ;zero the extruded length\nG1 F200 E10 ;extrude 10mm of feed stock\nG92 E0 ;zero the extruded length again\nG1 Z3\nG1 F{speed_travel}"
+ "default_value": "; -- START GCODE --\n;Vitesse impression = {speed_print}\n;Vitesse d\u00e9placement = {speed_travel}\n;Temp\u00e9rature : {material_print_temperature}\nG90 ;absolute positioning\nM106 S250 ;fan on for the palpeur\nG28 X Y\nG1 X50\nM109 S180\nG28\nM104 S{material_print_temperature}\nG29\nM107 ;start with the fan off\nG1 X100 Y20 F3000\nG1 Z0.5\nM109 S{material_print_temperature}\nM82 ;set extruder to absolute mode\nG92 E0 ;zero the extruded length\nG1 F200 E10 ;extrude 10mm of feed stock\nG92 E0 ;zero the extruded length again\nG1 Z3\nG1 F3600\n; -- end of START GCODE --"
},
"machine_width": {
- "default_value": 211
+ "default_value": 200
},
"magic_spiralize": {
"default_value": false
},
+ "material_diameter": {
+ "default_value": 1.75
+ },
"meshfix_extensive_stitching": {
"default_value": false
},
@@ -95,7 +120,7 @@
"default_value": 0.22
},
"raft_base_line_width": {
- "default_value": 1.0
+ "default_value": 1
},
"raft_base_thickness": {
"default_value": 0.3
@@ -127,8 +152,8 @@
"retraction_speed": {
"default_value": 50
},
- "skin_overlap": {
- "default_value": 25
+ "skirt_brim_minimal_length": {
+ "default_value": 150
},
"skirt_gap": {
"default_value": 3
@@ -136,9 +161,6 @@
"skirt_line_count": {
"default_value": 2
},
- "skirt_minimal_length": {
- "default_value": 150
- },
"support_angle": {
"default_value": 50
}, Petite analyse rapide de nos différences :
J'attaque maintenant une première génération des |
Je vais creuser le reste en attendant. |
Voilà, j'ai fini de faire n'importe quoi avec mon historique git, à partir de maintenant on peut itérer normalement :) Ça génère donc l'arbre suivant :
Note : j'ai fait en sorte dans les Note : à l'exception de Note : je n'ai pas eu de soucis mentionné sur le Maintenant le but du jeu c'est...
|
Je suis en train de regarder comment faire la multiplication par 60 sur le speed dans le GCode. Comme les materials génèrent des vitesses différentes on ne peut pas vraiment hardcoder une valeur. Mais en attendant j'ai fixé manuellement le GCode généré par Cura et testé une impression : Je crois qu'il y a encore des trucs à arranger ;) |
ça ressemble à un problème de température de buse insuffisante. |
Dès mon imprimante est dispo, je fais un test de mon coté pour voir. |
On pourrait comparer les paramètres passé à curaengine pour voir où est le problème. (vu dans output.txt) Initialiastion Filament : PLA Chromatik Remplissage : Creux (coque) Précision : Standard (0.15 mm) Support Label : Supports pour impression : Température d'impression : 210.0 Surface d'impression choisie : Offset en Z : Palpeur Activé: Palpeur Save in : Z:\home\3d\dagoma0.g Et avec Cura 2.4.0 + config du repo ubitux (console Linux filtrée et triée): acceleration_infill="3000" acceleration_layer_0="3000" acceleration_prime_tower="3000" acceleration_print="3000" acceleration_print_layer_0="3000" acceleration_skirt_brim="3000" acceleration_support="3000" acceleration_support_infill="3000" acceleration_support_interface="3000" acceleration_topbottom="3000" acceleration_travel="5000" acceleration_travel_layer_0="5000.0" acceleration_wall_0="3000" acceleration_wall="3000" acceleration_wall_x="3000" adhesion_extruder_nr="0" adhesion_type="brim" alternate_carve_order="True" alternate_extra_perimeter="False" anti_overhang_mesh="False" blackmagic="0" bottom_layers="7" bottom_thickness="1.05" brim_line_count="20" brim_outside_only="True" brim_width="8.0" carve_multiple_volumes="False" center_object="False" coasting_enable="False" coasting_min_volume="0.8" coasting_speed="90" coasting_volume="0.064" command_line_settings="0" conical_overhang_angle="50" conical_overhang_enabled="False" cool_fan_enabled="True" cool_fan_full_at_height="0.3" cool_fan_full_layer="2" cool_fan_speed_0="0" cool_fan_speed="100.0" cool_fan_speed_max="100.0" cool_fan_speed_min="100.0" cooling="0" cool_lift_head="False" cool_min_layer_time="10" cool_min_layer_time_fan_speed_max="10" cool_min_speed="20" default_material_print_temperature="205" draft_shield_dist="10" draft_shield_enabled="False" draft_shield_height="10" draft_shield_height_limitation="full" dual="0" dual_pre_wipe="True" experimental="0" extruder_nr="0" extruder_prime_pos_abs="False" extruder_prime_pos_x="0" extruder_prime_pos_x="0" extruder_prime_pos_y="0" extruder_prime_pos_y="0" -g -e0 extruder_prime_pos_z="0" extruder_prime_pos_z="0" fill_perimeter_gaps="everywhere" gantry_height="99999999999" gradual_infill_step_height="5.0" gradual_infill_steps="0" infill="0" infill_before_walls="True" infill_hollow="False" infill_line_distance="0" infill_line_width="0.4" infill_mesh="False" infill_mesh_order="0" infill_overlap="10" infill_overlap_mm="0.04" infill_pattern="grid" infill_sparse_density="0.0" infill_sparse_thickness="0.15" infill_wipe_dist="0.1" jerk_enabled="False" jerk_infill="20" jerk_layer_0="20" jerk_prime_tower="20" jerk_print="20" jerk_print_layer_0="20" jerk_skirt_brim="20" jerk_support="20" jerk_support_infill="20" jerk_support_interface="20" jerk_topbottom="20" jerk_travel="30" jerk_travel_layer_0="30.0" jerk_wall_0="20" jerk_wall="20" jerk_wall_x="20" layer_0_z_overlap="0.11" layer_height_0="0.3" layer_height="0.15" layer_start_x="0.0" layer_start_y="0.0" line_width="0.4" machine_acceleration="4000" machine_center_is_zero="False" machine_depth="211" machine_disallowed_areas="[]" machine_end_gcode="[...]" machine_extruder_count="1" machine_extruder_end_pos_abs="false" -e0 -l "0" machine_extruder_end_pos_x="0" machine_extruder_end_pos_y="0" machine_extruder_start_pos_abs="false" machine_extruder_start_pos_x="0" machine_extruder_start_pos_y="0" machine_filament_park_distance="16" machine_gcode_flavor="DiscoGCode" machine_head_polygon="[[-1, 1], [-1, -1], [1, -1], [1, 1]]" machine_head_with_fans_polygon="[[-17, -40], [-17, 70], [17, 70], [17, -40]]" machine_heated_bed="False" machine_heat_zone_length="16" machine_height="205" machine_max_acceleration_e="10000" machine_max_acceleration_x="9000" machine_max_acceleration_y="9000" machine_max_acceleration_z="100" machine_max_feedrate_e="299792458000" machine_max_feedrate_x="500" machine_max_feedrate_y="500" machine_max_feedrate_z="5" machine_max_jerk_e="5.0" machine_max_jerk_xy="20.0" machine_max_jerk_z="0.4" machine_min_cool_heat_time_window="50.0" machine_minimum_feedrate="0.0" machine_name="DiscoEasy200" machine_nozzle_cool_down_speed="2.0" machine_nozzle_expansion_angle="45" machine_nozzle_head_distance="3" machine_nozzle_heat_up_speed="2.0" machine_nozzle_offset_x="0" machine_nozzle_offset_y="0" machine_nozzle_size="0.4" machine_nozzle_tip_outer_diameter="1" machine_settings="0" machine_shape="rectangular" machine_show_variants="False" machine_start_gcode="[...]" machine_use_extruder_offset_to_offset_coords="True" machine_width="211" magic_fuzzy_skin_enabled="False" magic_fuzzy_skin_point_density="1.25" magic_fuzzy_skin_point_dist="0.8" magic_fuzzy_skin_thickness="0.3" magic_mesh_surface_mode="normal" magic_spiralize="False" material="0" material_bed_temperature="60" material_bed_temperature_layer_0="60" material_bed_temp_prepend="True" material_bed_temp_wait="True" material_diameter="2.85" material_extrusion_cool_down_speed="0.7" material_final_print_temperature="190" material_flow="100" material_flow_dependent_temperature="False" material_flow_temp_graph="[[3.5,200],[7.0,240]]" material_initial_print_temperature="195" material_print_temperature="205" material_print_temperature_layer_0="210" material_print_temp_prepend="False" material_print_temp_wait="True" material_standby_temperature="150" max_feedrate_z_override="0" meshfix="0" meshfix_extensive_stitching="False" meshfix_keep_open_polygons="False" meshfix_union_all_remove_holes="False" meshfix_union_all="True" mesh_position_x="0" mesh_position_y="0" mesh_position_z="0" mesh_rotation_matrix="[[1,0,0], [0,1,0], [0,0,1]]" multiple_mesh_overlap="0.15" nozzle_disallowed_areas="[]" ooze_shield_angle="60" ooze_shield_dist="2" ooze_shield_enabled="False" outer_inset_first="False" platform_adhesion="0" prime_tower_enable="False" prime_tower_flow="100" prime_tower_line_width="0.4" prime_tower_min_volume="10" prime_tower_position_x="200" prime_tower_position_y="200" prime_tower_size="15" prime_tower_wall_thickness="1.2084713039410424" prime_tower_wipe_enabled="True" print_sequence="all_at_once" raft_acceleration="3000" raft_airgap="0.22" raft_base_acceleration="3000" raft_base_fan_speed="0" raft_base_jerk="20" raft_base_line_spacing="1.6" raft_base_line_width="0.8" raft_base_speed="18.75" raft_base_thickness="0.36" raft_fan_speed="0" raft_interface_acceleration="3000" raft_interface_fan_speed="0" raft_interface_jerk="20" raft_interface_line_spacing="1.0" raft_interface_line_width="0.8" raft_interface_speed="18.75" raft_interface_thickness="0.22499999999999998" raft_jerk="20" raft_margin="5" raft_speed="25.0" raft_surface_acceleration="3000" raft_surface_fan_speed="0" raft_surface_jerk="20" raft_surface_layers="2" raft_surface_line_spacing="0.4" raft_surface_line_width="0.4" raft_surface_speed="25.0" raft_surface_thickness="0.15" resolution="0" retract_at_layer_change="False" retraction_amount="3.5" retraction_combing="all" retraction_count_max="90" retraction_enable="True" retraction_extra_prime_amount="0" retraction_extrusion_window="3.5" retraction_hop="0" retraction_hop_after_extruder_switch="True" retraction_hop_enabled="False" retraction_hop_only_when_collides="False" retraction_min_travel="0.8" retraction_prime_speed="50" retraction_retract_speed="50" retraction_speed="50" shell="0" skin_alternate_rotation="False" skin_line_width="0.4" skin_no_small_gaps_heuristic="True" skin_outline_count="0" skin_overlap="5" skin_overlap_mm="0.02" skirt_brim_line_width="0.4" skirt_brim_minimal_length="150" skirt_brim_speed="17" skirt_gap="3" skirt_line_count="2" speed="0" speed_equalize_flow_enabled="False" speed_equalize_flow_max="150" speed_infill="50" speed_layer_0="17" speed_prime_tower="50" speed_print="50" speed_print_layer_0="17" speed_slowdown_layers="2.0" speed_support="50" speed_support_infill="50" speed_support_interface="33.333333333333336" speed_topbottom="25.0" speed_travel="60" speed_travel_layer_0="20.4" speed_wall_0="40" speed_wall="25.0" speed_wall_x="45" start_layers_at_same_position="False" sub_div_rad_add="0.4" sub_div_rad_mult="100" support="0" support_angle="50" support_bottom_distance="0.15" support_bottom_height="1" support_bottom_stair_step_height="0.3" support_conical_angle="30" support_conical_enabled="False" support_conical_min_width="5.0" support_connect_zigzags="True" support_enable="False" support_extruder_nr="0" support_extruder_nr_layer_0="0" support_infill_extruder_nr="0" support_infill_rate="20" support_interface_density="100" support_interface_enable="False" support_interface_extruder_nr="0" support_interface_height="1" support_interface_line_distance="0.4" support_interface_line_width="0.4" support_interface_pattern="concentric" support_interface_skip_height="0.3" support_join_distance="2.0" support_line_distance="2.0" support_line_width="0.4" support_mesh="False" support_minimal_diameter="3.0" support_offset="0.2" support_pattern="lines" support_roof_height="1" support_top_distance="0.15" support_tower_diameter="3.0" support_tower_roof_angle="65" support_type="everywhere" support_use_towers="True" support_xy_distance="0.7" support_xy_distance_overhang="0.2" support_xy_overrides_z="z_overrides_xy" support_z_distance="0.15" switch_extruder_prime_speed="20" switch_extruder_retraction_amount="16" switch_extruder_retraction_speed="20" switch_extruder_retraction_speeds="20" top_bottom_pattern="lines" top_bottom_thickness="1.05" top_layers="7" top_thickness="1.05" travel="0" travel_avoid_distance="0.625" travel_avoid_other_parts="True" travel_compensate_overlapping_walls_0_enabled="True" travel_compensate_overlapping_walls_enabled="True" travel_compensate_overlapping_walls_x_enabled="True" wall_0_inset="0" wall_0_wipe_dist="0.2" wall_line_count="3" wall_line_width_0="0.4" wall_line_width="0.4" wall_line_width_x="0.4" wall_thickness="1.2" wireframe_bottom_delay="0" wireframe_drag_along="0.6" wireframe_enabled="False" wireframe_fall_down="0.5" wireframe_flat_delay="0.1" wireframe_flow="100" wireframe_flow_connection="100" wireframe_flow_flat="100" wireframe_height="3" wireframe_nozzle_clearance="1" wireframe_printspeed="5" wireframe_printspeed_bottom="5" wireframe_printspeed_down="5" wireframe_printspeed_flat="5" wireframe_printspeed_up="5" wireframe_roof_drag_along="0.8" wireframe_roof_fall_down="2" wireframe_roof_inset="3" wireframe_roof_outer_delay="0.2" wireframe_straight_before_down="20" wireframe_strategy="compensate" wireframe_top_delay="0" wireframe_top_jump="0.6" wireframe_up_half_speed="0.3" xy_offset="0" z_seam_type="shortest" z_seam_x="105.5" z_seam_y="633" |
Je viens de me rendre compte que Cura est sortie en version 2.4.0 |
@BuBuaBu j'ai commencé à comparer par rapport aux settings par défaut de Cura en fait. Voici les settings qui diffèrent de leur imprimante de référence
La liste est finalement assez petite, mais il y a peut-être quelque chose qui n'est pas terrible là dedans. Ou peut-être simplement qu'il en manque à importer (Cf toujours les Je vais regarder à faire marcher la metadata @DelphinPETER ah oui, et en plus je teste même la version git de Cura/CuraEngine/Uranium/libArcus... Mais bref, je serais intéressé par des tests d'autres personnes, peut-être que c'est simplement une merde de mon coté. |
En fait, je pense avoir une piste : on dirait que les paramètres des materials ne sont pas pris en compte dans Cura, donc je vais regarder de ce côté. |
Avec Cura 2.3 pour que les fichiers(material/qualité) soient bien filtrés il était impératif que les qualités mentionnent le nom de l'imprimante ET le nom du matérial. Exemple : 'material = chromatik_pla_discoeasy200', de plus j'avais noté que si l'ID de l'imprimante était trop long cela ne marchais pas non plus. Il faut détester tout ça avec Cura 2.4 voir si c'est toujours gérer de la même façon, auquel cas il faudra s'adapter. |
Je suis en train de voir avec eux sur ce problème ici : Ultimaker/Cura#1496 Sinon, j'ai pu fixer le problème du On pourra peut-être utiliser ce genre de mécanisme pour En attendant, la priorité c'est de faire correspondre correctement les materials avec les profils (Cf l'issue Cura). Je vous tiens au courant. |
Alors, perso si je mets le nom de l'id de l'imprimante (ou n'importe quoi d'autres) dans C'est un peu ghetto toute cette histoire, j'espère clarifier tout ça bientôt. |
@BuBuaBu le Il y a l'air d'y avoir d'autres façons de moduler la température (je vois notamment des jeux avec |
En ajustant manuellement le J'obtiens un résultat plutôt correct (Chromatik PLA, Standard) : Le problème de J'ai aussi je crois un problème avec mon z-offset, l'imprimante essaie d'imprimer trop bas, j'ai eu beaucoup de mal à détacher le tapis de soutien (et on en voit encore les traces). Et j'ai dû abandonner la tentative en Note : c'est curieux les glitch de fracturation sur les bordures. |
Hi,
I've been analyzing Dagoma's fork for a while now, starting with the reconstruction of their outdated github repository, and then analyzing the windows releases.
Then from their "specifications XML" (
xml_config.xml
), I've been trying to automate the import process of the settings to Cura mainline.So far, I've mainlined the extracted materials (Ultimaker/fdm_materials#5) and I'm in the process of extracting the printer definition.
The result of the research, scripts, generated output, mainline references, etc. can be found at https://github.com/ubitux/cura-dagoma
I can't test my updated generated config so far for stupid reasons (cura segv because of pyqt5 madness), but should be able to pretty soon. That's why it's currently as a WIP and history being rewritten until first version.
ETA on the definition:
z_offset
thing)Config Expert
.Ideally, I'd like to unify the two projects such that the contributions/changes you did from the original Dagoma config appears in the convert script so everyone can see how much it diverges etc.
The rationale of scripting is to be able to follow Dagoma's changes, check differences between printers/versions/... as well as having a complete overview on the changes we do from the original.
The text was updated successfully, but these errors were encountered: