數星期前,有人問說,如何才能保證零件可基于世界坐标系進行設計,而又不影響建模
恰巧是昨晚,吾之小夥伴check一個坐标系變換功能有出入,我随便推導下,分享一番,還望少批評多鼓勵。
【背景】
存在即是合理的,在裝配時,零部件自身的坐标系和世界坐标系默認是重合的,因此,若産品是基于世界坐标系進行設計的,由于基準一緻,裝配在一塊就無須再進行約束操作。當然,搞事情難免有所束縛,也就是會影響到建模效率,不能忍也。因而,才會衍生出開發需求,吾之其一方案:基于零件内部軸系進行設計,按照固有方式進行裝配約束(會更改零件局部坐标系),最後程序計算零件姿态,将零件局部坐标系和世界坐标系重合,僅由更改軸系參數保證位置位姿。
軸系圖、裝配結構圖
直奔此本目的,對問題進行抽象有:軸系A在坐标系B下的表示為P,坐标系B在世界坐标系C下的表示為Q,求取軸系A在C下的表示M。有結論:M=Q*P
Q通過GetAbsPosition,直接獲取其在世界坐标系下的表示
P通過CATIMf3DAxisSystem接口,間接構建其在軸系B下的表示
【驗證】
通過程序進行了結論驗證,執行前後效果如下圖所示。
執行前,局部坐标系未與世界坐标系重合
執行後,兩坐标系重合,軸系參數發生變化
【Reference】
1. 坐标系表征
坐标系A在坐标系B下的表征用4階齊次矩陣表示:
矩陣表征
其中, X軸向量為(ax,ay,az)、Y軸向量為(bx,by,bz)、Z軸向量為(cx,cy,cz)、原點坐标P為(px,py,pz)
2. 求取坐标系值
上述坐标系是個4×4的矩陣,在CAA中對應着專門的數據類型: CATMathTransformation,通過該類可以對矩陣進行求逆、點乘、叉乘等操作。通過CATMathTransformation::SetCoef()和CATMathTransformation::GetCoef()可以設置和獲取一個坐标系矩陣的值。該數據從CATIProduct的接口獲取而來的,其中如SetAbsPosition操作的則是當前對象相對于世界坐标系的值,SetPosition則需要給定參考對象。讀寫關系具體如下圖所示。
裝配關系變換
3. 求取軸系對象
軸系的值可以通過CATIMf3DAxisSystem(GetOrigin、GetVectors)接口進行操作。具體使用方法見CAA Help Viewer和Encyclopedia。不贅述。
歡迎關注: CAA二次開發 (微信公衆号)
開發深似海、疑義相與析!
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!