Aller au contenu

Filament ABS

TFT Bigtreetech - Objet en 3D sur l'ecrant plutot qu'une liste de noms de la carte SD -


Messages recommandés

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

mod2.jpg.4f3d857819c2ca7af1b42a12c04c8320.jpg

Liste en 3D  de la carte SD

mod4.jpg.6981b98023ca22dcca2bbc7b4c495fa0.jpg

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"

mod5.jpg.74a6436d4e040bb9ea39647c257c9dbc.jpg

Et c'est tout ! 

mod1.jpg.1a027d2ffb288015d219f2b2621806ba.jpg

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 . 

mod7.jpg.5d07ac11c6e366ebdef73b7ac639fe9f.jpg

Modifié (le) par medmed
  • J'aime 1
  • +1 1
Lien vers le commentaire
Partager sur d’autres sites

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

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) par medmed
  • Merci ! 1
Lien vers le commentaire
Partager sur d’autres sites

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) par PPAC
  • J'aime 1
  • +1 1
Lien vers le commentaire
Partager sur d’autres sites

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 compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...