在 Python Console 的操作
先選定一個 edge,綠色文字是系統的訊息。
--------
>>> # Gui.Selection.addSelection('ThinkBoard_test','ThinkBoard_v38','Case.Part__Feature002.Edge530',-98,90.1992,-18.3352)
>>> obj = Gui.Selection.getSelection()[0]
>>> print(obj.Name)
Part__Feature002
>>> sel = Gui.Selection.getSelectionEx()[0]
>>> print("Object:", sel.Object.Name)
Object: Part__Feature002
>>> print("SubElement:", sel.SubElementNames)
SubElement: ('Edge530',)
>>> edge = sel.SubObjects[0]
>>> print("ShapeType:", edge.ShapeType)
ShapeType: Edge
>>> print("Length:", edge.Length)
Length: 157.20277538480389
>>> p1 = edge.Vertexes[0].Point
>>> p2 = edge.Vertexes[-1].Point
>>> print("Start =", p1)
Start = Vector (-98.0, -25.2200000000001, -5.36840007947745)
>>> print("End =", p2)
End = Vector (-98.0, 130.999999999999, -22.9190179798644)
>>> import math
>>> dx = p2.x - p1.x
>>> dy = p2.y - p1.y
>>> dz = p2.z - p1.z
>>> angle = math.degrees(math.atan2(dy, dx))
>>> print("XY angle =", angle, "deg")
XY angle = 90.0 deg
>>> angle = math.degrees(math.atan2(dy, dz))
>>> print("YZ angle =", angle, "deg")
YZ angle = 96.41004642679681 deg
寫一小段程式,計算角度
------------
import math
def edge_angle():
sel = Gui.Selection.getSelectionEx()
if not sel or not sel[0].SubObjects:
print("請先選取一條 Edge")
return
edge = sel[0].SubObjects[0]
if edge.ShapeType != "Edge":
print("選取的不是 Edge")
return
p1 = edge.Vertexes[0].Point
p2 = edge.Vertexes[-1].Point
dx = p2.x - p1.x
dy = p2.y - p1.y
dz = p2.z - p1.z
xy_length = math.sqrt(dx**2 + dy**2)
length = math.sqrt(dx**2 + dy**2 + dz**2)
angle = math.degrees(math.atan2(abs(dz), xy_length))
print("Edge:", sel[0].SubElementNames[0])
print("Length =", length, "mm")
print("XY projection =", xy_length, "mm")
print("Angle to XY plane =", angle, "deg")
return angle
------------
沒有留言:
張貼留言