-
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_
-
[Résolu] Modifier des attributs de blocs dans les espaces papiers
zebulon_ a répondu à un(e) sujet de zza427 dans AutoCAD 2015
Bonjour, à partir de mat de Patrick_35 j'ai fait ceci pour que l'outil ressemble à la commande BATTMAN Le lien vers le dcl et le lisp n'est plus actif dans la discussion ci-dessus. le fichier battval.dcl : battval : dialog { label = "Battval 1.00"; : row { : column { : row { : button { label = "..."; fixed_width = true; key = battval_pick; } : text { label = "sélectionner bloc"; } : popup_list { edit_width = 15; label = "blocs"; key = battval_blist; } } : list_box { width = 50; allow_accept = true; tabs = "10 30"; tab_truncate = true; key = battval_attlist; } : text { key = battval_nbbl; } } : column { fixed_height = true; : button { label = "Editer"; is_default = true; key = battval_mod; } } } : row { fixed_width = true; alignment = centered; : button { key = "accept"; label = "OK"; fixed_width = true; alignment = centered; } : button { key = "cancel"; label = "Annuler"; fixed_width = true; alignment = centered; is_cancel = true; } } } battmod : dialog { label = "Valeur à propager"; initial_focus = battval_prop; : edit_box { key = battval_prop; } ok_cancel; } Le fichier battval.lsp (defun extract_attrib (E ETIQ / LATT ATT REP) (setq REP "") (if (= (type E) 'ENAME) (setq E (vlax-ename->vla-object E)) ) (setq LATT (vlax-invoke E 'getAttributes)) (foreach ATT LATT (if (= (vla-get-TagString ATT) ETIQ) (setq REP (vla-get-TextString ATT)) ) ) REP ) (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 get_AttributList (nom / at bl tb) (setq bl (vla-item (vla-get-blocks AcDoc) nom)) (vlax-for at bl (and (eq (vla-get-objectname at) "AcDbAttributeDefinition") (if (eq (vla-get-constant at) :vlax-true) (setq tb (cons (list (vla-get-tagstring at)) tb)) (setq tb (cons (cons (vla-get-tagstring at) (if (eq (vla-get-promptstring at) "") (vla-get-tagstring at) (vla-get-promptstring at) ) ) tb ) ) ) ) ) (reverse tb) ) (defun get_blocklist (/ liste_bl bl) (vlax-for bl (vla-get-blocks AcDoc) (or (wcmatch (vla-get-name bl) "`**,*|*") (eq (vla-get-isxref bl) :vlax-true) (not (ssget "_X" (list '(0 . "INSERT") (cons 2 (vla-get-name bl))))) (not (get_AttributList (vla-get-name bl))) (setq liste_bl (cons (vla-get-name bl) liste_bl)) ) ) (if liste_bl (acad_strlsort liste_bl) ) ) (defun do_battval_pick (/ lst nom sel) (defun nom(val) (setq val (vlax-ename->vla-object val)) (if (vlax-property-available-p val 'effectivename) (vla-get-effectivename val) (vla-get-name val) ) ) (and (setq sel (entsel "\nVeuillez sélectionner un bloc : ")) (eq (cdr (assoc 0 (entget (car sel)))) "INSERT") (setq lst (member (nom (car sel)) liste_bl)) (setq BATTVAL_BLIST (itoa (- (length liste_bl) (length lst))) BATTVAL_ATTLIST "0" ) ) ) (defun do_battval_nbbl (/ nb) (if ss (setq nb (sslength ss)) (setq nb 0) ) (strcat "Trouvés dans le dessin : " (itoa nb)) ) (defun do_battval_attlist (/ atl ent at ETIQ INV VAL LISTVAL) (setq ATTLIST nil) (setq atl (get_attributlist (nth (atoi BATTVAL_BLIST) liste_bl))) (foreach at atl (setq ETIQ (car at)) (if (not (setq INV (cdr at))) (progn (setq INV "<--CONSTANT-->") (setq VAL "<--NON MODIFIABLE-->") ) (progn (setq LISTVAL nil) (vlax-for ent (vla-get-activeselectionset AcDoc) (setq LISTVAL (cons (extract_attrib ent ETIQ) LISTVAL)) ) (if (vl-remove (car LISTVAL) LISTVAL) (setq VAL "*varie*") (setq VAL (car LISTVAL)) ) ) ) (setq ATTLIST (cons (list ETIQ INV VAL) ATTLIST)) ) (setq ATTLIST (reverse ATTLIST)) (start_list "battval_attlist") (mapcar 'add_list (mapcar '(lambda (x) (strcat (car x) "\t" (cadr x) "\t" (caddr x))) ATTLIST)) (end_list) ) (defun do_battval_blist () (setq BATTVAL_BLIST $value) (setq ss (do_battval_ss)) (set_tile "battval_nbbl" (do_battval_nbbl)) (do_battval_attlist) (setq BATTVAL_ATTLIST "0") (set_tile "battval_attlist" BATTVAL_ATTLIST) ) (defun do_battval_mod (/ what_next BATTVAL_PROP ETIQ ent) (setq BATTVAL_PROP (caddr (nth (atoi BATTVAL_ATTLIST) ATTLIST))) (if (= BATTVAL_PROP "*varie*") (setq BATTVAL_PROP "") ) (if (= BATTVAL_PROP "<--NON MODIFIABLE-->") (alert "Attribut constant non modifiable") (progn (setq what_next 5) (while (< 1 what_next) (if (not (new_dialog "battmod" dcl_id)) (exit)) (set_tile "battval_prop" BATTVAL_PROP) (action_tile "battval_prop" "(setq BATTVAL_PROP $value)") (action_tile "battval_champ" "(done_dialog 2)") (action_tile "accept" "(done_dialog 1)") (action_tile "cancel" "(done_dialog 0)") (setq What_next (start_dialog)) (cond ((= what_next 2) (do_battval_champ)) ) ) (if (= what_next 1) ; OK (progn (setq ETIQ (car (nth (atoi BATTVAL_ATTLIST) ATTLIST))) (vlax-for ent (vla-get-activeselectionset AcDoc) (modif_attrib ent ETIQ BATTVAL_PROP) ) (do_battval_attlist) (set_tile "battval_attlist" BATTVAL_ATTLIST) ) ) ) ) ) (defun do_battval_ss () (ssget "_x" (list '(0 . "INSERT") (cons 2 (nth (atoi BATTVAL_BLIST) liste_bl)))) ) (defun battval_dialog (/ BATTVAL_BLIST BATTVAL_ATTLIST dcl_id what_next ATTLIST ss) ;; initialisation (vla-StartUndoMark AcDoc) (setq BATTVAL_BLIST "0") (setq BATTVAL_ATTLIST "0") ;ouverture de la boîte de dialogue (setq dcl_id (load_dialog "battval.dcl")) (setq what_next 5) (while (< 1 what_next) (if (not (new_dialog "battval" dcl_id)) (exit)) (setq ss (do_battval_ss)) (start_list "battval_blist") (mapcar 'add_list liste_bl) (end_list) (set_tile "battval_blist" BATTVAL_BLIST) (set_tile "battval_nbbl" (do_battval_nbbl)) (do_battval_attlist) (set_tile "battval_attlist" BATTVAL_ATTLIST) (action_tile "battval_attlist" "(setq BATTVAL_ATTLIST $value)") (action_tile "battval_blist" "(do_battval_blist)") (action_tile "battval_mod" "(do_battval_mod)") (action_tile "battval_pick" "(done_dialog 2)") (action_tile "accept" "(done_dialog 1)") (action_tile "cancel" "(done_dialog 0)") (setq What_next (start_dialog)) (cond ((= what_next 2) (do_battval_pick)) ) ) (unload_dialog dcl_id) (vla-EndUndoMark AcDoc) (if (= what_next 0) ; Annuler (progn (vl-cmdf "_undo" 1) (alert "Tout a été annulé") ) ) ) (defun c:battval (/ AcDoc liste_bl) (vl-load-com) ;; initialisations (setq AcDoc (vla-get-activeDocument (vlax-get-acad-object))) ;; (setq liste_bl (get_blocklist)) (if liste_bl (battval_dialog) (alert "Pas de bloc avec attributs\ndans le dessin") ) (princ) ) Amicalement Vincent -
Bonjour, la commande COTEDIT avec l'option DEBUT ? Voir ici pour l'aide Amicalement Vincent
-
Dans cette ligne de code le strcat est nécessaire du fait de la présence de la fonction rtos. Mais, si tu ne voulais passer à la commande "texte" qu'une constante, par exemple "5%\u+2192", on n'aurait plus besoin du strcat. (command "texte" "j" "mc" pt_txt_pente "100" "5%\u+2192") Ce qui revient au même, sur le principe, que ce que j'ai écrit en vlisp. D'ailleurs, dans ta ligne de code, tu pourrais écrire "%\u+2192" à la place de "%" "\u+2192", mais c'est un détail. J'ai souhaité préciser compte tenu que ma deuxième réponse laissait entendre qu'il fallait absolument utiliser strcat, ce qui n'est pas le cas. Désolé si mon manque de précision, à cause duquel je me suis déjà fait taper sur les doigts par le passé, t'a conduit à le penser. C'est tout un art d'être clair et précis dans ce qu'on raconte :D Amicalement Vincent
-
Super ! Finalement, strcat n'est pas forcément nécessaire si on donne à la commande mtext tout de suite le bon index, comme par exemple (setq AcDoc (vla-get-activeDocument (vlax-get-acad-object)) Space (if (= (getvar "CVPORT") 1) (vla-get-PaperSpace AcDoc) (vla-get-ModelSpace AcDoc) ) ) (vla-addmtext space (vlax-3d-point '(0 0)) 0 "\u+2190 essai \u+2192") Amicalement Vincent
-
Je pense que c'est dû au fait que la fonction chr date d'une époque où l'unicode n'existait pas. De ce fait, cette fonction ne sait gérer que les codes ASCII standard (jusqu'à 127) et les autres codes étendus, mais dans la limite de 256 caractères. On peut remarquer que la réciproque est vraie également et que la fonction ascii ne renvoie le code ascii que des 256 premiers caractères. Si on demande le code ascii d'un caractère qui se situe au delà de cette limite on obtient toujours le code 92 qui correspond au "\" De toute façon, on n'arrive pas à écrire (ascii "←") dans un fichier ANSI (qui est le standard de notepad ou de l'éditeur de texte de lisp), donc le problème ne peut même pas se poser. Mais le resultat 92 s'explique par le fait que ascii retourne la conversion du premier caractère de la chaine en son code ASCII. (ascii "←") doit être synonyme de (ascii "\u+2190"), donc de (ascii "\\"), donc de 92 Sinon, tu as pu faire fonctionner ton lisp avec (strcat "\u+2190") et (strcat "\u+2192") ? Amicalement Vincent
-
Parce que l'éditeur de texte ne les accepte pas, forcément ça marche moins bien... :( Question idiote de ma part, désolé Sinon, pour coder avec l'unicode du caractère, on peut imaginer d'utiliser la fonction strcat Amicalement Vincent
-
Bonjour, le paramètre de la fonction chr doit être compris entre 1 et 255. S'il est au delà, la valeur retournée est aléatoire. Pourquoi utiliser l'unicode et pas directement le caractère "→" ou "←" ? Amicalement Vincent
-
[Résolu] Dans un GetPoint, ou est le Z ?
zebulon_ a répondu à un(e) sujet de DenisHen dans Débuter en LISP
Coincé est un mot qui n'est pas approprié. Désolé, mais il faut m'excuser car le français n'est pas ma langue maternelle. On n'est pas "coincé" puisqu'on peut toujours faire autant de (car (cdr (cdr ... liste))) qu'on veut. Ce que je voulais dire, c'est qu'on n'a plus en magasin de fonction unique qui fait le boulot, sauf nth. Merci pour la précision Amicalement Vincent -
[Résolu] Dans un GetPoint, ou est le Z ?
zebulon_ a répondu à un(e) sujet de DenisHen dans Débuter en LISP
Bonjour Bonuscad, ce n'est pas ce qui m'est reproché et je pense que Didier est également d'accord avec toi sur l'utilisation des car et consorts. Il me corrigera le cas échéant. Il me reproche ceci : et Je me permets donc d'éclaircir mon propos : avec car et consorts, on arrive à piocher le premier élément d'une liste avec car, le second avec cadr, le troisième avec caddr et le quatrième avec cadddr. Mais après le quatrième niveau on se retrouve coincé parce que caddddr n'existe pas. Et l'aide est claire à ce sujet Donc, si on veut récupérer le 5ème (ou plus) élément d'une liste, le nth devient plus simple. Lorsque j'ai dit, "quand c'est des atomes c'est plus simple avec nth", j'aurais dû dire le contraire. Quand on a des listes de listes, c'est plus simple à gérer avec car, cdr et compagnie. Ce que j'ai illustré par cet exemple : Et il y a des choses qu'on ne peut pas reproduire avec nth, ce sont les fonctions cdr, cddr, cdddr etc... qui renvoient une liste. Pour conclure, je pense qu'on peut se passer de nth dans 99% des cas, comme le plus souvent quand on traite une liste, on utilise 3 outils de base qui sont l'adjonction en tête, la tête et la queue. En lisp cons, car et cdr, comme l'a rappelé (gile). Lorsque j'ai appris à programmer avec Turbo Pascal dans les années 1985, ces fonctions n'existaient pas et il fallait s'écrire ses propres fonctions de gestion de liste à partir de pointeurs. Heureusement, comme la liste est l'ADN du lisp, on dispose de tout cela directement. Il n'est pas question, en effet de faire un bras de fer, il est question d'être clair dans ses propos. Si je ne l'ai pas été suffisamment, je vous demande de m'excuser. De là à dire que ce que j'ai écrit est faux, c'est un peu disproportionné. Amicalement Vincent -
[Résolu] Mais de quel angle parle-t'on ?
zebulon_ a répondu à un(e) sujet de DenisHen dans Débuter en LISP
Bonsoir, L'inconvénient des commandes qui utilisent des angles est qu'il faut savoir si on est en radian, grades ou degrés. Je préfère donc donner un point. S'il y a plusieurs blocs à insérer, je pense qu'on peut récupérer l'angle avec la fonction angle et calculer le point avec la fonction polar. On reste cohérent puisque les 2 fonctions utilisent le radian. Enfin, il me semble. Amicalement Vincent -
[Résolu] Dans un GetPoint, ou est le Z ?
zebulon_ a répondu à un(e) sujet de DenisHen dans Débuter en LISP
Bonsoir, Amicalement Qui que ce soit -
[Résolu] Mais de quel angle parle-t'on ?
zebulon_ a répondu à un(e) sujet de DenisHen dans Débuter en LISP
Pourquoi ? C'est pas bon de donner un point plutôt qu'une valeur d'angle ? Amicalement Vincent -
[Résolu] Dans un GetPoint, ou est le Z ?
zebulon_ a répondu à un(e) sujet de DenisHen dans Débuter en LISP
Je ne pense pas avoir écrit tellement de conneries. Et si c'est le cas, je ne suis pas le seul : Donc nth renvoie nil et non une erreur. Fait gaffe à ce que tu écris ! Un jour quelqu'un va te lire etc... Ensuite, la concaténation de car et cdr est limitée à 4 niveaux. Ce qui veut dire qu'on peut écrire (cadddr liste) à la place de (car (cdr (cdr (cdr liste)))), mais que (caddddr liste) n'existe pas et là, il faut écrire (car (cdr (cdr (cdr (cdr liste))))). Enfin, il me semble. A vérifier sur vos versions. Ensuite, nth renvoie le nième élément d'une liste, quelle que soit la liste. Si le nième élément de liste est une liste, alors nth renvoie une liste. Ce que je voulais dire est que, si on a une liste du genre '("a" ("b" "c") "d" "e") et qu'on veut récupérer le "b", c'est plus court en faisant (car (car (cdr liste)), ou plus simplement (caadr liste). Avec nth, il faut faire 2 étapes. Après, chacun fait comme il veut, du moment que ça fonctionne. Amicalement Vincent -
[Résolu] Mais de quel angle parle-t'on ?
zebulon_ a répondu à un(e) sujet de DenisHen dans Débuter en LISP
quand tu insères le bloc en utilisant la commande _-insert en ligne de commande, ça donne quoi ? Amicalement Vincent -
[Résolu] Mais de quel angle parle-t'on ?
zebulon_ a répondu à un(e) sujet de DenisHen dans Débuter en LISP
Bonsoir, plutôt que de se casser la tête avec un angle et compte tenu que tu as pt_ins et pt_dir, il vaudrait mieux donner le point pt_dir à la place de l'angle dans le (command "_insert" ...). Quand on insère un bloc "à la main", on donne le plus souvent un 2ème point. Ce n'est que rarement qu'on tape une valeur d'angle au clavier. (command "_insert" "toto" "_non" Pt_Ins "1" "1" "_non" Pt_dir) Du coup on se fout de savoir si on est en radians, degrés etc... ou de savoir si l'angle 0 est à l'est ou au nord ou Dieu sait où. Amicalement Vincent -
[Résolu] Dans un GetPoint, ou est le Z ?
zebulon_ a répondu à un(e) sujet de DenisHen dans Débuter en LISP
Bonjour, lorsque les éléments de la liste sont des atomes, la fonction nth est sans doute plus facile à utiliser pour piocher le nième élément d'une liste, d'autant plus qu'avec (caar liste), (cadr liste), etc... on est limité à une profondeur de 4 niveaux. Mais lorsque les éléments de la liste sont des listes, la notation concaténée de car et de cdr me semble plus directe, ou dans d'autres cas comme dans l'exemple ci-dessous ;; Intersections - Lee Mac ;; Returns a list of all points of intersection between two objects ;; for the given intersection mode. ;; ob1,ob2 - [vla] VLA-Objects ;; mod - [int] acextendoption enum of intersectwith method (defun LM:intersections ( ob1 ob2 mod / lst rtn ) (setq lst (vlax-invoke ob1 'intersectwith ob2 mod)) (repeat (/ (length lst) 3) (setq rtn (cons (list (car lst) (cadr lst) (caddr lst)) rtn) lst (cdddr lst) ) ) (reverse rtn) ) qui utilise la fonction (cdddr liste) qui permet d'enlever les 3 premiers éléments d'une liste et qui n'a pas d'équivalent avec nth. Amicalement Vincent -
[Résolu] Dans un GetPoint, ou est le Z ?
zebulon_ a répondu à un(e) sujet de DenisHen dans Débuter en LISP
Les 2 fonctions de base sont (car x) et (cdr x). Tout le reste en découle. les équivalences pour les concaténations d'une série de car / cdr (caar x) (car (car x)) (cadr x) (car (cdr x)) (cdar x) (cdr (car x)) (cddr x) (cdr (cdr x)) (caaar x) (car (car (car x))) (caadr x) (car (car (cdr x))) (cadar x) (car (cdr (car x))) (caddr x) (car (cdr (cdr x))) (cdaar x) (cdr (car (car x))) (cdadr x) (cdr (car (cdr x))) (cddar x) (cdr (cdr (car x))) (cdddr x) (cdr (cdr (cdr x))) (caaaar x) (car (car (car (car x)))) (caaadr x) (car (car (car (cdr x)))) (caadar x) (car (car (cdr (car x)))) (caaddr x) (car (car (cdr (cdr x)))) (cadaar x) (car (cdr (car (car x)))) (cadadr x) (car (cdr (car (cdr x)))) (caddar x) (car (cdr (cdr (car x)))) (cadddr x) (car (cdr (cdr (cdr x)))) (cdaaar x) (cdr (car (car (car x)))) (cdaadr x) (cdr (car (car (cdr x)))) (cdadar x) (cdr (car (cdr (car x)))) (cdaddr x) (cdr (car (cdr (cdr x)))) (cddaar x) (cdr (cdr (car (car x)))) (cddadr x) (cdr (cdr (car (cdr x)))) (cdddar x) (cdr (cdr (cdr (car x)))) (cddddr x) (cdr (cdr (cdr (cdr x)))) En fait, c'est simple à comprendre : tu enlèves le "c" du début et le "r" de la fin et tu regardes ce qui te reste. Le "a" indique qu'il y a une car et le "d" indique qu'il y a un cdr. La limite, c'est 4 niveaux, ce qui peut permettre de gérer des listes de listes de listes de listes... J'en bégaye ! :) Exemple : (cddadr x) tu enlèves le "c" et le "r", il te reste "ddad", d'où : (cdr (cdr (car (cdr x))) Amicalement Vincent -
etat d'inversion automatique qui bug
zebulon_ a répondu à un(e) sujet de PHILPHIL dans Routines LISP
Super ! :) voir aussi la syntaxe dans ce sujet. Cela te permettra de faire le tri entre les variants, les arrays et de savoir quand on peut s'en passer. Amicalement Vincent -
Alléger image sld pour boîte de dialogue
zebulon_ a répondu à un(e) sujet de Neophyte dans LISP et Visual LISP
Bonjour, le cliché sld est une technologie assez ancienne. J'ai déjà fait un essai en insérant une image jpg (ou autre) dans autocad et en créant un cliché sld avec l'image jpg à l'écran. Le résultat n'est pas génial ni en terme de qualité d'image ni en terme de taille de fichier. A mon avis, il faut créer le sld uniquement avec des objets autocad simples à l'écran. Déjà que sld ne sait pas gérer correctement les hachures, le polylignes épaisses ou les textes avec des polices autres que shx Donc, proscrire le jpg pour créer un sld. Ou alors suivre la piste indiquée par Patrick_35. Amicalement Vincent -
etat d'inversion automatique qui bug
zebulon_ a répondu à un(e) sujet de PHILPHIL dans Routines LISP
Bonjour, dans le cas d'un état d'inversion, les valeurs admises sont bien (0 1), mais il faut transformer les entiers en variants avant de les injecter dans la fonction (vla-put-value ...) J'ai fait un essai sur un bloc qui n'a qu'un seul paramètre d'inversion. Amicalement Vincent -
Bonjour, quoi de neuf ? Le fichier que j'ai pondu est-il satisfaisant ? Amicalement Vincent
-
Bonjour, en plus le fichier a des unités en pieds... J'ai traité le fichier avec ce lisp, en changeant au préalable les unités en mètres et en rajoutant un bloc qui s'appelle TopoPoint qui contient 3 attributs : le matricule, l'altitude et le code symbole (defun c:pt2d3d () (setvar "CLAYER" "17-TOPOALT") (setq sspt (ssget "_X" '((0 . "POINT")))) (setq sstx (ssget "_X" '((0 . "TEXT") (8 . "17-TOPOALT")))) (setq I 0) (repeat (sslength sspt) (setq PT (ssname sspt I)) (setq I (1+ I)) (setq PTINS (cdr (assoc 10 (entget PT)))) (setq lstd nil) (setq J 0) (repeat (sslength sstx) (setq TX (ssname sstx J)) (setq J (1+ J)) (if (and (assoc 11 (entget TX)) (not (equal (cdr (assoc 11 (entget TX))) '(0.0 0.0 0.0) 0.0001)) ) (setq TXINS (cdr (assoc 11 (entget TX)))) ;; le point d'alignement s'il existe et non à (0 0 0) (setq TXINS (cdr (assoc 10 (entget TX)))) ;; sinon le point d'insertion ) (setq lstd (cons (list TX (distance PTINS TXINS)) lstd)) ) (setq TX (caar (vl-sort lstd '(lambda (e1 e2) (< (cadr e1) (cadr e2)))))) (setq ZVAL (distof (cdr (assoc 1 (entget TX))))) (setq XVAL (cadr (assoc 10 (entget pt)))) (setq YVAL (caddr (assoc 10 (entget pt)))) (setvar "attreq" 1) (setq MATRICULE "") (setq CodeSymbole "") (command "_insert" "TopoPoint" "_non" (trans (list xval yval zval) 0 1) 1 1 0 MATRICULE (cdr (assoc 1 (entget TX))) CodeSymbole) ) (princ) ) En pièce jointe le résultat Amicalement Vincent PS : le nombre de points est relativement petit dans ce cas. Pour un fichier plus gros, avec un nombre de points plus grand, il aurait fallu restreindre le ssget '((0 . "TEXT")) à une zone en périphérie de chaque point étudié, plutôt que de prendre tous les textes d'altitude présents dans le fichier Points 3D.zip
-
C'est probablement cela... Tant pis, je vais continuer à multiplier "à la main". Il n'en reste pas moins que c'est illogique : si ça ne sert à rien dans la version de base, pourquoi le faire apparaitre ? Mais ce n'est pas bien grave et il y a sans doute d'autres points plus importants à améliorer. Merci Amicalement Vincent
-
Bonjour, la commande propmeca permet notamment de récupérer le volume d'un solide 3D et affiche quelque chose du genre : Compte tenu qu'il y a une ligne pour le volume et une pour la masse qui, comme on voit, affichent la même valeur, je me suis dit qu'il devait y avoir un moyen de régler la densité quelque part en fonction du matériaux qu'on utilise. Sauf que je n'ai pas trouvé et, en plus, l'aide me dit cela : Quel est, dans ce cas, l'intérêt d'avoir deux lignes d'informations ? Merci pour vos lumières. Amicalement Vincent
-
Attribution d'un sens à une polyligne
zebulon_ a répondu à un(e) sujet de Neophyte dans LISP et Visual LISP
Bonjour, et ces pk, qui représentent l'abscisse curviligne de tout point d'un projet routier (ferroviaire, fluvial...), sont souvent matérialisés sur place par des petits panneaux. Sur les autoroutes, on a souvent des petits panneaux tous les 100m en TPC (terre-plein central), qui indiquent la distance en km par rapport à l'origine du projet (c'est utile aussi pour les secours, pour savoir où a eu lieu un accident, par exemple). Les ouvrages d'art sont aussi repérés en fonction de leur pk. On dit par exemple l'OA 1 de Troyes au pk 0,123, qui est donc le premier Ouvrage d'Art de la déviation de Troyes et qui se situe à l'abscisse curviligne 0.123km. En circulant sur la "voie montante" d'une autoroute, on voit les valeurs indiquées sur les panonceaux augmenter tous les 100m. Forcément, en circulant sur la "voie descendante", elles diminuent. Amicalement Vincent
