概述
MDL號是每一種化學反應和變化的唯一識別號。它的格式是:RXXXnnnnnnnn,其中R代表一種化學反應,XXX代表擁有該化學反應記錄的資料庫,nnnnnnnn是8個數字。
開發語言
MicroStation Development Language
全稱:MicroStation Development Language
MDL是MicroStation的“套用引擎(Application Engine)”,MDL可以直接在MicroStation中運行並且表現為MicroStation本身的一部分。許多MicroStation的命令都可以在MDL中套用。
MDL的組成
標準C (ANSI C) 程式設計語言(當然有某些限制和擴展);
一整套開發工具(包括C編譯器、連線器、程式庫、資源編譯器和資源庫、Make程式以及調試工具);
MicroStation內部的用於執行MDL應用程式的偽碼解釋器;
MicroStation內部的MDL調試器;
大量的運行庫函式;
可以改變MicroStation各種行為的鉤子(Hooks)函式,所謂鉤子函式是指那些在某種事件發生時被MicroStation自動執行的函式;
GUI開發工具,可以用於開發基於Motif的圖形用戶界面(包括:對話框、下拉選單等);
資源管理器;
運行及卸載MDL應用程式
在MicroStation命令視窗中運行MDL套用時,可以指定一個套用名稱和任務識別碼(Task ID),其中前者是必須的。具體使用方法如下:
MDL LOAD│SILENTLOAD [DEBUG│NODEBUG] <套用名> [,<任務識別碼>] [<參數>]
MicroStation將首先在當前目錄下查找用戶在命令行中指定的套用,如果找不到,再到由MicroStation環境變數MS_EXE和MS_MDL指定的目錄下去尋找。
如果用戶未指定應用程式的擴展名,MicroStation將首先尋找無擴展名的檔案,其次才是.MA檔案和.RSC檔案。因此運行時最好鍵入應用程式的全名。
卸載 MDL套用的命令為:
MDL UNLOAD│SILENTUNLOAD [<任務識別碼>]
MDL套用還可以在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-up Element,類型代碼為66),即可在MicroStation打開DGN檔案後立即運行指定的MDL程式;
KEYIN套用:MDL KEYIN <套用名> <命令字串>。
MDL的高級卸載方式
在程式中使用標準C的 “exit”函式卸載程式;
MicroStation退出時可自動卸載MDL程式;
應用程式發生嚴重錯誤時會自動退出;
在一個套用中卸載另一個套用使用MicroStation內部函式mdlSystem_unloadMDLProgram;
在MDL調試器中使用QUIT命令可以卸載一個應用程式。
附:
MicroStation的開發工具
UCMs ………… User Commands
MicroCSL …… MicroStation Customer Support Library
MDL …………… MicroStation Development Language
MDL還是麥當勞的意思。麥當勞的英文全稱是McDonald's 現代的型男型女們通常也都會像暱稱肯德基KFC一樣的稱麥當勞做:MDL
MDL Memory Descriptor List
// I/O system definitions.
//
// Define a Memory Descriptor List (MDL)
//
// An MDL describes pages in a virtual buffer in terms of physical pages. The
// pages associated with the buffer are described in an array that is allocated
// just after the MDL header structure itself.
//
// One simply calculates the base of the array by adding one to the base
// MDL pointer:
//
// Pages = (PPFN_NUMBER) (Mdl + 1);
//
// Notice that while in the context of the subject thread, the base virtual
// address of a buffer mapped by an MDL may be referenced using the following:
//
// Mdl->StartVa | Mdl->ByteOffset
//
typedef struct _MDL {
struct _MDL *Next;
CSHORT Size;
CSHORT MdlFlags;
struct _EPROCESS *Process;
PVOID MappedSystemVa;
PVOID StartVa;
ULONG ByteCount;
ULONG ByteOffset;
} MDL, *PMDL;
#define MDL_MAPPED_TO_SYSTEM_VA 0x0001
#define MDL_PAGES_LOCKED 0x0002
#define MDL_SOURCE_IS_NONPAGED_POOL 0x0004
#define MDL_ALLOCATED_FIXED_SIZE 0x0008
#define MDL_PARTIAL 0x0010
#define MDL_PARTIAL_HAS_BEEN_MAPPED 0x0020
#define MDL_IO_PAGE_READ 0x0040
#define MDL_WRITE_OPERATION 0x0080
#define MDL_PARENT_MAPPED_SYSTEM_VA 0x0100
#define MDL_FREE_EXTRA_PTES 0x0200
#define MDL_DESCRIBES_AWE 0x0400
#define MDL_IO_SPACE 0x0800
#define MDL_NETWORK_HEADER 0x1000
#define MDL_MAPPING_CAN_FAIL 0x2000
#define MDL_ALLOCATED_MUST_SUCCEED 0x4000
#define MDL_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-decomp normal hl mdl file,。 解完後找到裡面的後綴SMD的檔案,其中一個是模型,用MS導入3DS,套用這個SMD里的骨骼,在MS里設定好權重,然後覆蓋這個SMD檔案。 接著選單tools-hl-Compile qc file 選擇剛才解壓縮出來的一個後綴QC的檔案把MDL重新打包就可以了。
.mdl
用rose生成的格式檔案,它支持UML用來畫用例圖,序列圖,狀態圖,類圖等
不能用powerdesigner打開 你可以下載一個rose看看