Programmation sous V7
Modérateurs : remi77, D@vid, Alexis GERARD
-
- Caporal
- Messages : 26
- Enregistré le : 18 mars 2014, 15:07
- Version TopSolid : 6.24
- Module TopSolid : TopSolid'Design
Programmation sous V7
Bonjour,
Je cherche a automatiser certaines manipulations et n étant pas programmeur de métier je aimerais savoir si des exemples de programmes en C ou VB sont disponibles pour TS V7?
Le but de mes réalisations seraient principalement de la recherche de fichier, copie, export et remplir des excel.
Je ne sais pas trop le niveau de connaissances nécessaire pour réaliser de tels applications donc si qqu a plus d informations je suis preneur!
PS: j ai déjà réaliser des petits programme en C pour faire fonctionner des robots et des programmes en VBA pour comparer des fichiers Excel, est-il nécessaire d avoir des connaissances bien plus importantes en programmation pour se lancer avec TS?
Merci d avance,
Steve
Je cherche a automatiser certaines manipulations et n étant pas programmeur de métier je aimerais savoir si des exemples de programmes en C ou VB sont disponibles pour TS V7?
Le but de mes réalisations seraient principalement de la recherche de fichier, copie, export et remplir des excel.
Je ne sais pas trop le niveau de connaissances nécessaire pour réaliser de tels applications donc si qqu a plus d informations je suis preneur!
PS: j ai déjà réaliser des petits programme en C pour faire fonctionner des robots et des programmes en VBA pour comparer des fichiers Excel, est-il nécessaire d avoir des connaissances bien plus importantes en programmation pour se lancer avec TS?
Merci d avance,
Steve
- JuP
- Général de brigade
- Messages : 6900
- Enregistré le : 18 févr. 2013, 10:26
- Version TopSolid : 7.17
- Module TopSolid : TopSolid'Steel
- Localisation : Lyon (France)
Re: Programmation sous V7
Bonjour Steve,
Je peux t'en parler j'ai fait le pas il n'y a pas si longtemps que ça ! Donc en langage tu as deux choix : VB.NET ou C#.
Tu as une documentation dans l'aide (Point d'interrogation --> Automation)(il faut peut être ajouter l'argument -a dans le raccourcie), il y a quelques trucs à connaitre sur les connexions au pdm et à TopSolid sinon le reste c'est assez conventionnel.
Si des méthodes manquent dans Automation, tu peux faire des demandes d'évolutions. Si elles sont acceptées il n'y a pas besoin d'attendre la version d'après, généralement elles sont glissées dans des services pack
Et enfin, Missler dispensent des formations à Automation.
Bonne programmation
Je peux t'en parler j'ai fait le pas il n'y a pas si longtemps que ça ! Donc en langage tu as deux choix : VB.NET ou C#.
Tu as une documentation dans l'aide (Point d'interrogation --> Automation)(il faut peut être ajouter l'argument -a dans le raccourcie), il y a quelques trucs à connaitre sur les connexions au pdm et à TopSolid sinon le reste c'est assez conventionnel.
Si des méthodes manquent dans Automation, tu peux faire des demandes d'évolutions. Si elles sont acceptées il n'y a pas besoin d'attendre la version d'après, généralement elles sont glissées dans des services pack
Et enfin, Missler dispensent des formations à Automation.
Bonne programmation
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 : 6900
- Enregistré le : 18 févr. 2013, 10:26
- Version TopSolid : 7.17
- Module TopSolid : TopSolid'Steel
- Localisation : Lyon (France)
Re: Programmation sous V7
Voila quelques procédures de dialogue avec TopSolid. J'ai tout encapsulé dans un module sous forme de fonctions que j'appelle au besoin :
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
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 : 6900
- Enregistré le : 18 févr. 2013, 10:26
- Version TopSolid : 7.17
- Module TopSolid : TopSolid'Steel
- Localisation : Lyon (France)
Re: Programmation sous V7
Voila un exemple qui fait du copier / coller de paramètres:
Code : Tout sélectionner
Public Class Accueil
Public DocId As DocumentId
Public ObjectId As PdmObjectId
Public DocName As String
Public ObjectType As String = ""
Public ListOfParametersID As New List(Of ElementId) 'Liste de tous les paramètres hors paramètres systèmes
Public ListOfCheckedParameters As New List(Of Parameter) 'Liste de tous les paramètres coché hors paramètres systèmes
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
'Connection à TS + récupération du DocumentId
DocId = Connection2TS()
DocId = StartModification(DocId, "Copie paramètres" + Name, False)
Try
'Récupération le l'ObjectId du document
ObjectId = TopSolidHost.Documents.GetPdmObject(DocId)
'Récupération du nom du document
DocName = TopSolidHost.Documents.GetName(DocId)
TextBoxDocumentName.Text = DocName
'Récupération du type de document
TopSolidHost.Pdm.GetType(ObjectId, ObjectType)
'Vérification du type de document
VerificationDocumentType(ObjectType)
'Vérification si le document est une dérivation
Dim test As Boolean = TopSolidDesignHost.Parts.IsDerivedPart(DocId)
If test Then
MsgBox("La pièce est une dérivation")
'EndModification(False, False)
'Exit Sub
End If
'Analyse des paramètres existants
Dim ListOfExistingParametersId As List(Of ElementId) 'Liste de tous les paramètres du document
ListOfExistingParametersId = TopSolidHost.Parameters.GetParameters(DocId) 'Récupération de tous les paramètres
For Each ParameterId In ListOfExistingParametersId
Dim ParameterName As String = TopSolidHost.Elements.GetName(ParameterId)
Dim ParameterType As String = TopSolidHost.Parameters.GetParameterType(ParameterId)
If ParameterName.Contains("$") Then
Else
Dim ParameterFriendlyName As String = TopSolidHost.Elements.GetFriendlyName(ParameterId)
CheckedListBoxExistingParameters.Items.Add(ParameterFriendlyName) 'Implémentation de la CheckListBox
ListOfParametersID.Add(ParameterId) 'Stockage de l'ID du paramètre
End If
Next
EndModification(True, True)
Catch ex As Exception
EndModification(False, False)
MsgBox("Erreur lors de l'exécution du programme")
End Try
End Sub
Private Sub VerificationDocumentType(ByVal ObjectType As String)
Select Case ObjectType
Case ".TopPrt"
Case ".TopAsm"
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 ButtonCopy_Click(sender As Object, e As EventArgs) Handles ButtonCopy.Click
'Copie des paramètres sélectionnés
For Each indexChecked In CheckedListBoxExistingParameters.CheckedItems
Dim CurrentParameterChecked As New Parameter
CurrentParameterChecked.Id = TopSolidHost.Elements.SearchByName(DocId, indexChecked)
CurrentParameterChecked.Name = TopSolidHost.Elements.GetName(CurrentParameterChecked.Id)
CurrentParameterChecked.Description = TopSolidHost.Elements.GetDescription(CurrentParameterChecked.Id)
CurrentParameterChecked.Type = TopSolidHost.Parameters.GetParameterType(CurrentParameterChecked.Id)
Select Case CurrentParameterChecked.Type
Case 1 'Real
CurrentParameterChecked.Value = TopSolidHost.Parameters.GetRealValue(CurrentParameterChecked.Id).ToString
TopSolidHost.Parameters.GetRealUnit(CurrentParameterChecked.Id, CurrentParameterChecked.RealUnitType, CurrentParameterChecked.RealUnitSymbol)
Case 2 'Integer
CurrentParameterChecked.Value = TopSolidHost.Parameters.GetIntegerValue(CurrentParameterChecked.Id).ToString
Case 3 'Boolean
CurrentParameterChecked.Value = TopSolidHost.Parameters.GetBooleanValue(CurrentParameterChecked.Id).ToString
Case 4 'Text
CurrentParameterChecked.Value = TopSolidHost.Parameters.GetTextValue(CurrentParameterChecked.Id).ToString
Case 5 'DateTime
MessageBox.Show("Les paramètres de type date ne sont pas gérés")
Continue For
Case 6 'Family
MessageBox.Show("Les paramètres de type famille ne sont pas gérés")
Continue For
Case 7 'Code
MessageBox.Show("Les paramètres de type code ne sont pas gérés")
Continue For
Case 8 'Enumeration
MessageBox.Show("Les paramètres de type énumération ne sont pas gérés")
Continue For
Case 9 'UserEnumeration
MessageBox.Show("Les paramètres de type énumération utilisateur ne sont pas gérés")
Continue For
End Select
ListOfCheckedParameters.Add(CurrentParameterChecked)
Next
ButtonCopy.Enabled = False
CheckedListBoxExistingParameters.Enabled = False
ButtonPaste.Enabled = True
End Sub
Private Sub ButtonPaste_Click(sender As Object, e As EventArgs) Handles ButtonPaste.Click
'Connection à TS + récupération du DocumentId
DocId = Connection2TS()
DocId = StartModification(DocId, "Coller paramètres" + Name, False)
Try
For Each IndexParameters In ListOfCheckedParameters
Dim CreatedParameterId As ElementId
Select Case IndexParameters.Type
Case 1 'Real
Dim SmartRealValue As SmartReal = New SmartReal(UnitType.Length, "")
'TopSolidHost.Parameters.GetSmartRealParameterCreation(IndexParameters.Id, SmartRealValue)
'CreatedParameterId = TopSolidHost.Parameters.CreateSmartRealParameter(DocId, SmartRealValue)
CreatedParameterId = TopSolidHost.Parameters.CreateRealParameter(DocId, IndexParameters.RealUnitType, IndexParameters.Value)
Case 2 'Integer
CreatedParameterId = TopSolidHost.Parameters.CreateIntegerParameter(DocId, IndexParameters.Value)
Case 3 'Boolean
CreatedParameterId = TopSolidHost.Parameters.CreateBooleanParameter(DocId, IndexParameters.Value)
Case 4 'Text
CreatedParameterId = TopSolidHost.Parameters.CreateTextParameter(DocId, IndexParameters.Value.ToString)
End Select
Dim CopiedExistingParameter As ElementId
CopiedExistingParameter = TopSolidHost.Elements.SearchByName(DocId, IndexParameters.Name + " - Copie")
If CopiedExistingParameter.IsEmpty = False Then
MsgBox("Impossible de nommer le paramètre collé car ce paramètre a déjà été collé et n'a pas été renommé")
Exit For
End If
TopSolidHost.Elements.SetName(CreatedParameterId, IndexParameters.Name + " - Copie")
TopSolidHost.Elements.SetDescription(CreatedParameterId, IndexParameters.Description)
Next
EndModification(True, True)
Me.Close()
Catch ex As Exception
EndModification(False, False)
MsgBox("Erreur lors de l'exécution du programme")
End Try
End Sub
End Class
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
-
- Caporal
- Messages : 26
- Enregistré le : 18 mars 2014, 15:07
- Version TopSolid : 6.24
- Module TopSolid : TopSolid'Design
Re: Programmation sous V7
Super! merci beaucoup pour votre aide, je vais regarder tout ca en details
Steve
Steve
- JuP
- Général de brigade
- Messages : 6900
- Enregistré le : 18 févr. 2013, 10:26
- Version TopSolid : 7.17
- Module TopSolid : TopSolid'Steel
- Localisation : Lyon (France)
Re: Programmation sous V7
de rien, hésite pas si tu as des questions, c'est un sujet sympa
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
- Messages : 26
- Enregistré le : 18 mars 2014, 15:07
- Version TopSolid : 6.24
- Module TopSolid : TopSolid'Design
Re: Programmation sous V7
Bon alors enfait j ai un gros probleme...
J ai écris le code en pièce jointe comme dans le guide de l automation et je l ai lance juste pour voir si je n avais pas de problème pour le moment.
Seulement apres ca impossible d utiliser Topsolid, j ai le message d erreur suivant "Index was outside the bounds of the array" des que je fais une modification sur un assemblage.
Merci d avance pour votre aide,
Steve
J ai écris le code en pièce jointe comme dans le guide de l automation et je l ai lance juste pour voir si je n avais pas de problème pour le moment.
Seulement apres ca impossible d utiliser Topsolid, j ai le message d erreur suivant "Index was outside the bounds of the array" des que je fais une modification sur un assemblage.
Merci d avance pour votre aide,
Steve
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
- JuP
- Général de brigade
- Messages : 6900
- Enregistré le : 18 févr. 2013, 10:26
- Version TopSolid : 7.17
- Module TopSolid : TopSolid'Steel
- Localisation : Lyon (France)
Re: Programmation sous V7
J'ai pas testé mais t'as pas un point d'exclamation qui apparaît en haut à droite de TopSolid? Le programme se déroule sans problème? T'es en pdm serveur ou local?
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
- Messages : 26
- Enregistré le : 18 mars 2014, 15:07
- Version TopSolid : 6.24
- Module TopSolid : TopSolid'Design
Re: Programmation sous V7
Je suis en PDM local. Oui le programme se déroule sans problème.
Merci,
Steve
Merci,
Steve
-
- Caporal
- Messages : 26
- Enregistré le : 18 mars 2014, 15:07
- Version TopSolid : 6.24
- Module TopSolid : TopSolid'Design
Re: Programmation sous V7
J ai trouve!
Le problème ne vient pas du code mais de l installation de Visual studio 2015! Il installe Microsoft SQL 2014 en méme temps et apurement Topsolid n aime pas ca!
J ai juste désinstalle Microsoft SQL 2014 et le problème semble réglé.
Steve
Le problème ne vient pas du code mais de l installation de Visual studio 2015! Il installe Microsoft SQL 2014 en méme temps et apurement Topsolid n aime pas ca!
J ai juste désinstalle Microsoft SQL 2014 et le problème semble réglé.
Steve
- JuP
- Général de brigade
- Messages : 6900
- Enregistré le : 18 févr. 2013, 10:26
- Version TopSolid : 7.17
- Module TopSolid : TopSolid'Steel
- Localisation : Lyon (France)
Re: Programmation sous V7
Ah bon à savoir ! merci pour ton retour
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