Excel
Modérateurs : remi77, D@vid, Alexis GERARD
-
- Caporal-chef
- Messages : 36
- Enregistré le : 16 juin 2016, 21:54
- Version TopSolid : 7.5
- Module TopSolid : TopSolid'Cam
- Localisation : Toulouse
Excel
Est-ce que quelqu'un aurait un bout de code vba ou c# qui exporte des informations de topsolid (genre vitesse de coupe, machine utilisé dans un cam) dans un fichiers excel choisi ou crée. un bout de code aussi pour sélectionner un fichier ,avec le pdm, dans l’arborescence d'un projet.
D'avance merci cela m'aiderait bien pour commencer à coder et à comprendre le manuel d'automation qui manque cruellement d'exemples c'est dommage.
belgarath31
D'avance merci cela m'aiderait bien pour commencer à coder et à comprendre le manuel d'automation qui manque cruellement d'exemples c'est dommage.
belgarath31
- JuP
- Général de brigade
- Messages : 6897
- Enregistré le : 18 févr. 2013, 10:26
- Version TopSolid : 7.17
- Module TopSolid : TopSolid'Steel
- Localisation : Lyon (France)
Re: Excel
Bonjour,
Je ne peux pas trop d'aider pour le cam mais si tu comprends la philosophie de l'API tu trouveras vite ton bonheur.
Tu veux le sélectionner comment ton fichier dans le PDM?
Je ne peux pas trop d'aider pour le cam mais si tu comprends la philosophie de l'API tu trouveras vite ton bonheur.
Tu veux le sélectionner comment ton fichier dans le PDM?
Julien POIROT
Responsable produit TopSolid'Steel
Youtube (tuto etc)
GrabCad
Groupe Facebook TopSolid'Steel
Postez ici vos idées!:
TopSolid'Steel
TopSolid'Design
Responsable produit TopSolid'Steel
Youtube (tuto etc)
GrabCad
Groupe Facebook TopSolid'Steel
Postez ici vos idées!:
TopSolid'Steel
TopSolid'Design
-
- Caporal-chef
- Messages : 36
- Enregistré le : 16 juin 2016, 21:54
- Version TopSolid : 7.5
- Module TopSolid : TopSolid'Cam
- Localisation : Toulouse
Re: Excel
c'est justement la où le bas blesse, j'aimerais avoir un exemple pour saisir la philosophie de l'api.
Même si c'est pas pour un fichier cam, mais par exemple récupérer la matière ou l'auteur dans une mise en plan.
Merci
Même si c'est pas pour un fichier cam, mais par exemple récupérer la matière ou l'auteur dans une mise en plan.
Merci
- JuP
- Général de brigade
- Messages : 6897
- Enregistré le : 18 févr. 2013, 10:26
- Version TopSolid : 7.17
- Module TopSolid : TopSolid'Steel
- Localisation : Lyon (France)
Re: Excel
J'ai mis d'autre morceaux de code un peu partout, en voici quelques uns qui pourraient t’intéresser.
Voici la base, pour se connecter à TopSolid, à mettre dans un module:
Pour lancer la procédure de connexion:
Pour récupérer quelques info projet, pièce etc:
Voici la base, pour se connecter à TopSolid, à mettre dans un module:
Code : Tout sélectionner
Module ProcéduresTS
Public docId As DocumentId
Public Function Connection2TS() 'Connection à TopSolid
TopSolidHost.Connect() 'Connection à TopSolid
TopSolidDesignHost.Connect() 'Connection à TopSolid
docId = TopSolidHost.Documents.EditedDocument 'Récupération ID document
Dim TSConnected As Boolean = TopSolidDesignHost.IsConnected
If TSConnected = False Then MsgBox("Non connecté")
Return docId
End Function
Code : Tout sélectionner
'Connection à TS + récupération du DocumentId
Try
Dim DocId As DocumentId
ProgressBarDoubleForm.Label2.Text = "Connection à TopSolid"
TopSolidHost.Connect() 'Connection à TopSolid
TopSolidDesignHost.Connect() 'Connection à TopSolid
DocId = Connection2TS()
Catch
MsgBox("Erreur de connection à TopSolid, vérifier qu'un document est actif")
Exit Function
End Try
Code : Tout sélectionner
Dim ObjectId As PdmObjectId
ObjectId = TopSolidHost.Documents.GetPdmObject(DocId)
'Récupération du nom du document
NomDoc = TopSolidHost.Documents.GetName(DocId)
'TextBoxDocumentName.Text = NomDoc
'Récupération projet actif
Dim ActiveProjectID As PdmObjectId
ActiveProjectID = TopSolidHost.Pdm.GetProject(ObjectId)
'Récupération nom projet
Dim ActiveProjectName As String
ActiveProjectName = TopSolidHost.Pdm.GetName(ActiveProjectID)
Julien POIROT
Responsable produit TopSolid'Steel
Youtube (tuto etc)
GrabCad
Groupe Facebook TopSolid'Steel
Postez ici vos idées!:
TopSolid'Steel
TopSolid'Design
Responsable produit TopSolid'Steel
Youtube (tuto etc)
GrabCad
Groupe Facebook TopSolid'Steel
Postez ici vos idées!:
TopSolid'Steel
TopSolid'Design
- JuP
- Général de brigade
- Messages : 6897
- Enregistré le : 18 févr. 2013, 10:26
- Version TopSolid : 7.17
- Module TopSolid : TopSolid'Steel
- Localisation : Lyon (France)
Re: Excel
Un exemple de macro pour afficher la mise en plan d'un assemblage ou d'une pièce:
A mettre dans un module:
A mettre dans ta form:
A mettre dans un module:
Code : Tout sélectionner
Module ProcéduresTS
Public docId As DocumentId
Public Function Connection2TS() 'Connection à TopSolid
TopSolidHost.Connect() 'Connection à TopSolid
TopSolidDesignHost.Connect() 'Connection à TopSolid
docId = TopSolidHost.Documents.EditedDocument 'Récupération ID document
Dim TSConnected As Boolean = TopSolidDesignHost.IsConnected
If TSConnected = False Then MsgBox("Non connecté")
Return docId
End Function
Public Sub Deconnection2TS() 'Deconnection à TopSolid
TopSolidDesignHost.Disconnect()
TopSolidHost.Disconnect()
Dim TSConnected As Boolean = TopSolidDesignHost.IsConnected
If TSConnected = True Then MsgBox("Déconnection Impossible")
End Sub
Public Function StartModification(ByRef DocId As DocumentId, ByVal ModificationName As String, ByVal ActivRollBack As Boolean) 'StartModification + EnsureIsDirty
TopSolidHost.Application.StartModification(ModificationName, ActivRollBack)
TopSolidHost.Documents.EnsureIsDirty(DocId)
Return (DocId)
End Function
Public Sub EndModification(ByVal Alert As Boolean, ByRef Save As Boolean)
TopSolidHost.Application.EndModification(Alert, Save)
End Sub
End Module
Code : Tout sélectionner
Public Class Accueil
Public ActiveDocumentDocId As DocumentId
Public ActiveDocumentObjId As PdmObjectId
Public ActiveDocumentName As String
Public ActiveDocumentType As String = ""
Public Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
'Connection à TS + récupération du DocumentId
ActiveDocumentDocId = Connection2TS()
Try
'Récupération le l'ObjectId du document
ActiveDocumentObjId = TopSolidHost.Documents.GetPdmObject(ActiveDocumentDocId)
'Récupération du nom du document
ActiveDocumentName = TopSolidHost.Documents.GetName(docId)
TextBoxDocumentName.Text = ActiveDocumentName
'Récupération du type de document
TopSolidHost.Pdm.GetType(ActiveDocumentObjId, ActiveDocumentType)
'Vérification du type de document
VerificationDocumentType(ActiveDocumentType)
'Récupération du projet
Dim ActiveProjectObjId As PdmObjectId
ActiveProjectObjId = TopSolidHost.Pdm.GetProject(ActiveDocumentObjId)
'Récupération révision majeur
Dim ActiveDocumentLastMajorRevision As PdmMajorRevisionId
ActiveDocumentLastMajorRevision = TopSolidHost.Pdm.GetLastMajorRevision(ActiveDocumentObjId)
'Récupération révision mineur
Dim ActiveDocumentLastMinorRevision As PdmMinorRevisionId
ActiveDocumentLastMinorRevision = TopSolidHost.Pdm.GetLastMinorRevision(ActiveDocumentLastMajorRevision)
'Recherche des cas d'emploi
Dim BackReferencesMinorRevisionList As New List(Of PdmMinorRevisionId)
'BackReferencesMinorRevisionList = TopSolidHost.Pdm.SearchMinorRevisionBackReferences(ActiveProjectObjId, ActiveDocumentLastMinorRevision)
BackReferencesMinorRevisionList = TopSolidHost.Pdm.SearchMajorRevisionBackReferences(ActiveProjectObjId, ActiveDocumentLastMajorRevision)
'Recherche Mise en plan
Dim DraftObjId As PdmObjectId
For Each BackReferenceMinorRevision In BackReferencesMinorRevisionList
'Récupération Révision majeur
Dim BackReferenceMajorRevision As PdmMajorRevisionId
BackReferenceMajorRevision = TopSolidHost.Pdm.GetMajorRevision(BackReferenceMinorRevision)
'Récupération Object Id
Dim BackReferenceObjId As PdmObjectId
BackReferenceObjId = TopSolidHost.Pdm.GetPdmObject(BackReferenceMajorRevision)
'Récupération du type de document
Dim BackReferenceType As String = ""
TopSolidHost.Pdm.GetType(BackReferenceObjId, BackReferenceType)
If BackReferenceType = ".TopDft" Then
DraftObjId = BackReferenceObjId
End If
Next
'Si pas de mise en plan
If DraftObjId.IsEmpty Then
MsgBox("Le document ne possède pas de mise en plan")
Me.Close()
Else
TopSolidHost.Documents.Open(TopSolidHost.Documents.GetDocument(DraftObjId))
End If
Me.Close()
Catch ex As Exception
MsgBox("Erreur lor de l'exécution du programme" + vbNewLine + ex.Message)
Me.Close()
End Try
End Sub
Private Sub VerificationDocumentType(ByVal ObjectType As String)
Select Case ObjectType
Case ".TopPrt"
TextBoxDocumentType.Text = "Pièce"
Case ".TopAsm"
TextBoxDocumentType.Text = "Assemblage"
Case Else
MsgBox("Le document n'est ni une Pièce ni Assemblage, Merci d'ouvrir un document valide et de relancer la fonction")
Me.Close()
Return
End Select
End Sub
Private Sub Accueil_Activated(sender As Object, e As EventArgs) Handles MyBase.Activated
End Sub
End Class
Julien POIROT
Responsable produit TopSolid'Steel
Youtube (tuto etc)
GrabCad
Groupe Facebook TopSolid'Steel
Postez ici vos idées!:
TopSolid'Steel
TopSolid'Design
Responsable produit TopSolid'Steel
Youtube (tuto etc)
GrabCad
Groupe Facebook TopSolid'Steel
Postez ici vos idées!:
TopSolid'Steel
TopSolid'Design
- JuP
- Général de brigade
- Messages : 6897
- Enregistré le : 18 févr. 2013, 10:26
- Version TopSolid : 7.17
- Module TopSolid : TopSolid'Steel
- Localisation : Lyon (France)
Re: Excel
bon je ne suis pas développeur donc c'est loin d'être dans "les rêgles de l'art" mais ça a le mérite de parfaitement fonctionner
Julien POIROT
Responsable produit TopSolid'Steel
Youtube (tuto etc)
GrabCad
Groupe Facebook TopSolid'Steel
Postez ici vos idées!:
TopSolid'Steel
TopSolid'Design
Responsable produit TopSolid'Steel
Youtube (tuto etc)
GrabCad
Groupe Facebook TopSolid'Steel
Postez ici vos idées!:
TopSolid'Steel
TopSolid'Design
-
- Caporal-chef
- Messages : 36
- Enregistré le : 16 juin 2016, 21:54
- Version TopSolid : 7.5
- Module TopSolid : TopSolid'Cam
- Localisation : Toulouse
Re: Excel
Un grand merci, je teste et je te dis si cela fonctionne. en tout cas un grand merci encore.
- JuP
- Général de brigade
- Messages : 6897
- Enregistré le : 18 févr. 2013, 10:26
- Version TopSolid : 7.17
- Module TopSolid : TopSolid'Steel
- Localisation : Lyon (France)
Re: Excel
Bonjour Myklaylo,
En VBA ça m'étonnerait que ça marche mais on ne sait jamais.
Tu as besoin des DLL suivantes: Plus d'info dans l'aide de l'API: Dans les prochains mois on devrait publier un cours en e-learning sur l'utilisation de l'API.
@+
En VBA ça m'étonnerait que ça marche mais on ne sait jamais.
Tu as besoin des DLL suivantes: Plus d'info dans l'aide de l'API: Dans les prochains mois on devrait publier un cours en e-learning sur l'utilisation de l'API.
@+
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Julien POIROT
Responsable produit TopSolid'Steel
Youtube (tuto etc)
GrabCad
Groupe Facebook TopSolid'Steel
Postez ici vos idées!:
TopSolid'Steel
TopSolid'Design
Responsable produit TopSolid'Steel
Youtube (tuto etc)
GrabCad
Groupe Facebook TopSolid'Steel
Postez ici vos idées!:
TopSolid'Steel
TopSolid'Design