Aller au contenu

Cotation de pente


Invité Sylvainhinard

Messages recommandés

Invité Sylvainhinard
Posté(e)

Bonjour,

 

J'ai commencé à develloper mon deuxième LISP qui va me servir à coter la pente entre 2 points en 3D. J'arrive à me débrouiller pour que le LISP me retourne la pente. Toutefois quand je veux inserer un texte avec la valeur de la pente dans mon dessin; au milieu du segment formé par les 2 point cela ne fonctionne pas. De plus la rotation du texte n'a pas l'air bonne. Pour résumer le tout à l'aide :( les CadXpiens Professionnels:

 

(setq P1 (getpoint "\nChoisissez le premier point: "));OK

(setq P2 (getpoint "\nChoisissez le deuxieme point: "));OK

(setq XP1 (car P1));renvoie le X du point1

(setq XP2 (car P2));renvoie le X du point2

(setq YP1 (cadr P1));renvoie le Y du point1

(setq YP2 (cadr P2));renvoie le Y du point2

(setq ZP1 (caddr P1));renvoie le Z du point1

(setq ZP2 (caddr P2));renvoie le Z du point2

(setq DELTAZ (- ZP1 ZP2));renvoie la denivelé entre P1 et P2

(setq MOINSX(- XP1 XP2));

(setq MOINSY(- YP1 YP2));

(setq XCARRE (* MOINSX MOINSX));

(setq YCARRE (* MOINSY MOINSY));

(setq SOMME (+ XCARRE YCARRE));

(setq DISTANCEP1P2 (sqrt SOMME));renvoie la distance entre P1 et P2

(setq PENTE (* 100 (/ DELTAZ DISTANCEP1P2)));renvoie la pente entre P1 et P2

(setq XMIL (/ (+ XP1 XP2) 2));

(setq YMIL (/ (+ YP1 YP2) 2));

(setq PTMIL (list XMIL YMIL));

(command "_dtext" PTMIL 0.30 100 PENTE))

 

Merci pour votre aide

Posté(e)

Bonjour,

Un peu complexe mais en fait c'est un bon exercice pour extraire des données.

Tu peux remplacer toutes tes extractions par

 

(setq P1 (getpoint "\nChoisissez le premier point: "));OK

(setq P2 (getpoint "\nChoisissez le deuxieme point: "));OK

(setq angle1 (angle pt1 pt2));renvoie l'angle entre tes 2points

(setq pente ( * (atan angle1) 100)); renvoie l'angle en pourcentage

(setq PTMIL (/ (distance pt1 pt2) 2));renvoie le milieu des 2 points

(setq pt1 (polar p1 angle1 ptmil))

(command "texte" "J" "m" pt1 angle1 pente)

 

je pense que cela doit fonctionner.

 

Bon courage car je suis passé par cette étape où un programme de 10 /15 lignes arrive à se réduire en 5 lignes et même moins pour ceux qui connaissent encore mieux.

C'est en forgeant que l'on devient forgeron .....

Posté(e)

hello,

j'ai du mal à voir la complexité dont parle PONTIAC95-2,

mais bon, je vais te parler de points 3D,

et la pente calculée est absolue, je ne parle pas des profils,

dans ce cas il faut travailler avec la valeur Y, tu me suis ?

 

je viens amener ma contribution en te soufflant ceci :

 

(setvar "cmdecho" 0)

(setq ht (getreal "\nHauteur des écritures ? :\n"))

(setq dec 2);;deux décimales

(setq PT1 (getpoint"\nPoint 1 ?\n"))

(setq PT2 (getpoint"\nPoint 2 ?\n"))

(setq xPT1 ( car PT1) yPT1 ( cadr PT1 ) zPT1 ( caddr PT1))

(setq xPT2 ( car PT2) yPT2 ( cadr PT2 ) zPT2 ( caddr PT2))

(setq dist (sqrt (+ (* (- (car PT1) (car PT2))(- (car PT1) (car PT2)))

(* (- (cadr PT1) (cadr PT2))(- (cadr PT1) (cadr PT2)))

)

)

)

(setq pente1 ( * ( / ( - zPT1 zPT2) dist) 100 ) )

(setq pins (getpoint "\nPoint d'inscription du texte ? "))

(setq dir (angtos(angle PT1 PT2)))

(command "_TEXT" pins ht dir (strcat (rtos pente2 2 dec ) " %"))

(setvar "cmdecho" 1)

 

si ça te convient, j'en serai ravi

amicalement

 

 

 

Posté(e)

Oups en + j'ai pas lu tout le message concernant surtout des points 3D.

 

Si je parle de complexité, c'est surtout que quand on se lance seul dans le lisp avec les docs de base Autocad, il faut avouer que c'est pas facile et du moins c'est mon expérience quand je me suis lancé seul dans le lisp il y a 8 ans! On décrit toutes commandes/variables bien indépendantes quand on est débutant et je l'ai fais moi-même en m'appliquant !

Maintenant je m'en sorts assez correctement mais les débuts furent laborieux et quand je retrouve des lisps de mes débuts et que les reprends, j'arrive à les compresser allégrement.

Bonne continuation.

Invité Sylvainhinard
Posté(e)

Bonjour,

 

Merci Didier et Pontiac.

A Didier : grâce à toi j'ai pu voir comment "compresser" un programme. Je vais aussi regarder de plus près ton : strcat et rtos ce sont deux commandes que je ne maitrise pas.

Au fait une petite erreur c'est glissée dans (command "_TEXT" pins ht dir (strcat (rtos pente2 2 dec ) " %")) il ne faut pas mettre "pente2" mais "pente1". A part ça cela fonctionne parfaitemment.

Merci les copains, je reviendrais... ;)

 

@ Bientôt

Posté(e)

bonsoir

Effectivement, je te prie de m'excuser,

dans le copier-coller que je t'ai filé,

est restée une variable non utilisée,

en l'occurence pente2,

il s'agit d'une variable qui contient les pentes exprimées

en Pour 1,

car c'est de cette manière qu'on indique une pente de Talus.

merci d'avoir corrigé

 

amicalement

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é