utiliser une sélection d'objet dans une macro

Forum destiné aux questions et discussions en français
Forum rules
Be nice to others! Read the FreeCAD code of conduct!
Post Reply
COCO1111
Posts: 5
Joined: Fri Dec 09, 2016 11:15 am

utiliser une sélection d'objet dans une macro

Post by COCO1111 »

Tout d'abord, Bonjour.
Je suis nouveau dans l'univers FreeCAD et je suis actuellement à la recherche d'une solution pour utiliser une sélection d'objet et l'utiliser dans une macro.
Mon problème est le suivant : Je souhaite utiliser une macro permettant de transformer n'importe quel fichier au format STL en un objet Solide afin d'en récupérer les informations de volume et dimensions X,Y et Z.
Je devrais donc trouver une solution pour coder l'action suivante : sélectionner un objet dans l'arbre, donner un nom fictif à cet objet dans la macro afin de pouvoir réutiliser le nom par la suite.
J'ai trouvé la commande FreeCADGui.Selection.Getselection() mais cela ne permet pas de reprendre l'objet.

Pourriez-vous m'aider sur ce point ?
Merci d'avance

PS: J'utilise la version suivante de FreeCAD
OS: Windows 7
Word size of OS: 64-bit
Word size of FreeCAD: 64-bit
Version: 0.16.6706 (Git)
Build type: Release
Branch: releases/FreeCAD-0-16
Hash: f86a4e411ff7848dea98d7242f43b7774bee8fa0
Python version: 2.7.8
Qt version: 4.8.7
Coin version: 4.0.0a
OCC version: 6.8.0.oce-0.17
User avatar
rockn
Veteran
Posts: 1791
Joined: Wed Sep 28, 2011 10:39 am
Location: Toulouse, France
Contact:

Re: utiliser une sélection d'objet dans une macro

Post by rockn »

Bonjour,

Code: Select all

selection = FreeCADGui.Selection.getSelection()
print(type(sel))
#<type 'list'> Donc la variable selection est de type liste
objet1 = selection[0] # donc premier objet de la liste
print(objet1.Name)
A partir de là tu as ton objet dans la variable "objet1" et tu peux travailler avec.
Formations - Assistance - Développement : https://freecad-france.com
User avatar
NormandC
Veteran
Posts: 18589
Joined: Sat Feb 06, 2010 9:52 pm
Location: Québec, Canada

Re: utiliser une sélection d'objet dans une macro

Post by NormandC »

Salut,

Bienvenue sur le forum.
COCO1111 wrote: Je souhaite utiliser une macro permettant de transformer n'importe quel fichier au format STL en un objet Solide afin d'en récupérer les informations de volume et dimensions X,Y et Z.
N'importe quel STL ? À mon avis c'est une tâche impossible, car elle tient pour acquis que tous les STL sont valides.

Le problème c'est que facilement 50% des STL qu'on peut trouver sur le Net (et je suis généreux) est de la bouse.

La liste des problèmes qu'on voit tout le temps et qui empêchent la conversion en solide :
  • Maillage non manifold (non étanche)
  • Normales de faces inversées
  • Maillage formé de plusieurs corps
Mais bonne chance quand même. ;)
COCO1111
Posts: 5
Joined: Fri Dec 09, 2016 11:15 am

Re: utiliser une sélection d'objet dans une macro

Post by COCO1111 »

Salut,

Merci pour la solution.

Jusqu'à présent la macro fonctionne relativement bien. (quand je disais tous les STL je parlais du fait qu'ils soient exportés en ASCII ou Binaire)
Je suis même d'ailleurs étonné que l'ouverture des fichiers au Formats 3D classiques fonctionne aussi bien (J'ai une version d'essais solidworks qui n'ouvre pas la moitié d'entre eux ce qui est dommage au vu du prix d'achat ...)

actuellement j'essaie d'intégrer l'enregistrement d'image à cette macro (pour permettre d'avoir une image en lien avec les valeurs de surfaces que j'ai récupéré). La commande fonctionne bien si je la met dans la console FreeCAD mais si je l'utilise dans un script je tombe sur l'erreur Non ascii //XC3.
Je suppose que c'est un import qu'il me manque mais je ne trouve pas lequel.

existe-t-il une ressources permettant d'avoir les informations sur les codes sources (je réalise un TFE et j'aurais besoin de pouvoir expliquer comment on passe du fichier au format 3D vers l'objet de FreeCAD)

Merci et bonne journée
User avatar
flachyjoe
Veteran
Posts: 1891
Joined: Sat Mar 31, 2012 12:00 pm
Location: Limoges, France

Re: utiliser une sélection d'objet dans une macro

Post by flachyjoe »

Salut,
l'erreur "Non-ASCII character ..." a lieu lorsque tu utilises des caractères accentués dans la macro.
Pour corriger ce problème, il suffit de rajouter

Code: Select all

# -*- coding: utf-8 -*-
en première ou seconde ligne du fichier.
En principe la première ligne est réservée au hash-bang mais ça n'a pas trop de sens d'en mettre un pour une macro FreeCAD.
- Flachy Joe -
Image
COCO1111
Posts: 5
Joined: Fri Dec 09, 2016 11:15 am

Re: utiliser une sélection d'objet dans une macro

Post by COCO1111 »

Merci pour la réponse. effectivement je n'ai plus de soucis Ascii.

malheureusement je tombe sur un autre problème.
j'ai le code erreur suivant :
<unknown exception traceback><type 'exceptions.SyntaxError'>: ('invalid syntax', ('C:/Users/Stagiaire/AppData/Roaming/FreeCAD/Macro/macro image.FCMacro', 1, 2, '-*- coding: utf-8 -*-\n'))
User avatar
flachyjoe
Veteran
Posts: 1891
Joined: Sat Mar 31, 2012 12:00 pm
Location: Limoges, France

Re: utiliser une sélection d'objet dans une macro

Post by flachyjoe »

Tu as oublié le dièse # en début de ligne.
- Flachy Joe -
Image
Post Reply