quelqu'un pourrait m'expliquer le système de coordonnées ? Je ne le comprends pas. Je m'explique. J'ai fait un petit script python, qui me crée un certain nombre de tubes sur les 3 axes (enfin... c'est ce que je croyais). Or, lorsque je visionne mon dessin, il me manque l'axe Z ; ou plutôt, je m'attendais à voir quelque chose comme (si je prends l'image d'un gateau) un gâteau coupé en 4 (vue du dessus) pour les axes X et Y, puis au milieu (horizontal, vue de côté) pour l'axe Z et le résultat n'est pas ça. De plus, lorsque je séléctionne mes tubes tubeX0, tubeY0 et tubeZ0 (dans la fenêtre "Vue Combinée"), ils sont tous les trois au même endroit, alors que je m'attendais à avoir le tubeX0 sur l'axe X, tubeY0 sur l'axe Y et tubeZ0 sur l'axe Z.
Merci d'avance pour vos précieuses remarques... et désolé si la réponse a déjà été donnée, je vous promets que j'ai cherché...
IAD.
P.S.: je copie le code python ci-dessous puisque les extensions .py, .txt et .t ne sont pas authorisées et je n'ai pas pu attacher mon fichier freecad_test2.py
Code: Select all
# -*- coding: utf8 -*-
# --- Modules nécessaires --- #
import FreeCAD # Module FreeCAD
import Part # conteneur d'objects (sphère, cylindre, ...)
# --- Mes fonctions --- #
def createTube (tubeDoc, tubeLen=10, tubeDiam=4, tubeEpais=0.5, tubeName="Tube") :
"""
Fonction qui permets de créer un tube
d'une longueur et épaisseur donnée
"""
tubeExtObj = tubeDoc.addObject("Part::Feature","TubeExt")
tubeExtObj.Shape = Part.makeCylinder(tubeDiam, tubeLen) #
tubeIntObj = tubeDoc.addObject("Part::Feature","TubeInt")
tubeIntObj.Shape = Part.makeCylinder(tubeDiam-tubeEpais, tubeLen)
tubeObj = tubeDoc.addObject("Part::Cut",tubeName)
tubeObj.Base = tubeExtObj # Object de base
tubeObj.Tool = tubeIntObj # Object à soustraire
return tubeObj
# --- Paramètres de l'objet --- #
cylTaille = 12 # Cylindre - taille(en cm)
cylDiam = 2 # Cylindre - diamètre externe(en cm)
cylEpais = 0.25 # Cylindre - épaisseur (en cm)
cylTrans = 10 # Cylindre - transparence
# Création du nouveau document FreeCAD
doc=FreeCAD.newDocument ("FreeCAD_Test2")
# Création des tubes à 30° sur les axe X, Y et Z
tubeNr=0
angle=30
while tubeNr < (360/angle) :
# Création du tube en X
cylObjX = createTube(doc, cylTaille, cylDiam, cylEpais, "tubeX"+str(tubeNr)) # Tube X - Création
cylObjX.ViewObject.Transparency = cylTrans # Tube X - Transparence
cylObjX.Placement = FreeCAD.Placement(FreeCAD.Vector(0,0,0),FreeCAD.Rotation(FreeCAD.Vector(1,0,0),tubeNr*angle)) # Tube X - Alignement
# Création du tube en Y
cylObjY = createTube(doc, cylTaille, cylDiam, cylEpais, "tubeY"+str(tubeNr)) # Tube Y - Création
cylObjY.ViewObject.Transparency = cylTrans # Tube Y - Transparence
cylObjY.Placement = FreeCAD.Placement(FreeCAD.Vector(0,0,0),FreeCAD.Rotation(FreeCAD.Vector(0,1,0),tubeNr*angle)) # Tube Y - Alignement
# Création du tube en Z
cylObjZ = createTube(doc, cylTaille, cylDiam, cylEpais, "tubeZ"+str(tubeNr)) # Tube Z - Création
cylObjZ.ViewObject.Transparency = cylTrans # Tube Z - Transparence
cylObjZ.Placement = FreeCAD.Placement(FreeCAD.Vector(0,0,0),FreeCAD.Rotation(FreeCAD.Vector(0,0,1),tubeNr*angle)) # Tube Z - Alignement
tubeNr += 1 # incrémentation du numéro du tube
doc.recompute()