[PYTHON] coordonnées d'un point

Forum destiné aux questions et discussions en français
Forum rules
Règles du forum et informations utiles.

VEUILLEZ LIRE CECI AVANT DE DEMANDER DE L'AIDE
mario52
Posts: 2984
Joined: Wed May 16, 2012 2:13 pm

[PYTHON] coordonnées d'un point

Postby mario52 » Sun Mar 03, 2013 8:44 pm

Bonjour
flachyjoe wrote: De quoi se simplifier la vie ;)
On peut corser un petit peux ;) et ouvrir un post FR dédié à la programmation FreeCAD et Python qu'en penses tu ?
je lis les API mais pour les utiliser ! et comme je ne suis pas le seul.

je voudrais savoir comment obtenir les coordonbnées d'un point, et les utiliser bien sûr.

merci mario

Bonjour
merci, j' ai su adapter le code pour un point, maintenant, je voudrais travailler avec un ou plusieurs objets sélectionnés comme dans le code http://sourceforge.net/apps/mediawiki/f ... d_Sweep/fr

Code: Select all

App.newDocument()
App.setActiveDocument("Unnamed")
App.ActiveDocument=App.getDocument("Unnamed")
Gui.ActiveDocument=Gui.getDocument("Unnamed")
import Draft
Draft.makePoint(5,5,0)

x=Gui.getDocument("Unnamed").getObject("Point")
x.Object.Shape.BoundBox.Center
v=x.Object.Shape.BoundBox.Center
v.x
v.y
v.z
flachyjoe wrote: Je pense que c'est beaucoup plus clair si il y a un post par question, par contre on peut prendre l'habitude de faire précéder le titre de ces posts par [PYTHON] pour les repérer facilement.
je pensais plus à un forum fr uniquement dédié à la programmation, les recherches seraient plus facile.
mario

Bonjour
flachyjoe wrote: Que veut tu faire avec tes points, juste en afficher les coordonnées ?
extraire les coordonnées xyz de 3 points sélectionnés et les utiliser.

Code: Select all

# -*- coding: utf-8 -*-
#04/03/2013
# extraire et utiliser les coordonnées de 3 points séléctionnés
import Part, FreeCAD, math, PartGui, FreeCADGui
from FreeCAD import Base
sel = FreeCADGui.Selection.getSelection()
i=0
ta=[0,0,0,0,0,0,0,0,0]
for obj in sel:
	x=(obj.Shape.BoundBox.Center)
	ta[i+0]=(x.x)
	ta[i+1]=(x.y)
	ta[i+2]=(x.z)
	i=i+3

x_point_1=ta[0]
y_point_1=ta[1]
z_point_1=ta[2]

x_point_2=ta[3]
y_point_2=ta[4]
z_point_2=ta[5]

x_point_3=ta[6]
y_point_3=ta[7]
z_point_3=ta[8]

FreeCAD.Console.PrintMessage(str(x_point_1)+"\r\n")
FreeCAD.Console.PrintMessage(str(y_point_1)+"\r\n")
FreeCAD.Console.PrintMessage(str(z_point_1)+"\r\n")

FreeCAD.Console.PrintMessage(str(x_point_2)+"\r\n")
FreeCAD.Console.PrintMessage(str(y_point_2)+"\r\n")
FreeCAD.Console.PrintMessage(str(z_point_2)+"\r\n")

FreeCAD.Console.PrintMessage(str(x_point_3)+"\r\n")
FreeCAD.Console.PrintMessage(str(y_point_3)+"\r\n")
FreeCAD.Console.PrintMessage(str(z_point_3)+"\r\n")

Code: Select all

# -*- coding: utf-8 -*-
#04/03/2013
# extraire et utiliser les coordonnées de 3 points séléctionnés
import Draft, Part, FreeCAD, math, PartGui, FreeCADGui
from math import sqrt, pi, sin, cos
from FreeCAD import Base

sel = FreeCADGui.Selection.getSelection()
i=0
for obj in sel:
	i=i+1

if i==3:
	i=0
	ta=[0,0,0,0,0,0,0,0,0]
	for obj in sel:
		x=(obj.Shape.BoundBox.Center)
		ta[i+0]=(x.x)
		ta[i+1]=(x.y)
		ta[i+2]=(x.z)
		i=i+3
	
	x_point_1=ta[0]
	y_point_1=ta[1]
	z_point_1=ta[2]

	x_point_2=ta[3]
	y_point_2=ta[4]
	z_point_2=ta[5]

	x_point_3=ta[6]
	y_point_3=ta[7]
	z_point_3=ta[8]

	FreeCAD.Console.PrintMessage(str(x_point_1)+"\r\n")
	FreeCAD.Console.PrintMessage(str(y_point_1)+"\r\n")
	FreeCAD.Console.PrintMessage(str(z_point_1)+"\r\n")

	FreeCAD.Console.PrintMessage(str(x_point_2)+"\r\n")
	FreeCAD.Console.PrintMessage(str(y_point_2)+"\r\n")
	FreeCAD.Console.PrintMessage(str(z_point_2)+"\r\n")

	FreeCAD.Console.PrintMessage(str(x_point_3)+"\r\n")
	FreeCAD.Console.PrintMessage(str(y_point_3)+"\r\n")
	FreeCAD.Console.PrintMessage(str(z_point_3)+"\r\n")
else:
	FreeCAD.Console.PrintError("Sélectionnez 3 objets\r\n")
merci flachyjoe
mario
Last edited by mario52 on Sun Mar 10, 2013 2:46 pm, edited 2 times in total.
Maybe you need a special feature, go into Macros_recipes and Code_snippets, Dialog creation. My macros on Gist.github.
User avatar
flachyjoe
Posts: 725
Joined: Sat Mar 31, 2012 12:00 pm
Location: Limoges, France

Re: [PYTHON] coordonnées d'un point

Postby flachyjoe » Mon Mar 04, 2013 6:28 pm

Tu aimes te compliquer la vie, non ?

Code: Select all

# -*- coding: utf-8 -*-
# extraire et utiliser les coordonnées de 3 points séléctionnés
import Part, FreeCAD, math, PartGui, FreeCADGui
from FreeCAD import Base, Console
sel = FreeCADGui.Selection.getSelection()
if len(sel)!=3 :
  Console.PrintError("Sélectionnez 3 points exactement\r\n")
else :
  points=[]
  for obj in sel:
    points.append(obj.Shape.BoundBox.Center)

  for pt in points:
    Console.PrintMessage(str(pt.x)+"\r\n")
    Console.PrintMessage(str(pt.y)+"\r\n")
    Console.PrintMessage(str(pt.z)+"\r\n")

  Console.PrintMessage(str(pt[1]) + "\r\n")
- Flachy Joe -
alias FFW @ irc.freenode.net #freecad et #freecad-fr
"Puisqu’on ne peut changer la direction du vent, il faut apprendre à orienter les voiles." Anonyme