CADxp: Création de macros - CADxp

Aller au contenu

Page 1 sur 1
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

Création de macros

#1 Guest_seb48_*

  • Groupe : Invités

Posté 22 décembre 2010 - 18:59

Bonjour à tous,
Je travail sous autocad 2007 LT et je souhaite créé une macro qui écrit dans l'espace objet la longueur d'un trait automatique et une macro qui écrit la surface d'un objet et qui me laisse la possibilité d'écrire un aussi commentaire.
Je n'arrive pas à lui dire d'aller chercher le résultat _aera pour la surface.
Je suis à la recherche d'exemple car l'aide d'autocad ne permet pas d'écrire ces fonctions.

Merci pour votre aide

Seb 48


0

#2 L'utilisateur est hors-ligne   bryce 

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

Posté 22 décembre 2010 - 23:00

Bonjour,

Voici 2 exemples de macros basiques :

- pour récupérer la longueur d'un objet dans un texte
^C^C_lengthen;\;texte;\;;$M=$(rtos,$(getvar, perimeter),2,2);


- pour une surface
^C^C_area;o;\texte;\;;$M=$(rtos,$(getvar, area),2,2);


A adapter et peaufiner suivant tes besoins... ;)
0

#3 Guest_seb48_*

  • Groupe : Invités

Posté 23 décembre 2010 - 18:54

Merci bryce pour ton aide

Je pense que je dois arriver à l'inscrire dans un attribut de bloc pour pouvoir l'extraire et le mettre dans un fichier .txt . C'est pas sûr, mais je vais essayer.
Est ce que tu sais ou je pourrai trouver des exemples de programmation en language diesel pour arriver comprendre toutes les sputilités.

Encore merci pour tout et joyeux noël

Seb48

0

#4 Guest_seb48_*

  • Groupe : Invités

Posté 23 décembre 2010 - 19:25

Si quelqu'un peut m'aider dans l'écriture d'une macro qui inscrit la surface ou la longueur d'un objet dans un bloc avec attribut pour extraire cette donnée,je suis preneur car je suis novice en langage diesel. (jessaie de comprendre avec les exemples qui se trouve sur le site et avec l'aide d'autocad)


Merci d'avance

Seb48, l'unique




0

#5 L'utilisateur est hors-ligne   bryce 

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

Posté 23 décembre 2010 - 19:56

Voici un exemple de macro qui récupère la surface d'un objet, insère un bloc appelé "label" qui contient un seul attribut, et renseigne cet attribut avec la surface mesurée :

*^C^C_area;o;\attdia;0;attreq;1;-inserer;label;e;1;r;0;\$M=$(rtos,$(getvar, area),2,2);

La macro se répète automatiquement grâce à l'* du début.
0

#6 Guest_seb48_*

  • Groupe : Invités

Posté 23 décembre 2010 - 21:11

Bryce,

Je te remercie pour ton aide, je viens de l'essayer et ça marche.
Est ce qu'il y a un bouquin ou un site pour apprendre les rudiments essentiels de cette programmation.

Merci encore et à bientôt

Seb48

0

#7 Guest_seb48_*

  • Groupe : Invités

Posté 23 décembre 2010 - 21:33

Salut à tous

Est ce que ça marche si j''ai un bloc avec 2 attributs:
-un attribut pour la surface
-un attribut pour le nom de la surface que je rentre quand je clique sur l'objet
exmple :
Chambre1
12.15 m2

0

#8 L'utilisateur est hors-ligne   bryce 

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

Posté 24 décembre 2010 - 00:30

Citation

Est ce qu'il y a un bouquin ou un site pour apprendre les rudiments essentiels de cette programmation.


Une macro AutoCAD, ce n'est pas vraiment de la programmation, mais juste un enchaînement de commandes.
Il n'y a que les parties en DIESEL, c'est-à-dire les $M=$(...), qui s'apparentent à de la programmation simple.

Le plus important pour créer une macro est donc dans un premier temps d'être capable de réaliser l'opération souhaitée entièrement au clavier.

Pour écrire ensuite la macro correspondante, il faut connaître l'utilité d'un certain nombre de caractères spéciaux :

- un ; (ou un espace, déconseillé pour la lisibilité) correspond à un appui sur Entrée

- un \ permet de mettre la macro en pause, pour que l'utilisateur puisse cliquer un point, un objet, ou entrer une valeur au clavier. La macro reprend son cours ensuite.

- on met en général ^C^C (ce qui correspond à 2x Echap) au début de la macro, pour interrompre toutes les commandes en cours avant d'exécuter la macro.

- un * devant ^C^C entraîne l'exécution de la macro en boucle.


Par exemple pour mesurer la surface d'un objet avec la commande AIRE, on ferait au clavier :

Commande: aire [Entrée]
Spécifiez le premier coin ou [Objet/Ajouter une aire/Soustraire une aire] 
<Objet>: o [Entrée]
Choix des objets: [on doit pouvoir cliquer sur un objet, dans une macro il faudra donc faire une pause]
Aire = 237.9729, Périmètre = 60.9904


la macro correspondante sera :

^C^Caire;o;\ [puis suite de la macro]


Il faut savoir aussi que dans AutoCAD, il est en général possible de taper au clavier une commande précédée d'un - pour empêcher l'affichage d'un boîte de dialogue ou palette, et utiliser la commande à 100% au clavier.

La commande CALQUE par exemple affiche normalement le gestionnaire de calques.

En tapant -CALQUE par contre, on peut créer ou modifier des calques en ligne de commande.

Par exemple pour insérer au clavier un bloc appelé LABEL contenant deux attributs (DESCRIPTION et SURFACE), on ferait :

Commande: -inserer [Entrée]
Entrez le nom du bloc ou [?] <label>: label [Entrée]
Unités: Millimètres   Conversion:    1.0000
Spécifiez le point d'insertion ou [Pointdebase/Echelle/X/Y/Z/Rotation]: e [Entrée]
Spécifiez le facteur d'échelle des axes XYZ <1>: 1 [Entrée]
Spécifiez le point d'insertion ou [Pointdebase/Echelle/X/Y/Z/Rotation]: r [Entrée]
Spécifiez l'angle de rotation <0>: 0 [Entrée]
Spécifiez le point d'insertion ou [Pointdebase/Echelle/X/Y/Z/Rotation]: [on doit pouvoir cliquer un point, dans une macro il faudra donc faire une pause]
Entrez la valeur des attributs.
Description: [on doit pouvoir taper du texte, dans une macro il faudra donc faire une pause]
Surface: [ici on voudrait récupérer automatiquement la valeur de la variable AREA, dans une macro il faudra donc faire appel au langage DIESEL]


la macro correspondante sera :

^C^C-inserer;label;e;1;r;0;\\$M=$(getvar,area);


On obtient par contre une surface avec 8 décimales, il faudrait donc utiliser la fonction DIESEL rtos pour choisir la précision.

L'ensemble des fonctions DIESEL (une bonne vingtaine) figure dans l'aide AutoCAD.

Il y a aussi les sites suivants (en anglais):

http://www.crlf.de/D...sel/Diesel.html

http://members.iinet...byte/diesel.htm


Dans ton cas précis, si tu veux insérer un bloc qui demande 2 attributs au lieu d'un, il faudra juste rajouter à la macro de mon message précédent un \ bien placé... ;)

Ce message a été modifié par bryce - 11 octobre 2012 - 11:36 .

1

#9 L'utilisateur est hors-ligne   Aleck Ultimate 

  • ceinture marron
  • Groupe : Membres
  • Messages : 249
  • Inscrit(e) : 18-novembre 16
  • LocationAlpes de Hautes Provences (04)

Posté 19 décembre 2016 - 16:38

Bonjour à tous.

J'ais trouvé ce sujet très intéressant, et je me disait juste, au cas où un modérateur passerait par là, qu'une fois le poste de bryce du 24/12/10 épinglé, ce sujet ferait très bon effet déplacé et épinglé dans le forum Personnalisation, macros, DIESEL.

Amicalement.
En DAO, la passion me porte !

Pour des raisons personnelles je n'ais Internet qu'au bureau donc je ne pourrais vous répondre qu'avec un délais d'un jour ouvrable ^^

Utilisateur d'AutoCAD 2015 sous Windows 10
Découverte de Revit 2017 version étudiante
0

Partager ce sujet :


Page 1 sur 1
  • 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)