Aller au contenu

pente toujours les pente


Messages recommandés

Posté(e)

Bonjours à tous,

Suite à des recherhe infructueuses sur le site, je vous pose ma demande.

Je recherche un lips que me permet de resortir une pente entre deux blocs.

les blocs sont définis en 2d et ont 2 attributs (mat et alt).

le but est donc de calculer la pente entre les deux bloc suivant leurs attribut alt et inserer un autre bloc ou texte dans le sens de la pente

 

merci d'avance pour vous réponse

Posté(e)

Salut,

 

Un petit truc vite fait (pas de contrôle sur les objets sélectionnés).

Le texte est créé suivant les paramètres courants.

La pente est indiquée du point le plus haut vers le plus bas

 

(defun c:pente (/ b1 b2 p1 p2 l1 l2 a1 a2 an pe tx)
 (vl-load-com)
 (or *acdoc*
     (setq *acdoc* (vla-get-ActiveDocument (vlax-get-acad-object)))
 )
 (setq sp (vla-get-ModelSpace *acdoc*))
 (and
   (setq b1 (car (entsel)))
   (setq b1 (vlax-ename->vla-object b1))
   (= (vla-get-ObjectName b1) "AcDbBlockReference")
   (setq p1 (vlax-get b1 'InsertionPoint))
   (setq l1 (vlax-invoke b1 'GetAttributes))
   (foreach a l1
     (if (= (vla-get-TagString a) "ALT")
(setq a1 (vla-get-TextString a))
T
     )
   )
   (setq b2 (car (entsel)))
   (setq b2 (vlax-ename->vla-object b2))
   (= (vla-get-ObjectName b2) "AcDbBlockReference")
   (setq p2 (vlax-get b2 'InsertionPoint))
   (setq l2 (vlax-invoke b2 'GetAttributes))
   (foreach a l2
     (if (= (vla-get-TagString a) "ALT")
(setq a2 (vla-get-TextString a))
T
     )
   )
   (setq an (if (	       (angle p1 p2)
       (angle p2 p1)
     )
   )
   (setq pe (rtos (* (/ (abs (- (atof a1) (atof a2))) (distance p1 p2)) 100)))
   (progn
     (setq tx
     (vla-addText
       sp
       (if (minusp (cos an))
	 (strcat "		 (strcat "-- " pe "% -->")
       )
       (vlax-3d-point '(0 0 0))
       (getvar 'textsize)
     )
     )
     (vla-put-Alignment tx acAlignmentMiddleCenter)
     (vla-put-TextAlignmentPoint
tx
(vlax-3d-point
  (mapcar '(lambda (x1 x2) (/ (+ x1 x2) 2.0)) p1 p2)
)
     )
     (vla-put-Rotation
tx
(if (minusp (cos an))
  (+ pi an)
  an
)
     )
   )
 )
 (princ)
) 

[Edité le 13/7/2008 par (gile)]

 

[Edité le 13/7/2008 par (gile)]

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

merci gille ça marche nickel, une petite erreur néanmoins une petite erreur la pente n'est pas en porcentage mais en valeur réelle avec le %.

j'ai essayé de comprendre ton lisp pour corrigé mais je n'y arrive pas insérer la multiplication.

bon fin de week end

Posté(e)

une petite erreur néanmoins une petite erreur la pente n'est pas en porcentage mais en valeur réelle

 

Il me semble bien, mais je ne suis pas de la partie, qu'une pente s'exprime en pourcentage. Pour un différence d'altitude, on parle plutôt de dénivelé (ou dénivelée).

 

Si j'ai bien compris, tu peux remplacer la ligne :

 

(rtos (/ (abs (- (atof a1) (atof a2))) (distance p1 p2)))

 

par

 

(rtos (abs (- (atof a1) (atof a2))))

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

Salut à vous,

 

Je pense que dilack veut en pourcentage.

En topo dans les profils en long/travers ou pente d'ouvrage hydraulique les pentes sont exprimé en %

 

par exemple 8.5% veut dire que l'on descend de 8.50m pour 100m (soit 85cm pour 10m, ou encore 8.5cm pour 1m)

en conservant le signe de la pente, cela donnerait ceci:

 

(rtos (* (/ (- (atof a1) (atof a2)) (distance p1 p2)) 100.0))

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Posté(e)

re gille,

je me suis mal exprimé tout à l'heure désole.

quand tu prend une pente de 1% sur 10m tu descend de 10cm

hors le lisp m'indique une pente de de 0.1% (suivant ta mofif) entre 2 pts distant de 10 m et avec une denivele de 0.10 cm alors qui'il aurait fallu qui m'indique une pente de 1%

 

 

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 compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité