Bred Posté(e) le 1 juillet 2008 Posté(e) le 1 juillet 2008 Serait il possible que l'on puisse choisir notre propre facteur d'échelle avant la création des onglets?laisse moi le temps d'y réfléchir.... Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...
Patrick_35 Posté(e) le 1 juillet 2008 Posté(e) le 1 juillet 2008 Je t'ai indiqué comment faire ;) Un exemple qui ajoute une ligne sur le calque courant de 0,0 à 10,10 sur toutes les présentations(vlax-for lay (vla-get-layouts (vla-get-activedocument (vlax-get-acad-object))) (vla-addline (vla-get-block lay) (vlax-3d-point '(0.0 0.0 0.0)) (vlax-3d-point '(10.0 10.0 0.0))) ) @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Bred Posté(e) le 1 juillet 2008 Posté(e) le 1 juillet 2008 Salut Grand_sapin,la plus vieille que j'ai sur mon poste est la 2006.... Mais on va tenter un truc : ; Crée un onglet EP par cadre de page sélectionné en EO ; par Bred le 02/07/2008 - Un onglet déjà paramétrer doit exister (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) (vl-load-com) (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)) (repeat (setq i (sslength sel)) (if (vlax-property-available-p (vlax-ename->vla-object (ssname sel (setq i (1- 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 (- (sslength sel) i) 2 0))))) (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 (- (car (vlax-safearray->list ymax)) (car (vlax-safearray->list xmin)))) (setq Haut (- (cadr (vlax-safearray->list ymax)) (cadr (vlax-safearray->list xmin)))))) (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-setwindowtoplot (vla-get-activelayout AcDoc) p1 p2) ) ) ) (setvar "TILEMODE" 1) (princ) ) Edit1 : correction suite proposition de Patrick_35 concernant le fonctionnement toutes version.Edit2 : Correction parceque j'avais fais n'importe quoi.Edit3 : Indice d'incrémentation sans virgule [Edité le 2/7/2008 par Bred] Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...
grand_sapin Posté(e) le 1 juillet 2008 Posté(e) le 1 juillet 2008 Rere, bon, l'erreur est toujours au même endroit, mais elle a changé de nom : Commande: cep Choix du cadre (Bloc) : Choix des objets: Spécifiez le coin opposé: 45 trouvé(s) Choix des objets: Nom des Onglets à Créer : PT ; erreur: no function definition: NAME Commande: voila
Bred Posté(e) le 1 juillet 2008 Posté(e) le 1 juillet 2008 Re, grand_sapin,tu pourrais charger et lancer ça sur 2005 stp ?(defun c:tt () (vlax-dump-object (vlax-ename->vla-object (car (entsel "\n Choix de l'objet :")))) )Tu lances "tt", et tu sélectionne un bloc cadre.Tu peux me retourner ce qu'il y a écris en ligne de commande stp ? Patrick_35 : grand merci, je vais voir ça ! Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...
grand_sapin Posté(e) le 1 juillet 2008 Posté(e) le 1 juillet 2008 Rerere voila, et désolé pour l'attente ! Commande: tt Choix de l'objet :; IAcadBlockReference: Interface AutoCAD Block Reference ; Valeurs de propriétés: ; Application (RO) = # ; Document (RO) = # ; Handle (RO) = "6C31" ; HasAttributes (RO) = 0 ; HasExtensionDictionary (RO) = 0 ; Hyperlinks (RO) = # ; InsertionPoint = (0.0 53.24 0.0) ; Layer = "0" ; Linetype = "ByLayer" ; LinetypeScale = 1.0 ; Lineweight = -1 ; Name = "Cadre" ; Normal = (0.0 0.0 1.0) ; ObjectID (RO) = 2125034376 ; ObjectName (RO) = "AcDbBlockReference" ; OwnerID (RO) = 2126527736 ; PlotStyleName = "ByLayer" ; Rotation = 0.0 ; TrueColor = # ; Visible = -1 ; XScaleFactor = 1.0 ; YScaleFactor = 1.0 ; ZScaleFactor = 1.0 T Commande:
Patrick_35 Posté(e) le 1 juillet 2008 Posté(e) le 1 juillet 2008 Bred Pour connaître le nom d'un bloc, dynamique ou pas.Cela fonctionne quelle que soit la version d'Autocad. (if (vlax-property-available-p [i]Mon_Bloc_Vla[/i] 'effectivename) (setq nom (vla-get-effectivename [i]Mon_Bloc_Vla[/i])) (setq nom (vla-get-name [i]Mon_Bloc_Vla[/i])) ) @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Patrick_35 Posté(e) le 1 juillet 2008 Posté(e) le 1 juillet 2008 Bred En lisant ton lisp, je me rends compte que tu pourrais le rendre plus conviviale en utilisant les boites de dialogues.Et une chose aussi, ce serait de trier avec les coordonnées la sélection afin que cela soit dans l'ordre des onglets (je sais, je pinaille ;) )Par exemple, celui qui est en bas à gauche soit le premier onglet, le suivant direcement à sa droite, le second onglet, etc... @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Bred Posté(e) le 1 juillet 2008 Posté(e) le 1 juillet 2008 Re,Patrick_35 :Je suis désolé, mais je suis planté...Je n'arrive pas à ne pas activer les présentations afin de créer les fenêtres..J'ai compris ton exemple, et en effet je ne savais pas qu'une AddLine peut être fait dans un Block (dixit l'aide)... mais pas une AddPViewport... RetVal = object.AddPViewport(Center, Width, Height) ObjectPaperSpace collectionThe object this method applies to. tu pourrais le rendre plus conviviale en utilisant les boites de dialogues.Tu as raison... et je pourrais le faire les doigts dans le nez en utilisant une boite de dialogue VB.. mais en dcl, à part faire une boite qui dit "hello", je ne sais pas faire plus... :P Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...
Bred Posté(e) le 1 juillet 2008 Posté(e) le 1 juillet 2008 grand_sapin : j'ai corrigé le code au-dessus suite à la proposition de Patrick_35 pour le faire fonctionner sur toutes les versions AutoCAD. Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...
grand_sapin Posté(e) le 2 juillet 2008 Posté(e) le 2 juillet 2008 Bonjour, Désolé d'être pénible, mais j'ai toujours une erreur (pas la même !) Commande: cep ; erreur: type d'argument incorrect: VLA-OBJECT nil j'ai fais un test sur une v2006+Covadis, même erreur, et un sur v2006 nue, même erreur ! est-ce que je m'y prend mal ? est-ce que je suis seul sur le forum à avoir ce problème ? j'ai vraiment l'impression qu'il n'y a que moi qui foire !!! Merci
BIGC-ROMU Posté(e) le 2 juillet 2008 Auteur Posté(e) le 2 juillet 2008 Bonjours à tous, Désolé grand_sapin, je ne peut pas tester sous 2005, je n'ai que 2007 et 2008. Bon courage!
grand_sapin Posté(e) le 2 juillet 2008 Posté(e) le 2 juillet 2008 Re, oui mais ce qui me fais "peur", c'est que Bred possède la 2006 et je pense que ça doit fonctionner puisqu'il l'a diffusé en ligne. Et moi je l'ai testé aussi sous 2006, et ça plante, aaaaaaaargh Merci BIGC
Bred Posté(e) le 2 juillet 2008 Posté(e) le 2 juillet 2008 Salut,j'avais fait une boulette !j'ai modifié, ça doit donctionner sur toutes les versions maintenant... Désolé... :calim: Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...
grand_sapin Posté(e) le 2 juillet 2008 Posté(e) le 2 juillet 2008 Parfait !!!! t'es juste un boss !!! Par contre il me met l'incrémentation comme ça : PT - 1.0000, je sais que c'est dans le contrôle des unités, mais vu que je travaille en mètres, j'ai besoin des 3 chiffres après la virgule !y-aurait pas moyen de paramétrer la décimale au début de la routine et de la remettre telle qu'elle une fois exécutée ??? mais la, comme le dit Patrick_35, je pinaille ! Merci encore de t'être cassé le tronc, tu vas faire beaucoup d'heureux Rémy
lili2006 Posté(e) le 2 juillet 2008 Posté(e) le 2 juillet 2008 Bonjour à toutes et tous, Je viens de tester ta routine, Bred, ça marche d'enfer ! J'ai juste un soucis lié à la méthode utilisée jusqu'à présent, je m'explique : Quand je veux une sortie au 1/20 d'un format A3, mon bloc "cartouche" dans l'EO fait donc 840 x 594 car j'assimile 1UD à 1cm, donc 1/20 x XP( = 10) => 0.5, echelle EP.Donc en utilisant ta routine, je me retrouve avec un format dans l'EP de 840 x 594, logique en quelque sorte. Ma question est donc la suivante => Comment puis-je faire pour récupérer dans l'EP, la dimension réelle d'un A3 (420 x 297), quelque soit l'échelle ? Car, bien sûr, même raisonnement pour les échelles du : (Dimensions des blocs "cartouche" dans l'EO) =>1/100 => 4200 x 29701/50 => 2100 x 14851/25 => 1050 x 742.51/20 => 840 x 594 (Rappel) Ci-joint un extrait du gabarit.(En extension .dwg pour la lecture !) A ce jour je passe par "Insertion => Présentationissue d'un gabarit" et je choisi mes vues crées sur le gabarit ! Si ce n'était pas l'esprit de ta routine, laisse tomber. J'étais juste curieux de tester car cela évite la création de différents gabarits de vues, donc intéressant,... Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
Patrick_35 Posté(e) le 2 juillet 2008 Posté(e) le 2 juillet 2008 Salut Bred Exact, je n'avais pas vu.Je te propose une autre méthode.C'est de travailler à partir d'un onglet de référence et ensuite d'en faire des copies. (setq doc (vla-get-activedocument (vlax-get-acad-object))) (setq lay (vla-get-layouts doc)) (setq pre (vla-add lay "Pre")) ; Ajouter la présentation qui va servir de base (vla-put-activelayout doc pre) ; Activer cette présentation (setq vie (vla-addpviewport (vla-get-paperspace doc) (vlax-3d-point '(50.0 50.0)) 100 100)) ; Ajouter une fenêtre (vlax-for obj (vla-get-block pre) ; récuperer les objets de la présentation de base (setq lst (cons obj lst)) ) (setq sui (vla-add lay "Sui")) ; Ajouter une nouvelle fenêtre (vlax-invoke doc 'copyobjects (reverse lst) (vla-get-block sui)) ; copier les objets d'une présentation à un autre (vlax-for ent (vla-get-block sui) ; rechercher la fenêtre dans la nouvelle présentation (if (and sau (eq (vla-get-objectname ent) "AcDbViewport") ) (setq vie ent) (setq sau T) ) ) (vla-display vie :vlax-true) ; J'active la fenêtre ; Maintenant, avec la variable vie, je n'ai plus qu'à modifier la fenêtre afin de la faire correspondre à mes besoins ; Et si tu veux éviter les zooms pour recaler la vue, c'est dans les xdatas de la fenêtre. Code 1040, les coordonnées sont le centre du zoom Pour ce qui est des boites de dialogue, vu maintenant ton niveau de lisp, c'est dommage de ne pas t'y atteler. En tous cas, bravo car tu as vite progressé. @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Bred Posté(e) le 2 juillet 2008 Posté(e) le 2 juillet 2008 Salut,Un chose après l'autre.... :P Dabord, le plus rapide et le plus simple : pour grand_sapinPar contre il me met l'incrémentation comme ça : PT - 1.0000, je sais que c'est dans le contrôle des unités, mais vu que je travaille en mètres, j'ai besoin des 3 chiffres après la virgule !Ben en fait les chiffres après la virgule sont dépendant du style de cote, pas du format des unité (et je trouve ça bizarre...)Mais j'ai corrigé le code pour qu'il n'incrémente que des 1, 2, 3....(voir code précédent édité) lili2006 : faut que je regarde ça... (non mais quel idée de bricoler les échelles en EO !...) Patrick_35 : merci, je regarde ça,et super le tuto .dcl !... dommage qu'il soit en anglais, mais on va se débrouiller... à moins que quelqu'un n'est envies de nous traduire tout ça.... ;) Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...
lili2006 Posté(e) le 2 juillet 2008 Posté(e) le 2 juillet 2008 Re, lili2006 : faut que je regarde ça... (non mais quel idée de bricoler les échelles en EO !...) A qui le dis-tu ! Vieille habitude de BE et pour en faire changer,... En fait, le dessin est à l'echelle 1 dans l'EO, mais les cadres sont paramètrés pour toujours sortir sur du A3 quelque soit l'echelle (je parle pour les folios, bien sûr !). Comment pratiquez-vous alors ?Dans l'EO, un cadre de 420 x 297 pour un format A3, quelque soit l'échelle ?Mais, j'vois quand même mal comment faire autrement,.. Si tu penses que cela n'a pas d'intérêt car la pratique à la base est mauvaise, laisses tomber, ..C'est plus de la curiosité,... Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
BIGC-ROMU Posté(e) le 2 juillet 2008 Auteur Posté(e) le 2 juillet 2008 Salut Bred à moins que quelqu'un n'est envies de nous traduire tout ça.... Aussitôt dit, aussitôt fait... Copie du site ( http:// http://web2.airmail.net/terrycad/Tutorials/MyDialogs.htm) en PDF aprés traduction Google... Partie 1 http:// http://cjoint.com/?hcrYtTT3aGPartie 2 http:// http://cjoint.com/?hcr0dvopFOPartie 3 http:// http://cjoint.com/?hcr1fvBq7b Je ne sait pas si j'ai le droit, mais c'est pour la bonne cause... Bon courrage, à tous... :P
lili2006 Posté(e) le 2 juillet 2008 Posté(e) le 2 juillet 2008 Re, Je ne sait pas si j'ai le droit, C'est diffusé librement sur Internet et tu t'ai "contenté" (et merci pour nous !) de changer de format de lecture,... Pour moi, rien d'illégale,... mais c'est pour la bonne cause. En plus ! Alors,... super lien d'ailleurs,...Merci Patrick_35 ;) Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
lili2006 Posté(e) le 2 juillet 2008 Posté(e) le 2 juillet 2008 Re, Après compilation, pour ceux que cela intéressent,... Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
grand_sapin Posté(e) le 2 juillet 2008 Posté(e) le 2 juillet 2008 Re, Ben en fait les chiffres après la virgule sont dépendant du style de cote, pas du format des unité (et je trouve ça bizarre...)Mais j'ai corrigé le code pour qu'il n'incrémente que des 1, 2, 3....(voir code précédent édité) Merci bred pour l'incrémentation, mais si je peux me permettre, quand je suis allé gratter dans les styles de côte, les zéros apparaissaient toujours, mais lorsque j'ai supprimé les zéros de "contrôles des unités", ils ont disparus, c'est pour ça que j'ai parlé de ce paramètre et non pas des styles de côtes. Je testerai demain matin ! En fait, le dessin est à l'echelle 1 dans l'EO, mais les cadres sont paramètrés pour toujours sortir sur du A3 quelque soit l'echelle (je parle pour les folios, bien sûr !). Comment pratiquez-vous alors ?Dans l'EO, un cadre de 420 x 297 pour un format A3, quelque soit l'échelle ?Mais, j'vois quand même mal comment faire autrement,.. Ben, personnellement je fais pareil, suivant l'échelle de la coupe (1/50 - 1/100 - 1/200) le cadre n'a pas la même taille, mais dans ce cas, avec cette routine, tu crées un bloc "cadre 1-50" un cadre "1-100" etc. J'espère avoir compris le sens de ta remarque lili2006 Bonne soirée a vous tous
lili2006 Posté(e) le 2 juillet 2008 Posté(e) le 2 juillet 2008 Re, Ben, personnellement je fais pareil, suivant l'échelle de la coupe (1/50 - 1/100 - 1/200) le cadre n'a pas la même taille, mais dans ce cas, avec cette routine, tu crées un bloc "cadre 1-50" un cadre "1-100" etc. C'est ce que j'ai fait, mais,... En EO (Pour des sorties au format A3 en EP) => http://images4.hiboox.com/images/2708/6032f6493ea1cf276f0dc694a02d9388.jpg A l'échelle 1/20, par exemple (Unité EO => Cm) => Dimension du cadre (à multiplier par 2 donc en EO car 10 (=XP) x 1/20 = 10/20 = 0.5 !) => http://images4.hiboox.com/images/2708/ba638dc8e2875f98e3f99d855c3beb83.jpg La présentation à copier (entièrement paramétrées!) => http://images4.hiboox.com/images/2708/79c339f6fd849e29658c1e81bc397518.jpg Utilisation de CEP de Bred => http://images4.hiboox.com/images/2708/fe54efb0df8f1e235829c941d378f210.jpg Je retrouve le même format que dans l'EO, donc p'tit soucis,... Et toi, grand_sapin, tu ne rencontres pas ce problème ? Merci d'avance, Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
Bred Posté(e) le 2 juillet 2008 Posté(e) le 2 juillet 2008 Salut,Concernant ma remarque sur la demande de lili2006(non mais quel idée de bricoler les échelles en EO !...)il fallait comprendre que depuis le nombre d'année maintenant que l'EP existe, il est quand même contraignant de jouer avec des cadres de tailles différentes, sans parler des échelles de cotes, des formats de textes, des épaisseurs de lignes, etc.... Pour ta demande, lili2006, il suffit que tu paramètres l'onglet choisis correctement :Dans cet onglet, tu cadres, tu mets à la bonne échelle d'impression les cadres que tu veux, puis tu ne sélectionne que ceux qui ont ce format pré-paramétré.... Par contre, pour automatiser ça, je vois mal le truc : Quand tu sélectionnes les cadres, il faudrait que le code puisse faire la différence entre un A2 au 1/200 ou un A4 au 1/100 par exemple (si je ne me trompe pas)... et ça je ne vois pas comment.... désolé. Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...
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