-
Compteur de contenus
1 489 -
Inscription
-
Dernière visite
-
Jours gagnés
19
Type de contenu
Profils
Forums
Calendrier
Blogs
Tout ce qui a été posté par zebulon_
-
Dans ce cas, je dessine une polyligne avec une épaisseur qui va bien est je mets cette polyligne sur un calque dont le style de ligne est cache. ça le fait, non ? Amicalement Vincent
-
Bonjour, un petit schéma nous aiderait à comprendre la demande : on n'est pas tous des pros de l'étanchéité. Sinon, pour la hachure, ça me semble difficile. Sauf erreur, cela me semble impossible d'avoir une hachure avec un angle variable, si elle doit être perpendiculaire aux doubles polylignes avec segments droits et courbes. Je ne vois que tracer des segments et mettre dans un groupe. C'est ce qui ressemble le + à une hachure. (vl-load-com) ;; MAKEGROUP ;; Crée un groupe sans nom avec les entités contenues dans la liste ;; ;; Argument ;; lst : liste des entités (ename) ;; ;; Retour ;; le groupe créé (ename) ou nil (defun makegroup (lst / dict ind) (setq dict (dictsearch (namedobjdict) "ACAD_GROUP") ind "GRP1" ) (while (member (cons 3 ind) dict) (setq ind (strcat "GRP" (itoa (1+ (atoi (substr ind 4)))))) ) (dictadd (cdr (assoc -1 dict)) ind (entmakex (append (list '(0 . "GROUP") '(100 . "AcDbGroup") '(300 . "TALUS") '(70 . 1) '(71 . 1) ) (mapcar (function (lambda (x) (cons 340 x))) lst) ) ) ) ) (defun cs:line (PO PF / AcDoc Space) (setq AcDoc (vla-get-activeDocument (vlax-get-acad-object)) Space (if (= (getvar "CVPORT") 1) (vla-get-PaperSpace AcDoc) (vla-get-ModelSpace AcDoc) ) ) (vla-addLine Space (vlax-3d-point PO) (vlax-3d-point PF) ) ) (defun c:perpchem (/ CHEM D PAS LCHEM PK PM PT FDER PTDERIV PTG PTD LN LGR) ;; saisir les éléments de construction (command "_pline") (while (not (zerop (getvar "cmdactive"))) ;; permet une saisie illimitée (command pause) ) (setq CHEM (vlax-ename->vla-object (entlast))) (setq D (getdist "\nDécalage : ")) (setq PAS (getdist "\nPas : ")) ;; faire 2 décalages (setq OF1 (vla-offset CHEM D)) (setq LGR (cons (entlast) LGR)) (setq OF2 (vla-offset CHEM (* -1 D))) (setq LGR (cons (entlast) LGR)) ;; calculer la longueur du chemin (setq LCHEM (vlax-curve-getDistAtPoint CHEM (vlax-curve-getEndPoint CHEM))) (setq PK 0) (while (< PK LCHEM) ;; déterminer le paramètre au pk courant (setq PM (vlax-curve-getParamAtDist CHEM PK)) ;; déterminer le point au pk courant (setq PT (vlax-curve-getPointAtDist CHEM PK)) ;; déterminer la dérivée première (setq FDER (vlax-curve-getfirstderiv CHEM PM)) ;; déterminer le point qui construit la tangente à la courbe au point PT (setq PTDERIV (mapcar '+ PT FDER)) ;; déterminer les points perpendiculaires à PT à une distance D (setq PTG (polar PT (+ (angle PT PTDERIV) (/ pi 2)) D)) (setq PTD (polar PT (- (angle PT PTDERIV) (/ pi 2)) D)) ;; tracer la ligne (setq LN (cs:line PTD PTG)) (setq LGR (cons (entlast) LGR)) ;; passer au pk suivant (setq PK (+ PK PAS)) ) (makegroup LGR) (vla-erase CHEM) (princ) ) Amicalement Vincent
-
Bonjour, parce que, au départ, je ne savais pas que ça existait, donc j'ai appris à me débrouiller autrement, comme décrit plus haut. Ensuite, quand on m'a expliqué, appuyer simultanément sur shift ctrl alt machin bidule, je n'ai jamais réussi à trouver cela plus rapide. Une question de point de vue. Je n'utilise le cycle que lorsqu'il y a plus de 2 éléments superposés, donc presque jamais. Amicalement Vincent
-
Tu t'es mal démerdé car elles sont identiques à quelques détails près. Je pense que le "_non" avant le "@" n'est pas inutile sinon cela risque de tourner autour d'un mauvais point en cas d'accrochage aux objets. Olivier est hors sujet compte tenu de la sélection qui devait être la sélection précédente donc "_p" Amicalement Vincent
-
Dans les 2 sens, ça veut dire qu'il y a soit une sélection implicite (des objets sélectionnés avant de lancer la commande) qu'on récupère avec (ssget "_I"), soit il n'y a pas de sélection implicite et il faut sélectionner les objets avec (ssget)
-
Grillé de 5 minutes... Mais bon, ce n'est pas inutile. Le @, c'est quand même plus simple que le (getvar 'lastpoint) :) Les utilisateurs de LT préféreront le @ de toute manière Par ailleurs, ça ne serait peut être pas inutile de rajouter un "_non" avant le "@" pour ne pas être pollué par un accrochage aux objets (defun c:rr () (command "_rotate" "_p" "" pause "_r" "_non" "@" pause pause)) Amicalement Vincent
-
Bonjour, le dernier point cliqué se récupère avec @. Pas seulement en lisp ou avec des macros, mais aussi quand autocad nous demande de cliquer un point. (defun c:rr () (command "_rotate" (ssget) "" pause "_r" "@" pause pause)) si on veut la dernière sélection plutôt qu'une sélection à faire (defun c:rr () (command "_rotate" "_p" "" pause "_r" "@" pause pause)) Cela peut aussi s'écrire avec des macros Amicalement Vincent
-
Bonjour, j'ai toujours trouvé la combinaison ctrl+espace+clic souris assez peu naturelle : je dois avoir des problèmes de coordination ou quelque chose comme ça. Donc, personnellement, quand j'ai 2 éléments superposés et que je veux sélectionner celui du dessous, à l'invite "choix des objets" je sélectionne les 2 par un fenêtre de capture, puis j'appuie sur la touche S (supprimer de la sélection) ou je maintiens une touche shift enfoncée (ce qui enlève de la sélection également) et je clique directement sur l'élément du dessus qui est retiré de la sélection. Ce qui fait qu'il n'y a plus que l'élément du dessous dans ma sélection. CQFD. Il est parfois plus simple d'enlever que de rajouter. Amicalement Vincent
-
Bonjour, je pense aussi que la modification du pgp est le plus simple, en affectant la lettre E à effacer. Il faut cependant veiller à supprimer ou modifier une autre affectation de la lettre E (à la commande Etirer, par exemple). S'il y a doublon dans le pgp, c'est le dernier arrivé qui l'emporte. A toutes fins utiles, le fichier pgp modifié n'est pris en compte qu'après un redémarrage ou, plus simplement en évitant un redémmarage d'Autocad, en tapant la commande REINIT puis en cochant la case pgp. C'est vrai que j'ai utilisé Autocad très longtemps avant que quelqu'un m'instruise à l'utilisation de ces options. Il va sans dire qu'après, je me suis senti un peu bête et en colère contre mon premier formateur. Amicalement Vincent
-
Pause café pour l'éternité... faut aimer le café :) Il parait que les retraités ont encore moins de temps que les personnes en activité. Donc, tu n'auras même plus ton petit quart d'heure de détente le matin pour nous lire :( Blague à part, j'espère bien que tu trouveras encore quelques fois un créneau pour nous rendre visite. Bonne retraite Amicalement Vincent
-
La dernière commande étant une cote continue, c'est un fonctionnement normal. Je ne sais pas s'il y a un moyen de contourner cela avec une macro. Par contre, si tu prends la version lisp qui est donnée dans ton lien, la dernière commande sera DIMCONTINUEX, qui va redémarrer à chaque clic droite. Et tu auras, à chaque clic droite, la séquence cote linéaire, cote continue. Amicalement Vincent
-
Bonsoir, (while (not (zerop (getvar "cmdactive"))) (command pause) ) je ne pense pas que ça serve à grand chose. je pense même que c'est ça qui fait entrer dans une boucle sans fin. et avant la ligne (command "_mleader") il faut (initcommandversion 2) ;; pour que l'éditeur s'ouvre sinon on a une commande _mleader en ligne de commande. C'est moins bien. Je pense que, jusqu'à présent, tu as des styles de cote préétablis dans un fichier dwt. Il faut faire pareil avec les styles de mleader, avec les mêmes noms, taille de texte, de flèche et facteurs d'échelle que les styles de cotes. Enfin, il y a (if (not (tblsearch "DIMSTYLE" CCT_DIMSTYLE)) qui ne vérifie que l'existance du style de cote. Si le style de mleader n'existe pas, la commande _mleaderstyle va se planter. Donc il faut aussi vérifier si le style de _mleader existe. Pour ce faire, il faut passer par les dictionnaires : les mleader ne sont plus stockées dans les tableaux commes les styles de cotes, les calques, les vues etc... mais dans le dictionnaire "ACAD_MLEADERSTYLE". Le progrès... Amicalement Vincent PS : si tu n'aboutis pas, tu peux m'envoyer un MP pour s'échanger les mails. Ainsi, tu pourras m'envoyer ton dwt, et les fichiers lsp et dcl
-
Bonjour, C'est ce que fait la solution donnée par Steven. Au lieu d'imprimer vers une imprimante, on imprime vers un fichier. Comme PDFCreator, en quelque sorte. Amicalement Vincent
-
Bonjour, (initcommandversion 2) ;; pour que l'éditeur s'ouvre (command "_mleader") à la place de (command "_leader") Mais ce n'est pas tout. La commande _leader crée un objet de type "cote", alors qu'un _mleader crée un objet de type "Ligne de repère multiple". Dans le lisp, il y a une ligne (command "_dimstyle" "_r" CCT_DIMSTYLE) ;; restaurer le style de cote qu'il faut laisser, mais qui n'agira pas sur l'aspect des lignes de repère multiples. Il faut donc créer des styles de lignes de repère et les restaurer de la même manière que les styles de cotes. (command "_mleaderstyle" CCT_DIMSTYLE) ;; restaurer le style de repère multiple juste avant (place_cote ...) Amicalement Vincent PS : pour la petite histoire, le lisp dont nous parlons a connu sa première mouture pour la version 12 d'autocad (12 pas 2012 !). A l'époque, il n'était question ni de ligne de repères multiples, ni de cotes annotatives, ni de palettes.
-
Bonjour, je me garderai bien de donner une opinion sur ce que je ne connais pas, puisque je ne fais pratiquement que des ouvrages d'art. Le plus souvent, je n'utilise les plans topo qu'en xref qui sert de fond, avec le projet routier. Et quand le levé a été fait en rase campagne, je pense ne pas me tromper en disant que c'est plus simple qu'en zone urbaine. Par contre, lorsque je dois intervenir sur un ouvrage existant, on me fourni un levé topo et là je rejoins ce qui a été dit plus haut : Parce que le plus souvent on a les éléments de dessus de tablier, mais ce qui se passe en dessous reste flou... Heureusement qu'on a, la plupart du temps, des dossiers de récolement plutôt complets, sinon, avec juste le plan topo, on serait un peu dans la panade. Amicalement Vincent
-
et du lieu ! Parce qu'utiliser un drone à proximité d'un site sensible peut signifier une mise en examen, comme le montre l'actualité récente. Ce serait vraiment la fin des géomètres s'ils finissaient tous derrière les barreaux ! Amicalement Vincent
-
Pour revenir au lisp, le bloc inséré à cette ligne (command "_insert" (cdr (assoc 2 (entget b1))) "_non" (list (car PT3) (cadr PT3) alt3) "1" "1" "0") est arbitrairement à l'échelle 1 et avec un angle de rotation de 0. On pourrait aussi donner les mêmes échelles X et Y, ainsi que la même rotation à ce nouveau bloc que ceux de b1, dont j'ai piqué le nom avec (cdr (assoc 2 (entget b1))), compte tenu que 2 est le code dxf du nom du bloc. De la même manière, tu pourras piquer le facteur d'échelle X, le facteur d'échelle Y et l'angle de rotation de b1 via leur code dxf qui sont respectivement 41, 42 et 50. Amicalement Vincent
-
Schnersheim... quand il y a largement plus de consonnes que de voyelles, c'est sûr que c'est pas évident. Pour t'aider : le "sch" se prononce comme un "ch" français. Par contre, le "sh" ne se prononce pas comme le "sh" anglais, mais comme un "s" suivi d'un "h" et le "ei" se prononce "aï", comme en allemand. Le "heim" de la fin (prononcer "haïm") veut dire quelque chose comme bourg, logis ou village Le "s" qui est devant le "heim" correspond au génitif saxon qu'on trouve en anglais et en allemand (la maison de Pierre = Peters Haus) Quant au préfixe "Schner", on ne sait pas trop d'où cela vient et on ne peut que formuler des hypothèses. Le plus souvent, les préfixes sont liés aux noms des anciens chefs de village ou propriétaires ; parfois ils font allusion à une géographie particulière ou un événement ; plus rarement ils évoquent un trait de caractère supposé des habitants. Tel semble être le cas pour Schnersheim, puisqu'au 9ème siècle, le village s'appelait Snaresheim et que "snarre" (qui a donné schnell en allemand) veut dire en alémanique quelque chose comme "faire rapidement". Donc, est-ce la célérité, autant pour le travail que pour la parole, des habitants de ce village qui lui a donné son nom ? Va savoir ! Amicalement Vincent
-
Bonjour, (defun modif_attrib (E ETIQ VALEUR / LATT ATT) (if (= (type E) 'ENAME) (setq E (vlax-ename->vla-object E)) ) (setq LATT (vlax-invoke E 'getAttributes)) (foreach ATT LATT (if (= (strcase (vla-get-TagString ATT)) (strcase ETIQ)) (vla-put-TextString ATT VALEUR) ) ) ) (defun c:ptmoy () ;; sélectionner les 2 attributs d'altitude (setq e1 (car (nentsel "\n1er attribut d'altitude"))) (setq e2 (car (nentsel "\n2ème attribut d'altitude"))) ;; trouver les blocs correspondant et leurs points d'insertion (setq b1 (cdr (assoc 330 (entget e1)))) (setq b2 (cdr (assoc 330 (entget e2)))) (setq PT1 (cdr (assoc 10 (entget b1)))) (setq PT2 (cdr (assoc 10 (entget b2)))) ;; PT1 et PT2 dans le plan XY (setq PT1 (list (car PT1) (cadr PT1) 0.0)) (setq PT2 (list (car PT2) (cadr PT2) 0.0)) ;; les altitudes données par les attributs (setq alt1 (distof (cdr (assoc 1 (entget e1))))) (setq alt2 (distof (cdr (assoc 1 (entget e2))))) ;; un nouveau point à placer (while (setq PT3 (getpoint "\nEntrer un nouveau point : ")) (setq PT3 (list (car PT3) (cadr PT3) 0.0)) (setq d1 (distance PT1 PT3)) (setq d2 (distance PT2 PT3)) (setq d (+ d1 d2)) (setq alt3 (+ (* (/ (- alt2 alt1) d) d1) alt1)) ;; placer un nouveau bloc (setvar "ATTREQ" 0) (command "_insert" (cdr (assoc 2 (entget b1))) "_non" (list (car PT3) (cadr PT3) alt3) "1" "1" "0") (setvar "ATTREQ" 1) (modif_attrib (entlast) (cdr (assoc 2 (entget e1))) (rtos alt3 2 3)) ) (princ) ) Cela reste moyen comme approximation mais je pense que ça correspond + ou - à la demande. On suppose que le 3ème point donné est placé + ou - entre les 2 précédents, sinon ça risque de donner n'importe quoi. Si cela ne correspond pas à la demande, on pourra adapter le programme en partant de la logique de ce qui est déjà programmé dans la calculette, l'adaptation ne devrait pas être trop compliquée. Par ailleurs, il n'y a aucun contrôle sur ce qui est saisi. Il faudra bien cliquer sur des attributs d'altitude ou rajouter des contrôles dans le prog. Amicalement Vincent
-
Bonjour, On peut sauvegarder un état de zoom dans l'espace objet avec la commande VUE. Au départ, c'est tout ce qu'on pouvait faire, mais progressivement, on a pu associer un scu avec la vue sauvegardée, puis un état de calque. Quand on utilise la commande VUE pour rétablir une vue sauvegardée dans l'espace objet, elle rétablit l'état de zoom ainsi que - s'ils ont été sauvegardés - le scu et l'état de calque. On peut également utiliser la commande VUE pour rétablir des vues sauvegardées dans des fenêtres de l'espace papier. Dans ce cas, étant dans l'espace papier, soit on a activé ESPACEP soit ESPACEO. 1°) ESPACEO : on passe de l'espace papier à l'espace objet d'une fenêtre de présentation. La commande VUE rétablit un vue sauvegardée dans cette fenêtre en rétablissant l'état de zoom, le scu et, ce qui est intéressant, en rétablissant l'état de calques. Les calques qui étaient gelés lors de la sauvegarde dans l'espace objet sont gelés dans la fenêtre courante. Je répète : dans la fenêtre courante, donc uniquement pour cette fenêtre et pas globalement pour l'espace objet ou toutes les autres fenêtres. 2°) ESPACEP : on est en espace papier sans fenêtre de présentation activée. Si on utilise la commande vue à cet instant en espace papier pour rétablir une vue dans une fenêtre, la commande vous demande de préciser quelle fenêtre vous voulez utiliser en la sélectionnant et elle rétablit l'état de zoom dans cette fenêtre, ainsi que le scu. Comme ci dessus, tu vas me dire. Sauf que, pour l'état de calque, il est rétabli globalement. Les calques qui étaient gelés à la sauvegarde de la vue sont rétablis GELES et non GELES DANS LA FENÊTRE. Ce qui n'est quand même pas pareil ! C'est pour cette raison que je conseille la première méthode. Espérant avoir été plus clair Amicalement Vincent PS : à noter que la commande VUE rétablit l'état de calques tel qu'il a été sauvegardé par la même commande VUE. Quid des calques qui ont été créés entre le moment de la sauvegarde de la vue et son rétablissement ? Les calques qui n'existaient pas à la sauvegarde sont GELES (ou GELES DANS LA FENÊTRE suivant les cas exposés ci-dessus)
-
Donc, il est urgent d'attendre avant d'installer la version supérieure ! J'ai bien fait de la garder sous le coude... Amicalement Vincent
-
Je dois m'être mal exprimé. La commande VUE est TRES utile y compris en espace objet, mais il faut avoir fait un ESPACEO avant pour que la liste de calques sauvegardée soit effectivement appliquée à la fenêtre de présentation. Amicalement Vincent
-
on n'ose pas installer 2015, cela me rappelle la version 13. Sinon, la locution "Autant pour moi" est sujette à controverse. L'académie lui préfère "Au temps pour moi", mais on va laisser les grammairiens s'étriper à ce propos. Amicalement Vincent
-
Bonjour, J'utilise la commande VUE pour sauvegarder des états de zoom et, accessoirement, le scu qui lui est rattaché (bien pratique quand on a tourné le scu ou déplacé son origine, ou les deux). Je me sers aussi de la commande VUE pour rétablir mes vues sauvegardées dans les fenêtres FMULT de présentation. Ma question, ou plutôt ma constatation, concerne l'option "Enregistrer le cliché de calques avec la vue" de la commande VUE, bouton "Nouveau..." (ce serait plus correct de mettre "Nouvelle...", mais bon...) puis "paramètres". Si cette option est activée : - et on est dans l'espace objet : cela rétablit la vue avec l'état de calques au moment de la sauvegarde (très bien...) - et on est dans l'espace papier sans avoir accédé à l'espace objet dans une fenêtre : la commande VUE permet de rétablir une vue dans une fenêtre sur laquelle on est invité à cliquer. Par contre, l'état de calque de la vue sauvegardée est rétabli non pas dans la fenêtre sélectionnée, mais dans l'espace papier lui-même (pas bien...) - et on est dans l'espace papier en ayant accédé à l'espace objet dans une fenêtre : la commande VUE rétablit la vue dans la fenêtre active et rétablit l'état de calque dans la fenêtre. Les calques gelés au moment de la sauvegarde deviennent des calques gelés dans la fenêtre active. (et ça c'est bien) J'en arrive à la conclusion que la commande vue ne doit être utilisée qu'avec une fenêtre active en espace objet si on veut y rétablir un état de calque par la même occasion. Votre avis sur la question rejoint-il le mien ? Merci d'avance Amicalement Vincent
-
Bonjour, rien à voir avec l'application utilisée, mais cela me rappelle une vieille pub de la fin des années 70, à propos d'une montre qui résiste à tout ! Je l'ai retrouvée à l'INA. Amicalement Vincent
