Macro Delta xyz

From FreeCAD Documentation
Revision as of 16:01, 7 August 2019 by FuzzyBot (talk | contribs) (Updating to match new version of source page)
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Macro Delta xyz

Beschreibung
Gibt die Delta-Werte und den Abstand zwischen zwei Punkten an.

Versionsmakro : 0.1
Datum der letzten Änderung : 2013-11-29
FreeCAD version : All
Herunterladen : ToolBar Icon
Autor: Mario52
Autor
Mario52
Herunterladen
ToolBar Icon
Links
Macro-Version
0.1
Datum der letzten Änderung
2013-11-29
FreeCAD-Version(s)
All
Standardverknüpfung
None
Siehe auch
Part Measure Toggle Delta

Beschreibung

Gibt die Delta-Werte und den Abstand zwischen zwei Punkten an.

Wie verwende ich

  1. Starten Sie das Makro
  2. Wählen Sie den ersten Punkt in der 3D-Ansicht
  3. Wählen Sie den zweiten Punkt in der 3D-Ansicht
  4. Klicken Sie zum Beenden in ComboView

Skript

ToolBar Icon

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