Aller au contenu

Réalisable avec une macro ?


Messages recommandés

Posté(e)

Bonjour à tous,

 

Je suis totalement novice en matière de macro et je me demande s'il est possible de réaliser une action.

http://img718.imageshack.us/img718/3614/acad.png

 

C'est un peu compliqué à expliquer, mais je vais essayer d'être clair.

Ce tracé sert de base à un pliage de tôle.

 

Pour arriver à ce tracé, on part d'une côte finie (après pliage), puis un retrait, puis un décalage extérieur. Enfin une série de "prolonger", "ajuster" pour les angles.

 

L'idéal serait une boite de dialogue (ou une invite de commande) qui me demanderait 3 valeurs : hauteur, largeur, profondeur finies. La macro s'occuperait ensuite de dessiner le développé de la tôle.

 

Je ne sais pas du tout si c'est réalisable avec AutoCAD et ses macros, j'ai donc besoin de vos avis là-dessus :)

 

Merci.

Posté(e)

Voici la démarche, un peu plus détaillée.

http://img37.imageshack.us/img37/8631/macroj.png

 

L'invite de commande aurait besoin de connaître les 3 valeurs : HTF, LGF, PFF (hauteur, largeur et profondeur finies).

 

Bonne journée.

Posté(e)

Salut,

 

En programmation (ici LISP) on ne procède pas forcément comme on le ferait quand on dessine.

Le petit programme que je te propose, récupère les dimensions finies dans une petite boite de dialogue, puis, à partir de ces données calcule les points pour directement dessiner la polyligne (en fait chaque point est calculé en fonction du précédent).

 

Si tu veux changer les valeurs par défaut, change les valeurs surlignées dans le code.

 

Pour l'utilisation des LISP voir ce sujet.

 

(defun c:devbox	(/ setValue tmp file dcl_id status width height depth)
 (defun setValue (key val)
   (if
     (and
(setq val (distof val))
(      )
     (set (read key) val)
     (progn
(alert "Nécessite un nombre valide")
(mode_tile key 2)
     )
   )
 )
 (setq	tmp    (vl-filename-mktemp "tmp.dcl")
file   (open tmp "w")
width  [surligneur]80.[/surligneur]
height [surligneur]50.[/surligneur]
depth  [surligneur]20.[/surligneur]
 )
 (write-line
   "devbox : dialog {
      label = \"DevBox\";
      : edit_box {
        label = \"Largeur :     \";
        key = \"width\";
        width = 8;
        fixed_width = true;
        allow_accept = true;
      }
      : edit_box {
        label = \"Hauteur :     \";
        key = \"height\";
        width = 8;
        fixed_width = true;
        allow_accept = true;
      }
      : edit_box {
        label = \"Profondeur :\";
        key = \"depth\";
        width = 8;
        fixed_width = true;
        allow_accept = true;
      }
      spacer;
      ok_cancel;
    }"
   file
 )
 (close file)
 (if
   (and
     (      (new_dialog "devbox" dcl_id)
   )
    (progn
      (foreach	k '("width" "height" "depth")
 (set_tile k (rtos (eval (read k))))
 (action_tile k "(setValue $key $value)")
      )
      (setq status (start_dialog))
      (unload_dialog dcl_id)
      (vl-file-delete tmp)
      (if
 (and
   (= status 1)
   (setq pt (getpoint "\nSpécifiez le point d'insertion: "))
 )
  (progn
    (setq pt (trans pt 1 0)
	  pt (list (car pt) (cadr pt))
	  height (- height 1.5)
	  width (- width 1.5)
	  depth (- depth 2.)
    )
    (entmake
      (list
	'(0 . "LWPOLYLINE")
	'(100 . "AcDbEntity")
	'(100 . "AcDbPolyline")
	'(90 . 12)
	'(70 . 1)
	(cons 10 pt)
	(cons 10 (setq pt (list (car pt) (- (cadr pt) depth))))
	(cons 10 (setq pt (list (+ (car pt) width) (cadr pt))))
	(cons 10 (setq pt (list (car pt) (+ (cadr pt) depth))))
	(cons 10 (setq pt (list (+ (car pt) depth) (cadr pt))))
	(cons 10 (setq pt (list (car pt) (+ (cadr pt) height))))
	(cons 10 (setq pt (list (- (car pt) depth) (cadr pt))))
	(cons 10 (setq pt (list (car pt) (+ (cadr pt) depth))))
	(cons 10 (setq pt (list (- (car pt) width) (cadr pt))))
	(cons 10 (setq pt (list (car pt) (- (cadr pt) depth))))
	(cons 10 (setq pt (list (- (car pt) depth) (cadr pt))))
	(cons 10 (setq pt (list (car pt) (- (cadr pt) height))))
      )
    )
  )
      )
    )
 )
 (princ)
)

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

Posté(e)

Wow, merci beaucoup gile, ça me donne une super base :D

Je ne connais pas le LISP, mais je pratique le PHP et avec le lien que tu m'as donné, ça devrait aller.

 

Merci encore pour le coup de main et bonne journée.

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é