Ask an Engineer: Making a Surface DLL

  • 29 April 2022
  • 3 replies

Userlevel 5
Badge +2

Topic: Creating a user-defined surface using DLLs

Live solution reveal and Q&A: May 19th, 8am - 9am PDT (See the attachments for a calendar invite.)

Engineer: @Sandrine Auriol - Lead Application Engineer at Ansys Zemax


This month, Ask an Engineer looks a little different! Give the challenge a try to learn more about DLLs, then come back on May 19th to discuss! Submit your solution or questions as a reply to this thread.


Challenge opens: May 2nd 

Submit your code as a reply by: May 18th, EOD

Challenge:  OpticStudio surfaces are typically represented with continuous curves - either given by a smooth sag equation, or a spline which connects individual sag points. However, discrete steps may be needed to best represent an optical surface. For example, when manufacturing an optic with a 3D printer or lathe, the tool may generate the shape through the use of different zones of sag data, instead of a smooth profile, and you may want to represent a rough first-pass prototype in your simulation. In this case, a User Defined surface is preferable over, say, a Grid Sag as it will allow for this type of non-continuous sag information.

This month, we challenge you to create a User Defined Surface which has a sag profile that is step-wise in YZ. The profile should be given by an external TXT file. When viewing the surface in the Surface Sag plot, the output should be similar to the following:


False Color plot of the surface sag profile of the User Defined surface



  • Calendar invite for May 19th. This will connect you to the Teams meeting where @Sandrine Auriol will present her solution and answer your questions.
  • A sample TXT file representing the radial sag information the DLL should refer to. 


Questions? Comments? Ready to submit your code? Reply to this thread. Replies may be posted in any supported language (English, Chinese, Japanese). Once the event is concluded, the thread will be closed. 

The Ask an Engineer live event will be limited to discussing this challenge and general DLL questions. For questions on troubleshooting personal DLLs or OpticStudio files, please submit a ticket with Zemax Support. In that case, your license support status will be considered. 

3 replies

Userlevel 1
Badge +1

テーマ: Ask an Engineer:ユーザ定義面 DLL の作成

ライブ解説および Q&A 回答日時:5月19日午前8時~午前9時(米国太平洋標準時)

エンジニア: @Sandrine Auriol - Ansys-Zemax リードアプリケーションエンジニア


今月の Ask an Engineer は今までと方法が少々異なります。DLL について詳細を知るために、ぜひ課題に挑戦しましょう!5月19日 にはライブで解説および Q&A があります。 このスレッドに返信する形で、解決策や質問を投稿してください


Click “Show content” to read the Japanese translation of the challenge.

課題への挑戦開始日: 5月2日

コード提出期限日: 5月18日


OpticStudio の面は通常、滑らかなたるみ式、または個々のたるみ点を結ぶスプラインによって与えられる連続曲線で表現されます。しかし、光学面を最適に表現するためには、離散的なステップが必要な場合があります。例えば、3Dプリンターや旋盤で光学部品を製造する場合、工具は滑らかなプロファイルではなく、異なるゾーンのサグデータを使用して形状を生成することがあり、シミュレーションでは粗いファーストパスのプロトタイプを表現したいと思うかもしれません。このような場合、このような非連続的なサグ情報を使用できるため、グリッドサグよりもユーザ定義サーフェスの方が望ましいと言えます。

今月は、YZ 方向に段階的に変化するサグプロファイルを持つユーザ定義面を作成することに挑戦します。プロファイルは外部の TXT ファイルから取得します。面を面のサグプロットで表示すると、以下のように出力します。





  • 5月19日 のカレンダーの招待状です。これは @Sandrine Auriol が解決策を発表し、ユーザ様の質問に答えるチームミーティングにつなぎます。
  • DLL が参照すべき半径方向のたるみ情報を表す TXT ファイルのサンプルファイルです。


質問やコメント、コードを提出する準備はできましたか?このスレッドに返信してください。返信は、サポートされている言語 (英語、中国語、日本語) で投稿できます。イベント終了後、このスレッドは閉鎖されます。

Ask an Engineer ライブイベントは、この課題への挑戦と一般的な DLL に関する質問に限定されます。個人用 DLL または OpticStudio ファイルのトラブルシューティングに関する質問については、Zemax サポートにチケットを提出してください。その場合、お客様のライセンスサポート状況が考慮されます。



Ask an Engineer - 詢問工程師系列:使用DLL创建用户定义的表面



工程师@Sandrine Auriol - Ansys Zemax首席应用工程师


这个月,Ask an Engineer环节将有所不同!我们提供了以下挑战供用户尝试,以便用户了解有关DLL的更多信息,然后在5月19日展开讨论!请提交您的解决方案或问题作为对此主题的回复。


Click “Show content” to read the Chinese translation of the challenge.








  • 5月19日在线活动邀请。这会方便您直接连接到活动,@Sandrine Auriol 将在该会议上展示她的解决方案并回答您的问题。
  • 代表DLL应参考的径向矢高信息的样本TXT文件。




Ask an Engineer在线活动将仅限于讨论这一挑战和DLL常规问题。有关对个人DLL文件或其他OpticStudio文件的故障排除问题,请向Zemax Support提交问题,我们会根据您授权的状态来提供支持


Dear Sandrine,


I am not able to download the attachments. As mentioned in the text, the attachments include calendar invite for May 19th. Could you please provide the joining link in another way, possibly by posting it here?

I would like to make sure that I can join this meeting.


Best regards,