Aller au contenu

Enregistrer une partie du dessin par capture


gepetto

Messages recommandés

Hello a tous.

 

Je me suis lancer dans un projet un peu fou qui est la réalisation d'une table de découpe plasma en CNC.

je suis satisfait de ma réalisations.

 

Je vous ferai parvenir une vidéo.

 

Ma question est en relation indirect aà ma réalisations.

 

Pour pouvoir générer mon G-Code (fichier de paramètre de la CNC) et optimiser l'utilisation de la tôle a découper j'utilise un programme de "nesting" optimisations à plat.

 

Le truc est qu'il faut pouvoir y donner un fichier par pièces a découper.

 

Actuellement j'utilise la commande enregistrer sous, avec l'option sélectionner par capture, et je renomme le ficher manuellement.

 

Ca marche bien, mais je pense que l'on peu faire mieux et plus rapide.

 

Il serai extra de pouvoir utiliser le texte que je met au dessus de la pièces comme nom de fichier.

Il ne s'agit pas de bloc.

La pièces à découper est constituer de 2 calques

Il me faut enregistrer le fichier de sortie en dxf 2013

 

Je vous remercie de vous propositions

 

Amicalement Gepetto

 

PS je voulais joindre un fichier mais j'ai une erreur du coups

 

https://we.tl/t-8sSjQbEHZ9

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

 

la commande "enregistrer sous" avec l'option "sélectionner" et le type de fichier au format dxf, comme tu le fais, mais dans un lisp qui te demandes au préalable de cliquer sur un texte qui te donnera le nom du fichier et c'est le lisp qui choisit les options de la commande saveas

 

Un truc comme ça ?

 

Amicalement

Vincent

C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme)

C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

 

la variable qui gère le format d'enregistrement s'appelle DefaultFormatForSave.

 

L'idée c'est de faire un lisp qui récupère le format courant en faisant

(setq oldSaveFormat (getenv "DefaultFormatForSave"))

 

puis on définit qu'on veut sauvegarder en dxf 2013, ce qui correspond au code 61

(setenv "DefaultFormatForSave" "61")

 

Puis on enregistre en faisant le (command "_saveas" ...) après avoir pioché le nom de fichier dans le texte et après avoir vérifié que le fichier n'existe pas déjà.

 

Puis on remet la variable d'environnement à sa valeur initiale

(setenv "DefautFormatForSave" oldSaveFormat)

 

Faut encore trouver le nom de la variable qui gère la possibilité d'enregistrer une partie du dessin

 

Amicalement

Vincent

C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme)

C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)

Lien vers le commentaire
Partager sur d’autres sites

j'ai oublié de préciser qu'il faut absolument respecter la casse dans "DefaultFormatForSave", sinon le getenv ne trouve rien !

 

Amicalement

Vincent

C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme)

C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)

Lien vers le commentaire
Partager sur d’autres sites

(defun MsgBox (Titre Bouttons Message / Reponse WshShell)
; Valeur de Bouttons
; 0 = vbOKOnly Affiche le bouton OK uniquement.
; 1 = vbOKCancel Affiche les boutons OK et Annuler.
; 2 = vbAbortRetryIgnore Affiche le bouton Abandonner, Réessayer et Ignorer.
; 3 = vbYesNoCancel Affiche les boutons Oui, Non et Annuler.
; 4 = vbYesNo Affiche les boutons Oui et Non.
; 5 = vbRetryCancel Affiche les boutons Réessayer et Annuler.
; 16 = vbCritical Affiche l'icône Message critique.
; 32 = vbQuestion Affiche l'icône Requête d'avertissement.
; 48 = vbExclamation Affiche l'icône Message d'avertissement.
; 64 = vbInformation Affiche l'icône Message d'information.
; 0 = vbDefaultButton1 Le premier bouton est le bouton par défaut.
; 256 = vbDefaultButton2 Le deuxième bouton est le bouton par défaut.
; 512 = vbDefaultButton3 Le troisième bouton est le bouton par défaut.
; 768 = vbDefaultButton4 Le quatrième bouton est le bouton par défaut.
; 0 = vbApplicationModal Boîte de dialogue modale. L'utilisateur doit répondre au message affiché dans la zone de message avant de pouvoir continuer de travailler dans l'application en cours.
; 4096 = vbSystemModal Modal système. Toutes les applications sont interrompues jusqu'à ce que l'utilisateur réponde au message affiché dans la zone de message.

; Valeur renvoyée
; 1 = vbOK OK
; 2 = vbCancel Annuler
; 3 = vbAbort Abandonner
; 4 = vbRetry Réessayer
; 5 = vbIgnore Ignorer
; 6 = vbYes Oui
; 7 = vbNo Non

(setq WshShell (vlax-create-object "WScript.Shell"))
(setq Reponse (vlax-invoke WshShell 'Popup Message 0 Titre (itoa Bouttons)))
(vlax-release-object WshShell)
Reponse
)

(defun c:savedxf (/ txt)
 (vl-load-com)
 (setq txt (car (entsel "\nSélectionner le titre : ")))
 (setq txt (cdr (assoc 1 (entget txt))))
 (setq txt (substr txt 1 (vl-string-position 92 txt)))
 (setq txt (strcat (getvar "DWGPREFIX") txt ".dxf"))

 (if (findfile txt)
   (if (= (msgbox "Fichier existant" (+ 4 48 256) (strcat "Ecraser " txt " ?")) 6)  ;; 4 affiche boutons oui non + 48 icone message d'avertissement + 256 non par défaut
     (command "_SaveAs" "_DXF" "_v" "2013" "_o" (ssget) "" "" txt "_y")  ;; si oui j'écrase, sinon rien
   )
   (command "_SaveAs" "_DXF" "_v" "2013" "_o" (ssget) "" "" txt)  ;; le fichier n'existe pas, je le crée
 )
 (princ)
)

 

finalement, je n'utilise que les options de la commande saveas, qu'on peut aussi voir sur la ligne de commande en basculant la variable filedia à 0. Ne pas oublier de la remettre à 1 quand on a fini d'explorer les différentes options disponibles en ligne de commande.

 

Amicalement

Vincent

C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme)

C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)

Lien vers le commentaire
Partager sur d’autres sites

Hello,

 

Merci beaucoup.

Désolé de ma réponses tardive, et Encore Merci de m'avoir envoyer le lisp par mail.

Ca fonctionne du tonnerre.

 

C'est classe que le nouveau fichier crée s'enregistre a la même place que le fichier sources, ce

qui évite de devoir a chaque fois choisir l'emplacement du nouveau fichier.

 

J'ai 1 questions.

 

Si je comprend bien, le nom du fichier prend en compte la 1er ligne du texte.

C'est bien juste?

 

Je te remercie encore

Lien vers le commentaire
Partager sur d’autres sites

J'ai 1 question.

 

Si je comprend bien, le nom du fichier prend en compte la 1ère ligne du texte.

C'est bien juste?

 

C'est bien ça, cela prend le texte jusqu'à rencontrer le code ascii 92, en supposant que le texte aura toujours cette forme. S'il n'y a qu'une seule ligne, cela ne marchera pas en l'état actuel du code.

 

C'est classe que le nouveau fichier créé s'enregistre à la même place que le fichier source, ce qui évite de devoir à chaque fois choisir l'emplacement du nouveau fichier.

c'est le (getvar "DWGPREFIX") qui nous permet de disposer de cette information.

 

Merci de m'avoir envoyer le lisp par mail.

Compte tenu que CadXP était plus ou moins en panne ces derniers jours et que nous avons déjà communiqué par mail par le passé, j'ai estimé que c'est ce qu'il fallait faire !

 

Amicalement

Vincent

C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme)

C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)

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...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité