Aller au contenu

Carnets EO passé en Présentation


Bred

Messages recommandés

Bonjour à tous,

 

je me permet de déterré ce post car j'ai un problème sur le fonctionnement du lisp proposé par Bred,

 

J'ai le même problème que Ludo07, soit :

 

je choisit le bloc "modèle":

je choisit les blocs que j'ai copié dans l'espace objet,

Je choisit la présentation que j'ai créé (définit par une fenêtre, contenant toutes les infos d'échelle, ...)

Un nouvelle présentation apparait et là :

 

Commande: CEP
Choix du cadre (Bloc) :
Sélectionner des objets: 1 trouvé(s)
Sélectionner des objets: 1 trouvé(s), 2 au total
Sélectionner des objets: 1 trouvé(s), 3 au total
Sélectionner des objets: 1 trouvé(s), 4 au total
Sélectionner des objets:
Nom des Onglets à Créer :test
Restauration des fenêtres enregistrées en mémoire cache - Régénération de la présentation.
Régénération de 5 objets modifiés.
Régénération de la présentation.
; erreur: type d'argument incorrect: numberp: nil

 

La présentation est bien crée, elle présente la même configuration que celle que j'ai choisie en modèle, mais elle est vide (aucune fenêtre vers l'espace objet dans la présentation)

 

Si besoin, j'ai joint un fichier de la configuration de la présentation retenue

 

je suis en Autocad 2016 (pas LT)

 

Je me rend compte que le sujet date un peu, mais je n'ai pas trouvé d'équivalent pour faire cette manip

 

Merci d'avance à tout programmeur à l'âme charitable qui pourrait m'aider ^^

post-64712-0-22751100-1467214840_thumb.jpg

Lien vers le commentaire
Partager sur d’autres sites

  • Réponses 81
  • Créé
  • Dernière réponse

Meilleurs contributeurs dans ce sujet

Meilleurs contributeurs dans ce sujet

Images postées

Bonjour,

Je n'ai pas encore eu le temps de m’installer le 2016, je ne pourrais pas le tester avec....

 

Si vous avez sélectionnez plusieurs "cadres" en EO, vous devriez avoir tout autant d'onglet, donc d'après votre ligne de commande, vous devriez avoir 4 onglets.....

 

Il en crée 1, c'est déjà bon signe....

 

Je viens de le tester chez moi en version 2011, et ça fonctionne.

 

Il doit y avoir une fonction sous 2016 qui n'est pas traité pareil...

 

Si d'autre pouvait le tester sur 2016, ce serait une étape.

Merci.

Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

 

J'ai compris d'ou venait mon problème : INSUNITS,

 

mon plan était définit avec une autre valeur de INSUNITS que 4-5 ou 6

 

c'est ce qui posait problème

 

Un grand merci à Bred pour tout le taf réalisé pour cette routine (et pour beaucoup d'autres j'imagine)

 

Un grand merci aussi à tous ceux qui participent et font tourner ce forum d'entraide,

 

Merci

Lien vers le commentaire
Partager sur d’autres sites

  • 1 mois après...

Salut à tous je reviens sur un commentaire que j'ai vu je souhaiterais moi aussi savoir s'il existe le même lisp mais avec la gestion de l'angle que peux avoir avec le bloc pour attribuer un scu à la présentation. En attendant les gars vous êtes mes héros :) merci beaucoup

Lien vers le commentaire
Partager sur d’autres sites

  • 8 mois après...

Salut,

 

Suite à cette demande de BIGC-ROMU et comme le post est particulièrement confus, vous trouverez ci dessous un lisp permettant à partir d'une série de cadres mise en page en Espace objet de les transférer en un cadre par présentation afin de pouvoir utiliser la commande de publication (ou autre).

 

Merci à tous ceux qui ont permis de me sortir de ce code et à ceux de l'avoir testé en profondeur.

 

 

Fonctionnement :

 

- Les cadres de pages doivent être des blocs.

 

(Si vous avez des cadres en simple rectangle, transformez en un en bloc et faites un réseau ou un copier)

 

- Afin d'éviter toutes erreur, une présentation déjà paramétré doit exister (Une fenêtre de présentation cadré "en aire du tracé" par une fenêtre et mis à l'échelle, Traceur, échelle de tracé).

 

- Les cadres en Espace Objets peuvent être à n'importe quel échelle, et peuvent être mélangé Portrait et Paysage.

 

- L'unité d'insertion doit être en millimètre, centimètre ou mètre.

 

- Le nom des onglet sera incrémenter de +1.

 

 

- Commande : CEP

 

 

;;; Crée un onglet EP par cadre de page sélectionné en EO

;;; par Bred - Un onglet déjà paramétrer doit exister -

;;; Version 1.1

(defun c:CEP (/ ACDOC B C FEN I LAYS N-P NOM-P ONG-BASE ONG_DEST SEL XMIN YMAX

      A-P HAUT LARG P1 P2 NOM ECH LAY LOCK UNIT)

 

(vl-load-com)

; 4 Millimètres 5 Centimètres 6 Mètres

(setq Unit (cdr (assoc (getvar "INSUNITS") '((4 . 1) (5 . 10) (6 . 1000)))))

(while (not sel)

(setq sel (car (entsel "\n Choix du cadre (Bloc) :")))

(if sel

(if (not (equal (vla-get-ObjectName (setq b (vlax-ename->vla-object sel))) "AcDbBlockReference"))

(setq sel nil)))

)

(setq sel (ssget '((0 . "INSERT")))

AcDoc (vla-get-activedocument (vlax-get-acad-object))

nom-p (getstring t "\n Nom des Onglets à Créer :")

layS (layoutlist))


(if (> (length layS) 1)

(progn

(princ "\n Copie configuration traceur d'onglet Existant. \n Plusieurs Présentations détectées.")

(while (not ong-base)

(princ "\n")

(repeat (setq i (length layS))

(princ (strcat (nth (- (length layS) i) layS) " * "))

(setq i (1- i)))

(setq ong-base (getstring t "\n Présentation d'où la configuration du traceur sera récupérée :"))

(if (not (member ong-base layS))

(setq ong-base nil))))

(setq ong-base (car layS)))


(setq a-p (vla-item (vla-get-layouts AcDoc) ong-base))

(vla-getcustomscale a-p 'n 'm)


(vla-put-ActiveLayout AcDoc a-p)

(vlax-for e (vla-get-paperspace AcDoc)

(if (equal (vla-get-ObjectName e) "AcDbViewport")

(setq lay (vla-get-Layer e)

lock (vla-get-DisplayLocked e))))


(setq i 0)

(repeat (sslength sel)

(if (vlax-property-available-p (vlax-ename->vla-object (ssname sel i)) 'effectivename)

(setq nom vla-get-effectivename)

(setq nom vla-get-name))


(if (equal (nom (setq c (vlax-ename->vla-object (ssname sel i))))

(nom B))

(progn

(vla-GetBoundingBox c 'xmin 'ymax)

(setq n-p (vla-add (vla-get-Layouts AcDoc) (setq ong_dest (strcat nom-p " - " (rtos (1+ i) 2 0)))))


(setq ech (vla-get-YScaleFactor c))

(vla-copyfrom n-p a-p)

(vla-put-ActiveLayout AcDoc n-p)

(setq fen

(vla-AddPViewport (vla-get-paperspace AcDoc) (vlax-3d-point '(0 0 0))

(setq Larg (* Unit (/ (- (car (vlax-safearray->list ymax)) (car (vlax-safearray->list xmin))) ech)))

(setq Haut (* Unit (/ (- (cadr (vlax-safearray->list ymax)) (cadr (vlax-safearray->list xmin))) ech)))))

(vla-put-Layer fen lay)

(vla-put-DisplayLocked fen lock)

(vla-ZoomExtents (vlax-get-acad-object))

(vla-Display fen :vlax-true)

(vla-put-MSpace AcDoc :vlax-true)

(vla-put-ActivePViewport AcDoc fen)

(vla-ZoomWindow (vlax-get-acad-object) xmin ymax)

(vla-put-MSpace AcDoc :vlax-false)

(if (> (- (car (vlax-safearray->list ymax)) (car (vlax-safearray->list xmin)))

(- (cadr (vlax-safearray->list ymax)) (cadr (vlax-safearray->list xmin))))

(vla-put-PlotRotation (vla-get-activelayout AcDoc) ac90degrees)

(vla-put-PlotRotation (vla-get-activelayout AcDoc) ac0degrees))

(setq p1 (vlax-make-safearray vlax-vbdouble (cons 0 1))

p2 (vlax-make-safearray vlax-vbdouble (cons 0 1)))

(vlax-make-variant

(vlax-safearray-fill p1 (list (- (/ Larg 2)) (- (/ Haut 2)))))

(vlax-make-variant

(vlax-safearray-fill p2 (list (/ Larg 2) (/ Haut 2))))

(vla-put-PlotType (vla-get-activelayout AcDoc) acWindow)

(vla-setwindowtoplot (vla-get-activelayout AcDoc) p1 p2)

(setq i (1+ i))

) ) )

(setvar "TILEMODE" 1)

(princ))

 

<font class=edite>[Edité le 6/10/2008 par Bred]</font>

 

Bonjour,

et si je veux presque l'inverse ..

en effet je fais des changespace pour chacune de mes presentations afin que la fenetre apparait dans l'objet.

existe t il un lisp pour ceci ?

merci d'avance

Coco.

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é