delphinpeter / dagoma-settings-for-cura Goto Github PK
View Code? Open in Web Editor NEWParamètres de CuraByDagoma pour Cura 2.3
License: GNU General Public License v3.0
Paramètres de CuraByDagoma pour Cura 2.3
License: GNU General Public License v3.0
Bonjour, il est écrit "ATTENTION CERTAINS PARAMÈTRES NE SONT PAS ENCORE TRANSFÉRÉS, CES FICHIERS SONT PARTAGÉS POUR ÊTRE TESTÉS."
Vous voulez dire qu'il vaut pour le moment mieux attendre une version plus travaillée avant d'utiliser ces fichiers svp ?
Merci.
Au moment de l'ajout d'une imprimante le profil par défaut ne sélectionne pas une qualité disponible.
Cependant les profiles dédiés à la DiscoEasy sont disponible.
Tu as défini dans le fichier JSON
"bottom_thickness": { "default_value": 0.26 },
D’une part ce paramètre n’est pas pris en compte depuis le fichier JSON et doit être défini dans les fichiers CFG des profils.
D'autre part cette valeur me parait erroné vis-à-vis de la description qu’en fait CURA :
Quand on fige la valeur à 0.26 (alors que par défaut c’était : 1), le champ passe en warning.
Normalement cette valeur devrait être un multiple de la hauteur de couche (0.2 pour le profil rapide)
Je pense que c’est une erreur de définition coté DAGOMA.
Je te propose de ne rien définir pour "bottom_thickness"
En introduction :
J'utilise la pièce "03-PIED_avant_easyUp.STL" dispo sur http://www.thingiverse.com/thing:1944317 comme pièce de référence.
J'analyse le code produit (celui que l'on donne à manger par l'imprimante) par :
J'identifie les différences et les trucs qui me paraisse anormal.
Je réalise quelque impression de temps en temps... mais je commence à être à court de filament...
En postula : Paramètre / Configurer la visibilité des paramètres / Vérifier tout : A cocher
Dans cura 2.3.1, il y a des automatismes de configuration et si l’on force une valeur un petit point d’information (i) apparaît devant le champ avec une petite info bulle :
« Ce paramètre est normalement calculé mais possède actuellement une valeur absolue défini. »
Ce qui ne veut pas dire que c’est une erreur, mais juste que l’on sort des paramètres calculés automatiquement pour simplifier la configuration.
Ce que DAGOMA a d’ailleurs fait en figeant dans l’XML de CbD (pour le profil rapide) :
Or avec les automatismes de Cura 2.3.1 :
Vitesse de remplissage (par défaut) est = à la Vitesse d’impression : C’est un automatisme de Cura 2.3.1
Donc il faut régler uniquement la « vitesse d’impression » dans le profile, si la « vitesse de remplissage » est identique. Ce qui est le cas pour le :
Mais pas pour le profile fin :
Pour information :
Quand un champ est grisé avec un paramètre, c’est qu’il n’est pas pris en compte car des valeurs différentes ont été affectées aux champs enfants.
On reconnait les champs enfants, car ils sont impdamptées par rapport au champ parent.
Et il peut y avoir des enfants d’enfants… avec des calculs automatiques différents.
PS :
Soit dit au passage, je ferais des optimisations pour les profiles « rapide » et « standard » pour mon propre compte, car non standard aux modèles pas défaut de CbD. Mais on pourrait aussi proposer des modèles optimisé dérivé des modèles par défaut de CbD – Mais plus tard, car il reste pas mal de boulot.
A mon sens, les vitesses (par défaut) d’impression et de déplacement sont fausses :
Ces valeurs par défaut sont utilisées pour des impressions ou des déplacements où la vitesse n’est pas spécifiée:
Exemple :
G1 X82.126 Y67.135 E147.28986 => c’est une impression à la vitesse par défaut
G0 X82.126 Y67.135 => c’est un déplacement à la vitesse par défaut
1er problème :
Dans le ficher on ne spécifie que la vitesse par défaut de l’impression :
G1 F{speed_print} => (mais qui ne marche pas, c’est l’objet du post précédant, donc ici on considère que ça marche)
La vitesse par défaut du déplacement n’est pas définie, et devrait être :
G0 F{ speed_travel }
2ième problème :
Dans Cura By Dagoma seule la vitesse d’impression (G1) est défini, mais avec la valeur de la vitesse de déplacement !!!!
Soit G1 F{ speed_travel }
A mon sens, c’est une erreur, qu’en penses-tu ?
Analyse :
Après, est-ce que je ne me fait pas un nœud au cerveau :
Pour mémoire : (Profil rapide)
Vitesse d’impression = 60mm/s soit 3600mm/min
Vitesse de déplacement = 100mm/s soit 6000mm/min
;TYPE:SKIRT => là il fait l’entourage de ma pièce
G1 F1020 X44.002 Y36.138 E0.22323 => à la vitesse de 17mm/s
G1 X54.409 Y36.138 E0.67839 => et là la vitesse c’est toujours 17mm/s ou la valeur par défaut ?
G1 X54.409 Y46.407 E1.12752
G1 X133.034 Y35.292 E4.60051
Etc…
G1 X40.393 Y39.747 E21.18139
G0 F6000 X40.793 Y39.913 => déplacement à 100mm/s
G1 F1020 X44.168 Y36.538 E21.39015
G1 X54.009 Y36.538 E21.82056
Etc…
G1 X40.793 Y39.913 E42.24417
G1 F3000 E38.74417 => là il faut un dépôt de matière à l’endroit où la tête se trouve à 50mm/s
G0 F6000 X44.593 Y41.486 => déplacement à 100mm/s
;TYPE:WALL-INNER
G1 F3000 E42.24417
G1 F1020 X45.741 Y40.338 E42.31518
G1 X50.209 Y40.338 E42.51059
G1 X50.209 Y51.243 E42.98754
La question étant :
Lors de ce type de commande :
G1 F1020 X44.002 Y36.138 E0.22323 => à la vitesse de 17mm/s
G1 X54.409 Y36.138 E0.67839 => et là la vitesse c’est toujours 17mm/s ou la valeur par défaut ?
j'ai généré un fichier d'impression avec CbD et Cura2.3.1
Modèle : Rapide
Filament: PLa Chromatik (205°C)
Voici le début du code généré par Cura2.3.1:
;FLAVOR:RepRap
;TIME:1796
;Generated with Cura_SteamEngine 2.3.1
M104 S205
M109 S205
; -- START GCODE --
G90 ;absolute positioning
M106 S250 ;fan on for the palpeur
G28 X Y
G1 X50
M109 S180
G28
M104 S210
Voici le début du code généré par CbD:
;Gcode by Cura-by-dagoma for DiscoEASY200 V1.0.2
G90 ;absolute positioning
M106 S250 ;fan on for the palpeur
G28 X Y
G1 X50
M109 S180
G28
M104 S215
;Activation palpeur
;bloc palpeur
G29
M107 ;start with the fan off
G1 X100 Y20 F3000
G1 Z0.5
M109 S215
Conclusion:
Les deux sont faux....
Sur Cura 2.3.1
au début du fichier tu a :
;Generated with Cura_SteamEngine 2.3.1
M104 S205
M109 S205
qui n'a rien à faire là, mais c'est la bonne température
mais le ventilateur n'a pas démarré, car la commande de démarrage est après.
on trouve plus bas :
M109 S180 => ça c'est la préchauffe
G28
M104 S210 => c'est là que ça devrait être à 205
G29
M107 ;start with the fan off
G1 X100 Y20 F3000
G1 Z0.5
M109 S210 => c'est là que ça devrait être à 205
Sur Cura by Dagoma
C'est dans le bonne ordre, mais il y a un offset de 10°C
M104 S215 => devrait être 205
;Activation palpeur
;bloc palpeur
G29
M107 ;start with the fan off
G1 X100 Y20 F3000
G1 Z0.5
M109 S215 => devrait être 205
J'ai fait le test avec un autre filament qui devait être à 210°C
et j'obtiens :
M104 S220
;Activation palpeur
;bloc palpeur
G29
M107 ;start with the fan off
G1 X100 Y20 F3000
G1 Z0.5
M109 S220
Ce qui confirme l'offset de 10°C
Qui me semble très bizarre....
j'ai fait un test d'impression, et j'ai un meilleur résultat sans l'offset.
je ne sais pas quoi en penser !
Proposition de jpg35 :
; -- START GCODE --
; Initialisation et mise en chauffe à 180°C
G90 ;Toutes les coordonnées exécutées à partir de maintenant sont en rapport à l'origine de la machine
M106 S250 ;Allume les ventilateurs du palpeur (vitesse entre min = 0 et max = 255)
G28 X Y ;Déplacement seulement des axes X et Y vers leurs origines
G1 X50 ;Déplacement Linéaire sur l'axe X de 50mm
M109 S180 ;Définir la température minimal de l'extrudeur et attendre d’être à la bonne température
G28 ;Déplacement de tous les axes vers leurs origines
;M104 S210 en commentaire car dépend du type de filament
M104 S{material_print_temperature} ;Définir la température cible de l’extrudeur et la maintenir
;Initialisation du palpeur et de l'extruder
G29 ;Déplace l'axe Z sur 5 points, ou plus si c'est prévu dans le Marlin, pour calculer la planéité du plateau
M107 ;Eteindre les ventilateurs
G1 X100 Y20 F3000 ;Déplacement X à 100mm et Y à 20mm à la vitesse de 3000mm/min
G1 Z0.5 ;Déplacement Z à 0.5mm
; M108 S210 en commentaire car dépend du type de filament
M109 S{material_print_temperature} ;Définir la température minimal de l'extrudeur et attendre d'être à la bonne température
M82 ;Défini la position de l'extrudeur en position absolue
G92 E0 ;Défini la position actuelle comme position absolue de l'extruder sans offset
G1 F200 E10 ; Extruder 10mm de manière à la vitesse de 300mm/min
G92 E0 ;Défini la position actuelle comme position absolue de l'extruder à 0, une seconde fois...
G1 Z3 ;Relever l'axe Z de 3mm, c'est pour dire que la phase d'init est terminé
;G1 F3600 en commentaire car dépend du type de profil
; 3000mm/min soit 50mm/s
; 3600mm/min soit 60mm/s
; 6000mm/min soit 100mm/s
G1 F{variable vitesse: 6000 ou 3600 ou 3000 } ; Régler la vitesse de déplacement nominal de X Y Z à 3600mm/min soit 60mm/s
; -- end of START GCODE --
Il faut que tu remplace :
"true" par "True"
'false" par False
Ça pose des problèmes dans le gestion du flag de modification du profile (la petite étoile).
Suite info de jpg35 :
Dans les trois profiles C:\Program Files\Cura 2.3\resources\quality\dagoma_discoeasy200
Section [Values]
rajouter:
material_diameter = 1.74
adhesion_type = skirt (pour la "jupe") ou brim (pour "bordure" )
Dans les options de Cura 2.3.1 / Personnalisé / Refroidissement
Vitesse du ventilateur : 100.0
Vitesse régulière du ventilateur : 100.0
Vitesse maximal du ventilateur : 100.0
Or dans ton fichier tu définis dagoma_discoeasy200.def.json :
"cool_fan_speed": {
"maximum_value": "100",
"default_value": 50
},
En fait je pense que cette définition, permet d’afficher les warning dans l’interface cura : le changement de couleur du champ de saisie de la valeur.
Par contre si on définit dans un profil « discoeasy200_rapide.inst.cfg » :
cool_fan_speed_min = 50
cool_fan_speed_max = 100
Les bonnes valeurs sont bien remontées dans l’interface.
Donc à corriger par tes soins dans les fichiers.
J’ai analysé et comparé le GCODE produit par Cura 2.3.1 - Profile Rapide:
Je me suis un peu pris la tête, mais c’est parce que lorsque que je regardais les impressions qui s’exécutait sur l’imprimante => ça ne me semblait pas cohérent à l’oreille et dans la durée.
Voici les paramètres auxquels j’ai aboutie :
[general]
version = 2
name = DiscoEasy - Rapide - Correction
definition = fdmprinter
[metadata]
quality_type = discoeasy200_rapide
type = quality_changes
[values]
speed_topbottom = 30 (Je pense que c’est plus « sage »)
OU
speed_topbottom = 60 (ou pour coller à 100% au profil rapide de CbD – donc normalement c’est celui-là que tu dois retenir)
speed_slowdown_layers = 3.0
speed_travel_layer_0 = 100
adhesion_type = skirt
speed_layer_0 = 17
speed_infill = =speed_print
Il faut fusionner ces paramètres avec le profile : = discoeasy200_rapide
Fait un test avec une grosse pièce et joue avec le paramètre speed_topbottom: 30 ou 60
Reste plus que des tests d’impression à faire.
Ça devrait être plus simple pour les deux autres profiles.
Je t'envoie mes fichiers sur le forum, car je ne sais pas comment faire sur GitHub et je n'ai pas envie de me prendre la tête.
A+
PS : Je pars en déplacement durant une semaine sur une mission compliqué, tu n’auras donc pas de news de ma part.
Peux-tu mettre dans le bon ordre, au moins les thèmes, dans le fichier de définition et dans les fichiers des profiles.
Ex:
"machine_gcode_flavor": { "default_value": "DiscoGCode" },
"machine_heated_bed": { "default_value": False },
"machine_center_is_zero": { "default_value": False },
"retraction_speed": { "default_value": 50 },
"retraction_amount": { "default_value": 3.5 },
"retraction_enable": { "default_value": True },
"retraction_min_travel": { "default_value": 1.5 },
"retraction_hop": { "default_value": 0 },
"retraction_extra_prime_amount": { "default_value": 3.5 },
"cool_fan_enabled": { "default_value": True },
"cool_fan_speed_min": { "default_value": 50 },
"cool_fan_speed_max": { "default_value": 100 },
"cool_min_layer_time": { "default_value": 10 },
Concernant les parois:
« Vitesse d’impression de la paroi » et ses deux enfants :
Et par défaut la vitesse générale des parois = Vitesse d'impression divisé par 2
DAGOMA avait fait des modifications à ce sujet et sont bien répercutées dans nos profiles.
(« imp paroi ext »/ « imp paroi int » pour « vitesse imp paroi »)
Rapide :50/60 pour 60 alors que les automatismes auraient donnée 30/60
Standard : 40/45 pour 50 alors que les automatismes auraient donnée 25/50
Fin : 25/30 pour 35 alors que les automatismes auraient donnée 17.5/35
D’une manière générale les réglages DAGOMA sont :
Conclusion :
C’est bon pour cette partie, mais des optimisations sont possibles et suivant la robustesse du châssis des variante sont aussi possibles (Châssis renforcé de STAN42)
Avoir ce dépôt dans un premier temps pour que la communauté puisse tester et peaufiner les réglages est une bonne chose, je pense qu'à moyen terme il serait utile de contribuer ces fichiers directement sur le dépôt officiel de cura https://github.com/Ultimaker/Cura/tree/master/resources/definitions contient plein d'imprimantes exotiques sous la category "other".
Vitesse de déplacement :
Par défaut = 120
DAGOMA avait fait des modifications à ce sujet et sont bien répercutées dans nos profiles.
=> C’est bon pour cette partie.
Vitesse de la couche initiale : 30 (défaut Cura2.3.1)
Pour nos trois profiles :
Vitesse d’impression de la jupe/bordure = Vitesse de la couche initiale (défaut Cura2.3.1) soit 30mm/s
=> RAS
Vitesse Z maximale = 0 (utilisation de la valeur de la valeur par défaut du firmware)
#define DEFAULT_MAX_FEEDRATE {500, 500, 4, 25}
Ce qui signifie que les valeurs maximum supporté par le firmware sont :
Donc cette valeur Z maximal = 4 (mais ce n’est pas la peine de la modifier, bien qui cela ne générerait pas d’erreur)
(Je pense que l’on peut passer à 6 dans le cas du remplacement des tiges filetés par des tiges trapézoïdale, faudra aussi penser à modifier cette valeur dans le firmeware =6 et à indiquer une valeur inférieure dans les profiles de Cura 2.3.1 afin de pouvoir ajuster à 4, 5 ou 6)
Les quatre dernières paramètres : (bien que fort intéressant pour les deux derniers)
• Nombre de couches plus lentes
• Egaliser le débit de filament
• Activer le contrôle d’accélération
• Activer le contrôle de saccade
=> RAS
Conclusion :
C’est bon pour cette partie.
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.
Tout d’abord bravo pour ce projet qui permet d'utiliser les réglages sans avoir à eplucher de trop nombreux posts de forums et recomposer une configuration.
Serait-il envisagé d'avoir une configuration pour la version 2.4 de cura ?
Actuellement j'ai testé sous ubuntu et j'ai l'erreur suivante quand je choisi DiscoEasy200 :
Unable to find a quality profile for this combination.
Default settings will be used intead.
Et du coup, il n'est pas possible de l'utiliser, aucun profil n'est sélectionné ou sélectionnable
Info de jpg35 :
J'ai comparé le fichier XML de Cura by Dagoma:
Il y a deux sections, voici la première : ;______________________________________________________________________________________________________________
;Definition de la retraction et de la premiere couche
;______________________________________________________________________________________________________________ <Config_Adv>
<retraction_speed>50</retraction_speed>
<retraction_amount>3.5</retraction_amount>
<bottom_thickness>0.26</bottom_thickness>
<layer0_width_factor>100</layer0_width_factor>
<object_sink>0</object_sink>
<cool_min_layer_time>10</cool_min_layer_time>
<fan_enabled>True</fan_enabled>
</Config_Adv>
Et les corrections que je propose pour les profiles de Cura 2.3.1:
<retraction_speed>50</retraction_speed>
il faut rajouter la ligne suivante a nos 3 profiles de Cura 2.3.1
retraction_speed = 50 (de base c'était déja le cas, mais autant la figer)
<retraction_amount>3.5</retraction_amount>
Degré supplémentaire de rétractation primaire:
qui doit génére "G1 F3000 E-3.5" après la phase d'initialisation dans le fichier "dagoma0.g"
retraction_extra_prime_amount = 3.5 (de base il y avait 0)
<bottom_thickness>0.26</bottom_thickness>
Normalement c'est un enfant de "Bottom/Top thickness" qui reprend cette valeur.
Bottom thickness (mm):
Détermine la hauteur de la couches imprimées sur le fond de l’objet.
Cette valeur doit toujours être un multiple de la hauteur de couche (x2 ou x3).
dans Cura 2.3.1: 1mm par défaut soit 5 couches en mode rapide et 10 couches en mode fin
à mon sens dans nom modèle par defaut
la valeur de 0.26 de CbD me parait étrange.
Si quelqu'un à une idée ?
<layer0_width_factor>100</layer0_width_factor>
J'ai lu un message sur le net où cette valeur devrait en faite être à 200
mais de toute facon, je ne retrouve pas ce paramètre dans Cura 2.3.1
Si quelqu'un à une idée ?
<object_sink>0</object_sink>
Si quelqu'un à une idée ?
<cool_min_layer_time>10</cool_min_layer_time>
cool_min_layer_time = 10 (de base c'était déja le cas, mais autant la figer)
<fan_enabled>True</fan_enabled>
cool_fan_enabled = true (de base c'était déjà le cas, mais autant la figer)
Pendant que j'y suis, je ne sais pas si c'est problématique, mais le nom de fichier dans la configuration est dagoma_discoeasy200_plateform.stl alors que le nom du fichier dans le dépot est dagoma_discoeasy200_plateform.STL
« Vitesse d’impression du dessus/dessous :
Par défaut = Vitesse d’impression divisé par 2
DAGOMA avait fait des modifications à ce sujet et sont bien répercutées dans nos profiles.
D’une manière générale les réglages DAGOMA sont :
Cela doit être lié aux tiges filetées => normalement on n’utilise pas de tige filetée sur une imprimante 3D, mais des tiges trapézoïdales.
J’attends une paire de vis trapézoïdale => je prends note pour faire un profile spécifique
Conclusion :
C’est bon pour cette partie.
Tout d'abord merci pour votre excellent travail , j'ai trouver un petit bug : impossible pour d'imprimer des support d'impression que se soit :" en contact avec plateau " ou " partout " . impossible d'en avoir .
Avez vous ca chez vous ?
Merci d'avance
J’ai compris, avec un peu de retard, que tu avais définis un maximum de paramètre dans le fichier JSON => Mais certains ne fonctionnent pas.
(Je pensais que la définition était uniquement dans le fichier CFG, c’est pour cela que je suis parti comme un « boulet de canon » pour te donner les différents éléments dans mes posts « brutaux ».)
Exemple :
J’ai fait un essai en mettant la ligne suivante dans le dagoma_discoeasy200.def.json
"cool_fan_speed_min": { "default_value": 50 }
Qui correspond à : (pour la même définition dans un profils de personnalisation CFG
cool_fan_speed_min = 50
=> Ça ne marche pas
Il faudrait que tu rajout à ton fichier de suivi :
Que ce paramètre X est défini
• Soit dans le fichier dagoma_discoeasy200.def.json
• Soit dans les trois profile type discoeasy200_rapide.inst.cfg
Il est donc nécessaire de vérifier la prise en compte de tous les paramètres que tu as défini dans dagoma_discoeasy200.def.json => l’a tu fais de ton coté
Peut-on faire un fichier de suivi (la vérification) pour ne pas faire la même chose en même temps afin d’être plus efficace ?
Suite info de jpg35
Pour la deuxième section : "Definition des caracteristiques du support"
C'est en court, voici déjà les premiers éléments :
<retraction_min_travel>1.5</retraction_min_travel>
retraction_min_travel = 1.5 (de base il y avait 0.8)
<retraction_combing>True</retraction_combing>
Si quelqu'un à une idée ?
<retraction_minimal_extrusion>0.02</retraction_minimal_extrusion>
Si quelqu'un à une idée ?
<retraction_hop>0</retraction_hop>
<skirt_line_count>2</skirt_line_count>
<skirt_gap>3</skirt_gap>
<skirt_minimal_length>150</skirt_minimal_length>
<fan_full_height>0.5</fan_full_height>
A mon sens, il ne faut pas modifier ces trois valeurs qui etait identique pour CbD,
or dans Cura2.3.1 est sont spécifique à chaque profile.
et il y a déja des spécificités entre nos trois modèles.
<fan_speed>50</fan_speed>
cool_fan_speed_min = 50
<fan_speed_max>100</fan_speed_max>
cool_fan_speed_max = 100
<cool_min_feedrate>20</cool_min_feedrate>
Je comprends la vitesse minimal de fonctionnement du ventillateur
Dans Cura 2.3.1, ce semble fonctionner différement puisqu'il y les paramètre:
Durée minimale d'un couche (ce qui ralentie la vitesse d'impression !)
Vitesse minimal (ce qui empèche de trop ralentir)
<cool_head_lift>False</cool_head_lift>
Je pense, mais pas certain
cool_lift_head = flase (C'etait déja la valeur par defaut dans Cura 2.3.1)
<solid_top>True</solid_top>
support_enable = flase
<solid_bottom>True</solid_bottom>
Je laisse tomber, les supports c'est de toute manière du mode avancé.
Fin: Je bosse sur le reste.
En me battant avec les emplacements personnalisables sous linux cf Ultimaker/Cura#847 je me suis rendu les réglages dans ce dépôt concernaient la discoeasy200 alors que j'ai une discovery200.
1ere question : est-ce que ces réglages sont valides aussi pour la discovery200 ?
2ème remarque : serait-il possible d'avoir aussi la discovery200 dans ce dépot ? Par exemple en faisant des extractions de https://github.com/dagomafr/Cura_by_dagoma/ (notamment le stl utilisable tel quel : https://github.com/dagomafr/Cura_by_dagoma/blob/master/resources/meshes/Discovery_platform.stl )
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.