Aller au contenu

calcul de pente à partir de points altimétriques


kclement

Messages recommandés

Ce matin, j'ai fait un rêve :

 

J'avais des points altimétriques (un bloc composé dun point et d'un seul attribut) et j'ai rêvé qu'en choisissant deux blocs, un lisp me donnait la pente (en %) en récupérant la distance entre les 2 blocs et la valeur de leur attribut...

 

Puis je me suis réveillée, et là j'ai espéré que les gentils membres de CadXP pourraient programmer un lisp capable de faire ça... (parce que même dans mes rêves les plus fous je ne saurais jamais programmer un de ces lisp !)

 

Merci d'avance...

 

kclement

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

 

parce que même dans mes rêves les plus fous je ne saurais jamais programmer un de ces lisp !

Un brin d'exagération ;) Personnellement, mes rêves les plus fous n'ont pas pour objet des lignes de code. Chacun ses fantasmes, on n'est pas là pour juger.

 

Est-ce que le bloc est positionné à l'altitude indiquée par l'attribut ou est-ce qu'il se traîne bêtement à l'altitude 0 ?

 

Dans le premier cas on pourrait faire ceci, sans se préoccuper de l'attribut

 

(defun c:pnpt (/ b1 b2 pt1 pt2 DZ DL PENTE)
 (prompt "\nsélectionner le 1er bloc")
 (setq b1 (car (entsel)))
 (prompt "\nsélectionner le 2ème bloc")
 (setq b2 (car (entsel)))
 (setq pt1 (cdr (assoc 10 (entget b1))))
 (setq pt2 (cdr (assoc 10 (entget b2))))
 (setq DZ (- (caddr PT2) (caddr PT1)))
 (setq DL
   (distance
     (list (car PT1) (cadr PT1))
     (list (car PT2) (cadr PT2))
   )
 )
 (setq PENTE (/ DZ DL))
 (alert 
   (strcat 
     "Delta Z : " (rtos DZ 2 3)
     "\nDelta L : " (rtos DL 2 3)
     "\nPente : " (rtos (* PENTE 100) 2 3) "%" 
   )
 )
) 

 

Amicalement

Vincent

 

C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme)

C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)

Lien vers le commentaire
Partager sur d’autres sites

Un ancien sujet, peut être il fallait faire une petite recherche

 

c'est vrai, mais ce n'est pas toujours évident d'y trouver son bonheur (la rançon du succès de CADxp, sans doute). Le code de Gile s'intéresse aux attributs. Aussi, si on veut l'utiliser, il faut que le tagstring du bloc corresponde à celui utilisé dans le lisp (à savoir "alt").

 

kclement en a rêvé et et le rêve était déjà réalisé ;). Preuve s'il en fallait que CADxp est une vraie mine d'or pour qui sait y trouver la pépite qui l'intéresse.

 

Amicalement

Vincent

C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme)

C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)

Lien vers le commentaire
Partager sur d’autres sites

Bonjour à tous !

 

Un brin d'exagération Personnellement, mes rêves les plus fous n'ont pas pour objet des lignes de code. Chacun ses fantasmes, on n'est pas là pour juger.

 

Bon d'accord j'exagère un peu, mais être brossé dans le sens du poil c'est toujours plaisant non ?!

 

Blagues à part,

 

Est-ce que le bloc est positionné à l'altitude indiquée par l'attribut ou est-ce qu'il se traîne bêtement à l'altitude 0 ?

 

Non, Zebulon, le bloc est à l'altitude 0 (quoi qu'il m'arrive de faire des bouts de 3D de temps en temps...)

Ceci dit, j'ai testé ton lisp et il fonctionne nickel. Ce qui aurait été top, c'est que le texte s"inscrive sur le dessin...

 

Un ancien sujet, peut être il fallait faire une petite recherche

 

C'est vrai que d'habitude je prends le temps de chercher (c'est pour ça que finalement je ne poste pas de messages très souvent !), mais hier je n'ai pas eu le temps... Mais c'est vrai aussi que parfois il n'est pas facile de trouver si les massages n'ont pas un sujet explicite par exemple, ou si on fait une recherche avec plusieurs mots...

 

Alors, j'ai testé le lisp de l'autre sujet et malgré la remarque de Zebulon sur le tagstring, j'ai toujours ce message "type d'argument incorrect: stringp nil". J'ai testé dans un dessin vierge avec un bloc du nom de "alt" avec une étiquette et une iinvite "alt" et là ça fonctionne...

 

Visiblement ça vient de l'étiquette de l'attribut. Mais le problème c'est que si je change le nom de l'étiquette en "alt" et que je synchronise dans mon dessin, je perd toutes mes valeurs...

 

Please help, parce que c'est exactement ce que je cherche et j'aimerai bien l'utiliser sur un fichier existant...

 

Merci à vous pour votre réactivité en tous cas... et votre sympathie (encore une petite couche de pommade ?! ;) )

 

[Edité le 20/4/2010 par kclement]

 

[Edité le 20/4/2010 par kclement]

Lien vers le commentaire
Partager sur d’autres sites

mais être brossé dans le sens du poil c'est toujours plaisant non ?!

surtout quand on est chauve.

 

Pour le problème de nom d'étiquette, je pense que speedy a donné la bonne réponse.

 

Mais le problème c'est que si je change le nom de l'étiquette en "alt" et que je synchronise dans mon dessin, je perd toutes mes valeurs...

 

avec la commande BATTMAN et la synchronisation qu'elle permet, cela ne devrait pas arriver

 

Amicalement

Vincent

 

C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme)

C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)

Lien vers le commentaire
Partager sur d’autres sites

  • 2 semaines après...

:( Ben, j'comprends pô : j'avais posté une réponse mais elle apparait pô...

 

J'ai du faire une fausse manip !

 

En fait, je vous remerciais pour vos réponses, bien sûr, et surtout je disais que y avait des jours comme ça, où on retourne le problème dans presque tous les sens sauf 1, et celui là le bon évidemment !

 

Je disais aussi que ça marchait nickel et je me demandais si il y avait moyen d'insérer cette valeur dans un bloc à attribut (qui se mettrait dans le bon sens, comme le texte du lisp)...

 

A bon entendeur... ;)

 

Sinon, pour répondre à Zebulon, si je change le nom de mon étiquette et que je lance la synchronisation de la commande BATTMAN, je pers bien mes valeurs (ou alors y a encore un truc qui m'a échappé...)

 

Encore merci à vous,

 

Kclement

Lien vers le commentaire
Partager sur d’autres sites

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é