Frankdreb Posté(e) le 29 juin 2016 Posté(e) le 29 juin 2016 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 ^^
Bred Posté(e) le 29 juin 2016 Auteur Posté(e) le 29 juin 2016 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...
Frankdreb Posté(e) le 7 juillet 2016 Posté(e) le 7 juillet 2016 Bonjour, merci pour votre réponse (un peu débordé, je viens seulement d'en prendre connaissance) Y a t-il un moyen pour que je puisse vous aider pour le test ? Encore merci pour votre aide
Frankdreb Posté(e) le 7 juillet 2016 Posté(e) le 7 juillet 2016 En complément de mon message précédent, j'ai pu arriver à l'élément de débuggage lié sur le jpg ci joint Je pense que c'est lié à la variable Unit (ou Larg) Mais j'ai du mal à avancer plus loin Merci d'avance,
Frankdreb Posté(e) le 8 juillet 2016 Posté(e) le 8 juillet 2016 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
LAPOWEB Posté(e) le 17 août 2016 Posté(e) le 17 août 2016 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
coco09 Posté(e) le 4 mai 2017 Posté(e) le 4 mai 2017 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.
Messages recommandés
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 compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant