alxG88
Guest
Bonjour à tous,
pour me faciliter dans mon travail, j'écris une série de macros pour les bords solides qui simplifient les opérations que je travaille le plus souvent.
Le problème que je souhaite soumettre est le suivant: J'essaie d'écrire une macro qui permet aux individus d'ouvrir tous les dfts et, pour chacun d'eux, d'enregistrer une copie au format pdf et une au format dxf dans un répertoire spécifique.
J'avais déjà écrit une macro exécutant la même opération avec un dft à la fois, mais maintenant je ne peux pas étendre ce concept à tous les dfts ouverts.
Je mets le code que j'ai écrit :
comme vous pouvez le voir, j'ai essayé de créer un do...loop jusqu'au cycle de sorte qu'il va chercher des dfts ouverts de temps en temps, mais cela ne fonctionne pas: le résultat est qu'il ne m'enregistre que le premier dft actif et s'arrête, me forçant à recommencer la macro pour chaque fichier.
Tu peux m'aider ? Où ai-je tort ?
merci à tous à l'avance
alex
pour me faciliter dans mon travail, j'écris une série de macros pour les bords solides qui simplifient les opérations que je travaille le plus souvent.
Le problème que je souhaite soumettre est le suivant: J'essaie d'écrire une macro qui permet aux individus d'ouvrir tous les dfts et, pour chacun d'eux, d'enregistrer une copie au format pdf et une au format dxf dans un répertoire spécifique.
J'avais déjà écrit une macro exécutant la même opération avec un dft à la fois, mais maintenant je ne peux pas étendre ce concept à tous les dfts ouverts.
Je mets le code que j'ai écrit :
Code:
module
dim objapp comme un cadre solide. demande
dim objdft en tant que document solidedgedraft.draft
dim nom de fichier comme chaîne
dim cheminname_1 comme chaîne
dim cheminname_2 comme chaîne
Sous-main()
suite de l'erreur
objapp = getobject(, "solidedge.application") ' crée une application avec certaines caractéristiques
si objapp n'est rien alors
msgbox("bord solide n'est pas ouvert! ouvrir le bord solide.", vbcritic, "attention")
sortie sous
fin si
si objapp.activedocumenttype < solidedgeframework.documenttypeconstants.igdraftdocument puis
msgbox("pas de projet de document ouvert! ouvrir une ébauche.", vb information, "attention")
sortie sous
fin si
ojdft = document actif
si objdft n'est rien alors
msgbox("pas de document ouvert!", vbinformation, "attention")
sortie sous
fin si
suivre le cycle aussi longtemps qu'il y a des projets ouverts
appel objdft.save() ' mis avant le nom, pour de nouveaux fichiers est correctement demandé de donner le nom
fichiername = left(objdft.name, len(objdft.name) - 4)' ne dérive que le nom du fichier
cheminname_1 = "s:\ug\dxf\" chemin fichier dxf
cheminname_2 = "s:\ug\dati\" ' chemin de fichier pdf
objapp.displayalerts = false 'écrase automatiquement les fichiers avec le même nom sans demander
appel objdft.saveas(pathname_1 + nom de fichier + "." + "dxf") ' sauve par nom
appel objdft.saveas(pathname_2 + nom de fichier + "." + "pdf") ' enregistrer par nom
objapp.displayalerts = true 'reactive windows alerte messages
call objdft.close() « ferme le fichier brouillon qu'il vient de créer pdf et dxf
objdft = rien
objapp = rien
boucle jusqu'à objapp.activedocumenttype <> solidedgeframework.documenttypeconstants. igprojet de document
fin
fin du module
Tu peux m'aider ? Où ai-je tort ?
merci à tous à l'avance
alex