Paramètres Smart
Modérateurs : remi77, D@vid, Alexis GERARD
-
- Seconde Classe
- Messages : 7
- Enregistré le : 25 oct. 2016, 15:52
- Version TopSolid : 6.26
- Module TopSolid : TopSolid'Design
Paramètres Smart
Bonjour,
Je suis en train de programmer en vb.net avec l’aide de l’automation v7.10 .
Nous avons dans d’anciens projets des paramètres qui n’ont pas été créé en tant que propriété utilisateur au départ.
Vu qu’il n’est pas possible de transformer un paramètre réel en paramètre propriété utilisateur je souhaite créé une macro qui créé des nouveaux paramètres propriété utilisateur puis qui lie les anciens paramètres avec les nouvelles propriétés.
Pour cela, je souhaiterai assigner une formule à un paramètre réel existant et je n’y arrive pas.
Je ne comprends pas bien l’utilisation de l’objet smartreal et je ne trouve aucune documentation détaillée sur le sujet.
Voici le déroulement de mon programme
1. Je créé un paramètre réel Param2 lié à une propriété utilisateur avec « TopSolidHost.Parameters.CreateUserPropertyParameter »
2. J’assigne un nom à mon paramètre Param2 avec « TopSolidHost.Elements.SetName »
3. Je place mon paramètre Param2 dans un nouveau dossier avec « TopSolidHost.Entities.MoveEntity »
4. Ensuite je souhaiterai que la valeur de mon paramètre Param2 soit égale à la valeur de mon paramètre existant MonParam1 dont je connais l’ElementId.
J’ai essayé d’utiliser CreateSmartRealParameter et SetSmartRealParameterCreation sans succès.
Avez vous des idées de la démarche à suivre pour faire cela ?
Je suis en train de programmer en vb.net avec l’aide de l’automation v7.10 .
Nous avons dans d’anciens projets des paramètres qui n’ont pas été créé en tant que propriété utilisateur au départ.
Vu qu’il n’est pas possible de transformer un paramètre réel en paramètre propriété utilisateur je souhaite créé une macro qui créé des nouveaux paramètres propriété utilisateur puis qui lie les anciens paramètres avec les nouvelles propriétés.
Pour cela, je souhaiterai assigner une formule à un paramètre réel existant et je n’y arrive pas.
Je ne comprends pas bien l’utilisation de l’objet smartreal et je ne trouve aucune documentation détaillée sur le sujet.
Voici le déroulement de mon programme
1. Je créé un paramètre réel Param2 lié à une propriété utilisateur avec « TopSolidHost.Parameters.CreateUserPropertyParameter »
2. J’assigne un nom à mon paramètre Param2 avec « TopSolidHost.Elements.SetName »
3. Je place mon paramètre Param2 dans un nouveau dossier avec « TopSolidHost.Entities.MoveEntity »
4. Ensuite je souhaiterai que la valeur de mon paramètre Param2 soit égale à la valeur de mon paramètre existant MonParam1 dont je connais l’ElementId.
J’ai essayé d’utiliser CreateSmartRealParameter et SetSmartRealParameterCreation sans succès.
Avez vous des idées de la démarche à suivre pour faire cela ?
- 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: Paramètres Smart
Bonjour
Ah oui c'est pas le truc le plus simple ça, je les ai eu utilisé mais ça date un peu.
Avant de créer ton paramètre il faut créer le "smartReal", exemple:
Ensuite tu utilises ton smartReal dans la création de ton paramètre:
Tu finis par lui donner un nom:
Je sais pas si c'est la meilleur méthode mais en tout cas c'est la méthode qui a marché pour moi. Attention le smartreal tu l'implémentes avec du texte donc attention aux formules et casse...
Ah oui c'est pas le truc le plus simple ça, je les ai eu utilisé mais ça date un peu.
Avant de créer ton paramètre il faut créer le "smartReal", exemple:
Code : Tout sélectionner
Dim C_NombreDeMarchesFormula As SmartReal = New SmartReal(UnitType.Factor, "floor(Hauteur / HauteurDeMarche)")
Code : Tout sélectionner
Dim IdParamètreC_NombreDeMarches As ElementId = TopSolidHost.Parameters.CreateSmartRealParameter(docId, C_NombreDeMarchesFormula)
Code : Tout sélectionner
TopSolidHost.Elements.SetName(IdParamètreC_NombreDeMarches, "C_NombreDeMarches")
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
-
- Seconde Classe
- Messages : 7
- Enregistré le : 25 oct. 2016, 15:52
- Version TopSolid : 6.26
- Module TopSolid : TopSolid'Design
Re: Paramètres Smart
J'ai testé ces fonctions et j'arrive bien à créer un nouveau paramètre avec une formule.
Mais je ne vois pas comment l'appliquer pour assigner une formule à un paramètre pré-existant non smart comme on le fait simplement dans TopSolid.
En effet dans mon cas le paramètre à créer est une propriété utilisateur je ne peux donc pas le créer directement avec TopSolidHost.Parameters.CreateSmartRealParameter.
Mais je ne vois pas comment l'appliquer pour assigner une formule à un paramètre pré-existant non smart comme on le fait simplement dans TopSolid.
En effet dans mon cas le paramètre à créer est une propriété utilisateur je ne peux donc pas le créer directement avec TopSolidHost.Parameters.CreateSmartRealParameter.
- 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: Paramètres Smart
Si le paramètre existe, essaie ça:
Si c'est pour créer un paramètre utilisateur en partant de 0:
UserParameterSearching c'est une function que je me suis fait
Code : Tout sélectionner
TopSolidHost.Parameters.SetSmartRealParameterCreationUnitAuto
Code : Tout sélectionner
UserParameterNameToSearch = ParameterName
UserParametersId = UserParameterSearching(ObjectId, UserParameterNameToSearch)
UserParameterCreated = TopSolidHost.Parameters.CreateUserPropertyParameter(DocId, UserParametersId)
Code : Tout sélectionner
Private Function UserParameterSearching(ObjectId As PdmObjectId, ByRef UserParameterName As String)
Dim ListOfReferencedProject As List(Of PdmObjectId)
Dim ActiveProjectId As PdmObjectId
Dim ListOfPdmObjectId As New List(Of PdmObjectId)
Dim ListOfUserParametersId As New List(Of PdmObjectId)
Dim UserParametersId As DocumentId
ActiveProjectId = TopSolidHost.Pdm.GetProject(ObjectId) 'Récupération du projet du document actif
ListOfReferencedProject = TopSolidHost.Pdm.GetReferencedProjects(ActiveProjectId) 'Création de la liste des projets référencé
For Each ReferencedProject As PdmObjectId In ListOfReferencedProject 'Pour chaque projet référencé
If TopSolidHost.Pdm.SearchDocumentByName(ReferencedProject, UserParameterName).Count > 0 Then
ListOfPdmObjectId = TopSolidHost.Pdm.SearchDocumentByName(ReferencedProject, UserParameterName) 'Récupération de la liste des documents trouvés
End If
Next
Dim UserParametersType As String = ""
For i = 0 To ListOfPdmObjectId.Count - 1 'Pour chaque élément de la liste des documents trouvés
TopSolidHost.Pdm.GetType(ListOfPdmObjectId(i), UserParametersType) 'Récupération du type de document
If UserParametersType = ".TopPrd" Then 'Si le document est une propriété utilisateur
ListOfUserParametersId.Add(ListOfPdmObjectId(i)) 'Ajout de la propriété à la liste
End If
Next
'V5.8.0
If ListOfUserParametersId.Count = 0 Then
If TopSolidHost.Pdm.SearchDocumentByName(ActiveProjectId, UserParameterName).Count > 0 Then
ListOfPdmObjectId = TopSolidHost.Pdm.SearchDocumentByName(ActiveProjectId, UserParameterName) 'Récupération de la liste des documents trouvés
End If
For i = 0 To ListOfPdmObjectId.Count - 1 'Pour chaque élément de la liste des documents trouvés
TopSolidHost.Pdm.GetType(ListOfPdmObjectId(i), UserParametersType) 'Récupération du type de document
If UserParametersType = ".TopPrd" Then 'Si le document est une propriété utilisateur
ListOfUserParametersId.Add(ListOfPdmObjectId(i)) 'Ajout de la propriété à la liste
End If
Next
End If
If ListOfUserParametersId.Count = 0 Then
MsgBox("Aucun paramètre " + UserParameterName + " trouvé dans les références")
Return UserParametersId
Else
UserParametersId = TopSolidHost.Documents.GetDocument(ListOfUserParametersId(0))
End If
Return UserParametersId
End Function
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
-
- Seconde Classe
- Messages : 7
- Enregistré le : 25 oct. 2016, 15:52
- Version TopSolid : 6.26
- Module TopSolid : TopSolid'Design
Re: Paramètres Smart
Je viens d'essayer :
Ces fonctions marchent bien pour modifier un smart paramètre existant avec le code ci-dessous :
Mais je n'arrive pas à les utiliser pour transformer un paramètre classique en paramètre smart et donc lui ajouter une opération de création.
Code : Tout sélectionner
TopSolidHost.Parameters.SetSmartRealParameterCreationUnitAuto
et TopSolidHost.Parameters.SetSmartRealParameterCreation
Code : Tout sélectionner
Dim Monsmartelt As ElementId = TopSolidHost.Parameters.CreateSmartRealParameter(Mondoc, New SmartReal(Paramnonlie))
Dim MesOpes As List(Of ElementId) = TopSolidHost.Operations.GetOperations(Mondoc)
Dim OpeCreationSmart As New ElementId
For Each MonOpe As ElementId In MesOpes
If TopSolidHost.Operations.GetChildren(MonOpe).Count = 1 Then
If TopSolidHost.Operations.GetChild(MonOpe) = Monsmartelt Then
OpeCreationSmart = MonOpe
Exit For
End If
End If
Next
TopSolidHost.Parameters.SetSmartRealParameterCreation(OpeCreationSmart, New SmartReal(UnitType.Length, 10))
Mais je n'arrive pas à les utiliser pour transformer un paramètre classique en paramètre smart et donc lui ajouter une opération de création.
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
- 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: Paramètres Smart
arf je sèche, tu peux demander au support TopSolid, ça se trouve c'est peut être pas possible :-/
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