Max73 Posté(e) le 5 août 2022 Posté(e) le 5 août 2022 Bonjour, existerait t il une lisp pour avoir la longueur d une polyligne 2d ou 3d, et avec le nombre de sommet qu elle contient aussi sans compter les deux extrémité, et enfin la diference en Z pour une polyligne 3d. il y a la Lisp de gille totalperim mais elle me convient pas tout a fait
didier PostĂ©(e) le 5 aoĂ»t 2022 PostĂ©(e) le 5 aoĂ»t 2022 Bonjour @Max73 OUI, ça existe. Je dĂ©pose un fichier lsp qui devrait faire le job, mais comme la question manque de prĂ©cision quant Ă ce qui est attendu par l'utilisateur, il faudra le retravailler. Faut-il sortir les coordonnĂ©es dans un fichier ? dans une liste pour ĂȘtre utilisĂ©e par un autre lisp ? Que signifie : sans compter (et non conter) les deux extrĂ©mitĂ©s ? Amicalement Poly3D-Liste-Sommets-01.LSP Ăternel dĂ©butant⊠Mon site perso : Programmer dans AutoCAD Â
Luna Posté(e) le 5 août 2022 Posté(e) le 5 août 2022 Coucou, A quoi correspond la "Différence en Z pour une polyligne 3D" ? Quel est le résultat attendu ? Bisous, Luna
didier PostĂ©(e) le 5 aoĂ»t 2022 PostĂ©(e) le 5 aoĂ»t 2022 Bonjour @Luna Je te remercie pour la question, car j'ai oubliĂ© de la poser. Avec le temps (depuis 2002) on commence Ă se lasser des questions incomplĂštes et Ă©vasives (en restant dans l'euphĂ©misme). Nous faisons des efforts, mais c'est bien souvent Ă sens unique. Souhaitons que @Max73nous dĂ©taille plus avant son souhait pour qu'on puisse l'aider efficacement. Amicalement  Ăternel dĂ©butant⊠Mon site perso : Programmer dans AutoCAD Â
Max73 PostĂ©(e) le 11 aoĂ»t 2022 Auteur PostĂ©(e) le 11 aoĂ»t 2022 bonjour, DĂ©sole pour les question Ă©vasives (malheureusement je suis un peut le pro pour ca c'est trĂšs claire dans ma tĂȘte mais moins sur le papier) et sa je le sais, donc merci encore et n hĂ©sitĂ© pas a posĂ© des question pour que j essaie d ĂȘtre plus claire.  Enfaite je travail sur des isomĂ©tries avec des polyligne 3d, et je voudrait en un clic sur une polyligne Ă©crire sur l iso la longueur de la polyligne, et le nombre de sommet quel contient sans les deux extrĂ©mitĂ©, et aussi avoir le diffĂ©rence d altimĂ©trie entre les deux extrĂ©mitĂ©s. voici le texte que je devrait pose sur la polyligne, Attention mes plan sont tracer en millimĂštre mais il me faut le rĂ©sultat en mĂštre. et le text devrais ce trouve sur le mem calque que la polyligne aussi. Bon pas sur que sa soit plus clair mais n hĂ©sitĂ© pas. Merci.
Luna PostĂ©(e) le 11 aoĂ»t 2022 PostĂ©(e) le 11 aoĂ»t 2022 Coucou, La diffĂ©rence d'altimĂ©trie entre quelques extrĂ©mitĂ©s ? Celles que l'on ignore ou bien celles que l'on conserve ? Pour la longueur, mĂȘme question : faut-il la longueur totale (en comptant les extrĂ©mitĂ©s que l'on ignore) ou bien la longueur corrigĂ©e (sans prendre en compte les extrĂ©mitĂ©s que l'on ignore) Donc le rĂ©sultat attendu c'est un MTEXT prĂ©sentĂ© comme suit ? Citation Lg. = ... m Nb. = ... u ; (Ă©gal Ă n-2 avec n le nombre total de sommets) Dz. = ±... m OĂč faut-il placer le MTEXT ? L'utilisateur le place manuellement ou bien il doit se placer Ă un endroit en particulier par rapport Ă la polyligne ? Faut-il que les informations soient sous forme de champ dynamique (tout va dĂ©pendre des rĂ©ponses par rapport aux premiĂšres question) ? Bisous, Luna
Max73 Posté(e) le 11 août 2022 Auteur Posté(e) le 11 août 2022 la différence d altimétrie doit ce faire entre les deux extrémité que l'on ignore. la longueur et la longueur totale. le résultat en Mtext me va trÚs bien. c'est l utilisateur que le place et si possible le Mtext ne peut se déplacé que sur la polyligne. champ dynamique serait pas mal car si il y a une modification les info changerons aussi.
Luna PostĂ©(e) le 11 aoĂ»t 2022 PostĂ©(e) le 11 aoĂ»t 2022 Oki c'est plus clair pour moi ^^" Du coup pour les champs dynamiques, seule la longueur sera mise Ă jour en cas de modification. Je n'ai pas vraiment le temps de regarder chat tout de suite, mais je verrai chat ce WE đ Bisous, Luna
Max73 Posté(e) le 11 août 2022 Auteur Posté(e) le 11 août 2022 ok pas de soucis, rien n est urgent c'est gentil de t en occupe merci. Bisous,
Luna PostĂ©(e) le 14 aoĂ»t 2022 PostĂ©(e) le 14 aoĂ»t 2022 Coucou @Max73, Essaye de voir si cela te convient ou pas (j'ai essayĂ© de faire au mieux selon la demande, sans surplus ^^") : ;--- Author : Luna ;--- Date : 14/08/2022 ;--- Version : 1.0.0 ; CrĂ©ation d'un objet MText dĂ©taillant la longueur totale d'une polyligne 3D (champ dynamique), du nombre total de sommets (sauf extrĂ©mitĂ©s) ainsi que ; la diffĂ©rence d'altitude (Z) entre les deux extrĂ©mitĂ©s ignorĂ©es (ZdĂ©but - Zfin). Le MText est rattachĂ© Ă la polyligne 3D via (grread) pour suivre la ; courbe. La rotation du texte est alignĂ©e Ă l'axe X du SCU courant et les valeurs spĂ©cifiĂ©es dans le MText sont exprimĂ©es en mĂštres, quelque soit la ; valeur de "INSUNITS". Le MText est insĂ©rĂ© sur le calque de la polyligne 3D (mais les propriĂ©tĂ©s de couleurs, transparence, etc... correspondent aux ; valeurs courantes pour les nouveaux objets). (defun c:Poly3D_Max73 (/ get-poly-info cvunits set-MTEXT move-MTEXT name info layer htxt str text) (defun get-poly-info (ent / ob vs ve ps pe ID fa lg pt Dz) (if (and (setq ob (vlax-ename->vla-object ent)) (setq vs (vlax-curve-getStartPoint ent)) (setq ve (vlax-curve-getEndPoint ent)) (setq ps (vlax-curve-getStartParam ent)) (setq pe (vlax-curve-getEndParam ent)) (setq ID (vla-get-ObjectID ob)) (setq fa (getvar "INSUNITS")) (setq lg (strcat "%<\\AcObjProp.16.2 Object(%<\\_ObjId " (itoa ID) ">%).Length \\f \"%lu2%pr1%ct8[" (rtos (cvunits 1 fa 6)) "]%th32\">%")) (setq pt (1+ (fix pe))) (setq Dz (- (last ve) (last vs))) ) (list lg pt (cvunits Dz fa 6)) ) ) (defun cvunits (value from-unit to-unit / f) (defun f (u) (if (= (type u) 'INT) (cond ((= u 1) "inch") ((= u 2) "foot") ((= u 3) "mile") ((= u 4) "millimeter") ((= u 5) "centimeter") ((= u 6) "meter") ((= u 7) "kilometer") ((= u 8) "microinch") ((= u 9) "millipouce") ((= u 10) "yard") ((= u 11) "Angstrom") ((= u 12) "nanometer") ((= u 13) "micron") ((= u 14) "decimeter") ((= u 15) "dekameter") ((= u 16) "hectometer") ((= u 17) "gigameter") ((= u 18) "astronomical_unit") ((= u 19) "light_year") ((= u 20) "parsec") ((= u 21) "survey_foot") ) u ) ) (cvunit value (f from-unit) (f to-unit)) ) (defun set-MTEXT (pt wd str ht rt ly / ms ob) (and (setq ms (vla-get-ModelSpace (vla-get-ActiveDocument (vlax-get-acad-object)))) (setq pt (vlax-3D-point pt)) (setq ob (vla-AddMText ms pt wd str)) (null (vlax-put ob 'Height ht)) (null (vlax-put ob 'Rotation rt)) (null (vlax-put ob 'Layer ly)) ) ob ) (defun move-MTEXT (msg curve mtext / gr pt) (princ msg) (while (and (setq gr (grread T)) (= 5 (car gr))) (setq pt (trans (cadr gr) 1 0)) (setq pt (vlax-curve-getClosestPointTo curve pt)) (vla-move mtext (vla-get-InsertionPoint mtext) (vlax-3D-point pt)) ) mtext ) (and (setq name (entsel "\nSĂ©lectionner une polyligne 3D : ")) (setq name (car name)) (= "POLYLINE" (cdr (assoc 0 (entget name)))) (setq info (get-poly-info name)) (setq layer (cdr (assoc 8 (entget name)))) (null (initget 6)) (or (setq htxt (getreal (strcat "\nSpĂ©cifier la hauteur de texte <" (rtos (getvar "TEXTSIZE")) ">: "))) (setq htxt (getvar "TEXTSIZE")) ) (setq str (strcat "Lg = " (car info) "m" "\n" "So = " (itoa (- (cadr info) 2)) "u" "\n" "Al = " (rtos (caddr info) 2 1) "m" ) ) (setq text (set-MTEXT '(0.0 0.0 0.0) (* htxt 10) str htxt 0.0 layer)) (move-MTEXT "\nSĂ©lectionner un point d'insertion : " name text) ) (princ) ) Normalement cela devrait suivre les infos que tu m'as donnĂ© đ Sur ce, bonne nuit ! Bisous, Luna
Max73 PostĂ©(e) le 17 aoĂ»t 2022 Auteur PostĂ©(e) le 17 aoĂ»t 2022 Bonjour,@Luna Un trĂšs grand merci c'est tout a fait ce qu' il le faut đ. aprĂšs il aurait deux trois ajustement pour parfaire le truc mais qui ne sont pas vraiment important. il faut mette la hauteur du texte a 100mm de haut tout de suite, et avoir 2 chiffre aprĂšs la virgule pour la longueur. Si cela et possible bien sur đ Si non encore merci, Bisous.
lecrabe Posté(e) le 17 août 2022 Posté(e) le 17 août 2022 Hello En theorie tu mets TEXTSIZE a 100 avant de lancer la routine !? La Sante, Bye, lecrabe  Autodesk Expert Elite Team
lecrabe Posté(e) le 17 août 2022 Posté(e) le 17 août 2022 Hello Et toujours en theorie :        (setq lg (strcat "%<\\AcObjProp.16.2 Object(%<\\_ObjId " (itoa ID) ">%).Length \\f \"%lu2%pr1%ct8[" (rtos (cvunits 1 fa 6)) "]%th32\">%")) Tu mets a la place :        (setq lg (strcat "%<\\AcObjProp.16.2 Object(%<\\_ObjId " (itoa ID) ">%).Length \\f \"%lu2%pr2%ct8[" (rtos (cvunits 1 fa 6)) "]%th32\">%")) pr2 a la place de pr1 La Sante, Bye, lecrabe Autodesk Expert Elite Team
Luna PostĂ©(e) le 17 aoĂ»t 2022 PostĂ©(e) le 17 aoĂ»t 2022 Coucou, La thĂ©orie de @lecrabe est correcte đ ! Comme j'ai dit, je n'ai fait que suivre les infos que tu m'as donnĂ©es, Ă savoir 1 chiffre aprĂšs la virgule et non 2 (d'aprĂšs ta capture d'Ă©cran du texte souhaitĂ©)... Pour la hauteur de texte, j'ai prĂ©fĂ©rĂ© poser la question, mais en mettant TEXTSIZE (variable systĂšme) comme valeur par dĂ©faut. Donc si tu veux que ton texte fasse 100mm de haut (et que tu bosses en mm), il te suffit de modifier toi-mĂȘme la valeur de TEXTSIZE Ă 100 et tu l'auras comme valeur par dĂ©faut ! Je ne voulais tout simplement pas modifier la valeur de TEXTSIZE via le programme car cela correspond Ă ta mĂ©thode de travail donc je prĂ©fĂšre Ă©viter de la changer pour toi đ Bisous, Luna
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