Aller au contenu

Enregistrement pièces par capture sur plan.


nicolas2

Messages recommandés

Bonjour,

Est-t'il possible d'enregistrer une partie d'un plan par capture ?

Pour être clair:

Un plan avec 1 rond + 1 cercle + 1 triangle.

Je sélectionne le rond et demande de l'enregistrer sous X

Je sélectionne le cercle et demande de l'enregistrer sous Y

Je sélectionne le triangle...

Pour l'instant, j'enregistre 1 fois le plan de départ en le nommant rond + 1 fois en le nommant cercle + 1 fois en le nommant triangle. J'ouvre les 3 plans, efface chaque pièce pour ne garder que la pièce nommée dans le titre et réenregistre.

Merci pour votre aide.

Lien vers le commentaire
Partager sur d’autres sites

Salut.

 

Tu peut faire ça en passant par WBLOC.

Je suis dysorthographique alors lâchez-moi les basques avec ça, je fait déjà de mon mieux.
Membre d'Extinction Rebellion, car pour sauver le monde il n'est jamais trop tard, amour et rage !
Pour écrire un vraie point médian (e·x·e·m·p·l·e) [Alt + 0183] ou ajout d'un raccourci clavier personnalisé (ex. [AltGr + ;])

Utilisateur d'AutoCAD 2021 sous Windows 10

Lien vers le commentaire
Partager sur d’autres sites

Merci Aleck,

Je ne connaissais pas WBLOC.

En fouillant j'ai trouvé un LISP de Gile :

(defun c:ss2dxf (/ path file ss)

 (setq dir "")

 (while (not (vl-file-directory-p dir))

   (if (= ""

          (setq dir

                 (getstring T

                            (strcat "\nSpécifiez le chemin du répertoire: <"

                                    (getvar "DWGPREFIX")

                                    ">: "

                            )

                 )

          )

       )

     (setq dir (getvar "DWGPREFIX"))

   )

 )

 (while

   (findfile (strcat dir

                     (setq file (getstring T "\nSpécifiez le nom du fichier: "))

                     ".dxf"

             )

   )

    (princ (strcat "\n\"" file "\" existe déjà."))

 )

 (if (setq ss (ssget))

   (command "_saveas" "dxf" "_v" "2000" "_o" ss "" "16" (strcat dir file ".dxf"))

 )

Merci à vous 2.

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

 

N'ayant aucune compétence en LISP :

 

1 - Est-il possible de modifier le chemin d'enregistrement ?

Le chemin de mon plan de départ => C:\Télétravail\15877\ETUDES\Plans

Le chemin d'enregistrement => C:\Télétravail\15877\ATELIER\DXF\DXF PLASMA

En fait, garder "C:\Télétravail\15877\" et remplacer "ETUDES\Plans" par "ATELIER\DXF\DXF PLASMA"

Etant en télétravail et n'ayant pas d'accès au serveur entreprise, le "C:\Télétravail" changera à mon retour au boulot [garder seulement une partie du DWGPREFIX (?)]

 

2 - Ne pas poser la question du chemin d'enregistrement et du coup pouvoir enregistrer "à la volée" les différentes pièces.

 

Merci beaucoup pour votre aide.

Lien vers le commentaire
Partager sur d’autres sites

hello nicolas2

 

voici des lisps pour enregistrer une partie d'un fichier dwg

 

premiere étape choisir un sous répertoire ou seront enregistré les fichiers exportés

cette info est enregistrée dans ton fichier de base

 


(setcustombykey "REPERTOIRE_ORIGINAUX" "...")


;;; Commande sauve_repertoire_bloc
;;;Invite l'utilisateur à choisir un sous répertoire qui sera sauvegarder dans le fichier (boites de dialogue)

(defun c:sauve_repertoire_originaux (/ dirbox rep)
 (defun dirbox (txt / cdl rep)
   (if (setq cdl (vlax-create-object "Shell.Application"))
     (progn (and (setq rep (vlax-invoke cdl 'browseforfolder 0 txt 512 ""))
                 (setq rep (vlax-get-property (vlax-get-property rep 'self) 'path))
            )
            (vlax-release-object cdl)
     )
   )
   rep
 )
 (setq repertoireoriginaux (gc:getcustombykey "REPERTOIRE_ORIGINAUX"))
 (if (= repertoireoriginaux "...")
   (prompt "\nIL N'Y A PAS DE REPERTOIRE POUR LES ORIGINAUX :")
   (prompt (strcat "\nLA VALEUR ACTUELLE DE REPERTOIRE_ORIGINAUX EST :" repertoireoriginaux " "))
 )
 (princ)
 (princ)
 (setq rep (dirbox "CHSOISISSEZ UN REPERTOIRE OU SERONT RECHERCHES / SAUVEGARDES LES ORIGINAUX DU DESSIN."))
 (setcustombykey1 "REPERTOIRE_ORIGINAUX" rep)
 (princ)
)

(defun gc:getcustombykey (key / val)  (vl-catch-all-apply    '(lambda ()       (vla-getcustombykey (vla-get-summaryinfo (vla-get-activedocument (vlax-get-acad-object))) key 'val)     )  )  val)
(defun setcustombykey1 (key val)  (vl-load-com)  (not    (vl-catch-all-apply      '(lambda ()         (vla-setcustombykey (vla-get-summaryinfo (vla-get-activedocument (vlax-get-acad-object))) key val)       )    )  ))
(defun setcustombykey  (key val)  (vl-load-com)  (not    (vl-catch-all-apply      '(lambda ()         (vla-addcustominfo (vla-get-summaryinfo (vla-get-activedocument (vlax-get-acad-object))) key val)       )    )  ))

 

 

deuxieme etape exporter les extrait de fichiers

 

 

(defun c:fichier_extrait_fichier_repertoire_originaux ()
 (setvar "cmdecho" 0)
 (setq repertoire_originaux (gc:getcustombykey "repertoire_originaux"))
 (prompt (strcat "\nLE REPERTOIRE DES BLOCS DE L'OPERATION EST : " repertoire_originaux))
 (setq nomextraitfichier (getcfg "APPDATA/NOMEXTRAITFICHIER"))
 (setq boite "ENTRER LE NOM DU FICHIER DE SAUVEGARDE DE L'EXTRAIT ")
 (setq message "NOUVEAU NOM DE L'EXTRAIT")
 (inputbox2 boite message nomextraitfichier)
 (if (/= ret "")
   (setq nomextraitfichier ret)
 )
 (setcfg "APPDATA/NOMEXTRAITFICHIER" nomextraitfichier)
 (setq poi nil)
 (while (null poi) (setq poi (getpoint "\nPOINT DE REFERENCE DU FICHIER EXTRAIT")))
 (prompt (strcat "\nCLIQUER SUR LES OBJETS A EXTRAIRE DANS UN FICHIER"))
 (setq obj nil)
 (while (null obj) (setq obj (ssget)))
 (command-s "scu" "ez" poi "")
 (command-s "-WBLOC" (strcat repertoire_originaux "\\" nomextraitfichier ".DWG") "" poi obj "")
 (command-s "ANNULER" "")
 (command-s "scu" "p")
 (setq openfile1 (getcfg "APPDATA/openfile1"))
 (initget "oui OUI o O non NON n N")
 (setq tmp (getkword (strcat "\nVOULEZ VOUS OUVRIR LE FICHIER ENSUITE [ Oui / Non ] <" openfile1 "> : ")))
 (if tmp
   (setq openfile1 tmp)
 )
 (setcfg "APPDATA/openfile1" openfile1)
 (if (or (= openfile1 "oui") (= openfile1 "OUI") (= openfile1 "o") (= openfile1 "O"))
   (progn
      ((vla-open (vla-get-documents (vlax-get-acad-object)) (strcat repertoire_originaux "\\" nomextraitfichier ".DWG")))
   )
 )
 (princ)
)

;; InputBox (gile)
;; Ouvre une boite de dialogue pour récupérer une valeur
;; sous forme de chaine de caractère
;;
;; Arguments
;; tous les arguments sont de chaines de caractère (ou "")
;; box : titre de la boite de dialogue
;; msg : message d'invite
;; val : valeur par défaut
;;
;; Retour
;; une chaine ("" si annulation)
;;
;; Modifié par Patrick_35 pour inclure le caractère \n
;; comme retour chariot

(defun inputbox2 (box msg val / subr temp file dcl_id
                                              ;;ret
) ;; Retour chariot automatique à 50 caractères
 (defun subr (str / pos)
   (cond ((setq pos (vl-string-search "\n" str))
          (strcat ":text_part{label=\"" (substr str 1 pos) "\";}" (subr (substr str (+ 2 pos))))
         )
         ((and (< 80 (strlen str)) (setq pos (vl-string-position 32 (substr str 1 80) nil t)))
          (strcat ":text_part{label=\"" (substr str 1 pos) "\";}" (subr (substr str (+ 2 pos))))
         )
         (t (strcat ":text_part{label=\"" str "\";}"))
   )
 )
 ;; Créer un fichier DCL temporaire
 (setq temp (vl-filename-mktemp "Tmp.dcl")
       file (open temp "w")
       ret  ""
 )
 ;; Ecrire le fichier
 (write-line (strcat "InputBox:dialog{key=\"box\";initial_focus=\"val\";spacer;:paragraph{"
                     (subr msg)
                     "}spacer;:edit_box{key=\"val\";edit_width=120;allow_accept=true;}
spacer;ok_cancel;}"
             )
             file
 )
 (close file)
 ;; Ouvrir la boite de dialogue
 (setq dcl_id (load_dialog temp))
 (if (not (new_dialog "InputBox" dcl_id))
   (exit)
 )
 (set_tile "box" box)
 (set_tile "val" val)
 (action_tile "accept" "(setq ret (get_tile \"val\")) (done_dialog)")
 (start_dialog)
 (unload_dialog dcl_id)
 ;;Supprimer le fichier
 (vl-file-delete temp)
 ret
)

 

 

ca devrait te convenir

 

j'ai peut etre oublié des petits bouts de lisp

 

a+

 

Phil

Autodesk Architecture 2023 sous windows 11 64

24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal

Lien vers le commentaire
Partager sur d’autres sites

HELLO nicolas2

 

tu n'as pas a modifier le lisp

juste a les utiliser dans le bon ordre

 

tu dois avoir déja créer un sous repertoire : C:\Télétravail\15877\ATELIER\DXF\DXF PLASMA

 

 

quand tu es dans ton fichier "PLAN DE DEPART"

 

1iere etape : utiliser la commande "sauve_repertoire_originaux" pour selectionner C:\Télétravail\15877\ATELIER\DXF\DXF PLASMA

2ieme étape : utiliser la commande "fichier_extrait_fichier_repertoire_originaux"

 

a+

 

Phil

Autodesk Architecture 2023 sous windows 11 64

24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal

Lien vers le commentaire
Partager sur d’autres sites

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • 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é