如何擬合CAD物件為序列式表面


如何擬合CAD物件為序列式表面

Author
Message
Zemax_Taiwan
Zemax_Taiwan
Forum Member
Forum Member (1K reputation)Forum Member (1K reputation)Forum Member (1K reputation)Forum Member (1K reputation)Forum Member (1K reputation)Forum Member (1K reputation)Forum Member (1K reputation)Forum Member (1K reputation)Forum Member (1K reputation)

Group: Administrators / Zemax Staff
Posts: 214, Visits: 2.4K
摘要:本範例說明如何把CAD物件擬合為序列式表面,讓序列式系統模擬速度加快。
文章發布時間:February 19, 2017
作者:Michael Cheng

簡介
有時候OpticStudio的使用者會希望在序列式系統中模擬現有的CAD檔,一個最簡單的方法是把CAD檔直接透過混合模式加入到系統中,但有時候使用者還會希望能進一步把CAD檔擬合成特定公式,以進一步加快序列式系統計算,或是分析CAD檔表面的曲率。在OpticStudio中,並沒有工具可以直接做這樣的轉換,但是使用者可以透過優化功能,讓系統自動擬合出所需的表面。
以下我們將透過一個範例,說明如何把非序列物件擬合到序列式表面公式的係數。


操作流程
首先請下載並解壓縮附件的壓縮檔,請把當中的ZT_Fit_NSC_Object.zpl放到 “我的文件/Zemax/Macros/” 資料夾中,然後開啟NSeq.zar。
可以看到檔案中有兩個物件:Source Ray跟CAD Part: STEP/IGES/SAT。

此Source Ray物件的主要功用是發射光線,並讓巨集可以計算跟物件的交會點位置。這樣的測量方式主要是採用以下文章的說明:
如何取得非序列物件的矢高 (Sag) 資料 (http://forum.zemax.com/10732/Sag)
我們主要把這個巨集修改成會把讀取到的Sag資料,進一步輸出為評價函數設定,以讓後續可以在序列模式中擬合使用。
注意請把CAD檔想要量測的表面,朝向 “-Z” 的方向。如果可以,在CAD軟體中先把CAD檔的曲率中心放置在Z軸上,並讓中心軸平行於Z軸,會比較方便。


現在假設我們想要知道這個CAD檔如果用非球面公式 (Even Asphere) 表示時,大約的係數。請執行我們剛剛放到\Macros\資料夾中的巨集:


這個巨集會需要使用者輸入三個數字,前兩個分別是要計算的X與Y寬度,這裡要輸入一個大約與CAD檔一樣大的數字。我們兩個都輸入30。
http://forum.zemax.com/Uploads/Images/d044b171-1e7c-4cf2-bcf2-1d2b.png
http://forum.zemax.com/Uploads/Images/475c21a0-0846-4242-a21b-86cd.png

第三個數字是我們要在X與Y方向切幾個點來擬合。這邊我們輸入10。
http://forum.zemax.com/Uploads/Images/73f00b19-d28f-403f-ab8a-42e8.png

執行完畢後,巨集會在 /Zemax/MeritFunction/資料夾中產生一個Fitting.MF的檔案。這就是後面我們要用來擬合的評價函數設定檔。


接下來,請開啟一個新的檔案,並設定System Explorer > Aperture Value=2.0
http://forum.zemax.com/Uploads/Images/9b7bd462-585c-4ce7-8f7f-ceaa.png

然後開啟評價函數編輯器,如下:
http://forum.zemax.com/Uploads/Images/ae8040f5-2ee6-43f4-9abd-83a0.png
接著在點一下編輯器上方的讀取按鈕,選取剛剛產生的Fitting.MF。
http://forum.zemax.com/Uploads/Images/7ef22f8a-025b-471b-987d-9d07.png

讀取後評價函數看起會像下面這樣:


可以看到我們主要使用CONS、RAGZ、DIFF三個操作數來計算每個 (X、Y) 點。CONS是一個常數,代表我們剛剛在非序列中測量到的值。RAGZ代表的是讓系統根據不同的X、Y座標 (Px、Py) 發射一條光線,並計算他在IMAGE面上的落點的Z座標值。DIFF則設定把CONS與RAGZ的值相減,並且僅有DIFF有設定權重 (Weight)。OpticStudio優化時,目標就是把評價函數縮小。

接下來把像面改為想要擬合的公式,並把想要擬合的係數設為變數。
此範例中,我們把IMAGE面的Radius、4th Order Term設為變數。並把第1面的Thickness設為變數。


接下來,就可以直接優化了。OpticStudio會調整變數,直到評價函數盡可能小為止。 (也就是擬合面與CAD量測值差異盡可能小)


可以看到擬合出來的非球面的係數是Radius=48.111、4th Order Term=-1.507E-05,這跟我們當初製作這個非球面檔案時的設定一樣。
另外請注意優化後Merit Function的Error值是0.000011315,這個數字是所有檢測點上,擬合公式與CAD檔資料的誤差的方均根 (RMS) 值,這代表 “平均來說” 擬合後的面跟原本的面的sag差異是0.000011315。




曲面傾斜或不對稱
前面的方法中,我們假設曲面有軸對稱,對稱中心在Z軸上,且對稱軸平行於Z軸 (即曲面沒有傾斜)。如果曲面有未知的傾斜或位移時,可以依照以下方式處理:
1. 在IMAGE面前面新增一個面,設定為Coordinate Break,此時IMAGE的面編號是3
2. 把Coordinate Break的Decenter X/Y與Tilt X/Y共四個參數設為變數
3. 重新載入Fitting.MF檔,然後再次優化。

舉例來說,我們重新打開NSeq.ZAR,然後給此CAD物件Tilt About X=5、Tilt About Y=7。

然後再執行一次巨集,這次分別輸入20、20、10,注意範圍不能取太大,否則會取樣到錯誤的區域,導致擬合有誤差。請看下圖示意:


上圖中左側的畫面中紅色的區域是透鏡的側面,由於透鏡有旋轉,因此巨集計算的區域如果太大,有可能取樣到這一部分,而計算錯誤。因此我們只設定取樣寬度20 x 20,避開此區域。

執行巨集產生Fitting.MF之後,依照前一個章節的方式開啟新檔 > 設定Aperture Value = 2 > 在IMAGE面之前加入一個Coordinate Break > 設定Decenter X/Y、Tilt About X/Y以及Even Asphere的Radius、4th Order Term為變數 > 優化

可以看到優化後確實得到Tilt About X=5以及Tilt About Y=7,並且Radius與4th Order Term的數值與前一個章節未傾斜時得到的一樣。



注意此方法假設CAD檔的曲面大致上可以用序列式中的一些公式擬合,如果表面非常的不規則,或是有劇烈的落差時,或是如前面所述,取樣到非目標表面 (如透鏡邊緣) 時,都會造成結果誤差大 (即評價函數值大)。


Attachments
Fitting CAD.zip (46 views, 103.00 KB)
GO


Similar Topics


Login
Existing Account
Email Address:


Password:


Select a Forum....



































Zemax Users Forum


Search