CATIA里居然能畫可以轉的魔方?

在CATIA軟件中,畫個矩形草圖,拉伸個凸臺,得到一個立方體,即使對于新手都是再熟悉不過的操作了。

所以,下面的魔方模型,相信絕大多數小伙伴都能畫出來——無非就是做27個立方體,倒個角,再給各個面設置對應的顏色。

CATIA里居然能畫可以轉的魔方?的圖1

但如何實現下面的旋轉效果,恐怕會一下子難倒一大片英雄好漢。

CATIA里居然能畫可以轉的魔方?的圖2

可能有點小伙伴會想到用DMU的KIN運動機構仿真去做,但不論是運動副的選擇,還是指定層的9個塊一起轉,都不是看起來那么容易的事情(事實上小編現在也沒有太好的思路用DMU實現)。

不過,既然萌生了這個想法,如果不把它做出來,它就會一直是小編的一個心病。

回想一下:小學時,老師告訴你3-5無法計算,但后來你知道了負數;初中時,老師告訴你負數不能開平方,但后來你知道了虛數……

所以,有些事情之所以你認為不可能,是因為你的認知、你的知識面還沒有廣到覆蓋那個領域

之前,小編覺得有些運動模擬DMU無法實現。但當小編掌握了Automation二次開發后,對于運動的實現,DMU中有沒有某種運動副就不那么重要了。因為我們可以通過VBA代碼控制哪些Product,按怎樣的規則,隨意運動。

在正式開始講解之前,我們先通過一個動圖看看最終的效果。

CATIA里居然能畫可以轉的魔方?的圖3

接下來,小編來簡述一下原理:

1.由于各個小方塊的位置不固定,可旋轉至各個位置。因此我們不能做“Part1是面向我們的面左上角那塊”這種絕對的指定。對應的解決對策是:我們每次執行動作之前,都獲取一下各個方塊Part的裝配坐標,并通過坐標值判斷其屬于哪一層,進而確定需要旋轉的目標Part。

2.確定了目標值之后,我們就可以利用Product下的相關屬性方法,實現其繞指定軸系的旋轉。

沒錯,以上就是完整的思路。到這里,悟性比較高且熟悉VBA的同學,應該已經可以查幫助寫出代碼實現上面視頻中的功能了。

不過,小狼今天將帶大家從零開始制作。

首先是建模。由于每個小方塊都要涂不同的顏色,所以這里,我們需要在27個Part里畫同樣尺寸的立方體(這里我們假定立方體的中心在原點,邊長為10mm)。給棱邊倒個角會顯得更像是真實的魔方,當然你不倒角,只是6個尖棱也未嘗不可。

CATIA里居然能畫可以轉的魔方?的圖4

然后,我們把這27個Part裝到一個Product里,很顯然它們會重合到一起。這個時候,你需要把它們一個一個移到對應的位置。

讓裝配里的某個組件進行指定方向、距離、角度的移動,有兩種方法:

第一種方法,使用用羅盤。我們可以雙擊羅盤,指定拖動羅盤時,移動或旋轉的步長。然后把羅盤拖到組件上,選中需要移動的組件使羅盤變綠,再拖動羅盤就可以精確移動了↓

CATIA里居然能畫可以轉的魔方?的圖5

第二種方法,使用DMU Navigator中的平移旋轉命令。

CATIA里居然能畫可以轉的魔方?的圖6

但不管用哪種方法,我們的目的是把它移成下面的樣子,同時注意整個魔方的中心點(中間那個塊)是沒移動的,換句話說整個魔方的中心在裝配原點。

并且,為了后面交流更方便,我們來給每個面取個名字,約定如下:

CATIA里居然能畫可以轉的魔方?的圖7

模型建完后,接下來就是后端的代碼邏輯了。首先我們在VBA里插入一個窗體,截個圖作為背景,并繪制一些按鈕。并且我相信,你的界面肯定不會比我的更丑…

CATIA里居然能畫可以轉的魔方?的圖8

然后我們雙擊窗體或按鈕進到代碼編寫界面。

首先,在最上面,我們定義一些公共變量和常量。

CATIA里居然能畫可以轉的魔方?的圖9

然后在窗體初始化Initialize事件里,對一些全局變量進行賦值。

CATIA里居然能畫可以轉的魔方?的圖10

由于控制上下、前后、左右每一層的順、逆時針轉動的代碼大致相同(僅某些數值)有區別。在控制6個面*2個方向,共計12個按鈕的Click事件里都寫類似大段的代碼,顯然是不明智的。

為此,我們定義一個函數,來實現旋轉功能。并在不同按鈕的Click事件里調用該函數,為其輸入不同參數,以實現控制不同面不同方向的旋轉。這個函數也是整段代碼的核心。

知識,就是金錢。

所以,如果你想看到完整的含注釋的源代碼講解,或者需要進行相關答疑的服務,可以閱讀下面的付費內容(含代碼講解及答疑群號)。

友情提示:沒有VBA基礎的同學請謹慎付費,可以先到ke.qq.combilibili.com搜索CATIA小狼,上面有小編錄的免費的VBA入門視頻教程。

以下內容為付費內容,請購買后觀看

核心代碼講解,及源文件獲取方式

App下載
技術鄰APP
工程師必備
  • 項目客服
  • 培訓客服
  • 平臺客服

TOP

31
16
1