medmed Posté(e) Octobre 26, 2021 Partager Posté(e) Octobre 26, 2021 (modifié) L'aventure continue avec l'écran TFT sur ma Geeetech A10. J'ai pensé qu'il serait intéressant de partager la façon de faire pour avoir les objets en 3D sur l'écran TFT, plutôt qu'une liste de noms. Je ne sais pas si je suis très clair dans mon propos ? Des photos valent mieux qu'un long discours. Liste des noms de la carte SD Liste en 3D de la carte SD C'est quand même plus sympa, non ? Surtout si l'on a plusieurs dizaines d'objets sur la carte SD. En 3D on repère bien plus facilement ce qu'on l'on a mis dans la carte il y a 6 mois, avec parfois un nom pas très explicite. Les objets 3D sont possibles depuis les versions du firmware TFT Vx.x.27. La dernière version étant (pour mon écran TFT43) V3.0.27 Ceci fonctionne pour tous les écrans TFT - 24/28/35/43/50/70. 1- Il faut bien évidement mettre a jour le firmware de l'écran TFT avec la dernière version ---> https://github-com.translate.goog/bigtreetech/BIGTREETECH-TouchScreenFirmware?_x_tr_sl=en&_x_tr_tl=fr&_x_tr_hl=fr&_x_tr_pto=nui,op 2 - Installer le plugin "Bigtree3DPlugin Suit" dans le dossier plugins de Cura (version 10 ou supérieur) ---> https://github.com/bigtreetech/Bigtree3DPluginSuit Pas encore testé avec d'autres trancheurs. 3 - Désactiver dans le menu TFT l'option "Fichier en mode liste" Et c'est tout ! Heuu, non c’est pas tout. J'ai oublié de parler de comment faire avec Cura . Mais c'est tellement simple. Une fois le plugin installé dans Cura, une nouvelle option apparait au moment de sauvegarder le Gcode . Modifié (le) Octobre 27, 2021 par medmed 1 1 Lien vers le commentaire Partager sur d’autres sites More sharing options...
PPAC Posté(e) Octobre 27, 2021 Partager Posté(e) Octobre 27, 2021 Salutation ! Merci pour ce sujet ! J'ai de la chance je n'ai pas u a mettre a jour mon firmware d'écran et cela fonction nickel Je me dit que je vais tenter de décortiquer le greffon, je voudrais bien savoir ajouter/modifier moi même les vignettes pour avoir une prévisualisation de mes "vieux" fichiers .gcode tranché avent la mise en place du greffon. Mais pour le moment je reste perplexe sur le ré encodage des pixels dans https://github.com/bigtreetech/Bigtree3DPluginSuit/blob/master/Bigtree3DPlugin/Bigtree3DStore.py Il va me falloir réviser le codage d'un pixel dans une image avant d'arriver a utiliser les vignette de mon navigateur de fichier généré avec https://github.com/Spiritdude/Nautilus_Thumbnailer_GCode ... Encore merci ! Lien vers le commentaire Partager sur d’autres sites More sharing options...
medmed Posté(e) Octobre 28, 2021 Auteur Partager Posté(e) Octobre 28, 2021 (modifié) SI tu as encore les stl ,il suffit de faire vite fait un tranchage (peu importe les réglages)avec Cura juste pour avoir l'encodage de l'objet 3D, qui est toujours en tête du Gcode sous cette forme. L’entête du codage de l'objet commence toujours par " ;00460046 " Et se termine toujours par " ; bigtree thumbnail end " Il suffit de recopier se bloc et de le coller en tete du Gcode à modifier. Exemple du cube XYZ bigtree.txt Modifié (le) Octobre 28, 2021 par medmed 1 Lien vers le commentaire Partager sur d’autres sites More sharing options...
PPAC Posté(e) Octobre 28, 2021 Partager Posté(e) Octobre 28, 2021 (modifié) Merci Après un peux de bidouille, j'arrive a générer en langage java une entête d’après une image et cela semble fonctionner avec mon écran. Exemple de résultat (il n'y a que les vignettes. Pour les 3, "M118 ..." là je sèche car je n'ai pas encore poussé a lire un fichier .gcode pour avoir les bonne valeurs. ) shadoks_pas_de_pb_250.thumb.png.9c746c3055a0614e364ab064ce8a34be.png_.gcode Pour ceux qui veulent, un extrait de mon code java (pas mis au propre mais qui semble fonctionnel) Citation static String sBigTreeThumbnailEnf = "; bigtree thumbnail end"; /** * Generer une entete vignette BBT (un recodage en hexa en utf-8 de plusieur taille d'image) d'aprés un fichier image. * https://github.com/bigtreetech/Bigtree3DPluginSuit/blob/923662e8d553b04c575452f7b4a7635ae84145c5/Bigtree3DPlugin/Bigtree3DStore.py#L111 * <code> qrgb = qrgb + (hex(((data & 0x00F80000) >> 8 ) | ((data & 0x0000FC00) >> 5 ) | ((data & 0x000000F8) >> 3 ))[2:]).rjust(4,'0')</code> * * <code>;00460046 * ;0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001060292149c25a637b2393c4ac659be439820000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 * ;... * ; bigtree thumbnail end * </code> * * <p> * TODO usage de gcode2png TODO couleur de font ... si image avec une * transparence, là c'est en noir. TODO "tag" des images pour bien * identifier les vignettes utilisé... * * @param sImageFilePath le chemin d'un fichier image (format de fichier * prise en charge par ImageIO donc normalement du jpg, tiff, bmp, gif, png, * tif, wbmp, jpeg) * @param sOutputGcodeFilePath un nom de fichier de sortie ... (attention * ecrasé si existe, encodé en UTF8 ) * @throws IOException */ private static void imageToBigTree3DStoreGcodeHeaderFile(String sImageFilePath, String sOutputGcodeFilePath) throws IOException { // // read an image BufferedImage image = ImageIO.read(new File(sImageFilePath)); //un fichier de sortie FileWriter fw = new FileWriter(new File(sOutputGcodeFilePath), Charset.forName("utf-8")); /* Cf: config.h ... # extruder_M2O = no # backcolor_red(0-255) = 0 # backcolor_green(0-255) = 0 # backcolor_blue(0-255) = 0 70,70 95,80 95,95 160,140 200,200*/ Dimension[] dims = {new Dimension(70, 70), new Dimension(95, 80), new Dimension(95, 95), new Dimension(160, 140), new Dimension(200, 200) }; for (Dimension d : dims) { // resize image to // int dimW = 70; // int dimH = 70; int dimW = d.width; int dimH = d.height; Image scaledImage = image.getScaledInstance(dimW, dimH, Image.SCALE_DEFAULT); BufferedImage convertToBufferedImage = convertToBufferedImage(scaledImage); //System.out.printf(":: %dx%d\n", convertToBufferedImage.getWidth(), convertToBufferedImage.getHeight()); //System.out.printf(":: ;%04x%04x\n", convertToBufferedImage.getWidth(), convertToBufferedImage.getHeight()); fw.write(String.format(";%04x%04x\r\n", convertToBufferedImage.getWidth(), convertToBufferedImage.getHeight())); for (int posH = 0; posH < dimH; posH++) { String res = ""; for (int posW = 0; posW < dimW; posW++) { int tmpPixel = convertToBufferedImage.getRGB(posW, posH); //qrgb = qrgb + (hex(((data & 0x00F80000) >> 8 ) | ((data & 0x0000FC00) >> 5 ) | ((data & 0x000000F8) >> 3 ))[2:]).rjust(4,'0') int tmpPixelRecoded = ((tmpPixel & 0x00F80000) >> 8) | ((tmpPixel & 0x0000FC00) >> 5) | ((tmpPixel & 0x000000F8) >> 3); res += String.format("%04x", tmpPixelRecoded); } //res += "\r\n"; //System.out.printf("%d:: ;%s\n",posH,res); fw.write(String.format(";%s\r\n", res)); } } fw.write(String.format("%s\r\n", sBigTreeThumbnailEnf)); fw.write(String.format("\r\n")); // fw.flush(); fw.close(); } /** * Convert Image to BufferedImage. Source : * https://mkyong.com/java/how-to-write-an-image-to-file-imageio/ * * @param img * @return */ public static BufferedImage convertToBufferedImage(Image img) { if (img instanceof BufferedImage) { return (BufferedImage) img; } // Create a buffered image with transparency BufferedImage bi = new BufferedImage( img.getWidth(null), img.getHeight(null), BufferedImage.TYPE_INT_ARGB); Graphics2D graphics2D = bi.createGraphics(); graphics2D.drawImage(img, 0, 0, null); graphics2D.dispose(); return bi; } /** * list out all the image file supported formats. Source : * https://mkyong.com/java/how-to-write-an-image-to-file-imageio/ */ private static void listImageTypeSupported() { String writerNames[] = ImageIO.getWriterFormatNames(); Arrays.stream(writerNames).forEach(System.out::println); } Modifié (le) Octobre 28, 2021 par PPAC 1 1 Lien vers le commentaire Partager sur d’autres sites More sharing options...
medmed Posté(e) Octobre 30, 2021 Auteur Partager Posté(e) Octobre 30, 2021 Effectivement, je ne sais pas comment tu fais , mais ça marche... 1 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Créer un compte ou se connecter pour commenter
Vous devez être membre afin de pouvoir déposer un commentaire
Créer un compte
Créez un compte sur notre communauté. C’est facile !
Créer un nouveau compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant