MEP Nom de fonction 3D

Bonjour,
quelqu’un sait-il comment afficher sous forme de note dans une mise en plan le nom d’une fonction ou sa description, ici en l’occurrence une fonction de bibliothèque

Merci



CAPTURE 000460

Bonjour,

À ma connaissance, impossible actuellement de récupérer le nom d’une fonction.
Plusieurs solutions de contournement :

  1. bulle avec bibliothèque de repérage

  2. Note de bibliothèque

  3. Un combi de 1+2 (enregistrer une note en bibliothèque avec la bibliothèque de repérage définie, quitte à supprimer les repères non existant dans la pièce)

  4. Macro (sous réserve de possibilité - mais y en a des tout forts parmi les membres du forum qui vont certainement pouvoir se prononcer sur ce point.)

1 « J'aime »

Peut-être en adaptant ce code depuis une MEP:

3 « J'aime »

Salut,

Je n’ai pas eu l’occasion de tester, mais j’ai l’impression que ca se rapproche pas mal de ton besoin non ?

Comment lier des notes à des propriétés personnalisées dans SOLIDWORKS ? (javelin-tech.com)

En réponse à coin37coin
le problème de cet approche c’est que dans chaque pièce fabriqué il faut ajouter des propriétés, c’est inadapté dans mon cas

il faudrait pouvoir ajouter les propriétés dans les fonctions de bibliothèque et les appeler, je ne trouve pas comment faire dans la MEP
sachant que les propriétés serait toutes les mêmes mais 1 dans chaque pièce
cela permettrait d’afficher la qte et la description

pour le moment et à défaut je cherche a adapter la macro
dans la mep au lieu de sélectionner dans l’arborescence la fonction à la sélectionner dans le plan et à remettre le code sans fonction à part, une seul macro

Sub main()
'https://www.codestack.net/solidworks-api/document/features-manager/get-feature-type-name/
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim Fonction As String
Dim myNote As Object

Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc


If swModel.GetType <> 3 Then Exit Sub '1 = pièce, 2 = assemblage, 3 = plan
Fonction = GetTypeNames(swModel.SelectionManager)
Debug.Print Fonction
Set myNote = swModel.InsertNote("$PRPWLD:""QUANTITY""x" & Fonction)

End Sub

Function GetTypeNames(selMgr As SldWorks.SelectionMgr) As String
Dim typeNames As String
Dim i As Integer

For i = 1 To selMgr.GetSelectedObjectCount2(-1)
On Error Resume Next
Dim swFeat As SldWorks.Feature
Set swFeat = selMgr.GetSelectedObject6(i, -1)

If Not swFeat Is Nothing Then
'typeNames = typeNames & vbLf & swFeat.Name & ": " & swFeat.GetTypeName() & "; " & swFeat.GetTypeName2
typeNames = swFeat.Name
End If

Next
GetTypeNames = typeNames
End Function

Cette vidéo peut probablement te donner le début comment récupérer une fonction depuis une note (ici c’est pas le nom de la fonction mais le chemin pour istoolbox):

Il me semblait avoir compris que ta fonction est une pièce de bibliothèque intégrée dans ton 3D.
Or justement, ils t’expliquent comment ajouter des propriétés à ta pièce de bilbiothèque puis comment les rappeler via un call-out dans ta MEP.

Du coup, ca me semblait être tout indiqué pour ton usage. Mais peut-être suis-je passer à côté d’un points

1 « J'aime »

j’ai essayé ca ne fonctionne pas chez moi, j’ai mis une propriété perso dans la fonction de bibliothèque, j’ai inséré la pièce de bibliothèque dans une pièce, dans une mep pièce impossible mettre une note avec le nom de la propriété

Il s’agit d’une fonction d’emboutissage :

b7cb9801b0f26fbf8e2dff444b59cbcbf032e1c9_2_229x499

donc peut-être voir du côté des ID de poinçonnage…

1 « J'aime »

@Silver_Surfer n’utilisant pas (ou plus) de poinçon je ne connaissais pas cette astuce d’id pour une table de poinçonnage.
Merci pour l’astuce!.
https://help.solidworks.com/2021/french/SolidWorks/sldworks/c_Punch_Tables.htm

2 « J'aime »

je veux obtenir le nom de la fonction peux importe si c’est de l’emboutissage ou une fonction personalisée

Essayez d’ajouter un ID de poinçonnage à l’outil de forme, puis appeler la propriété ID poinçonnage dans la note. Ca devrait marcher.

Pour ce qui est des fonctions de bibliothèque custom (Gravure N° visible dans l’arbre de construction), le lien proposer par @coin37coin peut fonctionner à condition que la fonction utilise des propriétés présente quelque soit le fichier.

Sinon c’est la macro : je chercherai a faire une macro qui, à partir de la sélection d’une fonction dans l’arbre de la mise en plan, créé une note à poser sur la vue/élément.

Mais selon moi, créer une note prédéfinie ans le même dossier que les fonctions de bibliothèque reste la meilleure solution en terme d’efficacité (et de simplicité).

Les fonctions de bibliothèque ci-dessous peuvent également apporter des éléments de réponse :

Écrou à souder hexagonal.SLDLFP (630,6 Ko)
Filet rapporté HELICOIL®.SLDLFP (2,6 Mo)
TUBTARA®.SLDLFP (944,0 Ko)

Chacun nécessite un point de réf (point dans une esquisse).
Le choix a été fait d’intégrer la géométrie de l’élément directement dans la fonction, et de préférer intégrer la description complète de l’élément dans le texte de la représentation de filetage.
Ainsi, en cotant la représentation de filetage, l’élément est identifié.
Pour la tôlerie, 2 répétitions par esquisse sont nécessaire afin d’obtenir un déplié sans l’écrou ou le tubtara®.

1 « J'aime »

si je comprends bien ça ne fonctionne que si il y a un taraudage ou filetage avec la propriété dans représentation de filetage, texte associé, et tu ne peux pas compter le nombre d’occurrences

l’avantage c’est que c’est plus simple de positionner les éléments qu’avec insertion pièce

le truc c’est qu’ici les inserts sont mis avec insertion pièce et le trou a part avec une fonction de bibliothèque

je cherche ici le moyen de faire apparaitre une note avec le nom de la fonction dedans

pour le moment j’ai cette macro
-il manque le fait de sélectionner la fonction depuis une vue pièce pour que la note y soit rattachée
-la quantité de fonction du même type utilisée

Sub Fonction()
'MEP : Copie le nom de la fonction dans une note
'01 : Sélectionner une fonction dans l'arborescence pièce
'02 : La macro va créer une note avec le nom de la fonction

Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swSel As SldWorks.SelectionMgr
Dim swFeat As SldWorks.Feature
Dim Note As Object

Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
Set swSel = swModel.SelectionManager

If swModel.GetType <> 3 Then Exit Sub '1 = pièce, 2 = assemblage, 3 = plan
If swSel.GetSelectedObjectCount2(-1) <> 1 Then Exit Sub

Set swFeat = swSel.GetSelectedObject6(1, -1)

If Not swFeat Is Nothing Then
'Set Note = swModel.InsertNote("$PRPWLD:""QUANTITY""x" & swFeat.Name)
Set Note = swModel.InsertNote(swFeat.Name)
End If

End Sub

Pourquoi ne pas ajouter une propriété au niveau des corps de pièces ?
Pour la fonction de poinçonnage je ne vois pas d’autre moyen que l’utilisation de l’ID de poinçonnage.

Par contre, comme vous utilisez l’insertion de pièce, vous pouvez récupérer facilement les propriétés :
Dans le fichier de pièce inséré, créer la propriété par exemple « Nom ».
Au moment de l’insertion, dans les options de transfert, sélectionner Propriétés personnalisées et Prop. pièces soud. comme ci-dessous.
image
Enregistré une note dans votre bibliothèque qui contient : $PRPWLD:« Nom ».

Reste plus qu’à la poser en l’attachant au corps de pièce.
De cette façon également, votre liste de pièce soudée se complètera automatiquement.

Astuce pour les pièces existante (avec les pièces déjà insérées) :
Activer la construction soudée.
Clique droit sur l’icône, sélectionnez propriétés.
image

Les propriétés créées dans cette fenêtre vont être créées automatiquement pour tous les corps de pièces soudés

Ensuite, clic droit sur un dossier / élément de la liste des pièces soudées > propriétés > Résumé des propriétés, sélectionnez la prop. qui va bien et remplissez les valeurs.

Si on prend l’exemple de la description pour les tubtara :

…avec une note $PRPWLD:« DESCRIPTION », on obtient :

Autre point : dans les options - propriété de document - assurez vous que l’option « collecter les corps identiques » soit activée.

tout fonctionne bien pour l’insertion de pièce dans une autre pièce le problème vient de l’insertion de pièce de bibliothèque, les propriétés pièces sont présentes mais impossible a afficher dans un plan

Tu es sur que ton annotation est bien fixée sur la pièce de bibliothèque et non sur la pièce finale ?
Parceque tu devrais pouvoir faire ton callout avec « composant auquel est attachée l’annotation »