Aller au contenu

Détacher une image


hiridimah
 Partager

Messages recommandés

Hello

 

A priori le Script est tres simple !

 

Commande: -XREF

Entrez une option [?/Lier/déTacher/Chemin/TYpechemin/Décharger/Recharger/Superposer/Attacher] : T

Entrez le(s) nom(s) de Xref à détacher: ENTCADRE

 

Puis re-enregistrer puis ouvrir le DWG suivant ...

 

LA SANTE, Bye, lecrabe

  • Upvote 1

Autodesk Expert Elite Team

Lien vers le commentaire
Partager sur d’autres sites

Nous l'avons bien compris. Ici Lecrabe parle autant de la procédure à suivre manuellement que de l'algorythme à suivre pour le coder. Le fait est que, sauf exception mais ce n'est pas le cas ici, si c'est faisable manuellement en ligne de commande c'est bien plus facile à coder. Non pas que ce soit dans mes compétence pour autant.

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 2018 sous Windows 10

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

 

Effectivement, en Lisp ce n'est pas facile

si on ne veut pas ouvrir les dessins, ObjetDBX et VLA oblige.

Donc pour détacher les images des dessins contenus dans un dossier

(vl-load-com)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun c:dtimg (/ axdoc lf dir)
   (if (setq dir (getdir) lf (vl-directory-files dir "*.dwg" 1))
       (foreach f lf
           (vlax-for obj (vla-get-modelspace (setq axdoc (getaxdbdoc (strcat dir f))))
               (if (= (vla-get-objectname obj) "AcDbRasterImage")
                   (vla-delete 
                       (vla-item 
                           (vla-item (vla-get-dictionaries axdoc ) "ACAD_IMAGE_DICT") 
                           (vla-get-name obj)
                       )
                   ) 
               )
           )
           (vla-saveas axdoc (strcat dir f))
           (vlax-release-object axdoc)
       )
   )
(princ)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun getdir( / shell rep)
 (setq shell (vlax-create-object "Shell.Application")
        rep (vlax-invoke shell 'browseforfolder 0 "Sélectionnez le dossier" 512 "")
 )
 (vlax-release-object shell)
 (strcat (vlax-get-property (vlax-get-property rep 'self) 'path) "\\")
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun getaxdbdoc (filename / axdbdoc release)
 (setq axdbdoc
    (vlax-create-object
      (if (< (setq release (atoi (getvar "ACADVER"))) 16)
        "ObjectDBX.AxDbDocument"
        (strcat "ObjectDBX.AxDbDocument." (itoa release))
      )
    )
 )
 (if (vl-catch-all-apply 'vla-open (list axdbdoc filename))
   (not (vlax-release-object axdbdoc))
   axdbdoc
 )
)

 

Étrangement, la méthode vla-detach ne concerne pas les images

et je n'ai pas réussi à utiliser vla-remove pourtant prévue pour effacer les entrées dans un dictionnaire.

 

Cela détache les images dans l'espace objet.

ATTENTION, pas de retour en arrière possible.

...plus je sais où je suis, moins je sais où je vais....

Extrait d'une double interview simultanée d'une particule élémentaire.

Lien vers le commentaire
Partager sur d’autres sites

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.

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.

Chargement
 Partager

×
×
  • Créer...