[PYTHON] coordonnées d'un point

Forum destiné aux questions et discussions en français
Forum rules
Be nice to others! Read the FreeCAD code of conduct!
Post Reply
mario52
Veteran
Posts: 4692
Joined: Wed May 16, 2012 2:13 pm

[PYTHON] coordonnées d'un point

Post by mario52 »

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, Topological_data_scripting.
My macros on Gist.github here complete macros Wiki and forum.
User avatar
flachyjoe
Veteran
Posts: 1891
Joined: Sat Mar 31, 2012 12:00 pm
Location: Limoges, France

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

Post by flachyjoe »

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 -
Image
Post Reply