共找到3條詞條名為MDL的結果 展開

MDL

MicroStation 開發語言

MDL有二種英文縮寫,其一是“三八線”,又叫韓朝軍事分界線(Military Democration Line)。其二是MicroStation的“應用引擎(Application Engine)”,MDL可以直接在MicroStation中運行,並且表現為MicroStation本身的一部分。許多MicroStation的命令都可以在MDL中應用。

軍事分界線


韓朝軍事分界線也即三八線,英文全稱Military Democration Line,詳細解釋參見詞條三八線。

開發語言


MicroStation Development Language
全稱:MicroStation Development Language
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看看