Aller au contenu

Messages recommandés

Posté(e)

Bonjour à tous

 

Je souhaite créer une macro pour calculer un fil d'eau à partir la longueur du tuyau que je mesure à l'écran, de la pente de la canalisation et de l'altitude de départ.Le résultat doit s'inscrire dans un bloc appeler fil d'eau.

Au départ je pensais inscrire dans un autre bloc le diamètre du tuyau et la pente pour les réutiliser dans la macro.Mais ça me semble un peu trop compliquer.

Pour l'instant,je crée un bloc "fildeau" dans lequel je voudrais que le resultat s'inscrive (exemple: fe=920.20)

Je mesure avec la commande distance la longueur du tuyau (exemple: 10m)

Je stocke dans une variable "useri1" le fil d'eau de départ(exemple :920.00) et dans une autre variable "useri2" la pente (exemple 0.02 ). (détail calcul: 920+10*0.02=920.20)

 

Voici la macro que je tente de mettre au point mais elle n'arrive pas au résultat voulu.

 

*^C^C_dist;\\;;$M=$(getvar,USERI1);modifvar;USERI1;\;;$M=$(getvar,USERI2);modifvar;USERI2;\\attdia;0;attreq;1;_-insert;Fildeau;e;1;r;0;$M=$(rtos,$(+,$(/,$(getvar,distance),USERI2),USERI1),100,2,2);\\

 

Je reste dans l'attente d'un conseil qui pourrait m'aider à avancer.

 

Merci pour votre aide

 

Seb48

Posté(e)

Bonjour,

 

Tu n'as pas besoin de passer par MODIFVAR pour renseigner les variables USERI... Tu peux taper directement à commande : USERI...

 

A quoi correspond USERI 1 et USERI2 ?

 

Ne devrais-tu pas plutôt utiliser USERR... (réel) ?

 

Il semble qu'il y ait trop de PAUSE ( \ ) et de RETURN ( ; )...

 

Le e après fildeau;e; et le ;r; me parait curieux !

 

 

Christian

Formateur, Consultant Expert AutoCAD, REVIT MEP, INVENTOR, télécharger , des Outils AutoCAD...

cad123 @ wanadoo.fr (enlever les espaces de part et d'autre de @)

Posté(e)

Re,

 

Voici à quoi pourrai ressembler la partie INSERTION :

 

^C^Cattdia;0;attreq;1;_-insert;Fildeau;\1;;0;$M=$(rtos,$(+,$(/,$(getvar,distance),USERI2),USERI1),100,2,2);\\attdia;1;

 

 

Par contre, les fonctions DISEL comportent une ou des erreurs !

 

Utilisent la commande MACROTRACE pour suivre les évaluations DISEL.

 

Christian

Formateur, Consultant Expert AutoCAD, REVIT MEP, INVENTOR, télécharger , des Outils AutoCAD...

cad123 @ wanadoo.fr (enlever les espaces de part et d'autre de @)

Posté(e)

Salut lili 2006,

 

Je ne connais pas les blos dynamiques avec les champs. Et je ne sais pas si c'est possible avec une version lt2007.

 

Si tu peux m'en dire plus, je chercherai dans cette direction.

 

Merci

Posté(e)

Re,

 

^C^C_dist;\\;$M=$(getvar,USERR1);USERR1;$M=$(getvar,USERR2);USERR2;\\attdia;0;attreq;1;_-insert;Fildeau;e;1;r;0;$M=$(rtos,$(+,$(/,$(getvar,distance),USERR2),USERR1),100,2,2);\\

 

Mon premier problème avec cette macro, c'est que je mesure la distance de mon tuyau comme voulu, mais je n'arrive pas à définir les valeurs USERR1 (Z=920.00 )et USERR2 (Pente=0.02).

 

Voici le suivi de la macro

 

Commande: _dist

Spécifiez le premier point: Spécifiez le deuxième point:

Distance = 200.00, Angle dans le plan XY = 180, Angle avec le plan XY = 0

Delta X = -200.00, Delta Y = 0.00, Delta Z = 0.00

Commande:

DISTANCE Spécifiez le premier point: 500

Distance = 500.00

Commande: USERR1

Entrez une nouvelle valeur pour USERR1 <500.00>: 500

Commande: USERR2

Entrez une nouvelle valeur pour USERR2 <500.00>: 0.02

Commande:

USERR2

Entrez une nouvelle valeur pour USERR2 <0.02>: attdia

Nécessite une distance numérique ou deux points.

 

 

A l'aide

 

Seb48

Posté(e)

Re,

 

Ton exemple de bloc dynamique est clair, mais pour l'instant j'ai du mal avoir le cheminent pour arriver à une macro qui ferait mon calcul de départ.

 

Il faudra que je regarde en détail ces blos dynamiques et toutes les nouvelles possibilités qui vont avec.Mais j'aimerai faire fonctionné cette macro avec mon idée de départ.

 

Merci

 

Seb48

Posté(e)

Re,

 

Voici un exemple. J'ai découpé en 2 MACROS : la 1ère demande les Valeurs pour USERR1 et USERR2 et l'affichera pour info dans la barre d'état (via MODEMACRO) et la 2e pour Insérer le résultat...

 

MACRO 1

 

^c^c"Niveau Z de départ : "^cUSERR1;\"Valeur de PENTE : "^cUSERR2;\MODEMACRO;Niveau Z ---> $m=$(getvar,USERR1) - PENTE ---> $m=$(getvar,USERR2);

 

MACRO 2

 

^C^CID;\_dist;@;\attdia;0;attreq;1;_-insert;Fildeau;@;1;;0;FE:$m=$(+,$(rtos,$(*,$(/,$(getvar,distance),100),$(getvar,USERR2)),2,2),$(getvar,USERR1));D:$m=$(rtos,$(*,$(/,$(getvar,distance),100),$(getvar,USERR2)),2,2);(3aAtt);(4eAtt);attdia;1;

 

La commande ID permet de choisir le 1er Point qui correspondra à la position de ton bloc

 

Pour bien faire, il faudrait que dans la 2e MACRO USERR1 soit incrémenté du résultat de la 2e MACRO...

 

 

Christian

Formateur, Consultant Expert AutoCAD, REVIT MEP, INVENTOR, télécharger , des Outils AutoCAD...

cad123 @ wanadoo.fr (enlever les espaces de part et d'autre de @)

Posté(e)

Bonjour,

 

Seb48, je ne comprends pas vraiment pourquoi il faut renseigner manuellement la pente avant d'insérer le bloc ?! :unsure:

Si tu mesures la distance entre les extrémités du tuyau, sa pente pourrait être calculée par la macro, non ?

A moins que la pente dans le dessin ne corresponde pas à la pente réelle ?

De même, la coordonnée Y des points dans le dessin ne correspond-elle pas à leur altitude réelle ? Cela éviterait de devoir saisir l'altitude de départ, et de calculer l'altitude à l'arrivée...

Posté(e)

Bonjour,

 

Je suis heureux de voir que j'ai de l'aide. Ouf!!!

 

Salut Christian,

Réponse au premier message

"Z" correspond à une altitude de départ en mètre et "P" correspond à la pente du tuyau (c'est le rapport d'une hauteur en m sur une longueur en m donc il n'ya pas d'unité).

Réponse au deusième message

Je te remercie pour la solution proposée. Je vais la tester et je vais essayer de la comprendre pour pouvoir avancer.

Je te tiens au courant.

Merci

 

Salut Bryce,

En fait, je travaille sur des canalisations en plan et non sur des profils, donc les coordonnées X et Y me donnent la longueur du tuyau et non l'altitude.

Mais je serai curieux, si c'est possible, de voir comment on fait avec une macro pour qu'elle calcule la pente seulement en mesurant la longueur du tuyau?????? afin de m'améliorer.

Merci

 

Il faut que je prenne le temps de voir tout ce que vous me proposer car il y a beaucoup de chose pour moi, vu les difficultés que j'ai en création de macro.

 

Seb48

Posté(e)

Mais je serai curieux, si c'est possible, de voir comment on fait avec une macro pour qu'elle calcule la pente seulement en mesurant la longueur du tuyau??????

 

Voici un exemple utilisant la commande CAL, pour changer un peu du Diesel... :P

 

^C^Ccal;p1=cur;\cal;p2=cur;\userr1;'cal;100*dist(yof(p1),yof(p2))/dist(xof(p1),xof(p2));;modemacro;% pente = $(getvar,userr1);

Posté(e)

Bonjour à tous,

 

Salut christian

 

Je viens d'essayer la solution avec les deux macros, elle marche très bien et elle fait exactement ce que je veux.

Par contre, je ne vois pas à quoi sert cette expression "D:$m=$(rtos,$(*,$(/,$(getvar,distance),100),$(getvar,USERR2)),2,2)"

et je ne comprend pas la fin de ta macro "(3aAtt);(4eAtt);attdia;1;"

Je vais chercher pour incrémenter la valeur de "userr1".

 

Merci pour tout

 

Salut Bryce

 

Je te remercie pour ton exemple et je vais l'essayer aussitôt.

 

Seb48

Posté(e)

Bryce,

 

Je viens d'essayer ton exemple.

 

Est-il possible de récupérer avec la commande distance la longueur X dans un bloc quand on mesure la longueur de la canalisation.

J'ai essayé en remplaçant "distance" par "delta x" dans la solution de Christian "$(getvar,delta x)" mais ça ne fonctionne pas.

 

A plus

 

Seb48

Posté(e)

Re,

 

Bryce,

 

J'ai complété ta macro pour que la pente s'affiche à l'écran dans un bloc, mais elle calcule la pente une seule fois.

Après, la pente reste inchangée. Je dois avoir un problème de variable.

 

^C^Ccal;p1=cur;\cal;p2=cur;\userr3;'cal;100*dist(yof(p1),yof(p2))/dist(xof(p1),xof(p2));;_-insert;Pente;@;1;;0;% pente = $m=$(*,$(rtos,$(/,$(getvar,userr3),1),2,2),-1);

 

Voici ma ligne de commande

 

Commande: cal

>> Expression: p1=cur

>> Entrez un point:

-8132.0726,9739.82521,0

Commande: cal

>> Expression: p2=cur

>> Entrez un point:

-7183.51449,10666.4881,0

Commande: userr3

Entrez une nouvelle valeur pour USERR3 <45.91>: 'cal

>>>> Expression: 100*dist(yof(p1),yof(p2))/dist(xof(p1),xof(p2))

Reprend la commande USERR3.

Entrez une nouvelle valeur pour USERR3 <45.91>:

Commande: _-insert

Entrez le nom du bloc ou [?] <Pente>: Pente

Unités: Millimètres Conversion: 1.00

Spécifiez le point d'insertion ou [Pointdebase/Echelle/X/Y/Z/Rotation]: @

Entrez le facteur d'échelle en X, spécifiez le coin opposé ou [Coin/XYZ] <1>: 1

Entrez le facteur d'échelle en Y <utiliser le facteur d'échelle en X>:

Spécifiez l'angle de rotation <0>: 0

Entrez la valeur des attributs.

Pente <100>: % pente = -45.91

Commande:

-INSERER Entrez le nom du bloc ou [?] <Pente>: 97.691732

*Incorrect*

 

Seb48

Posté(e)

Bonjour,

 

A priori c'est lié à l'utilisation de CAL de façon transparente ('CAL), qui fait que la variable USERR3 n'est pas renseignée, et que le résultat des expressions n'est renvoyé qu'à la fin de la macro... <_<

Voici une façon de contourner le problème :

 

^C^Ccal;p1=cur;\cal;p2=cur;\userr3;'cal;trunc(10000*dist(yof(p1),yof(p2))/dist(xof(p1),xof(p2)))/100;;_-insert;Pente;@;1;;0;% pente =

Posté(e)

A grace à votre conribution,

 

J'ai pu avancer des macros qui me seront utiles et qui me feront gagnées du temps.

 

 

Merci

 

A plus

 

Seb48

 

P.S. :Existe-t-il un moyen de mettre dans un bloc la longueur en X et Y du ligne en utilisant la commande distance.

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é