CADxp: Création de macro - CADxp

Aller au contenu

  • 2 Pages +
  • 1
  • 2
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

Création de macro

#1 L'utilisateur est hors-ligne   seb48 

  • ceinture orange
  • Groupe : Membres
  • Messages : 20
  • Inscrit(e) : 10-février 12

Posté 10 février 2012 - 20:43

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
0

#2 L'utilisateur est hors-ligne   FormaBois 

  • ceinture noire 2em dan
  • Groupe : Membres
  • Messages : 1388
  • Inscrit(e) : 18-mai 06

Posté 11 février 2012 - 11:41

Salut,
Peut-être devrait-tu poster plutôt sur personnalisation-macros-diesel

Autant pour moi, post en double, désolé ça n'était pas un bon conseil

Ce message a été modifié par FormaBois - 13 février 2012 - 10:37 .

Studio Gfilm - Agence de communication par l'image

"Le matin tu peux rester couché pour poursuivre ton rêve, ou te lever pour le réaliser"
0

#3 L'utilisateur est hors-ligne   seb48 

  • ceinture orange
  • Groupe : Membres
  • Messages : 20
  • Inscrit(e) : 10-février 12

Posté 11 février 2012 - 12:28

Salut,

Je vais suivre ton conseil.

A plus
Seb48
0

#4 L'utilisateur est hors-ligne   rebcao 

  • ceinture rouge et blanche 8em dan
  • Groupe : Membres
  • Messages : 7135
  • Inscrit(e) : 25-août 04
  • LocationSELESTAT

  Posté 11 février 2012 - 12:39

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 Supports de Cours AutoCAD, des Outils AutoCAD...
cad123 @ wanadoo.fr (enlever les espaces de part et d'autre de @)
0

#5 L'utilisateur est hors-ligne   rebcao 

  • ceinture rouge et blanche 8em dan
  • Groupe : Membres
  • Messages : 7135
  • Inscrit(e) : 25-août 04
  • LocationSELESTAT

Posté 11 février 2012 - 12:51

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 Supports de Cours AutoCAD, des Outils AutoCAD...
cad123 @ wanadoo.fr (enlever les espaces de part et d'autre de @)
0

#6 L'utilisateur est hors-ligne   lili2006 

  • ceinture rouge et blanche 8em dan
  • Groupe : Moderateurs
  • Messages : 12037
  • Inscrit(e) : 21-décembre 05

Posté 11 février 2012 - 13:05

Bonjour à toutes et tous,

Sinon, tu peux aussi créer un bloc dynamique avec champs,...
AutoCAD MAP 3D 2020 - Covadis 17.0f
Forum : http://genie-civil.bbactif.com/
0

#7 L'utilisateur est hors-ligne   seb48 

  • ceinture orange
  • Groupe : Membres
  • Messages : 20
  • Inscrit(e) : 10-février 12

Posté 11 février 2012 - 14:28

Voir le messagelili2006, le 11 février 2012 - 13:05 , dit :

Bonjour à toutes et tous,

Sinon, tu peux aussi créer un bloc dynamique avec champs,...

0

#8 L'utilisateur est hors-ligne   seb48 

  • ceinture orange
  • Groupe : Membres
  • Messages : 20
  • Inscrit(e) : 10-février 12

Posté 11 février 2012 - 14:31

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
0

#9 L'utilisateur est hors-ligne   seb48 

  • ceinture orange
  • Groupe : Membres
  • Messages : 20
  • Inscrit(e) : 10-février 12

Posté 11 février 2012 - 14:36

Pour l'instant, je cherche avec les remarques de Rebcao mais la macro ne fontionne toujours pas.

Seb48
0

#10 L'utilisateur est hors-ligne   seb48 

  • ceinture orange
  • Groupe : Membres
  • Messages : 20
  • Inscrit(e) : 10-février 12

Posté 11 février 2012 - 15:27

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
0

#11 L'utilisateur est hors-ligne   lili2006 

  • ceinture rouge et blanche 8em dan
  • Groupe : Moderateurs
  • Messages : 12037
  • Inscrit(e) : 21-décembre 05

Posté 11 février 2012 - 18:14

Re,

Un exemple ci-joint

Après, tu peux faire du métré et tout et tout,...
AutoCAD MAP 3D 2020 - Covadis 17.0f
Forum : http://genie-civil.bbactif.com/
0

#12 L'utilisateur est hors-ligne   seb48 

  • ceinture orange
  • Groupe : Membres
  • Messages : 20
  • Inscrit(e) : 10-février 12

Posté 11 février 2012 - 19:53

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
0

#13 L'utilisateur est hors-ligne   rebcao 

  • ceinture rouge et blanche 8em dan
  • Groupe : Membres
  • Messages : 7135
  • Inscrit(e) : 25-août 04
  • LocationSELESTAT

Posté 12 février 2012 - 10:45

Bonjour,

Tu prévois de travailler dans quelle unité ?

Car dans ton exemple tu as indiqué

Z = 920 ? (=USERR1)

Pente = 0,02 ? (=USERR2)


Merci de préciser...

Christian
Formateur, Consultant Expert AutoCAD, REVIT MEP, INVENTOR, télécharger des Supports de Cours AutoCAD, des Outils AutoCAD...
cad123 @ wanadoo.fr (enlever les espaces de part et d'autre de @)
0

#14 L'utilisateur est hors-ligne   rebcao 

  • ceinture rouge et blanche 8em dan
  • Groupe : Membres
  • Messages : 7135
  • Inscrit(e) : 25-août 04
  • LocationSELESTAT

Posté 12 février 2012 - 11:08

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 Supports de Cours AutoCAD, des Outils AutoCAD...
cad123 @ wanadoo.fr (enlever les espaces de part et d'autre de @)
0

#15 L'utilisateur est hors-ligne   bryce 

  • ceinture noire 4em dan
  • Groupe : Membres
  • Messages : 2161
  • Inscrit(e) : 03-mars 06
  • Location68 Mulhouse

Posté 12 février 2012 - 12:01

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...
0

#16 L'utilisateur est hors-ligne   seb48 

  • ceinture orange
  • Groupe : Membres
  • Messages : 20
  • Inscrit(e) : 10-février 12

Posté 12 février 2012 - 18:06

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
0

#17 L'utilisateur est hors-ligne   bryce 

  • ceinture noire 4em dan
  • Groupe : Membres
  • Messages : 2161
  • Inscrit(e) : 03-mars 06
  • Location68 Mulhouse

Posté 13 février 2012 - 00:29

Voir le messageseb48, le 12 février 2012 - 18:06 , dit :

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);

0

#18 L'utilisateur est hors-ligne   seb48 

  • ceinture orange
  • Groupe : Membres
  • Messages : 20
  • Inscrit(e) : 10-février 12

Posté 13 février 2012 - 09:37

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
0

#19 L'utilisateur est hors-ligne   seb48 

  • ceinture orange
  • Groupe : Membres
  • Messages : 20
  • Inscrit(e) : 10-février 12

Posté 13 février 2012 - 10:40

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
0

#20 L'utilisateur est hors-ligne   seb48 

  • ceinture orange
  • Groupe : Membres
  • Messages : 20
  • Inscrit(e) : 10-février 12

Posté 13 février 2012 - 12:18

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
0

Partager ce sujet :


  • 2 Pages +
  • 1
  • 2
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

1 utilisateur(s) en train de lire ce sujet
0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)