Home

Open Maker Machine +

Choix logiciel de dessin


Mes besoins étant assez simple et uniquement en 2D, j'ai testé Inkscape et LibreCAD, tous les deux gratuits open source et fonctionnant à la fois sur Mac, Linux et PC.

J'utilise Linux pour contrôler ma commande numérique.

J'utilise un Mac pour la préparation avec une partition Linux sous VirtualBox.

J'ai fini par opter pour LibreCAD qui permet de dessiner des plans d'usinage à la souris ou via une fenêtre de commande très pratique.

C'est cette fonction de contrôle par ligne de commande qui m'a séduit en plus du fait que LibreCAD est natif sur Mac.

Exemple pour créer des lignes vous donnez la commande "l" ou "li", pour créer une polyligne vous donnez la commande "pl". Puis vous donnez les couples de coordonnées X,Y un à un.

Exemple pour faire un carré : pl   0,0   0,10   10,10   10,0   0,0.

Pour un cercle vous donnez la commande "ci", puis les coordonnées X,Y du centre et la valeur du rayon, etc pour tous les types de commandes.

Après chaque couple de coordonnées, il faut faire un CR retour chariot (Carriage return en anglais) pour valider le couple de coordonnées.

Même pour des objets relativement simples, le nombre de coordonnées peut-être important. Exemple pour cette simple pièce:


30
Photo 30

Ce sera :

li 0,0 0,24 115,30 115,36 135,36 135,30 297,34 297,40 317,40 317,0 317,-40 297,-40 297,-34 135,-30 135,-36 115,-36 115,-30 0,-24 0,0


En cas d'erreur, il faut corriger via les menus de LibreCAD, ce qui demande 5 ou 6 clics et taper les nouveaux couples de coordonnées.

J'ai trouvé, à l'usage, que c'était plus rapide d'écrire toutes les coordonnées dans un fichier texte et de corriger dans le fichier texte.

Malheureusement, LibreCAD ne sait pas exécuter un bloc de commande. Il sait le faire qu’une par une.

J'ai donc écrit un programme qui génère les commandes de simulation du clavier pour envoyer les commandes LibreCAD en bloc vers LibreCAD.

Pour cela j'ai utilisé LiveCode qui est un logiciel de programmation commun sur PC, Mac et Linux et gratuit pour le particulier. Il est très simple, proche de l'anglais courant. Il n'y a donc pas de souci pour l'utiliser, quel que soit votre environnement.

Par contre, mon programme doit générer un code spécifique à chaque environnement PC, Mac et Linux.

Étant sur Mac, mon programme LiveCode génère des commandes AppleScript.

Pour Window, les équivalents d'AppleScript sont à chercher dans des programmes comme Autolt, AutoHotkey, VBscript.

Il n'y a que quelques mots clefs à modifier dans mon programme LiveCode pour ce faire (keystroke, key code 53, click at).

Voyons cela en détail.



Méthodologie

J'écris sur le plan au crayon les coordonnées que je mesure. Exemple pour cette pièce. Notez, comme c'est symétrique, j'ai marqué que la partie haute dans cet exemple.


10
Photo 10 vue partielle


Puis je crée mon fichier texte avec comme nom le nom de l'objet, ici, F5.txt.


20
Photo 20


Je lance le programme LiveCode qui génère un fichier AppleScript avec comme nom F5-appleScript.

Et j'exécute le fichier F5-appleScript qui en moins d'une seconde fait le dessin.



40
Photo 40


Le fichier AppleScript a cet allure


tell application "LibreCAD" to activate

tell application "System Events"

tell process "LibreCAD"

keystroke "l"

keystroke return

keystroke "0,0"

keystroke return

keystroke "0,24"

keystroke return

keystroke "115,30"

keystroke return

keystroke "115,36"

keystroke return

etc, etc,........



Le programme LiveCode

C'est de l'Anglais courant comme programmation.

Pour générer le code pour Window, il n'y a que quelques lignes à modifier (keystroke, key code 53, click at) pour générer des bonnes commandes spécifiques.



local resultat

on mouseUp

put empty into resultat -- final result

put "tell application " & quote & "LibreCAD" & quote & " to activate" & CR after resultat

put "tell application " & quote & "System Events" & quote & CR after resultat

put "tell process " & quote & "LibreCAD" & quote & CR after resultat

-- if the clipboard is "text" then put the clipboardData into leText

-- else clipboardDataNotText

answer file "Select text file via the Finder"

if the result is not "cancel" then put it into inputFile --theFilePath

--/Users/alg/Documents/CNC/Caudron xx/CaudronF2.txt

put inputFile into outputFile

-- Create outPut fileName & path

put offset (".txt", outputFile) into offsetPosition

if offsetResult is 0 then answer ".txt not found"

delete char (offsetPosition) to (offsetPosition+4) of outputFile

put "-appleScript.scpt" after outputFile

open file inputFile for read

if the result is "Can't open that file" then boom

read from file inputFile until EOF

put it into leText

close file inputFile


repeat for each line oneLine in leText -- line end by CR

if oneLine is empty then

put "-- " & CR after resultat -- Bloc separator

else

if oneLine contains "l" or "li" then newBlocLine

if oneLine contains "ci" then newBlocCircle -- x,y & R

put "keystroke " & quote & oneLine & quote & CR after resultat

put "keystroke return" & CR after resultat

end if

end repeat


put "click at {150, 150}" & CR after resultat

put "key code 53" & CR after resultat

put "key code 53" & CR after resultat

put "key code 53" & CR after resultat

put "end tell " & CR after resultat

put "end tell " & CR after resultat

put resultat

set the clipboardData["text"] to resultat

-- Create Output file

open file outputFile for write

if the result is "Can't open that file" then boom2

write resultat to file outputFile

close file outputFile

end mouseUp


on newBlocLine

put "-- " & CR after resultat

put "-- new bloc of lines" & CR after resultat

end newBlocLine


on newBlocCircle

put "-- " & CR after resultat

put "-- new bloc of circle" & CR after resultat

end newBlocCircle


on boom

answer "Can't open input file"

exit hypercard

end boom


on boom2

answer "Can't open output file"

exit hypercard

end boom2



Notez les particularités suivantes (non obligatoire, mais qui font économiser 4 clics) : Pour quitter le programme AppleScript et retourner à LibreCAD automatiquement, il faut cliquer dans la fenêtre LibreCAD :

put "click at {150, 150}" & CR after resultat


Et, il faut trois caractères ESC « "key code 53" » pour valider LibreCAD et sortir de la fonction.





Téléchargez le code seul de mon programme LiveCode à cette adresse : LibreCADgene


ou

Téléchargez une pile LiveCode avec mon programme à cette adresse : Pile LibreCADgene





Les limites de la méthode

Toutes les commandes n'ont pas leur équivalant en code. Par exemple, il n'y a pas de commande pour changer de calque.

Les commandes ayant besoin de choix par clic peuvent être préparées, mais pas exécutées.

Par exemple, pour faire une ellipse, vous préparez les droites qui la bordent par les commandes ligne verticale (ver) et ligne horizontale (hor). ver   10,10   20,10   hor   20,30   20,0  

Ou vous dessinez un rectangle complet :   pl   75,35   129,35   129,20   75,20






Merci
SignatureZapfino