Bonjour,
J'ai un assemblage avec plusieurs pièces dont des pièces qui contiennent des courbes et des points (dans des esquisses 3D).
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.
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
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 :
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.
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
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
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.
@ 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
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.
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
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
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