MDL[MicroStation 開發語言]

MDL[MicroStation 開發語言]

MDL是MicroStation的“套用引擎(Application Engine)”,MDL可以直接在MicroStation中運行[Windows組成部分],並且表現為MicroStation本身的一部分。

基本信息

簡介

MDLMDL
全稱:MicroStationDevelopmentLanguage

MDL是MicroStation的“套用引擎(ApplicationEngine)”,MDL可以直接在MicroStation中運行並且表現為MicroStation本身的一部分。許多MicroStation的命令都可以在MDL中套用。

組成

標準C(ANSIC)程式設計語言(當然有某些限制和擴展);

一整套開發工具(包括C編譯器、連線器、程式庫、資源編譯器和資源庫、Make程式以及調試工具);

MicroStation內部的用於執行MDL應用程式的偽碼解釋器;

MicroStation內部的MDL調試器;

大量的運行庫函式

可以改變MicroStation各種行為的鉤子(Hooks)函式,所謂鉤子函式是指那些在某種事件發生時被MicroStation自動執行的函式;

GUI開發工具,可以用於開發基於Motif的圖形用戶界面(包括:對話框、下拉選單等);

資源管理器;

應用程式

在MicroStation命令視窗中運行MDL套用時,可以指定一個套用名稱和任務識別碼(TaskID),其中前者是必須的。具體使用方法如下:

MDLLOAD│SILENTLOAD[DEBUG│NODEBUG]<套用名>[,<任務識別碼>][<參數>]

MicroStation將首先在當前目錄下查找用戶在命令行中指定的套用,如果找不到,再到由MicroStation環境變數MS_EXE和MS_MDL指定的目錄下去尋找。

如果用戶未指定應用程式的擴展名,MicroStation將首先尋找無擴展名的檔案,其次才是.MA檔案和.RSC檔案。因此運行時最好鍵入應用程式的全名。

卸載MDL套用的命令為:

MDLUNLOAD│SILENTUNLOAD[<任務識別碼>]

MDL套用還可以在MDL對話框中裝載運行,通過MDL對話框也可以卸載MDL套用。

高級調用方式

在一個MDL套用中調用另一個MDL套用:使用MicroStation的內部函式mdlSystem_LoadMDLProgram;

在MicroStation初始化時(打開DGN檔案之前或者進入圖形模式之前)調入MDL套用:使用環境變數MS_INITAPPS和配置變數MS_DGNAPPS,如果要調用多個MDL程式,用分號(;)隔開,語法如下:MS_DGNAPPS=應用程式名[,任務識別碼][/D];

在DGN檔案打開時運行MDL套用:使用mdlSystem_CreateStartupElement函式在DGN檔案中創建一個啟動元素(Start-upElement,類型代碼為66),即可在MicroStation打開DGN檔案後立即運行指定的MDL程式;

KEYIN套用:MDLKEYIN<套用名><命令字串>。

高級卸載方式

在程式中使用標準C的“exit”函式卸載程式

MicroStation退出時可自動卸載MDL程式;

應用程式發生嚴重錯誤時會自動退出;

在一個套用中卸載另一個套用使用MicroStation內部函式mdlSystem_unloadMDLProgram;

在MDL調試器中使用QUIT命令可以卸載一個應用程式。

附:

MicroStation的開發工具

UCMs…………UserCommands

MicroCSL……MicroStationCustomerSupportLibrary

MDL……………MicroStationDevelopmentLanguage

MDLMemoryDescriptorList

//I/Osystemdefinitions.

//

//DefineaMemoryDescriptorList(MDL)

//

//AnMDLdescribespagesinavirtualbufferintermsofphysicalpages.The

//pagesassociatedwiththebufferaredescribedinanarraythatisallocated

//justaftertheMDLheaderstructureitself.

//

//Onesimplycalculatesthebaseofthearraybyaddingonetothebase

//MDLpointer:

//

//Pages=(PPFN_NUMBER)(Mdl+1);

//

//Noticethatwhileinthecontextofthesubjectthread,thebasevirtual

//addressofabuffermappedbyanMDLmaybereferencedusingthefollowing:

//

//Mdl->StartVa|Mdl->ByteOffset

//

typedefstruct_MDL{

struct_MDL*Next;

CSHORTSize;

CSHORTMdlFlags;

struct_EPROCESS*Process;

PVOIDMappedSystemVa;

PVOIDStartVa;

ULONGByteCount;

ULONGByteOffset;

}MDL,*PMDL;

#defineMDL_MAPPED_TO_SYSTEM_VA0x0001

#defineMDL_PAGES_LOCKED0x0002

#defineMDL_SOURCE_IS_NONPAGED_POOL0x0004

#defineMDL_ALLOCATED_FIXED_SIZE0x0008

#defineMDL_PARTIAL0x0010

#defineMDL_PARTIAL_HAS_BEEN_MAPPED0x0020

#defineMDL_IO_PAGE_READ0x0040

#defineMDL_WRITE_OPERATION0x0080

#defineMDL_PARENT_MAPPED_SYSTEM_VA0x0100

#defineMDL_FREE_EXTRA_PTES0x0200

#defineMDL_DESCRIBES_AWE0x0400

#defineMDL_IO_SPACE0x0800

#defineMDL_NETWORK_HEADER0x1000

#defineMDL_MAPPING_CAN_FAIL0x2000

#defineMDL_ALLOCATED_MUST_SUCCEED0x4000

#defineMDL_MAPPING_FLAGS(MDL_MAPPED_TO_SYSTEM_VA|\

MDL_PAGES_LOCKED|\

MDL_SOURCE_IS_NONPAGED_POOL|\

MDL_PARTIAL_HAS_BEEN_MAPPED|\

MDL_PARENT_MAPPED_SYSTEM_VA|\

MDL_SYSTEM_VA|\

MDL_IO_SPACE)

模型包

簡介

MDL檔案並不是單純的模型檔案,他是一個檔案包,裡面包含模型,貼圖,所有動作,以及腳本。

編繪

MDL檔案並不是單純的模型檔案,他是一個檔案包,裡面包含模型,貼圖,所有動作,以及腳本。所以要想建立一個MDL檔案是很麻煩的,可以找一個現成的MDL檔案(從CS或者半條命里找),用Milkshape的外掛程式給解壓縮,選單tools-hl-decompnormalhlmdlfile,。解完後找到裡面的後綴SMD的檔案,其中一個是模型,用MS導入3DS,套用這個SMD里的骨骼,在MS里設定好權重,然後覆蓋這個SMD檔案。接著選單tools-hl-Compileqcfile選擇剛才解壓縮出來的一個後綴QC的檔案把MDL重新打包就可以了。

.mdl

用rose生成的格式檔案,它支持UML用來畫用例圖,序列圖,狀態圖,類圖等;

不能用powerdesigner打開你可以下載一個rose看看。

相關詞條

相關搜尋

熱門詞條

聯絡我們