Aller au contenu

Faire un script qui fait un wbloc


Messages recommandés

Posté(e)

Bonjour

Je souhaite écrire un SCRIPT.scr qui doit :

-libérer 2 couches puis faire un wbloc(OGEOMETRE_extract.dwg) à partir d’un fichier d’origine(OGEOMETRE.dwg).

Puis je veux insérer ce wbloc dans un autre fichier(TERMINAL.dwg) puis le sauvegarder sous (TERMINAL.dwg)

 

Mon wbloc n’est pas bon

car je récupère TOUS les calques de OGEOMETRE dans le wbloc

 

Voici mon script :

_-layer

ch NUM_GEOM

_freeze

*

L REF_GEOM

 

wbloc

OGEOMETRE_extract.dwg

*

_open

TERMINAL.dwg

_-insert

TERMINAL.dwg

0,0

1

1

0

 

A terme, si ça marche , je souhaiterais pouvoir paramétrer le nom des fichiers d’entrée et de sortie.

D’avance, merci pour vos réponses

Posté(e)

Bonjour,

 

Je pense que c'est l'option "*" de wbloc qui fait que tu récupère l'intégralité du dessin.

Essayes (sans avoir testé) de passer par l'option de Sélection d'objets et en réponse "Choix des objets:" donner l'option "Tout"

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Posté(e)

Bonjour,

 

Je pense que c'est l'option "*" de wbloc qui fait que tu récupère l'intégralité du dessin.

Essayes (sans avoir testé) de passer par l'option de Sélection d'objets et en réponse "Choix des objets:" donner l'option "Tout"

Posté(e)

Merci pour ta réponse.

 

Petite précision, j'ai fait une erreur de recopie de mon script vers le forum :

Tout à la fin du script , il fallait lire

OGEOMETRE_extract.dwg et non pas TERMINAL.dwg

(ce qui revient bien à insérer mon WBLOC OGEOMETRE_extract.dwg dans le fichier TERMINAL.dwg)

Toutes mes excuses!!!

 

Par contre je n'ai pas compris ton explication:

J'ai remplacé l'"*" par "tout":

-->ça ne marche pas.

en relisant la ligne de commande à cet endroit, je lis:

 

Commande: wbloc

Entrez le nom du fichier de sortie: OGEOMETRE_extract.dwg

Entrez le nom du bloc existant ou

[= (bloc=fichier de sortie)/* (dessin entier)] <définir nouveau dessin>: tout

Le bloc "tout" n'a pas été trouvé.

Entrez le nom du bloc existant ou .......

 

Je ne vois pas comment passer par l'option Sélection des objets et en réponse "Choix des objets" donner l'option "Tout"

 

Merci encore pour votre aide

Posté(e)

Il te faut simplement mettre une ligne vide supplémentaire pour prendre l'option par défaut qui est "définir nouveau dessin", puis définir ton point d'insertion (généralement 0,0,0)

 

[= (bloc=fichier de sortie)/* (dessin entier)] <définir nouveau dessin>:

 

Spécifiez le point de base de l'insertion: 0,0,0

Choix des objets: tout

 

et encore une ligne vierge pour valider le choix des objets...

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Posté(e)

SUPER çà marche !!!! Merci encore.

 

Il me reste encore quelques détails à perfectionner:

1°) Au moment où dans mon script, j'écris

_open

TERMINAL.dwg

 

quelle est la syntaxe pour donner le CHEMIN pour TOUJOURS trouver le fichier TERMINAL.dwg ?

 

 

 

2°) Si je veux pouvoir utiliser ce script sur d'autres fichiers (avec des noms différents, mais qui ont la même constitution de couches ) est il possible d'avoir un paramétrage ou une fenêtre où l'on saisirait le nom du fichier ?

Ou bien faut il écrire le script avec à chaque fois les bons noms de fichiers correspondants?

Posté(e)
quelle est la syntaxe pour donner le CHEMIN pour TOUJOURS trouver le fichier TERMINAL.dwg ?

 

Pour ton info Autocad interprète le signe "\" comme un caractère spécial (qui en gros lui dit de lire le caractère suivant littéralement)

Donc pour un chemin de dossier exprimé sous windows comme C:\toto\titi\fichier.dwg devra être transcrit pour autocad sous la syntaxe: C:\\toto\\titi\\fichier.dwg (tu doubles les anti-slash)

Si tes noms de dossiers ou fichiers comporte des espaces, je te conseilles d'entourer l'ensemble de guillemets ("") pour que les espaces ne soit pas interprété comme une validation.

Exemple:

pour C:\to to\ti ti\mon fichier.dwg donner a autocad "C:\\to to\\ti ti\\mon fichier.dwg"

 

On a aussi la possibilté de remplacé l'anti-slash par un slash simple:

C:\toto\titi\fichier.dwg peut être écrit C:/toto/titi/fichier.dwg, c'est au choix!

 

Si je veux pouvoir utiliser ce script sur d'autres fichiers (avec des noms différents)

En script, pas vraiment de solution, pour ce cas de figure il te faut te tourner vers un langage plus évolué, lisp par exemple.

Tu peux regarde aussi SCRIPTPro (ou un truc du genre, faire une recherche), qui je crois permet d'automatiser un script sur un lot de fichier DWG.

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Posté(e)

J'ai essayé comme çà:

_open

N:\\O_ESSIDIS\\RESERVE\\CARTO\\

 

puis comme çà:

_open N:\\O_ESSIDIS\\RESERVE\\CARTO\\.......

 

puis comme çà:

_open

N:/O_ESSIDIS/RESERVE/CARTO/.......

 

--> A chaque fois j'ai le messsage : "Impossible de trouver le fichier spécifié....."

Posté(e)

Si je veux pouvoir utiliser ce script sur d'autres fichiers (avec des noms différents)

faut il écrire le script avec à chaque fois les bons noms de fichiers correspondants?

Il y a aussi SuperAutoScript d'Eric sur Caderix, qui permet de traiter tous les fichiers d'un dossier

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"

Posté(e)
--> A chaque fois j'ai le messsage : "Impossible de trouver le fichier spécifié....."

 

Pourquoi tu ne fourni que le chemin du dossier sans le nom du fichier?

 

_open
"N:\O_ESSIDIS\RESERVE\CARTO\TERMINAL.dwg"

 

devrait fonctionner...

Contrairement à ce que j'ai dit, un "\" simple à l'air de fonctionner pour un script.

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Posté(e)

Bonjour bonuscad

 

Mes chemins sont très longs. Ce n'était que pour simplifier que je n'ai mis que le début de la syntaxe.Mais dans la réalité j'ai bien terminé par le nom du fichier.dwg.

Mais je n'ai pas de secrets et te livre à présent mon script dans l'intégralité.

 

Là encore, pour simplifier, j'ai voulu te ménager en te donnant des noms simplifiés( les vrais noms sont tordus, mais ce n'ai pas moi qui les ait choisis !!!!)

Je te donne donc ici le script avec les vrais noms de fichiers (je te donne également la correspondance des noms de fichiers par rapport au script initial que je t'ai fourni.

 

Encore un précision:

Dans l'ancien script, j'ouvrais manuellement le 1er fichier pour en faire un wbloc à l'aide de mon script.

J'ai fait évoluer mon script en me disant que ce serait bien d'arriver à ouvrir automatiquement le 1er fichier.

(C'est à dire que je lance Autocad qui me donne un dessin vierge, puis je lance mon script à partir de cet endroit)

 

_open

N:/O_ESSIDIS/RESERVE/CARTO/BROUILLO.N/HA/Autocad/Calage_réseau/02_simulation_script/HEILIGENBERG_ref-OLD-GEOM.dwg

_-layer

ch NUM_GEOM

_freeze

*

L REF_GEOM

 

wbloc

HEILIGENBERG_ref-OLD-GEOM_extract.dwg

 

0,0

tout

 

_open

N:/O_ESSIDIS/RESERVE/CARTO/BROUILLO.N/HA/Autocad/Calage_réseau/_heiligenberg.dwg

_-insert

N:/O_ESSIDIS/RESERVE/CARTO/BROUILLO.N/HA/Autocad/Calage_réseau/HEILIGENBERG_ref-OLD-GEOM_extract.dwg

0,0

1

1

0

 

Et voici la correspondance des noms pour que tu t'y retrouves ....

 

HEILIGENBERG_ref-OLD-GEOM.dwg --> C'est mon fichier d'origine que j'ouvrais manuellement

HEILIGENBERG_ref-OLD-GEOM_extract.dwg -->C'est le nom de mon WBLOC que j'appelais OGEOMETRE_extract.dwg

_heiligenberg.dwg --->C'est le nom du fichier que j'appelais TERMINAL.dwg

 

Actuellement quand je lance ce script, le fichier d'origine (HEILIGENBERG_ref-OLD-GEOM.dwg)s'ouvre et le script s'arrête ainsi:

 

Commande:

N:/O_ESSIDIS/RESERVE/CARTO/BROUILLO.N/HA/Autocad/Calage_réseau/02_simulation_scr

ipt/HEILIGENBERG_ref-OLD-GEOM.dwg

Commande inconnue

--> n'y aurait il pas encore un problème d'espace où de retour chariot ?

 

D'avance, merci pour ton aide!!!

Posté(e)
Mais je n'ai pas de secrets et te livre à présent mon script dans l'intégralité.

Sans les fichiers ont ne fait pas grand chose d'un script :(rires forts):

 

Voici par exemple un script que j'ai généré en lisp pour l’exécuter ensuite sour AutocadMap en 32bits (Windows XP)

 

Il fait en tout 78844 lignes et il s'est exécuté sans problème pour faire mon assemblage.

Je t'en donne un extrait, pour te donner une idéee.

 

_.undo
_control
_none
_.new
"C:\Program Files\Autodesk\AutoCAD Map 3D 2011\Template\map2Diso.dwt"
cmddia
0
_ADESETCRDSYS
_sourceDrawings
CADASTRE:\com-013\feuille-0130000D02\0130000D02.dwg
RGF93.CC45
_currentSession
Lambert93
_exit
_ADEDRAWINGS
_ALias
_Update
CADASTRE
CADASTRE
I:\DEPART07\BD_CADASTRE-07
_exit
_ATtach
CADASTRE:\com-013\feuille-0130000D02\0130000D02.dwg
_exit
_ADEQUERY
_Define
_Location
_all
_exit
_execute
_draw
_.zoom
_extent
_.saveas
2010
I:\Depart07\L93-BD_CADASTRE-07\com-013\feuille-0130000D02\0130000D02.dwg
cmddia
1
_.close

 

Essayes en entourant de guillemets "unité:\chemin dossier\fichier.dwg"

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Posté(e)

Bonjour Bonuscad

 

J'ai repris mon script pas à pas.

Ouf !!! Enfin çà fonctionne, avec la syntaxe suivante:

_open

N:\O_ESSIDIS\RESERVE\CARTO\BROUILLO.N\HA\Autocad\Calage_réseau\02_simulation_script\_heiligenberg.dwg

 

(sans que je puisse expliquer pourquoi ça bloquait alors que j'avais déjà essayé celà)

 

En tout cas, je suis bien content et te remercie encore pour ton aide.

Merci aussi pour l'appercu de ton script.

Je ne connaissais pas le point entre l'underscore et la commande

 

comme par exemple

_.saveas

Quel est le role du point ?

Posté(e)
comme par exemple

_.saveas

Quel est le role du point ?

 

Il sert a utiliser la commande native d'Autocad

 

En effet (très rare d'utilisation) on peut redéfinir une commande qui pourrait faire, soit des actions complémentaires, soit même des actions complétement différentes.

Ceci ce fait avec la commande REDEF ou NONDEF (voir l'aide d'Autocad)

Donc avec le point tu es toujours sur d'avoir affaire à la vraie commande native.

 

Personnellement, je l'ai fais qu'une fois par programmation pour redéfinir la commande "polylign", qui lorsqu'elle était appelée faisait des lignes spéciale et prédéfinies (marquage au sol routier).

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

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é