Aller au contenu

Distance avec pente


La Lozère

Messages recommandés

Bonjour,

Quelqu'un serait-il capable de faire une commande qui ressemblerai à "distance" mais à la place de renvoyer la distance, le dX, le dY, le dZ, les angles suivant XY.

J'aimerai avoir toujours la distance, le dX, dY, et en plus, la pente entre les deux points en %.

En faite je travail sur des profils en travers et je suis obligé de faire le dY/dX pour avoir la pente.

J'espère avoir été clair.

Merci

www.cad-is.fr
Autocad Map 2021 - Covadis/Autopiste V18.0c
Pisser sous la douche ne suffira pas
Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

Quelqu'un serait-il capable

C'est un défi ?!

 

Un petit truc vite fait

 

(defun c:penteXY (/ p1 p2 h)
 (and
   (setq p1 (getpoint "\nSpécifiez le premier point: "))
   (setq p2 (getpoint p1 "\nSpécifiez le deuxième point: "))
   (setq h (- (car p2) (car p1)))
   (princ
     (if (zerop h)
"\nVerticale"
(strcat
  "\nPente = "
  (rtos (abs (* 100 (/ (- (cadr p2) (cadr p1)) h))))
  "%"
)
     )
   )
 )
 (princ)
) 

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

Lien vers le commentaire
Partager sur d’autres sites

Salut,

Je me doutais bien qu'il y avait du monde pour un truc aussi simple.

Gile et Bonuscad (première partie du message), les deux solution vont dans le bon sens. La solution de Gile, résultat en ligne de commande, me plais plus.

Mais serait-il possible d'y ajouter, la distance réel, le dX, et le dY. En gros je cherche à remplacer la commande "distance" qui me fourni des angles que je n'ai pas besoin.

Merci pour la promptitude des réponses.

www.cad-is.fr
Autocad Map 2021 - Covadis/Autopiste V18.0c
Pisser sous la douche ne suffira pas
Lien vers le commentaire
Partager sur d’autres sites

Voilà,

 

(defun c:pente (/ p1 p2 dX dY)
 (and
   (setq p1 (getpoint "\nSpécifiez le premier point: "))
   (setq p2 (getpoint p1 "\nSpécifiez le deuxième point: "))
   (setq dX (abs (- (car p2) (car p1))))
   (setq dY (abs (- (cadr p2) (cadr p1))))
   (princ
     (strcat
"\nDistance = "
(rtos (distance p1 p2))
"\t Delta X = "
(rtos dX)
"\t Delta Y = "
(rtos dY)
(if (zerop dX)
  "\tVerticale"
  (strcat
    "\tPente = "
    (rtos (abs (* 100 (/ dY dX))))
    "%"
  )
)
     )
   )
 )
 (princ)
) 

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

Lien vers le commentaire
Partager sur d’autres sites

Si ce n'est qu'une histoire de présentation...

(defun C:DIST-PENTE ( / pt_o pt_f dxf_11 dev dev_z)
(initget 8)
(setq pt_o (getpoint "\nSpécifiez le point de départ: "))
(if (null pt_o) (setq pt_o (getvar "lastpoint")))
(cond
(pt_o
(initget 41)
(setq pt_f (getpoint pt_o "\nChoix du point final: "))
(cond
(pt_f
(setq
dxf_11 (trans (mapcar '(lambda (x / ) (/ x (distance (trans pt_o 1 0) (trans pt_f 1 0)))) (mapcar '- (trans pt_f 1 0) (trans pt_o 1 0))) 0 1 T)
)
(if (zerop (car dxf_11))
(setq dev "infini")
(setq dev (rtos (* (/ (cadr dxf_11) (car dxf_11)) 100.0)))
)
(if (= (caddr dxf_11) 1.0)
(setq dev_z "infini")
(if (zerop (caddr dxf_11))
(setq dev_z (rtos 0.0))
(setq dev_z (rtos (* (sqrt (/ 1.0 (- (/ 1.0 (* (caddr dxf_11) (caddr dxf_11))) 1.0))) 100.0)))
)
)
(princ
(strcat
	"\nDistance = " (rtos (distance pt_o pt_f)) ",\tPente dans le plan XY = " dev " %,\tPente avec le plan XY = " dev_z " %"
	"\nDelta X = " (rtos (- (car pt_f) (car pt_o))) ",\tDelta Y = " (rtos (- (cadr pt_f) (cadr pt_o))) ",\tDelta Z = " (rtos (- (caddr pt_f) (caddr pt_o)))
)
)
)
)
)
)
(prin1)
)

 

L'affichage s'appuie sur le mode choisi avec la commande UNITES

 

Arff... à la micro-seconde [surligneur]16:04 [/surligneur]

 

[Edité le 31/7/2008 par bonuscad]

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

Lien vers le commentaire
Partager sur d’autres sites

Salut,

Merci à tous les deux. C'est exactement ce que je voulais.

Peut-on compliquer un peu le truc :)

Je voudrais que lorsque on clic une pente descendante, la valeur est un chiffre négatif, et si c'est une pente ascendante, la valeur est normale.

A plus

 

[Edité le 4/8/2008 par adat-btp]

www.cad-is.fr
Autocad Map 2021 - Covadis/Autopiste V18.0c
Pisser sous la douche ne suffira pas
Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

 

je suis conscient que ma réponse risque de passer inaperçue

car le sujet est considéré comme SOLUTIONNE

il ne l'est pas à mes yeux

car les profils n'ont pas toujours des echelles

de distance et d'altimétrie équivalentes.

rarement les profils en travers mais les profils en long, souvent

 

voilà de quoi y parer :

 

 

 

 

(setq echx (getreal "\nEchelle Horizontale : \n")

echy (getreal "\nEchelle verticale : \n")

rapportHZ (/ echx echy)

pd (getpoint "\nIndiquez le Point de base\n")

pa (getpoint pd"\nIndiquez le Point de base, ou la direction\n")

deltaxBrut (- (car pd) (car pa))

deltayBrut (- (cadr pd) (cadr pa))

)

 

(cond

((= 0.0 deltaxbrut) (alert "Vertical")(quit))

((= 0.0 deltaybrut) (alert "Horizontal")(quit))

((= 1.0 rapporthz) (setq pente (* 100 (/ deltaybrut deltaxbrut)))

(if (

)

((> rapporthz 0) (setq pente (* 100 (/ deltaybrut (* rapporthz deltaxbrut))))

(if (

)

(

(if (

)

)

(alert (strcat "Pente : "(rtos pente ) " %\n Echelle Horizontale :" (rtos echx 2 0)"\n Echelle Verticale:"(rtos echy 2 0)))

 

amicalement

 

[Edité le 4/8/2008 par didier]

Lien vers le commentaire
Partager sur d’autres sites

Je voudrais que lorsque on clic une pente descendante, la valeur est un chiffre négatif, et si c'est une pente ascendante, la valeur est normale.

 

Ma fonction travaille bien avec des positifs ou négatifs.... et même en 3D. :casstet:

 

Cependant il est vrai que la fonction ne travaille que dans les 2 quadrants trigonométrique de droite. Le point extrême gauche représentant l'origine 0 et l'extrême droite le sens de la pente, et ce quelque soit l'ordre de saisie des points.

 

Didier... ta remarque est pertinente, mais dans le cas absolu peu envisageable, je ne pense pas que beaucoup de gens dessinent des profils en long déformés avec Autocad de base.

Après avec Covadis c'est une autre histoire, mais celui ci dispose des outils nécessaires.

Mais je reconnais que la possibilité existe.

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

Lien vers le commentaire
Partager sur d’autres sites

Bien vu Didier,

Dans mon cas, je ne travail qu'avec des profil en travers à l'échelle 1/1 donc pas de soucis.

D'autre part, j'ai Covadis, et il me semble que cette commande n'existe pas. Est-ce que je me trompe?

 

Bonuscad, il est vrai que ta commande travail bien en négatif et en positif, mais dès que je saisie une distance dans les 2 autres quadrants cela ne marche plus. Et c'est là mon "très petit" soucis.

Sur le prog de Gile cela fais la même chose si on supprime "abs" au résultat.

 

Merci à vous.

 

 

 

[Edité le 4/8/2008 par adat-btp]

www.cad-is.fr
Autocad Map 2021 - Covadis/Autopiste V18.0c
Pisser sous la douche ne suffira pas
Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

 

oui, tu te trompes,(adat-btp)

je confirme que la possibilité d'écrire des pentes avec Covadis existe

 

je ne savais pas que adat-btp possédait Covadis

 

je pensais qu'il recevait des fichiers

de bureaux d'études extérieurs

et que dans ce cas la possibilité

d'avoir des échelles différentes s'avérait.

 

toujours amicalement.

 

 

 

 

 

 

Lien vers le commentaire
Partager sur d’autres sites

Salut,

Didier, on peu écrire des pentes lorsque l'on crée un profil en travers, mais es-ce que l'on peut mesurer une pente sur un profil en travers pour une simple vérification sans faire de cotation?

Car on utilise Covadis pour la conception, mais dans le cas présent, tu avais raison, on a reçu des fichiers extérieurs que l'on doit vérifier. Et comme ils ont été fait avec mensura, les profil sont pas bien lisible.

Merci

www.cad-is.fr
Autocad Map 2021 - Covadis/Autopiste V18.0c
Pisser sous la douche ne suffira pas
Lien vers le commentaire
Partager sur d’autres sites

Salut,

J'ai modifié le prog de Gile pour avoir ce que je voulais quelque soit le quadrant.

Il y avais peut-être plus simple avec une meilleur syntaxe, mais sa marche.

 

 (defun c:pente (/ p1 p2 dX dY)
(and
(setq p1 (getpoint "\nSpécifiez le premier point: "))
(setq p2 (getpoint p1 "\nSpécifiez le deuxième point: "))
(setq dX (- (car p2) (car p1)))
(setq dY (- (cadr p2) (cadr p1)))
(princ
(strcat
"\nDistance = "
(rtos (distance p1 p2))
"\t Delta X = "
(rtos dX)
"\t Delta Y = "
(rtos dY)
(if (zerop dX)
"\t       Verticale"
(strcat
"\t   Pente = "
(rtos
(if (< dX 0)
(if (> dY 0) (abs (* 100 (/ dY dX)))
(* -100 (/ dY dX)))
(* 100 (/ dY dX))))
"%"
)
)
)
)
)
(princ)
)

 

Merci à vous, cela ma permis de regarder comment fonctionné certains trucs basic en lisp. Il faut dire que pour moi c'est vieux (15 ans).

 

A plus.

www.cad-is.fr
Autocad Map 2021 - Covadis/Autopiste V18.0c
Pisser sous la douche ne suffira pas
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é