Aller au contenu

Extraire les presentations


pacoje57

Messages recommandés

Bonjour,

 

Je souhaiterais savoir si il exsite un programme ou une fonction dans autocad qui permette à partir d'un plan dwg avec plusieur presentation d'extraire ces persentations pour creer x plan dwg.

 

A savoir que dans chaque presentation il y a des fenetres vers l'espace objet.

 

Merci

Lien vers le commentaire
Partager sur d’autres sites

  • 5 ans après...

Cela marche mais au préalable s'assurer qu'il n'à pas d'élément graphiques visible "lourd" (tel que MNT....)sur ta présentation car risque de bug

Pour ma part je l'utilise de temps en temps et le seul hic est qu'il te faut remettre ton plan à l'echelle, et au bon endroit (danger)

Si quelqu'un à une méthode pour l'exporter directement à l'échelle et ds le bon système, je suis preneur.

« Aide-toi, le ciel t'aidera »

Lien vers le commentaire
Partager sur d’autres sites

Salut!

pour extraire les présentaions il y a l'excelent lisp de Patrick_35.

 

 

Seule remarque dans les dwg qui sont crées (1 par onglet présentation) les calques gelés dans la fenetre Espace papier de la présentation d'origine sont dégeler dans les fichiers crées.

 

 

;;;=================================================================

;;;

;;; EXL.LSP V1.11

;;;

;;; Exporter des Présentations

;;;

;;; Copyright © Patrick_35

;;;

;;;=================================================================

 

(defun c:exl(/ act bou cal cod dbx def doc fen lay liste_lay lst lst_base nom obj res s sel val

bda *errexl*)

 

(defun *errexl* (msg)

(or (member (strcase msg) '("FUNCTION CANCELLED" ""QUIT / EXIT ABORT"" "FONCTION ANNULEE" "QUITTER / SORTIR ABANDON"))

(princ (strcat "\nErreur : " msg))

)

(vla-endundomark doc)

(setq *error* s)

(princ)

)

 

(defun bda (titre lst / affiche_txt bascule dcl dwg fic fil gab parcourir res txt val)

(defun bascule()

(if (eq gab "0")

(mode_tile "par" 1)

(mode_tile "par" 0)

)

)

 

(defun affiche_txt(txt)

(if (> (strlen txt) 42)

(set_tile "txt" (strcat (substr txt 1 10) "..." (substr txt (- (strlen txt) 29))))

(set_tile "txt" txt)

)

)

 

(defun parcourir(/ rec)

(setq rec (getfiled "Choix d'un Gabarit" (strcat

(vla-get-templatedwgpath (vla-get-files (vla-get-preferences (vlax-get-acad-object))))

"/"

)

"dwt;dwg;dxf"

8

)

)

(and rec (setq dwg rec)(affiche_txt dwg))

)

 

(setq fic (vl-filename-mktemp "exl" nil ".dcl")

fil (open fic "w")

dwg (getenv "Patrick_35_Gabarit_Exl")

gab (getenv "Patrick_35_Bouton_Gabarit")

)

(or gab (setq gab "0"))

(foreach txt '( "exl : dialog {"

" key = \"titre\";"

" alignment = centered;"

" is_cancel = true;"

" allow_accept = true;"

" width = 50;"

" : list_box {label= \"Sélection\"; key=\"sel\"; height = 20; multiple_select=true;}"

" spacer;"

" : boxed_row {"

" label = \"Gabarit\";"

" : toggle {key = \"gab\";}"

" : text {key = \"txt\"; width = 40;}"

" : button {label = \"...\"; key = \"par\"; width = 2;}"

" }"

" spacer;"

" ok_cancel;"

"}"

)

(write-line txt fil)

)

(close fil)

(setq dcl (load_dialog fic))

(new_dialog "exl" dcl "")

(set_tile "titre" titre)

(set_tile "gab" gab)

(bascule)

(and dwg (affiche_txt dwg))

(start_list "sel")

(mapcar 'add_list lst)

(end_list)

(action_tile "sel" "(setq val $value)")

(action_tile "gab" "(setq gab $value)(bascule)")

(action_tile "par" "(parcourir)")

(action_tile "accept" "(done_dialog 1)")

(action_tile "cancel" "(done_dialog 0)")

(setq res (start_dialog))

(unload_dialog dcl)

(vl-file-delete fic)

(and dwg (setenv "Patrick_35_Gabarit_Exl" dwg))

(and gab (setenv "Patrick_35_Bouton_Gabarit" gab))

(list res val)

)

 

(vl-load-com)

(setq doc (vla-get-activedocument (vlax-get-acad-object))

def (vla-get-activelayout doc)

bou 1

s *error*

*error* *errexl*

)

(vla-startundomark doc)

(acad-push-dbmod)

(vlax-for lay (vla-get-layouts doc)

(setq lst_base (cons (cons (vla-get-taborder lay) lay) lst_base ))

)

(while (assoc bou lst_base)

(setq liste_lay (cons (vla-get-name (cdr (assoc bou lst_base))) liste_lay )

bou (1+ bou)

)

)

(and (= (car (setq res (bda "Exl 1.11" (reverse liste_lay)))) 1)

(setq res (cadr res))

(while (not (eq res ""))

(setq lst nil

obj nil

val (read res)

lay (cdr (assoc (1+ val) lst_base))

act (vla-get-name lay)

)

(and (ssget "x" (list (cons 0 "viewport") (cons 410 act)))

(progn

(princ (strcat "\nTraitement pour l'onglet : " act))(princ)

(vlax-for fen (setq sel (vla-get-activeselectionset doc))

(vla-getxdata fen "" 'cod 'cal)

(setq cod (vlax-safearray->list cod)

cal (vlax-safearray->list cal)

bou 0

)

(while (setq nom (nth bou cal))

(and (eq (nth bou cod) 1003)

(not (member nom lst))

(setq lst (cons (vlax-variant-value nom) lst))

)

(setq bou (1+ bou))

)

)

(vla-delete sel)

(setq dbx (vlax-create-object (if (< (setq rel (atoi (getvar "ACADVER"))) 16)

"ObjectDBX.AxDbDocument"

(strcat "ObjectDBX.AxDbDocument." (itoa rel))

)

)

)

(and (eq (getenv "Patrick_35_Bouton_Gabarit") "1")

(vl-catch-all-apply 'vla-open (list dbx (getenv "Patrick_35_Gabarit_Exl")))

)

(ssget "x" (list (cons 67 0)))

(vlax-for ent (setq sel (vla-get-activeselectionset doc))

(or (member (vla-get-layer ent) lst)

(setq obj (cons ent obj))

)

)

(vla-delete sel)

(vla-copyobjects doc

(vlax-make-variant

(vlax-safearray-fill

(vlax-make-safearray vlax-vbobject (cons 0 (1- (length obj))))

obj

)

)

(vla-get-modelspace dbx)

)

(vla-copyobjects doc

(vlax-make-variant

(vlax-safearray-fill

(vlax-make-safearray vlax-vbobject (cons 0 0))

(list lay)

)

)

(vla-get-layouts dbx)

)

(vla-saveas dbx (setq nom (strcat (vla-get-path doc) "/" (vl-filename-base (vla-get-name doc)) " - " act ".dwg")))

(vlax-release-object dbx)

(setq dbx (vla-open (vla-get-documents (vlax-get-acad-object)) nom))

(vlax-for ent (vla-get-layouts dbx)

(cond

((eq (vla-get-name ent) act)

(vla-put-activelayout dbx ent)

)

((/= (vla-get-name ent) "Model")

(vla-delete ent)

)

)

)

(vla-close dbx :vlax-true)

)

)

(setq res (substr res (+ 2 (strlen (itoa val))) (strlen res)))

)

(alert "Traitement des onglets terminés.")

)

(acad-pop-dbmod)

(vla-endundomark doc)

(setq *error* s)

(princ)

)

 

(setq nom_lisp "EXL")

(if (/= app nil)

(if (= (strcase (substr app (1+ (- (strlen app) (strlen nom_lisp))) (strlen nom_lisp))) nom_lisp)

(princ (strcat "..." nom_lisp " chargé."))

(princ (strcat "\n" nom_lisp ".LSP Chargé.....Tapez " nom_lisp " pour l'éxecuter.")))

(princ (strcat "\n" nom_lisp ".LSP Chargé......Tapez " nom_lisp " pour l'éxecuter.")))

(setq nom_lisp nil)

(princ)

Lien vers le commentaire
Partager sur d’autres sites

Je viens de tester le lisp, en fait cela ne sert qu'à créer un plan avec une seule presentation(celle voulue), et l'espace objet lui reste comme le fichier d'origine

 

Existe t-il un lisp avec lequel on peut exporter une presentation sur l'espace objet d'un nouveau dessin, tout en gardant la bonne echelle et et le bon systeme de coordonnées?

 

Merci

« Aide-toi, le ciel t'aidera »

Lien vers le commentaire
Partager sur d’autres sites

  • 1 mois après...

Bonjour à tous.

 

Ce sujet m'intéresse ...

 

J'ai moi aussi un fichier "A" avec une multitude de présentations, et un fichier "B" avec une ou deux présentations à conserver (fenêtre + échelle + cadrage ...).

Comment dans un fichier "C" peut-on réussir à faire exactement la même présentation !? (surtout lors d'exportation en PDF ou jpg, un décalage de quelques pixels est souvent très pénible)

 

 

A mon niveau :

 

■ Je ne comprends pas pourquoi avec le gestionnaire de mise en page

> IMPORTER > xxx.dwg

= la liste de mise en page est toujours vide

 

 

■ La commande ZOOM désactive l'accroche objet ; donc ma "solution" est d'exporter une fenêtre en espace objet, d'ouvrir le nouveau fichier créé, de copier en tant que bloc cette "présentation" dans l'espace objet du fichier principal, de créer un point au "centre" de ce bloc, de noter les coordonnées x,y, d'effacer ce "bloc-objet-présentation", d'aller en espace papier, créer une fenêtre, commande zoom, centre X,Y ...

 

Bref, question à tous les "pros" du forum :

Comment faites-vous ?

Lien vers le commentaire
Partager sur d’autres sites

  • 2 ans après...
  • 11 mois après...

Bonjour,

 

Quand je lance le lisp EXL v1.11, après la sélection de la présentation à extraire, j'ai une erreur fatale à l'ouverture du fichier exporté :

 

ERREUR INTERNE: !dbAnnoScaleCompositionReactori.cpp@1415: eInvalidIndex

 

Merci d'avance pour votre aide.

 

Cdt.

 

Yo

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é