Aller au contenu

Mise à jour des liens dans un drawing


Messages recommandés

Posté(e)

Bonjour à tous,

 

ça fait longtemps que je ne suis pas venu ici pour poser une question.

Entre temps j'ai perdu mon login, puis je n'arrivais plus à me connecté ... enfin bref me revoilou avec une question :casstet:

 

Voià, je développe depuis un mois environ un outil en visual basic (VBA) qui me permet de passer une liste complète d'assemblage, piéces et plan vers un nouveau nom.

 

exemple :

 

TOTO.CAT* vers TITO.CAT* mais chaque type est traité indivuiduallement.

Pour les Part et les Product tout fonctionne :D

 

Alors venons en au faits.

 

Voici le code de ma fonction fDraw qui traite mes CATDrawing.

 

************************************************************

' Fonction qui traite les fichiers CATDrawing.

' Toutes types de mofifications peuvent être apportés à cette fonction. (voir V5Automation.chm)

Function fDraw(PathInterTemp As String, DrawFile As String, DrawPathOut As String, ParentDirectoryOldFile As String, myDictionaryFile As Collection)

 

' Set the CATIA popup file alerts to False

' It prevents to stop the macro at each alert during its execution

CATIA.DisplayFileAlerts = False

 

'renomme les fichiers Drawing et les sauvegardes dans le répertoire temporaire OUT

Language = "VBSCRIPT"

 

Dim drawingDocuments1 As DrawingDocument

Dim drawingSheets As drawingSheet

Dim drawingSheet As drawingSheet

Dim MyView As DrawingView

Dim partDocuments2 As PartDocument

Dim productdocuments4 As ProductDocument

Dim strActiveDoc As String

Set documents1 = CATIA.documents

Dim strExtFile As String

 

' open the drawing file one by one ------------------------------------------------------------

Set drawingDocument1 = documents1.Open(ParentDirectoryOldFile + DrawFile)

'strActiveDoc = drawingDocuments1.FullName

'Call ListParentDraw(drawingDocuments1)

 

Dim DrwDoc As Document

Set DrwDoc = CATIA.ActiveDocument

If InStr(DrwDoc.Name, ".CATDrawing") = 0 Then

MsgBox "The Active Document must be a CATDrawing."

'Exit Sub

End If

 

Dim DrwSheets As drawingSheets

Set DrwSheets = DrwDoc.Sheets

 

Dim DrwSheet As drawingSheet

Set DrwSheet = DrwSheets.Item(1)

 

Dim DrwViews As DrawingViews

Set DrwViews = DrwSheet.Views

 

Dim CurView As DrawingView

 

Dim ViewLinks As DrawingViewGenerativeLinks

 

Dim fLink As AnyObject

Dim dictFile As New FileDictionary

 

 

Dim i As Integer

 

For i = 3 To DrwViews.count

 

Set CurView = DrwViews.Item(i)

Set ViewLinks = CurView.GenerativeLinks

 

Set fLink = ViewLinks.FirstLink()

 

CurView.LockStatus = False

 

'affiche si c'est un part ou un product -----------------------------------------------------------

'MsgBox TypeName(fLink)

Dim strType As String

'recupération du type de fichier Part ou Product ***********

strType = TypeName(fLink)

'retourne the short name of the document to serve to generate this active view. -----

'MsgBox "The active view was generated from " + CurView.GenerativeBehavior.Document.Name + ".CAT" + strType, vbInformation

 

' definition de l'extension de fichier à trouver dans le dictionnaire et à ouvrir -----------------------

If CStr(TypeName(CurView.GenerativeLinks.FirstLink())) = "Product" Then

strType = ".CATProduct"

Else

strType = ".CATPart"

End If

 

' search in dictionnary class the file corresponding -------------------------------------------------------------

Dim strNewName As String

 

strNewName = dictFile.FindNewFileName(myDictionaryFile, CurView.GenerativeBehavior.Document.Name & strType)

Debug.Print (CurView.GenerativeBehavior.Document.Name & strType + " ----> " + strNewName)

 

'ouverture du fichier 3D correspondnat --------------------------------------------------------------------------

Dim str3DOpenDocument As String

 

If strType = ".CATProduct" Then

Set productdocuments4 = documents1.Open(PathInterTemp + strNewName)

Else

Set partDocuments2 = documents1.Open(PathInterTemp + strNewName)

End If

 

str3DOpenDocument = PathInterTemp + strNewName

 

Dim iLink As String

iLink = PathInterTemp + strNewName

'Debug.Print (iLink)

 

Set drawingDocument1 = CATIA.ActiveDocument

 

'Set CurView = drawingDocuments1.Sheets.ActiveSheet.Views.ActiveView

 

 

'suppression des mauvais liens -------------------------------

'ViewLinks.RemoveAllLinks

' replace part or product new link ---------------------------

' Dim ViweLinks As DrawingViewGenerativeLinks

' Set ViewLinks = CurView.GenerativeLinks

CurView.GenerativeLinks.AddLink (strNewName)

CurView.LockStatus = True

 

Next

drawingDocument1.SaveAs DrawPathOut & strNewName

drawingDocument1.Close

 

CATIA.DisplayFileAlerts = True

End Function

************************************************************

 

Le problème est que je n'arrive pas après avoir ouvers le bon fichier 3D, récupérer l'info que je dois passer au draw.

Je n'arrive pas non plus à afficher en avant plant le draw (rappel, la fonction ouvre un draw puis cherche le doc. 3d qui a servi à faire ce draw puis l'ouvre puis revien sur le draw et met à jour les liens)

 

Enfin, je n'arrive pas à faire un addView, faut-il faire impérativement un RemoveAllLinks avant?

 

Quelqu'un peut-il m'aider?

 

Merci à vous.

Cordialement,

CATIADEV (ex. CATDEV)[Edité le 22/11/2006 par CATIADEV][Edité le 22/11/2006 par CATIADEV]

 

[Edité le 22/11/2006 par CATIADEV]

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é