Macro Delta xyz/cs: Difference between revisions

From FreeCAD Documentation
(Updating to match new version of source page)
(Updating to match new version of source page)
(One intermediate revision by one other user not shown)
Line 1: Line 1:
<languages/>
<languages/>
<div class="mw-translate-fuzzy">
{{Macro/cs
{{Macro/cs
|Name=Macro_Delta_xyz
|Name=Macro_Delta_xyz
|Icon=Macro_Delta_xyz.png
|Translate=Macro Delta xyz
|Translate=Macro Delta xyz
|Description=dává hodnotu Delta mezi 2 body.
|Description=dává hodnotu Delta mezi 2 body.
Line 8: Line 8:
|Version=0.1
|Version=0.1
|Date=2013-11-29
|Date=2013-11-29
|FCVersion=All
|Download=[https://www.freecadweb.org/wiki/images/f/f4/Macro_Delta_xyz.png ToolBar Icon]
|SeeAlso=[[Part_Measure_Toggle_Delta/cs|Part Measure Toggle Delta]] [[File:Part_Measure_Toggle_Delta.svg|24px]]
}}
}}
</div>


==Description==
==Description==
Line 24: Line 26:


==Skript==
==Skript==

ToolBar Icon [[Image:Macro_Delta_xyz.png]]


'''Macro_Delta_xyz.FCMacro'''
'''Macro_Delta_xyz.FCMacro'''

Revision as of 16:01, 7 August 2019

Other languages:

Macro Delta xyz

Popis
dává hodnotu Delta mezi 2 body.

Version macro : 0.1
Date last modification : 2013-11-29
FreeCAD version : All
Download : ToolBar Icon
Autor: Mario52
Autor
Mario52
Download
ToolBar Icon
Odkazy
Verze
0.1
Datum poslední úpravy
2013-11-29
Verze FreeCAD
All
Výchozí zástupce
None
Viz též
Part Measure Toggle Delta

Description

Dává hodnotu Delta a vzdálenost mezi 2 body.

Jak používat

  1. Spusťte makro
  2. Vyberte první bod ve 3D zobrazení
  3. Vyberte druhý bod v 3D pohledu
  4. Klepnutím na tlačítko ComboView ukončete práci

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