Revit API鏡像變換探索【BIM】

在這篇文章中,我們將研究Revit API中的Instance.GetTransform方法。

Revit API 中的Instance.GetTransform方法 不包括反射,下圖展示了一個被鏡像的族實例以及等效的 GetTransform 值: 在這裏插入圖片描述

下面是Python代碼:

import sys
import clr
clr.AddReference('ProtoGeometry')
from Autodesk.DesignScript.Geometry import *
data= UnwrapElement(IN[0])

output=[]
for i in data:
    output.append(i.Location.Point)
    output.append(i.GetTransform().BasisX)
    output.append(i.GetTransform().BasisY)
    output.append(i.GetTransform().BasisZ)
    output.append("")
OUT = output

這在 Revit中是有意爲之的。

然而,從數學的角度來看,這是不應該的。維基百科的變換矩陣清楚地指出關於X軸反射的元件應具有不同的變換矩陣:

在這裏插入圖片描述

我們發現 Revit 對各種鏡像和翻轉操作使用了反射和旋轉的組合: 在這裏插入圖片描述

值得關注的是關於同一軸的水平雙翻轉控制和鏡像命令(紅色標註)之間的區別。除了導致相反的面對方向和手狀態的水平操作之外,這些操作幾乎相同。從圖形上看,它看起來是一樣的,但不是根據面對方向。

之前已經注意到單次翻轉控制更像是旋轉而不是鏡像(它不會得到反射的幾何形狀)。我們通過變換看到它被反射,但面對方向?用手狀態也被設置爲真。

通常來說,我認爲面對方向/手的狀態是族狀態的內部管理數據,即,內部幾何可以被反射,但族本身不是(除非它是通過變換)。

你可能需要查看翻轉狀態/旋轉和變換,以明確瞭解情況。這些控制很久以前我相信是爲門構建引入的,用來表示它們懸掛在哪一邊以及擺動的方向。當它們開始用於其他事物時,歧義就開始出現,即雙重否定(相同的最終表示,但有兩個定義)。


原文鏈接:探究Revit API反轉/鏡像/變換 — BimAnt

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章