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:
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.
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.
Puis je crée mon fichier texte avec comme nom le nom de l'objet, ici, F5.txt.
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.
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,........
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
Téléchargez une pile LiveCode avec mon programme à cette adresse : Pile LibreCADgene
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