seb48 Posté(e) le 10 février 2012 Posté(e) le 10 février 2012 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
FormaBois Posté(e) le 11 février 2012 Posté(e) le 11 février 2012 (modifié) 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 Modifié le 13 février 2012 par FormaBois 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"
seb48 Posté(e) le 11 février 2012 Auteur Posté(e) le 11 février 2012 Salut, Je vais suivre ton conseil. A plusSeb48
rebcao Posté(e) le 11 février 2012 Posté(e) le 11 février 2012 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 @)
rebcao Posté(e) le 11 février 2012 Posté(e) le 11 février 2012 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 @)
lili2006 Posté(e) le 11 février 2012 Posté(e) le 11 février 2012 Bonjour à toutes et tous, Sinon, tu peux aussi créer un bloc dynamique avec champs,... Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
seb48 Posté(e) le 11 février 2012 Auteur Posté(e) le 11 février 2012 Bonjour à toutes et tous, Sinon, tu peux aussi créer un bloc dynamique avec champs,...
seb48 Posté(e) le 11 février 2012 Auteur Posté(e) le 11 février 2012 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
seb48 Posté(e) le 11 février 2012 Auteur Posté(e) le 11 février 2012 Pour l'instant, je cherche avec les remarques de Rebcao mais la macro ne fontionne toujours pas. Seb48
seb48 Posté(e) le 11 février 2012 Auteur Posté(e) le 11 février 2012 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: _distSpécifiez le premier point: Spécifiez le deuxième point:Distance = 200.00, Angle dans le plan XY = 180, Angle avec le plan XY = 0Delta X = -200.00, Delta Y = 0.00, Delta Z = 0.00Commande:DISTANCE Spécifiez le premier point: 500Distance = 500.00Commande: USERR1Entrez une nouvelle valeur pour USERR1 <500.00>: 500Commande: USERR2Entrez une nouvelle valeur pour USERR2 <500.00>: 0.02Commande:USERR2Entrez une nouvelle valeur pour USERR2 <0.02>: attdiaNécessite une distance numérique ou deux points. A l'aide Seb48
lili2006 Posté(e) le 11 février 2012 Posté(e) le 11 février 2012 Re, Un exemple ci-joint Après, tu peux faire du métré et tout et tout,... Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
seb48 Posté(e) le 11 février 2012 Auteur Posté(e) le 11 février 2012 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
rebcao Posté(e) le 12 février 2012 Posté(e) le 12 février 2012 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 Outils AutoCAD...cad123 @ wanadoo.fr (enlever les espaces de part et d'autre de @)
rebcao Posté(e) le 12 février 2012 Posté(e) le 12 février 2012 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 @)
bryce Posté(e) le 12 février 2012 Posté(e) le 12 février 2012 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... Brice, formateur AutoCAD - Inventor - SolidWorks - ZWCad - DraftSight - SketchUp indépendant
seb48 Posté(e) le 12 février 2012 Auteur Posté(e) le 12 février 2012 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 messageJe 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
bryce Posté(e) le 12 février 2012 Posté(e) le 12 février 2012 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); Brice, formateur AutoCAD - Inventor - SolidWorks - ZWCad - DraftSight - SketchUp indépendant
seb48 Posté(e) le 13 février 2012 Auteur Posté(e) le 13 février 2012 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
seb48 Posté(e) le 13 février 2012 Auteur Posté(e) le 13 février 2012 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
seb48 Posté(e) le 13 février 2012 Auteur Posté(e) le 13 février 2012 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,0Commande: cal>> Expression: p2=cur>> Entrez un point:-7183.51449,10666.4881,0Commande: userr3Entrez 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: _-insertEntrez le nom du bloc ou [?] <Pente>: PenteUnités: Millimètres Conversion: 1.00Spé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>: 1Entrez le facteur d'échelle en Y <utiliser le facteur d'échelle en X>:Spécifiez l'angle de rotation <0>: 0Entrez la valeur des attributs.Pente <100>: % pente = -45.91Commande:-INSERER Entrez le nom du bloc ou [?] <Pente>: 97.691732*Incorrect* Seb48
bryce Posté(e) le 13 février 2012 Posté(e) le 13 février 2012 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 = Brice, formateur AutoCAD - Inventor - SolidWorks - ZWCad - DraftSight - SketchUp indépendant
seb48 Posté(e) le 13 février 2012 Auteur Posté(e) le 13 février 2012 Re, Je viens de voir ta réponse,je l'essaie et je tiens au jus. Merci Seb48
seb48 Posté(e) le 13 février 2012 Auteur Posté(e) le 13 février 2012 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.
Messages recommandés
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 compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant