une commande pour mettre à jour des volumes en changeant la
Forum rules
Be nice to others! Read the FreeCAD code of conduct!
Be nice to others! Read the FreeCAD code of conduct!
une commande pour mettre à jour des volumes en changeant la
Bonjour,
Voilà, je travaille avec la version 0.12 de FreeCAD sur WindowsXP, et je voudrai savoir si il y a moyen, par une macro ou autrement, qu'à partir d'une simple commande dans la console python je puisse changer la valeur d'une variable (nommée x1 par exemple), et que ça change sur la vue du document la dimension et la position de tous les volumes ayant x1 apparaissant dans leur propriété, et même pour les objets fusionnés ou cuttés.
L'idéal serait en fait d'avoir un tableau de toutes mes variables, via une fenêtre FreeCAd ou une feuille de classeur LibreOfficeCalc ou excel, que je puisse me servir comme tableau de bord pour changer leur valeur et qu'elles soient prises en compte dans la console Pyton de FreeCAD.
Je ne sais pas si je demande l'impossible, mais ça me faciliterai énormément la tâche. En fait, je débute complètement dans la conception mécanique, et je découvre la programmation en Python également.... Si vous avez des pistes pour m'aider, n'hésitez pas !
Merci d'avance
Voilà, je travaille avec la version 0.12 de FreeCAD sur WindowsXP, et je voudrai savoir si il y a moyen, par une macro ou autrement, qu'à partir d'une simple commande dans la console python je puisse changer la valeur d'une variable (nommée x1 par exemple), et que ça change sur la vue du document la dimension et la position de tous les volumes ayant x1 apparaissant dans leur propriété, et même pour les objets fusionnés ou cuttés.
L'idéal serait en fait d'avoir un tableau de toutes mes variables, via une fenêtre FreeCAd ou une feuille de classeur LibreOfficeCalc ou excel, que je puisse me servir comme tableau de bord pour changer leur valeur et qu'elles soient prises en compte dans la console Pyton de FreeCAD.
Je ne sais pas si je demande l'impossible, mais ça me faciliterai énormément la tâche. En fait, je débute complètement dans la conception mécanique, et je découvre la programmation en Python également.... Si vous avez des pistes pour m'aider, n'hésitez pas !
Merci d'avance
Re: une commande pour mettre à jour des volumes en changeant la
Bonjour et bienvenue
c'est ici que ça se passe
http://sourceforge.net/apps/mediawiki/f ... _Positions
à partir de la console Python intégrée à FreeCAD tu peux pratiquement tout faire, si tu veux t'y mettre,
tu peux cliquer sur les liens < gauche et droit > en bas de page pour d'autres tutoriels en rapport avec la programmation Python
mario
c'est ici que ça se passe
http://sourceforge.net/apps/mediawiki/f ... _Positions
à partir de la console Python intégrée à FreeCAD tu peux pratiquement tout faire, si tu veux t'y mettre,
tu peux cliquer sur les liens < gauche et droit > en bas de page pour d'autres tutoriels en rapport avec la programmation Python
mario
Maybe you need a special feature, go into Macros_recipes and Code_snippets, Topological_data_scripting.
My macros on Gist.github here complete macros Wiki and forum.
My macros on Gist.github here complete macros Wiki and forum.
Re: une commande pour mettre à jour des volumes en changeant la
Merci pour le lien
Mais j'ai un problème pour le changement des valeurs des composantes d'un vecteur dans la console Python, voilà ce que je rentre:
>>> xZero = 1
>>> yZero = 0
>>> zZero = 0
>>>
>>> vecteurZero = FreeCAD.Vector(xZero, yZero, zZero)
>>> vecteurZero
Vector (1, 0, 0)
>>>
>>> xZero = 2
>>> vecteurZero
Vector (1, 0, 0)
Je voudrais savoir comment faire pour que la composante X de vecteurZero se mette à jour, et me renvoie donc Vector (2, 0, 0) pour cet exemple, ... et que la mise à jour soit faite pour tous les autres vecteurs dont les composantes seront fonction de xZero, yZero et zZero évidemment.
Merci d'avance
Mais j'ai un problème pour le changement des valeurs des composantes d'un vecteur dans la console Python, voilà ce que je rentre:
>>> xZero = 1
>>> yZero = 0
>>> zZero = 0
>>>
>>> vecteurZero = FreeCAD.Vector(xZero, yZero, zZero)
>>> vecteurZero
Vector (1, 0, 0)
>>>
>>> xZero = 2
>>> vecteurZero
Vector (1, 0, 0)
Je voudrais savoir comment faire pour que la composante X de vecteurZero se mette à jour, et me renvoie donc Vector (2, 0, 0) pour cet exemple, ... et que la mise à jour soit faite pour tous les autres vecteurs dont les composantes seront fonction de xZero, yZero et zZero évidemment.
Merci d'avance
Re: une commande pour mettre à jour des volumes en changeant la
Bonjour
en mettant l'opération à jour
ou tu peux construire une petite procédure
mario
en mettant l'opération à jour
Code: Select all
>>> xZero=1
>>> yZero=0
>>> zZero=0
>>> vecteurZero=FreeCAD.Vector(xZero, yZero, zZero)
>>> vecteurZero
Vector (1, 0, 0)
>>> xZero=2
>>> vecteurZero=FreeCAD.Vector(xZero, yZero, zZero)
>>> vecteurZero
Vector (2, 0, 0)
>>>
Code: Select all
>>> def xyz(x,y,z):
... vecteurZero=FreeCAD.Vector(x, y, z)
... return vecteurZero
...
>>> xyz(1,0,0)
Vector (1, 0, 0)
>>> xyz(5,1,1)
Vector (5, 1, 1)
>>>
Maybe you need a special feature, go into Macros_recipes and Code_snippets, Topological_data_scripting.
My macros on Gist.github here complete macros Wiki and forum.
My macros on Gist.github here complete macros Wiki and forum.
Re: une commande pour mettre à jour des volumes en changeant la
C'est bien là le problème, il n'existe pas une commande simple pour faire une mise à jour sur tout ? Si j'ai des centaines de vecteurs dont chacunes de leurs composantes sont des fonctions dépendantes de la variable Xzero, je vais devoir rappeler tous ces vecteurs, avec toutes leurs composantes ! C'est faramineux ! Même en gérant ça par des macros ! Et je peux m'attendre à toute sorte de problême pour les objets fusionnés et cuttés...mario52 wrote:en mettant l'opération à jour
Re: une commande pour mettre à jour des volumes en changeant la
Bonjour
alors peut être en utilisant la fonction move qui déplace un ou plusieurs objet(s) sélectionné(s)
https://sourceforge.net/apps/mediawiki/ ... aft_API/fr
https://sourceforge.net/apps/mediawiki/ ... Draft_Move
(il manque pour le moment la partie Script dans la page française, et on ne peut pas modifier cause de transfert du site )
et Placement https://sourceforge.net/apps/mediawiki/ ... cement_API
mario
alors peut être en utilisant la fonction move qui déplace un ou plusieurs objet(s) sélectionné(s)
Code: Select all
import FreeCAD,Draft
Draft.move(FreeCAD.ActiveDocument.ActiveObject,FreeCAD.Vector(2,2,0))
https://sourceforge.net/apps/mediawiki/ ... Draft_Move
(il manque pour le moment la partie Script dans la page française, et on ne peut pas modifier cause de transfert du site )
et Placement https://sourceforge.net/apps/mediawiki/ ... cement_API
mario
Maybe you need a special feature, go into Macros_recipes and Code_snippets, Topological_data_scripting.
My macros on Gist.github here complete macros Wiki and forum.
My macros on Gist.github here complete macros Wiki and forum.
-
- Posts: 437
- Joined: Wed Sep 15, 2010 9:38 am
Re: une commande pour mettre à jour des volumes en changeant la
Bonjour,
tu peux créer un classe et définir un attribut comme une propriété, c'est à dire dont la valeur est recalculée à chaque fois qu'on "interroge" la valeur de l'attribut. Voir "@property" dans la doc Python.
Est-ce ce que ça te conviendrait ?
Gaël
tu peux créer un classe et définir un attribut comme une propriété, c'est à dire dont la valeur est recalculée à chaque fois qu'on "interroge" la valeur de l'attribut. Voir "@property" dans la doc Python.
Code: Select all
class vect(object):
def __init__(self, x, y, z):
self.x = x
self.y = y
self.z = z
@property
def vecteurZero(self):
return FreeCAD.Vector(self.x, self.y, self.z)
v1 = vect(xZero, yZero, zZero)
v1.x = 2
v1.vecteur
--> Vector(2, 0, 0)
Gaël
Re: une commande pour mettre à jour des volumes en changeant la
Galou je trouve ton bout de code très sexy.
Mais d'après l'API tu peux déjà récupérer une référence sur chaque coordonnée :
Attention à bien utiliser un float par contre.
Mais d'après l'API tu peux déjà récupérer une référence sur chaque coordonnée :
Code: Select all
import FreeCAD as f
f.Vector(1,1,2)
type(v.x)
v.x = 3.
v.x