Export de points au format STEP


Bonjour,

J'ai un assemblage avec plusieurs pièces dont des pièces qui contiennent des courbes et des points (dans des esquisses 3D).
J'ai besoin de faire un export au format STEP.
Les volumes et les courbes c'est bon, j'arrive à les exporter en plusieurs fois en jouant avec les paramètres d'export mais impossible d'avoir le nuage de points.
J'ai essayé toutes les options mais rien n'y fait.
J'ai essayé le test avec le format IGES et tout va bien, j'ai tout mais impossible avec le format step.
Je précise que je suis obligé d'exporter en STEP et ce nuage de point est extrêment important. Pour tout dire ces points serviront pour le palpage dans un logiciel de métrologie.
Je ne pense pas que cela soit une limitation de format step lui-même, car CREO parvient à exporter les courbes et les points sans problème.
 
Est-ce que quelqu'un peut m'aider? Une macro peut-être?
 
Merci
Cordialement

Personne n'a de piste ? Je précise que je suis sur Solidworks 2019 SP5

 

Merci

Personne n'a de solution a ce problème? Je précisie que je suis sous Solidworks 2019 SP5

Peut -être avec un fichier Solidworks pour exemple ce serait plus simple de dépanner?

Il suffit ensuite que plusieurs personnes regarde si cela fonctionne sur une autre version de SW. Ou si c'est par ce que le fichier est trop lourd ou autre raison.

Et si ce n'est pas le fichier ou option mais limitation logiciel voir avec la hotline.

 

1 « J'aime »

Bonjour 

Je vous joins donc le fichier SW en question. Il me faut donc, en export STEP, le nuage de point ainsi que les courbes.

Si qqn arrive merci de m'expliquer la procédure

 

D'avance merci


nuage_de_points_export_step.sldprt

Bonjour

Je me permet une petite relance de ce sujet. Le fichier en question est joint à ma précédente réponse

D'avance merci à ceux qui pourrait m'aider

Bonjour Aurélien,

 

Je me suis un peu penché sur votre problème ce matin. Pour la question de savoir si SolidWorks permet d'exporter nativement des points d'esquisse 3D dans un fichier STEP, la seule réponse qui semble être valable est que ce n'est pas possible.

Le fichier STEP étant un fichier texte (non binaire), il est possible de l'ouvrir avec un éditeur de texte quelconque. Et quand j'ouvre un STEP produit par SolidWorks à partir de votre fichier pièce, je ne trouves pas les coordonnées des points dedans.

 

Maintenant, il est possible d'extraire les coordonnées des points par une macro comme celle proposé sur ce lien : https://forum.solidworks.com/thread/21628#comment-135766

Je me suis alors amusé à le faire et à générer un STEP par un script en Python (je ne suis pas fan des macro VBA). La définition du format STEP étant dans une norme payante, je l'ai fait par interpolation depuis des exemples de fichiers STEP. Le problème est que SolidWorks n'importe pas les points des fichiers STEP comme des points physique. Cela est sans doute lié au fait qu'il ne peut pas faire la différence entre un point seul qui doit être considéré comme tel et les points qui définissent des extrémités de courbes et qui ne doivent pas être pris en compte individuellement.

Importer mon fichier STEP généré donnera donc une pièce vide. Idem pour FreeCAD. Je me pose alors deux questions :

  • Avez-vous un exemple de fichier STEP avec seulement des points exportés par Creo pour le prendre comme modèle et être sur que mon fichier généré est similaire ?
  • Pouvez-vous essayer d'importer les deux fichiers STEP joints sur votre logiciel de métrologie (au cas où je sois tombé juste, à l'aveuglette) ?

Si cela marche en passant par ce moyen, il sera aisé de convertir mon script Python en VBA pour pouvoir l'utiliser directement depuis SW.


fichiers_step_generes_v1.zip
2 « J'aime »

bonjour,

juste une question pourquoi exporter des points en step ?

tu peux les donner sous forme tableau excel en utilisant cette macro.

que la force soit ave toi


pointtoexcel.swp
1 « J'aime »

Bonjour mgauroy,

Tout d'abord je vous remercie pour le temps passé ainsi que les tests effectués.

Alors, j'ai essayé d'importer les fichiers dans mon logiciel de métrologie mais je n'ai rien c'est vide, comme lorsque j'essaie d'ouvir sur SW.  Par contre pour ce qui est de votre demande pour avoir les points exportés avec creo se sera difficile. Je n'ai pas ce logiciel et c'est un fichier envoyé par un client que j'ai retravaillé en enlevant les volumes.

Par contre SW arrive parfaitement à lire les points d'autre fichiers STEP, la preuve avec le fichier que je vous ai transmis. 

Je peux essayer de voir si je peux obtenir ce nuage de points directement en STEP et l'envoyer ici sans le retravailler sur SW. 

D'ailleurs si je ne me trompe pas même en esquisse 2D l'export de point de fonctionne pas.

Pensez-vous qu'il y ait une solution ?

Mes salutations

Bonjour,

Tout simplement parce que j'ai besoin de ces points pour savoir a quel endroit je dois venir palper avec ma machine de contrôle 3D. Hors le problème est que ces points doivent être liés à la maquette 3D de la pièce. Malheureusement les fichiers que je peux importer sur sur mon logiciel de métrologie est uniquement le format STEP.

Je dessine donc ma maquette, mes courbes et mes points et je fais l'export en STEP. Je dois utiliser les différentes options d'export pour avoir les courbes et la maquette ( 2 fichiers STEP) mais impossible d'obtenir les points. 

La licence du soft de métrologie gère plusieurs formats dont l'IGES mais malheureusement l'option est payante, j'ai donc demandé à la hotline du soft de faire un test si avec l'IGES cela fonctionne et la tout est en ordre il y tout, maquette, courbes et points qui plus est avec un seul et unique fichier.

Nous avons choisi l'option STEP car un de nos client travail avec ce format et nous fournissait les volumes (fait avec Creo) mais nous n'avions pas anticipé que cela ne fonctionnerait pas avec Solidworks. Donc si mje dois faire un modification de palpage je suis embêter

D'ou ma question de trouver une solution de contournement puisque actuellement il n'est pas possible d'acheter l'option IGES.

Voilà, maintenant j'ai demandé a mon client de m'envoyer, si possible, que les courbes pour voir comment il est formaté et voir si on arrive a reproduire cela avec une macros.

Merci pour l'intérêt

@ aurelien.buathier

ok je vois

je connais pas bien le sujet je vais peut être dire une sottise mais je le dis quand même  est il possible de placer une micro sphère à chaque points?

que la force soit avec toi.

 

1 « J'aime »

@ OBI WAN

Ce n'est pas une sottise bien au contraire

Le problème étant que j'ai besoin que mon logiciel de métrologie puisse l'interpréter comme un point et non une sphère

Pour illustrer mes propos je met en pièce jointe 1 capture d'écran dans mon logiciel de métrologie qui montre que j'ai besoin de 2 choses. La surface de la maquette et le point qui me servent de coordonnées exat pour la prise de points. Sachant que ce programme est partagé c'est pour fiabiliser la mesure en cas de modification nous pouvons nous transmettre les corrections. Mon problème étant que je peux modifier ses points sur SW mais je ne peux pas les sauver en STEP.

Je sais bien que c'est une demande bien spécifique mais c'est assez surprenant que l'export en STEP pose autant de problème. Surtout que cela fonctionne pour d'autre logiciel. 

Mais je pense que la solution proposé par @ mgauroy est une solution qu'il faut affiner

Merci pour les pistes

Cordialement


logiciel_metrologie.jpg
1 « J'aime »

Bonjour si j'ai bien compris ton client a CREO.

Pourquoi tu ne lui envoie pas ton fichier en IGES pour qu'il le convertisse en STEP

Si j'ouvre ton fichier SW sous SW que je l'enregistre en IGES puis je l'ouvre sous CATIA je peux facilement le sauvegarder en STEP.

 

1 « J'aime »

Bonjour Franck

C'est une possibilité effectivement mais vous pouvez bien comprendre que pour 1 ou 2 fichiers c'est envisageable mais la on parle de plusieurs programmes. Travaillant comme sous traitant j'ai besoin de faire des programmes intermédiaires qui ne concerne pas directement le produit final, sans compter que si je veux faire un programme de A à Z je ne peux pas de manière indépendante. SI il ne s'agissait que de quelques programmes je n'aurais pas chercher un solutions autre que celle que tu énumères. Sans compter les projets pour d'autres clients. 

Il me faut une solutions viable et avec les moyens que j'ai à disposition

Merci pour la réponse

Franck

Serait-il possible d'avoir le fichier STEP générer par CATIA? Je voudrait tester si les points apparaisse sur mon logiciel de métrologie?

D'avance je te remercie 

Très bon week-end à tous

Bonjour,

Est ce que tu peux joindre un fichier STEP généré par Creo (avec des points qui apparaisse comme il faut)

Bonjour

J'ai reçu le fichier généré par CREO, j'ai constaté qu'en fait le 2ème fichier STEP générer par mgauroy ( il ya 6 jours) était similaire au format CREO. J'ai donc chercher pourquoi les points ne s'affichait pas sur mon logiciel de métrologie et j'ai trouvé que c'était en fait une option du logiciel que j'avais omis d'activer.

Donc le fichier qui ne contient pas les lignes VERTEX_POINT ( '', #1 ); est lisible et exploitable.

Maintenant il me faut pourvoir créer une macro qui me permette d'extraire ses points en .STEP pour chaque assemblage que je fait sur SW. 

Si mgauroy peut m'aider ou une autre personne c'est bien volontiers

Merci beaucoup 

Bonjour Essaye ca:

Option Explicit
Dim FilePath As String
Dim myPoints As Collection

Sub main()
    Dim swApp As SldWorks.SldWorks
    Dim swModel As SldWorks.ModelDoc2
    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc
    If swModel Is Nothing Then
        MsgBox "Ouvrir une pièce"
        Exit Sub
    End If
    If swModel.GetType <> swDocumentTypes_e.swDocPART Then
        MsgBox "Ouvrir une pièce"
        Exit Sub
    End If
    swApp.SetUserPreferenceIntegerValue swUserPreferenceIntegerValue_e.swStepAP, 214
    swApp.SetUserPreferenceIntegerValue swUserPreferenceIntegerValue_e.swStepExportPreference, swAcisOutputGeometryPreference_e.swAcisOutputAs3DCurves_IncludeSketchEnts
    
    FilePath = Left(swModel.GetPathName, InStrRev(swModel.GetPathName, ".") - 1) & ".STEP"
    swModel.Extension.SaveAs2 FilePath, 0, swSaveAsOptions_e.swSaveAsOptions_Silent, Nothing, Empty, False, Empty, Empty
    
    Set myPoints = New Collection

    Dim swFeat As SldWorks.Feature
    Dim swSubFeat As SldWorks.Feature
    Set swFeat = swModel.FirstFeature
    While Not swFeat Is Nothing
        ProcessFeat swFeat
        Set swSubFeat = swFeat.GetFirstSubFeature
        While Not swSubFeat Is Nothing
            ProcessFeat swSubFeat
            Set swSubFeat = swSubFeat.GetNextSubFeature
        Wend
        Set swFeat = swFeat.GetNextFeature
    Wend

    UpdateStep Empty
    
    swApp.SetUserPreferenceIntegerValue swUserPreferenceIntegerValue_e.swStepExportPreference, swAcisOutputGeometryPreference_e.swAcisOutputAsSolidAndSurface
End Sub

Sub ProcessFeat(ByVal swFeat As SldWorks.Feature)
    Dim swSketch As SldWorks.Sketch
    Dim swPt As SldWorks.SketchPoint
    Dim vPts As Variant
    Dim vPt As Variant
    'Debug.Print swfeat.Name & " " & swfeat.GetTypeName2
    If swFeat.GetTypeName2 = "ProfileFeature" Or swFeat.GetTypeName2 = "3DProfileFeature" Then
        Set swSketch = swFeat.GetSpecificFeature2
        vPts = swSketch.GetSketchPoints
        For Each vPt In vPts
            Set swPt = vPt
            If Not swPt Is Nothing Then
                If swPt.Type = swSketchPointType_e.swSketchPointType_User Then
                    myPoints.Add " = CARTESIAN_POINT ( 'NONE',  ( " & swPt.X * 1000 & ", " & swPt.Y * 1000 & ", " & swPt.Z * 1000 & " ) ) ;"
                End If
            End If
        Next
    End If
End Sub

Sub UpdateStep(void)
    Dim myData As String
    Dim filenum As Integer
    filenum = FreeFile
    Debug.Print FilePath
    Open FilePath For Binary As #filenum
    myData = Space$(LOF(1))
    Get #filenum, , myData
    Close #filenum
    
    Dim Lines() As String
    Lines = Split(myData, vbCrLf)
    Dim line As Variant
    Dim MaxNum As Integer
    For Each line In Lines
        If Left(line, 1) = "#" Then
            MaxNum = CInt(Mid(line, 2, InStr(line, "=") - 3))
        End If
    Next
    
    Dim i As Integer
    Dim myLines As String
    For i = 1 To myPoints.Count
        myLines = myLines & "#" & MaxNum + i & myPoints(i) & vbCrLf
    Next i
       
    Dim EndString As String
    EndString = "ENDSEC;" & vbCrLf & "END-ISO"
    myData = Replace(myData, EndString, myLines & EndString)
    
    Open FilePath For Output As #filenum
    Print #filenum, myData
    Close #filenum
End Sub

 

2 « J'aime »

Bonjour Jerome

Je te remercie pour le script, j'ai fait un test il fonctionne parfaitement, Par contre je ne peux pas travailler directement depuis un assemblage avec plusieurs fichiers pièces qui comporte des points, c'est bien juste? Je dois ouvrir chaque pièces séparément et exécuter le script. Ce n'est pas un problème en soi mais j'aurai aimé pouvoir faire comme pour le reste du fichier (volume et courbe) à savoir afficher à l'écran les pièces contenant les points et ensuite obtenir un seul fichier STEP avec tous les points. 

Également une chose, la numérotation des point est indiquer comme NONE, j'aurais aimé pouvoir nommé les points comme je le voulais mais j'ai regardé sur SW et je n'ai pas trouvé cette option. SW donne un numéro point1,point2, etc.. de manière automatique mais j'aurais voulu pouvoir indiquer le nom de chaque point et ensuite lors de l'export en STEP que les nom soient gardés. Est-ce possible ?

Afin d'illustrer mes propos, je vais mettre le fichier CREO que j'ai reçu de mon client. Lorsque j'essaie de l'ouvrir sur SW, celui-ci me dit que c'est un assemblage et à l'intérieur il créé une pièce avec les points. Je peux donc bien lire le fichier avec uniquement les points. vous verrez que les points sont tous numérotés. 

Voilà maintenant je suis bien conscient que la demande n'est pas simple et même si elle est possible mais c'est ce sur quoi j'aimerais arrivé

En attendant je vous remercie tous pour le travail et surtout l'apport d'une solution. 

Redite moi ce que vous en pensez

Merci


nuages_de_points_creo.stp
2 « J'aime »

Bonjour

En fait je me rend compte que j'ai vraiement besoin que cette macro fonctionne directement depuis un assemblage sinon, lorsque je réimporte les fichiers, il ne sont pas dans le bon repère et n'épouse pas la pièce puisque je suis dans le repère local et pas dans le repère de l'assemblage.

Est-ce possible ou non?

Merci