litelsousa Posté(e) le 29 octobre 2019 Posté(e) le 29 octobre 2019 Bonjour, J'aurais besoin d'arrondir mes cotes à la vingtaine supérieure.Par exemple, de 0 à 20, ma cote serait de 20.de 20.1 à 40, elle serait de 40 et ainsi de suite. après de longues recherches J'ai trouvé différents sujets sur l'arrondi, mais pas pour faire ça à la valeur supérieur.Y a t-il une propriété de cote pour le faire? Merci pour votre aide. Citer
lecrabe Posté(e) le 29 octobre 2019 Posté(e) le 29 octobre 2019 Hello Je pense qu il te faut une Routine LSP avec une question relative à la valeur d arrondi (5/10/20/25/50/etc) ?! Qui générerait la valeur adéquate dans le champ "Remplacement du Texte" de la Cotation... Bye, lecrabe "triste" Citer Autodesk Expert Elite Team
litelsousa Posté(e) le 30 octobre 2019 Auteur Posté(e) le 30 octobre 2019 Hello, Je suis alors malheureusement obligé de vous demander votre aide, il faudrait que j'aie une valeur d'arrondi supérieur à 20. Je vous remercie Citer
VDH-Bruno Posté(e) le 26 novembre 2019 Posté(e) le 26 novembre 2019 BonjourVisiblement ce post ne remporte pas un franc succès, je vais tenter une réponse rapide.J'aurais besoin d'arrondir mes cotes à la vingtaine supérieure.Par exemple, de 0 à 20, ma cote serait de 20.de 20.1 à 40, elle serait de 40 et ainsi de suite. Je te propose 2 codes, le premier répond à ta demande en forçant le texte de cotation…(defun c:dimVingtaine (/ ss i e) (setq ss (cond ((ssget "_I" '((0 . "DIMENSION")))) (T (princ "\nSélectionnez les cotations arrondir à la vingtaine supérieur...") (ssget '((0 . "DIMENSION")))) ) ) (repeat (setq i (if ss (sslength ss) 0)) (setq e (entget (ssname ss (setq i (1- i))))) (entmod (subst (cons 1 (rtos (* 20.0 (1+ (fix (/ (- (cdr (assoc 42 e)) 0.00000001) 20.0))) ) 2 3 ) ) (assoc 1 e) e ) ) ) (princ) ) Le second fait la même chose avec une valeur de champ, dans Autocad (du moins sur ma veille version) il n’est pas possible de créer ce type de champ en manuel, car normalement en mode édition les propriétés de l’entité ne sont pas accessible aux valeurs de champ.Mais c’est réalisable par programmation, c’est un assemblage rapide de plusieurs lignes de code que j’ai sous la main donc certainement optimisable, sans tester en profondeur ça doit tout de même faire le travail… ;; VDH-Bruno (defun c:dimVingtaine (/ ss i obj id) ;; gc:GetObjectIdString (gile) ;; Retourne l'ObjectId de 'obj' sous forme de chaîne représentant un entier 32 ou 64 bits ;; ;; Argument ;; obj : l'objet dont on cherche l'ObjectId (vla-object) (defun gc:GetObjectIdString (obj) (or *util* (setq *util* (vla-get-Utility (vla-get-ActiveDocument (vlax-get-acad-object)) ) ) ) (if (vlax-method-applicable-p *util* 'GetObjectIdString) (vla-GetObjectIdString *util* obj :vlax-false) (itoa (vla-get-ObjectId obj)) ) ) (setq ss (cond ((ssget "_I" '((0 . "DIMENSION")))) (T (princ "\nSélectionnez les cotations arrondir à la vingtaine supérieur...") (ssget '((0 . "DIMENSION")))) ) ) (repeat (setq i (if ss (sslength ss) 0)) (setq obj (vlax-ename->vla-object (ssname ss (setq i (1- i)))) id (gc:GetObjectIdString obj) ) (vla-put-TextOverride obj (strcat "%<\\AcExpr ((20.0 * (1 + (trunc ( ( %<\\AcObjProp Object(%<\\_ObjId " id ">%).Measurement>% - 0.00000001) / 20.0 ))))) \\f \"%lu2%pr0\">%" ) ) ) (command "_REGEN") (princ) ) A tester ce qui te convient le mieuxBruno Citer Apprendre => Prendre => Rendre
litelsousa Posté(e) le 26 novembre 2019 Auteur Posté(e) le 26 novembre 2019 Bonjour, La deuxième marche nickel aux premiers abords et surtout se met à jour directement. Un grand merci Je me permets une petite question, si je veux modifier l'arrondi, disons à 40, j'ai essayé de modifier les deux endroits du lisp ou il y a un “20” mais ça continue à l’arrondir à 20.Comment faut-il faire? Citer
VDH-Bruno Posté(e) le 27 novembre 2019 Posté(e) le 27 novembre 2019 Je me permets une petite question, si je veux modifier l'arrondi, disons à 40, j'ai essayé de modifier les deux endroits du lisp ou il y a un “20” Oui c'est ca, c'est bien les 2 valeurs a modifié ou a mettre dans une variable pour généraliser le fonctionnement du lisp mais ça continue à l’arrondir à 20.Comment faut-il faire? Vérifie avec une cotation comme 95 par exemple:arrondi a 40 ça doit te donner 120 arrondi a 20 ça doit te donner 100 Tu as certainement du tester sur une valeur multiple de 20 et de 40, par exemple 75arrondi a 40 ça doit te donner 80 arrondi a 20 ça doit te donner 80 D'où une impression de continuer à arrondir à la vingtaine alors que a bien un arrondie à la quarantaine supérieur. Cdt Bruno Citer Apprendre => Prendre => Rendre
VDH-Bruno Posté(e) le 27 novembre 2019 Posté(e) le 27 novembre 2019 Re, Une dernière petite précision au cas ou, pour un arrondi spécifique, une fois que le champ est en place sur la cotation tu peux aussi éditer et modifier directement le champ sans avoir à retoucher le lisp. @+ Citer Apprendre => Prendre => Rendre
litelsousa Posté(e) le 27 novembre 2019 Auteur Posté(e) le 27 novembre 2019 Oui en effet, c'est nickel. C'est plus simple que je retouche le lisp si il y a beaucoup de cotes. Merci bien Citer
VDH-Bruno Posté(e) le 27 novembre 2019 Posté(e) le 27 novembre 2019 C'est plus simple que je retouche le lisp si il y a beaucoup de cotes. Oui évidemment sinon il y a mieux en suivant la suggestion de PatriceJe pense qu il te faut une Routine LSP avec une question relative à la valeur d arrondi (5/10/20/25/50/etc) ?! Mais pour cela je laisse un peu chercher c'est pas bien compliqué à faire Sinon le procédé du champ sur une dimension est intéressant dans certain cas (autre que faire un arrondi supérieur), quant on veut indiquer des nombres d'espacements, par exemple dans le cas du béton armé ou sur une certaine longueur on doit spécifier un nombre d'intervalle pour un écartement de cadres donné... Citer Apprendre => Prendre => Rendre
Messages recommandés