一步步學習MDL 0

2022-08-20 03:27:10 字數 1834 閱讀 7723

本系列部落格將由淺入深地幫助您學習mdl。按照本部落格的步驟,相信您能很快地掌握這一開發microstation應用程式的最主要方法。本部落格有中、英文兩種版本,分別發布在中國bdn社群部落格和bentley developer netwrok社群部落格。

第零章、介紹與必備條件

隨著時間的推移,mdl也在與時俱進。今天的mdl已經完全可以基於c++來開發,因而我們可以採用微軟的visual studio作為開發工具來生成本機**的dll,同時,為了保留mdl的一些特性(如命令表、mdl特有的資源等),仍然需要生成乙個.ma檔案。我們稱這種新的mdl為nativecode mdl,這裡的mdl不再是microstation development language而是microstation development library(microstation開發庫)。nativecode mdl能使您採用物件導向的程式設計方式來寫**,還能使您直接呼叫任何vc++中可以呼叫的功能。大多數新的microstation開發功能(如xattribute、點雲、i-model等)都採用類的形式提供,這些新的功能也要求我們必須使用nativecode mdl來開發應用。puremdl、nativecode再加上新的開發手段addins三者的比照如下圖所示。

為了進一步分清楚puremdl和nativecode mdl,下圖分別列出了兩者的生成過程。其中的mcomp.exe、mlink.exe、rsctype.exe、rcomp.exe、rlib.exe都是由bentley提供的執行程式,當您安裝完microstation sdk後在…\microstation\mdl\bin目錄下就能找到它們。而cl.exe和link.exe則是來自vs的編譯器和聯結器程式,在您的vs的…\vc\bin目錄下能找到。從microstation sdk v8iss2開始,所附帶的例子都改為nativecode mdl了,而以前版本的sdk中所附帶的例子還是puremdl的。

生成puremdl應用程式的過程

生成nativecode mdl應用程式的過程

安裝完sdk後在c:\program files (x86)\bentley\microstation v8i (selectseries)\documentation目錄下會有三個重要的開發幫助文件: ① mdlprogrammerguide.chm:該文件是程式設計師指南,詳細介紹了什麼是mdl、如果建立並執行乙個應用程式、microstation中的資源、mfc對話方塊、i-model開發以及如何使用嚮導來開發應用程式; ②mdlapifunctionreference.chm:該文件是mdl的c api參考,裡面列出了上千個基於c的mdl函式及其詳細說明; ③microstationapi.chm:該文件是新的mdl c++ api參考,裡面列出了數百個在nativecode mdl中可用的類。

在c:\program files (x86)\bentley\microstation v8i (selectseries)\microstation目錄下有兩個重要開發文件您可能會用到: ④readme_microstationsdk.chm:microstation各版本中的mdl的變化; ⑤microstationvba.chm:該文件在安裝microstation後就存在了,不屬於sdk安裝的內容。其本意是為microstationvba程式設計服務的,不過,如果您採用com方式程式設計的話,有關microstationdgn物件模型的內容可從該文件中查到。這一部分內容可參考我的另一系列部落格learning microstation addins step by step。

在nativecode mdl程式中,您既可以呼叫c api也可以呼叫c++ api。目前這兩種api並行使用,新功能基本上都是在c++ api中才有,而有些舊有的功能只有在c api中才有。還有一些功能兩個裡面都有。我們在此系列部落格中將盡量使用c++ api來寫**。

一步步學習電子維修

一步步學習電子維修 第一節 電是什麼 1 電子技術,很多人感興趣,不過入門卻非常困難,我總結了下原因,1 屬於微觀,看不見摸不著 2 缺少實際動手環境 3 學校教育或培訓教育問題,填鴨式的灌輸,越來越煩,最終一點興趣也沒有了。2 針對以上問題,這裡都有絕招解決,俗話說一招鮮,吃遍天,看到這篇文章的同...

freeRTOS 一步步學習(二)

freertos 一步步學習 二 任務狀態 應用程式可以包含多個任務。如果執行應用程式的微控制器只有乙個核 core 那麼在任意給定時間,實際上只會有乙個任務被執行。這就意味著乙個任務可以有乙個或 兩個狀態,即執行狀態和非執行狀態。freertos 的排程器是能讓任務切入切出的唯一實體。任務建立 x...

freeRTOS 一步步學習(三)

freertos 一步步學習 二 任務 狀態 阻塞狀態 如果乙個任務正在等待某個事件,則稱這個任務處於 阻塞態 blocked 阻塞態是非執行態的乙個子狀態。任務可以在進入阻塞態以等待同步事件時指定乙個等待超時時間,這樣可以有效地實現阻塞狀態下同時等待兩種型別的事件。xtickstodelay 延遲...