Aller au contenu

Automatisation de Script pour Tracer


Messages recommandés

Posté(e)

Hello

 

Je desire obtenir un "gros" fichier Script de trace (de N fenetres) dans l'onglet Objet en changeant les coordonnees XY de la fenetre d'impression et le nom du PDF (ou DWF) genere (nom avec incrementation automatique)

 

J'ai deja tout prepare en faisant un 1er trace Test a la main,

donc en fait je change TRES PEU de choses pour chaque trace (dans l'onglet Objet) ...

 

>>

FILEDIA 0

-TRACEUR

O

 

 

 

 

 

 

F

2130,2645

2220,2715

 

 

 

 

 

 

D:\CIVIL_Patrice_001

 

 

REDESS

>>

 

En fait j'ai besoin de 5 questions :

 

Nombre de fenetres ? N

Coordonnees coin bas gauche 1ere fenetre ? X1,Y1

Coordonnees coin haut droite 1ere fenetre ? X2,Y2

Deplacement horizontal entre chaque fenetre ? DELTAX

Deplacement vertical entre chaque fenetre ? DELTAY

 

D'ailleurs j'aurais toujours soit DELTAX=0 soit DELTAY=0

 

Ainsi le programme genererait des coordonnees XY qui se deplacent horizontalent ou verticalement ...

suivant que toutes les fenetres a tracer sont horizontales ou verticales

et le nombre de fenetres serait en plus utilise pour changer le nom du fichier .PDF (ou .DWF)

genere automatiquement : D:\CIVIL_Trace_001, D:\CIVIL_Trace_002, D:\CIVIL_Trace_003, etc

 

Je crois avoir deja vu sur Cadxp un programme ou utilitaire qui resolvait ce genre de choses !?

mais je ne suis pas sur ...

et je n'ai pas trop envie de m'embarquer dans un truc sous Excel sauf si j'y suis oblige !!

 

A votre bon coeur, Merci d'avance, lecrabe

Autodesk Expert Elite Team

Posté(e)

Cher LeCrabe, je crois qu'un lisp de premier niveau (autolisp) te serait très utile.

Pas compliqué, un pas vers l'automation.

Je me penche sur une base si j'ai 2 minutes.

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Posté(e)

(defun c:PrCr ()
 (setq nombase "Nom_presentation_")
 (initget 2 "X Y")
 (setq typeres(getkword (strcat"\nType de réseau X/Y <"(if typreshab "Y" "X")"> : ")))
 (setq typeres(or(= typeres "Y")(and(null typeres)typreshab)))
 (setq typreshab typeres); typreshab est un type habituel ! C'est un peu compliqué, non ?
 (cond(typeres; Y
(initget (if deltay 0 1) )
(setq result(getdist (strcat"\nDistance de deltaX :"(cond(deltay (strcat"<"(rtos deltay 2 3)">"))("")))))
(cond((not result)deltay)((setq  deltay result)))
(setq deltax 0.0)
)
      (T; X
(initget (if deltax 0 1) )
(setq result(getdist (strcat"\nDistance de deltaX :"(cond(deltax (strcat"<"(rtos deltax 2 3)">"))("")))))
(cond((not result)deltax)((setq  deltax result)))
(setq deltay 0.0)
))
 (initget 1)
 (setq pointbase(getpoint"\nPoint de base : "))
 (initget 33)
 (setq point2(getcorner pointbase"\nCoin de fenêtre : ")
compteur 1)
 (initget 7)
 (repeat(getint"\nNombre de fenêtres : ")

;|   ICI ton COMMAND d'impression avec toutes les options nécessaires.
  genre (command "TRACEUR" "O" "" "" "" "" ..... "F" pointbase point2 ....)
on peut aussi glisser un nom incrémenté directement en lisp dans le COMMAND = (strcat nombase (itoa compteur))
genre (command "TRACEUR" "O" "" (strcat nombase (itoa compteur)) "" "" ..... "F" pointbase point2 ....)    |;

;;;    maintenant on prépare les points suivants et le compteur pour le tour suivant dans la boucle REPEAT.
   
   (setq pointbase(list(+(car pointbase)deltax)
		(+(cadr pointbase)deltay)
		0
		)
  point2(list(+(car point2)deltax)
	     (+(cadr point2)deltay)
	     0
	     )
  compteur(1+ compteur))
   )
 )

 

Pas beaucoup de temps mais un lisp écrit basique. Se lance par PRCR. Je n'ai pas regardé autour pour voir ce qu'il y avait mais je pense que, maitrisant le script, tu sauras renseigner le (command........).

Ca pourrait marcher :P

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Posté(e)

Hello Tramber (EastMan)

 

Merci beaucoup de ton aide !

 

Je suis un peu "OUT" en ce moment et je vais essayer de tester ce WE de Paques ...

 

Et bien sur je reviens vers toi des que possible (en tout bien tout honneur) !

 

decapodesquement votre serviteur, lecrabe

Autodesk Expert Elite Team

Posté(e)

Je veux pas te forcer la main mais il me semble que faire un petit peu de vieil Autolisp te permettrait éventuellement d'appréhender toi-même la résolution.

Je serai là ce WE. Je prépare mon déménagement dans une commune voisine. Dans une semaine par contre, je risque fort d'être deconnecté pour qqes jours.

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Posté(e)

Hello

 

Bon j'ai teste et GRAND MERCI cela fonctionne !

 

Voici la ligne de code que j'ai mis au milieu de ta boucle :

 

(command "TRACEUR" "O" "" "" "" "" "" "" "F" pointbase point2 "" "" "" "" "" "" (strcat nombase (itoa compteur)) "" "" )

(command "_REDRAW")

 

Bon OK, un REDRAW est inutile mais j'aime bien ...

 

Que la nuit te soit profitable, scriptement votre devoue decapode, lecrabe

 

PS: cela fait 15 ans que j'ai arrete de developper - Oui je sais ce n'est pas bien !

Autodesk Expert Elite Team

Posté(e)

 

PS: cela fait 15 ans que j'ai arrete de developper - Oui je sais ce n'est pas bien !

 

C'est justement le sujet ! Avec un Autolisp basique on peut aussi se satisfaire.

C'est toi qui le mets au point avec ton bon vieux script, euhhh .... ton bon vieux (command ......)

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Posté(e) (modifié)

(defun c:PrCr ()
 (setq nombase "Nom_presentation_")
 (initget "X Y")
 (if (setq typreshab (getkword (strcat "\nType de réseau [X/Y] <"(cond (typeres) ("X"))"> :")))
   (setq typeres typreshab))
 (cond((= typeres "Y"); ouf !
(initget (if deltay 0 1) )
(setq result(getdist (strcat"\nDistance de deltaX :"(cond(deltay (strcat"<"(rtos deltay 2 3)">"))("")))))
(cond((not result)deltay)((setq  deltay result)))
(setq deltax 0.0)
)
      (T; X
(initget (if deltax 0 1) )
(setq result(getdist (strcat"\nDistance de deltaX :"(cond(deltax (strcat"<"(rtos deltax 2 3)">"))("")))))
(cond((not result)deltax)((setq  deltax result)))
(setq deltay 0.0)
))
 (initget 1)
 (setq pointbase(getpoint"\nPoint de base : "))
 (initget 33)
 (setq point2(getcorner pointbase"\nCoin de fenêtre : ")
compteur 1)
 (initget 7)
 (repeat(getint"\nNombre de fenêtres : ")
   
   (command "TRACEUR" "O" "" "" "" "" "" "" "F" pointbase point2 "" "" "" "" "" "" (strcat nombase (itoa compteur)) "" "" )
   (command "_REDRAW")
   
   (setq pointbase(list(+(car pointbase)deltax)
		(+(cadr pointbase)deltay)
		0
		)
  point2(list(+(car point2)deltax)
	     (+(cadr point2)deltay)
	     0
	     )
  compteur(1+ compteur))
   )
 )

 

Un certain qqe-chose-Bruno m'a suggéré une amélio dans la question introductive. Pour être honnête, j'ai écrit un peu n'importe quoi dans le premier paragraphe. Car on est aussi là pour s'amuser :P

Modifié par Tramber
typeres a changé de type !

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Posté(e)

Et je dirais même plus : (cond((= typeres "Y")

:P

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)

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é