Macro Delta xyz

From FreeCAD Documentation
Jump to: navigation, search
This page is a translated version of the page Macro Delta xyz and the translation is 100% complete.

Other languages:
čeština • ‎Deutsch • ‎English • ‎français • ‎italiano

Macro Delta xyz.png Macro Delta xyz

Description
Donne les valeurs Delta xyz de 2 points et donne la distance entre ces points.

Version macro : 0.1
Date dernière modification : 2013-11-29
Version FreeCAD : Toutes versions
Téléchargement : Icône pour votre barre d'outils
Auteur
Mario52
Téléchargement
Icône pour votre barre d'outils
Liens
Version Macro
0.1
Dernière modification
2013-11-29
Version(s) FreeCAD
Toutes versions
Raccourci clavier
None
Voir aussi
Part Measure Toggle Delta Part Measure Toggle Delta.svg


Description

Donne la valeur Delta de la ligne située entre 2 points et la longueur de la distance entre ces points.

Cliquer dans la fenêtre ComboView pour quitter.

Utilisation

  1. Démarrez la macro
  2. Sélectionnez du premier point dans la vue 3D
  3. Sélectionnez le second point dans la vue 3D et le informations sont affichée dans la vue rapport
  4. Cliquez dans la fenêtre Vue combinée pour quitter la fonction

DeltaXYZ.png

Script

ToolBar Icon Macro Delta xyz.png

Macro_Delta_xyz.FCMacro

# -*- coding: utf-8 -*-
#Delta x y z Click in ComboView to quit
import Draft, Part
import math,FreeCAD
from FreeCAD import Base

global positionX1 ;positionX1 = 0.0
global positionY1 ;positionY1 = 0.0
global positionZ1 ;positionZ1 = 0.0
global positionX2 ;positionX2 = 0.0
global positionY2 ;positionY2 = 0.0
global positionZ2 ;positionZ2 = 0.0
global pas        ;pas        = 0

def sub(first, other): 
	"sub(Vector,Vector) - subtracts second vector from first one"
	if isinstance(first,FreeCAD.Vector) and isinstance(other,FreeCAD.Vector):
		return FreeCAD.Vector(first.x-other.x, first.y-other.y, first.z-other.z)
def length(first):
	"lengh(Vector) - gives vector length"
	if isinstance(first,FreeCAD.Vector):
		return math.sqrt(first.x*first.x + first.y*first.y + first.z*first.z)
def dist(first, other):
	"dist(Vector,Vector) - returns the distance between both points/vectors"
	if isinstance(first,FreeCAD.Vector) and isinstance(other,FreeCAD.Vector):
		return length(sub(first,other))

class SelObserver:
    def addSelection(self,document, object, element, position):  # Selection
        global pas
        global positionX1
        global positionY1
        global positionZ1
        global positionX2
        global positionY2
        global positionZ2
        pas+=1
        if pas==1:
            positionX1 = position[0]
            positionY1 = position[1]
            positionZ1 = position[2]
            App.Console.PrintMessage("Begin    : X1 "+str(positionX1)+" Y1: "+str(positionY1)+" Z1: "+str(positionZ1)+"\n")    
        else:
            positionX2 = position[0]
            positionY2 = position[1]
            positionZ2 = position[2]
            App.Console.PrintMessage("End      : X2 "+str(positionX2)+" Y2: "+str(positionY2)+" Z2: "+str(positionZ2)+"\n")    
            App.Console.PrintMessage("Delta X  : "+str(abs(positionX1-positionX2))+"\n")    
            App.Console.PrintMessage("Delta Y  : "+str(abs(positionY1-positionY2))+"\n")    
            App.Console.PrintMessage("Delta Z  : "+str(abs(positionZ1-positionZ2))+"\n")    
            v1=FreeCAD.Vector(positionX1,positionY1,positionZ1)
            v2=FreeCAD.Vector(positionX2,positionY2,positionZ2)
            App.Console.PrintMessage("Distance : "+str(dist(v1,v2))+"\n")
            App.Console.PrintMessage("------------------------"+"\n")    
            pas=0

    def removeSelection(self,document, object, element): # Delete the selected object
        App.Console.PrintMessage("removeSelection"+"\n")
    def setSelection(self,document):                     # Selection in ComboView
        FreeCADGui.Selection.removeObserver(s)           # Uninstalls the resident function
        App.Console.PrintMessage("removeObserver"+"\n")

pas = 0
s=SelObserver()
FreeCADGui.Selection.addObserver(s)          # install the function mode resident