Demension de la pièce

Bonjour,

je cherche à déterminer les dimensions d'une pièce dans SW, citant que j'utilise VB.NET.

j'attends vos aides et merci.

Bonjour,

J'avais fait à une époque un petit utilitaire permettant de faire quelque chose de ressemblant, voir ICI.

Cordialement,

1 « J'aime »

En voici un autre modèle qui, comme indiqué, "sans abonnement Privilège peut être utilisé et testé pendant 1 mois.", voir ICI.

Cordialement,

1 « J'aime »

Et voici une version de l'utilitaire que j'avais fait mais avec ajout d'un bouton permettant de calculer l'encombrement sur la pièce ou l'assemblage déjà chargé dans Solidworks.

Cordialement,


boundingbox-4.zip
3 « J'aime »

Bonjour et merci pour votre aide,

c'est pas exactement ca, je cherche à déterminer la longueur et la largeur (ou diamètre) d'une pièce dans SW en utilisant le code VB.NET.

Bonjour,

Erreur probable de compréhension de ma part, si je comprends bien du coup ce que tu cherches à faire c'est piloter des cotes en VB.NET ?

Cordialement,

2 « J'aime »

Bonjour,

ce que je cherche exactement , c'est la détermination de longueur et diamètre d'un vis dans un assemblage sur SW en utilisant VB.net, pour les utiliser ultérieurement.

Bonjour,

Pour faire cela vous pouvez utiliser les configurations. Vous créez votre vis et pour chaque longueur ou diamètre vous faites une configuration supplémentaire.

Bonjour,

Je ne comprends pas bien le besoin final car pour des vis, comme le dit ac cobra 427, il y a possibilité d'utiliser des configurations, ou encore d'utiliser la toolbox. Maintenant si c'est pour piloter des cotes sur une pièces SW, il est possible de le faire comme ci-dessous.

Si on considère que la pièce chargée dans SW est composée d'une fonction "Boss.-Extru.1" faite à partir d'une esquisse "Esquisse1" dans laquelle on trouve les cotes "D1@Esquisse1" et "D2@Esquisse1" pour la largeur et la longueur et que la cote d'épaisseur de l'extrusion se nomme "D1@Boss.-Extru.1" alors on peut les piloter comme suit :

Dim swApp As Object
Dim Part As Object
Dim myDimension As Object
Dim boolstatus As Boolean

Sub main()
    Set swApp = Application.SldWorks
    Set Part = swApp.ActiveDoc
    Set myDimension = Part.Parameter("D1@Esquisse1")
    myDimension.SystemValue = 0.11
    Set myDimension = Part.Parameter("D2@Esquisse1")
    myDimension.SystemValue = 0.05
    Set myDimension = Part.Parameter("D1@Boss.-Extru.1")
    myDimension.SystemValue = 0.002
    boolstatus = Part.ForceRebuild3(True)
    Part.ClearSelection2 True
End Sub

Cordialement,

1 « J'aime »

Bonjour et merci pour votre réponse,

le problème que je veux déterminer les dimensions des éléments standards ajoutés de bibliothèques de SW( vis, écrou ...) , donc, je ne peux pas accéder à leurs esquisses.

Bonjour,

Qu'entends-tu par des éléments standards ajoutés à partir de la bibliothèque de SW ? Peux-tu poster un exemple de pièce pour analyse ?

Cordialement,

bonjour,

Ci joint un exemple.

donc, j'ai essayé cette algorithme mais je n'ai pas eu des resultats :

        swModel = swApp.ActiveDoc

        swConfigMgr = swModel.ConfigurationManager

        swConfig = swConfigMgr.ActiveConfiguration
        Dim swDocExt As ModelDocExtension
        Dim boo As Boolean
        swModel.ClearSelection2(True)
        swDocExt = swModel.Extension()
        boo = swDocExt.SelectByID2("part@assembly", "COMPONENT", 0, 0, 0, True, 1, Nothing, 0)
 
        Dim strCompModelname2 As String
        strCompModelname2 = "part.sldprt"
        swModel = swApp.ActiveDoc

        swDim = swModel.Parameter(strCompModelname2)

        vConfigNameArr = swModel.GetConfigurationNames

        For Each vConfigName In vConfigNameArr

            sSpecConfigNameArr(0) = vConfigName

            vSpecConfigNameArr = sSpecConfigNameArr

            vDimValArr = swDim.GetValue3(swInConfigurationOpts_e.swSpecifyConfiguration, vSpecConfigNameArr)
            Debug.Assert(0 = UBound(vDimValArr))

            For Each vDimVal In vDimValArr

                Debug.Print("      " & vConfigName & " --> " & vDimVal)

            Next

        Next


din-933.jpg

Bonjour,

Par " Peux-tu poster un exemple de pièce pour analyse ? ", je voulais dire une de tes pièces au format sldprt, pas une image jpeg !!!

Cordialement,

1 « J'aime »

Bonsoir,

voici l'exemple en format .sldprt


jaw_screw.sldprt

Bonjour,

C'est bien ce que je soupçonnais, ce sont des pièces importées donc tu ne pourras pas relever de cotations puisqu'il n'y en a pas :

Cordialement,

Bonjour,

Pour activer les esquisses dans un corps importé vous pouvez utiliser Featurworks qui va reconnaître toutes les fonctions d'une pièce...

C'est une possibilité mais, au vu de la pièce, je pense qu'il est préférable de la reconstruire complètement, cela aura le mérite d'avoir des esquisses complètement contraintes et des fonctions un peu plus "intelligentes".

Ou encore prendre une pièce de la Toolbox si il y a un équivalent.

Pour le featureWorks, il faut au préalable supprimer la fonction de déplacement "Body-Move" sinon FeatureWorks n'est pas utilisable :

Cordialement,

1 « J'aime »

Bonjour,

j'ai supprimé " Body-Move" , puis , j'ai cliqué sur featureworks - reconnaitre les fontions ...

un message d'erreur s'affiche " image" , puis quand je clique sur ok , le SW se ferme tout seul.


image.png

Bonjour,

Cela ne vient à priori pas de ta pièce (traitement effectué sur SW 2017) :

Donc voir du coté de tes settings ou de ton installation de SW (quelle version ?)

Cordialement,

1 « J'aime »

Bonjour,

j'ai reussi à afficher l'esquisse des pièces.

le problème maintenant et de déterminer la longueur d'une pièce selectionnée à travers son esquisse. 

je vais vous monter un exemple d'algorithme que j'ai testé mais sans aucune resultat :

1 /

    Dim vDimVal As Object
        Dim Part As ModelDoc2
        Part = swApp.ActiveDoc
Dim swDim As Dimension
        swDim = Part.Parameter("D2@Esquisse1@part1@assembly")
       vDimVal = swDim.GetSystemValue3(swInConfigurationOpts_e.swThisConfiguration, Nothing)
        vDimVal = swSelMgr.GetSelectedObject6(1, -1)
        MsgBox(vDimVal)

 

resultat = box vide