CADxp: Arrondir cotes à la valeur supérieur - CADxp

Aller au contenu

Page 1 sur 1

Arrondir cotes à la valeur supérieur

#1 L'utilisateur est hors-ligne   litelsousa 

  • ceinture marron
  • Groupe : Membres
  • Messages : 202
  • Inscrit(e) : 02-juillet 08
  • LocationGenève

Posté 29 octobre 2019 - 14:48

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.
0

#2 L'utilisateur est hors-ligne   lecrabe 

  • ceinture rouge et blanche 8em dan
  • Groupe : Moderateurs
  • Messages : 8687
  • Inscrit(e) : 10-décembre 03
  • LocationLoire (42)

Posté 29 octobre 2019 - 17:38

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"
Autodesk Expert Elite Team
0

#3 L'utilisateur est hors-ligne   litelsousa 

  • ceinture marron
  • Groupe : Membres
  • Messages : 202
  • Inscrit(e) : 02-juillet 08
  • LocationGenève

Posté 30 octobre 2019 - 06:55

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
0

#4 L'utilisateur est hors-ligne   VDH-Bruno 

  • ceinture noire 1er dan
  • Groupe : Membres
  • Messages : 930
  • Inscrit(e) : 29-avril 10

Posté 26 novembre 2019 - 12:16

Bonjour
Visiblement ce post ne remporte pas un franc succès, je vais tenter une réponse rapide.

Voir le messagelitelsousa, le 29 octobre 2019 - 14:48 , dit :

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 mieux
Bruno
Apprendre => Prendre => Rendre
0

#5 L'utilisateur est hors-ligne   litelsousa 

  • ceinture marron
  • Groupe : Membres
  • Messages : 202
  • Inscrit(e) : 02-juillet 08
  • LocationGenève

Posté 26 novembre 2019 - 14:03

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?
0

#6 L'utilisateur est hors-ligne   VDH-Bruno 

  • ceinture noire 1er dan
  • Groupe : Membres
  • Messages : 930
  • Inscrit(e) : 29-avril 10

Posté 27 novembre 2019 - 10:34

Voir le messagelitelsousa, le 26 novembre 2019 - 14:03 , dit :

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

Voir le messagelitelsousa, le 26 novembre 2019 - 14:03 , dit :

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 75
  • arrondi 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
Apprendre => Prendre => Rendre
0

#7 L'utilisateur est hors-ligne   VDH-Bruno 

  • ceinture noire 1er dan
  • Groupe : Membres
  • Messages : 930
  • Inscrit(e) : 29-avril 10

Posté 27 novembre 2019 - 10:42

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.

@+
Apprendre => Prendre => Rendre
0

#8 L'utilisateur est hors-ligne   litelsousa 

  • ceinture marron
  • Groupe : Membres
  • Messages : 202
  • Inscrit(e) : 02-juillet 08
  • LocationGenève

Posté 27 novembre 2019 - 11:29

Oui en effet, c'est nickel.

C'est plus simple que je retouche le lisp si il y a beaucoup de cotes.

Merci bien
0

#9 L'utilisateur est hors-ligne   VDH-Bruno 

  • ceinture noire 1er dan
  • Groupe : Membres
  • Messages : 930
  • Inscrit(e) : 29-avril 10

Posté 27 novembre 2019 - 15:24

Voir le messagelitelsousa, le 27 novembre 2019 - 11:29 , dit :

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 Patrice

Voir le messagelecrabe, le 29 octobre 2019 - 17:38 , dit :

Je 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 :rolleyes:

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é...
Apprendre => Prendre => Rendre
0

Partager ce sujet :


Page 1 sur 1


Réponse rapide

  

1 utilisateur(s) en train de lire ce sujet
0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)