Download as ppt, pdf, or txt
Download as ppt, pdf, or txt
You are on page 1of 34

BÁO CÁO CHUYÊN ĐỀ I

LẬP TRÌNH MDL

Giáo viên giảng dạy : KS.Trần Trung Chuyên


Sinh viên thực hiện : Trần Nhật Tâm
Nguyễn Mai Phương
Lớp : Tin học Trắc địa K47
Mở đầu
• MDL – “MicroStation Development Language
được giới thiệu trong Microstation v.4 năm
1991 như là một giải pháp cho việc phát triển
những ứng dụng của Microstation .
• MDL là một thế mạnh của Microstation về
khía cạnh lập trình. Để phát triển các ứng dụng
chuyên nghiệp trong Microstation cần nắm
được những yếu tố cơ bản của lập trình MDL
Nội dung chính
Mở đầu
I. Cơ sở lý thuyết
1. Tổng quan về MDL
2. MDL framework
3. MDL API
4. Cách tạo file.bat để biên dịch chương trình
nguồn
II. Chương trình minh hoạ
Kết luận
Tổng quan về MDL
• MDL dùng C làm nền tảng và sử dụng các tính
năng cần thiết như chương trình dịch, linker,
runtime, giao diện đồ họa người dùng.v.v. để
phát triển Microstation.
• MDL cho phép phát triển những ứng dụng có
khả năng tương tác với nhau chạy trên
MicroStation.
• Phát triển các ứng dụng có khả năng thích nghi
với các chuẩn phẩn cứng khác nhau.
Các đặc điểm của MDL
• Chương trình biên dịch của MDL biên dịch các file
gốc của C thành các code giả được hiểu bởi
MicroStation.
• Chương trình thông dịch code giả trong MicroStation
thực hiện các chương trình MDL.
• Một môi trường phát triển hoàn thiện bao gồm các
công cụ sau:
– Trình biên dịch C, thư viện và bộ kết nối
– Chương trình biên dịch tài nguyên và thư viện
– Chương trình gỡ rối
– Tạo thành chương trình
Các đặc điểm của MDL

• Môi trường runtime cung cấp các hàm tiêu


chuẩn của hệ điều hành như truy nhập file,
quản lí và bảo vệ bộ nhớ.
• MDl cung cấp công cụ cho việc phát triển
giao diện đồ hoạ của người sử dụng không
phụ thuộc vào hệ thống.
• Được thiết kế để tạo thành các ứng dụng dễ
dàng chuyển từ nền MicroStation sang hệ
thống khác
MDL framework
MDL framework
• State machine engine : theo dõi tất cả các sự
kiện, kiểm tra trạng thái của nó và tác động trở
lại sự kiện.
• MDL runtime : hỗ trợ sự thực thi của ứng
dụng MDL.
• MDL virtual machine : mã nguồn MDL
không được biên dịch trực tiếp trong CPU mà
được đưa vào code giả được biên dịch bởi
MicroStation MDL virtual machine
MDL framework
• MDL debuger : hoạt động theo kiểu
“command-line”, không phụ thuộc vào
platform
• MDL Utilities
• Các kiểu file nguồn
MDL Utilities

Tên tiện ích Mô tả

Làm cho các tiện ích được sử dụng trong biên dịch, liên kết tự
Bmake
động, và xây dựng tài nguyên cho các ứng dụng phức tạp.

Là chương trình biên dịch được sử dụng để dịch file nguồn


Mcomp
MDL.
Các thư viện được sử dụng để quản lý tệp hình ảnh trong file
Mlib
thư viện.

Mlink Linker được dùng để kết hợp các đối tượng vào chương trình.

Chương trình dịch tài nguyên được dùng để biên dịch tài
Rcomp
nguyên nguồn.
Thư viện tài nguyên được dùng để trộn nhiều file tài nguyên
Rlib
vào một file.

Dùng để tạo ra sự mô tả các kiểu cho một nhóm các hàm built-
Rsctype
in được sử dụng trong biểu ngữ C trong runtime.
Các kiểu file nguồn
Kiểu file Mô tả
Được tham chiếu đến như tệp tiêu đề hay tệp include. Tệp tiêu
.h
đề được khai báo trong file .mc, .mt và .r.

Được tham chiếu đến như tệp ứng dụng, đây là file nguồn nơi
.ma tất cả các tài nguyên được liên kết với nhau trong một ứng
dụng. File ứng dụng có thể được tạo ra bởi mlink hay rlib.

.mc Được tham chiếu đến như nguồn MDL.

Được tham chiếu đến như makefile, dược đọc bởi bmake để
.mke
biết cách thức xây dựng một ứng dụng.

Được tham chiếu đến như file thư viện, được tạo ra và cập
.ml
nhật bởi mlib.

.mm Được tham chiếu đến như map file, được tạo ra bởi mlink.
Được tham chiếu đến như file đối tượng, được tạo ra bởi
.mo
mcomp. Những file này là đầu vào của mlink.

Được tham chiếu đến như file chương trình. Đây là một
kiểu file tài nguyên mà có thể trộn với các tài nguyên
.mp
khác sử dụng rlib.File chương trình được tạo ra bởi
mlink.

Được tham chiếu đến như type file, file nguồn dược sử
dụng để tạo định nghĩa kiểu cho các biểu thức C trong
.mt
hàm built-in. rsctype đọc type file và tạo ra file tài
nguyên nguồn

Được tham chiếu đến như file tài nguyên nguồn, chẳng
.r hạn như sự mô tả hộp thoại, bảng lệnh...rcomp đọc các
file tài nguyên nguồn và tạo ra file tài nguyên.

Được tham chiếu đến như file tài nguyên, rcomp tạo ra
.rsc
các file tài nguyên này.
MDL API
• Giao diện lập trình ứng dụng MDL (MDL API) là một
tập hợp các hàm và biến được khai báo mà trong đó
Microstation cung cấp chủ yếu cho người lập trình
phần mềm.
• Các hàm của MDL API thuờng được coi như các hàm
gắn liền (built-in)
• Có thể chia các hàm API thành 4 nhóm:
– Hàm của cơ chế CAD
– Hàm của ứng dụng và hệ thống
– Hàm cơ sở dữ liệu
– Giao diện người dùng đồ họa (GUI)
MDL API
MDL API

• Cấu trúc chung của hàm như sau :


mdl + lĩnh vực + gạch dưới + thao tác
Ví dụ: mdlFile_create, mdlLineString_create
• Mã nguồn viết bằng ngôn ngữ C sẽ được
chương trình biên dịch chuyển thành
pseudocodes (code giả - viết tắt là p-code)
được thông dịch bởi Microstation runtime.
Tổng quan về các hàm built-in trong
API của MDL
• Hàm các đối tượng có thể hiển thị được
• Tìm kiếm đối tượng
• Hàm container
• Giao diện người dùng
• Tài nguyên
• Thao tác
• Hệ thống
Hàm các đối tượng có thể hiển thị được
Kiểu API # File fdf Tiền tố trong hàm Chú giải
API
B-spline 15 msbsplin.fdf mdlBspline_ Dùng để thiết lập và quản lí B-
functions spline
Accudraw 1 mdllib.fdf mdlAccudraw_ để Accudraw đạt được sự tối
ưu
Cell functions 42 mscell.fdf mdlCell_ Dùng để đọc, lặp lại, tạo
mdlCellIterator_ thành, thực hiện hoặc xoá
Shared Cell 21 msscell.fdf mdlSharedCell_ các cell trong thư viện cell,
functions và để đặt các cell vào file
design
Element 2 changetrack.f mdlChangeTrack_ Cho phép giám sát mọi sự thay
change tracking df đổi trong file DGN
Element creation 20 mselemen.fdf mdl..._create Dùng cho sự tạo thành các đối
tượng ( Arc, Circle, Cone,
Curve, Ellipse, Line,
LineString, PointString,
Shape, Surface, Text,
TextNode, ComplexChain)
Element 13 mselemen.fdf mdl..._extract Để tách thông tin từ các đối
information tượng cụ thể.
extraction

Element common 43 mselemen.fdf mdlElement_ Dùng cho thao tác trên các đối
functions tượng đơn phổ biến
Element 4 msmisc.fdf mdlIntersect_ Đáp ứng như API cho các đối
intersection tượng giao nhau
Element 4 msmisc.fdf mdlModify_ Cho phép thay đổi các đối tượng
modification đơn hoặc sự miêu tả các đối
tượng
Element descriptor 10 mselmdsc.fdf mdlElmdscr_ Dùng để thực hiện các thao tác
functions 5 mdlCopyContext_ với các đối tượng thành phần
trong các đối tượng phức tạp

Element clipping 5 msmisc.fdf mdlClip_ Cho phép liên kết các đối tượng
Element association 23 msassoc.fdf mdlAsoc_ Cung cấp sự truy cập vào khả
năng liên kết các đối tượng để
tạo thành các điểm liên kết trong
kích thước, các đường và các
cell dùng chung
Element linkage 34 mslinkge.fdf mdlLinkage_ Cho phép gắn kết, thay đổi, xoá
hoặc tách các gói cơ sở dữ liệu
của các đối tượng
Multi-line 21 msmline.fdf mdlMline_ Dùng để thiết lập và thay đổi các
elements đối tượng đa đường

Measurments 8 msmisc.fdf mdlMeasure_ Lấy các thuộc tính kích thước cơ


functions bản của sự miêu tả các đối tượng

Transient elements 14 mstrnsnt.fdf mdlTransient... Cung cấp API cho các đối tượng
chuyển tiếp

Dimensioning 23 msdim.fdf mdlDim_ Dùng cho các thao tác trên kích
element Function 28 msdimstyle.fd mdlDimStyle_ thước của đối tượng
f
Nested 30 msdisplaypath mdlDisplayPath_ Cho phép quản lí nhiều trường
Element instances .h hợp của đối tượng trong các file
presentation hoặc cell tham chiếu

Element reference 30 elementref.h elementRef_ Cho phép nhận dạng duy nhất
một đối tượng trong session

Surface creation 7 mselemen.fdf mdlSurface_ Dùng cho các thao tác bề mặt

Patterining 8 msmisc.fdf mdlPattern_


Mesh elements 71 msmdlmesh.fd mdlMesh_ Dùng cho các khía cạnh hình học
f
Tìm kiếm đối tượng
Loacate elements 40 mslocate.fdf mdlLocate_ Cho phép định vị các đối
mdlAutoL tượng
ocate_

Scanning 62 msscan.fdf mdlScan_ API dùng để quét file cho


msscancrit.fdf mdlScanCriter các đối tượng
ia_

Snapping 19 mslocate.fdf mdlSnap Cho phép bắt các đối tượng


mdlAccuSnap bằng cách thăm dò Các
_ điểm hoặc tự động khi
con chuột đi qia các đối
tượng

Hit list 10 mshitpath.h mdlHitPath_ Tìm kiếm đối tượng theo


cách gần các điểm kiểm
tra nhất
Hàm container

Matrix storage 26 msmdlmatrix.f mdlMatrix_ Đáp ứng như một


df container cho các ma
trận số

Embedded 16 embedded....fdf jdmlEmbedd Cung cấp nhiều loại


Arrays 5 ed.... linear container có giá
trị

Dynamic 13 msdarray.fdf mdlDArray_. cung cấp các mảng động


arrays .. đơn

String List 37 msstrlst.h mdlStringList Cho phép sử dụng danh


rmgrstrl.h _ sách các chuỗi như
strlist_ một mảng động
Giao diện người dùng
Input handling 23 msinput.fdf mdlInput_ API dùng cho việc quản lí đầu
functions vào

Output handling 47 msoutput.fdf mdlOutput_ API dùng cho các thông điêp
đầu ra

State control 21 msstate.fdf mdlState_ Cho phép thực hiện các hàm
điều khiển trạng thái
Windows 87 mswindow.fdf mdlWindow_ Quản lí hệ điều hành window
functions một cách tổng quát

Function key 9 msmisc.fdf mdlFuncKey_ Điều khiển thực đơn Func key
Dialog box and 70 msdialog.fdf mdlDialog_ API cho hộp thoại và danh mục
Dialog item 5 ditemlib.fdf thoại
functions msritem.fdf
htmllib.fdf
miscilib.fdf
..and otheres
View handling 19 msview....fdf mdlView.... Cho phép xem và quản lý các
3 nhóm xem
Digitizer function 3 msinput.fdf mdlDigitize_ Điều khiển sự kiện số hóa
Tài nguyên

Resource 25 msrmgr.h mdlResourc API cho quản lý tài


management e_ nguyên

Parse command 10 msparse.fdf mdlParse_ Hàm Command table


table
Thao tác
C Expression 18 mscexpr.fdf mdlCExpression_ Cho phép đánh giá biểu
thức C trong
runtime

BASIC 3 msbasic.fdf mdlBasic_ Sử dụng cho macro của


interface BASIC

inter program 19 extprg.fdf mdlExternal_ Cho phép chương trình


communicat extprg_ bên ngoài giao tiếp
ion với Microstation

Dynamic link 14 dlmsys.fdf dlmSystem_ Cho phép thao tác giữa


modules DLM(DLL) và
MDL
Hệ thống
MDL system 85 mssystem.fdf mdlSystem_ API cho các hàm hệ
thống khác nhau,
điều khiển các sự
kiện và các biến

Undo API 9 msundo.fdf mdlUndo_ quản lí các hàm


redo/undo
Version 2 msver.fdf mdlVersion_ Tách các thông tin về
các bản đang chạy
hiện thời của
MicroStation
License API 14 mslicens.fdf mdlLicense_ Cho phép truy vấn các
thông tin bản
quyền
Active setting 4 msmisc.fdf mdlParams_ Thay đổi các tham số
functions của Microstation
Tổng quan về các biến built-in
Variable Type Description

dgnBuf MSElement* Giữ thông tin của các đối tượng hiện thời trong
dgnBuf.

statedata MSStateDat Chứa các thông tin trong hàm trạng thái hiện
a thời, được định nghĩa trong global.h

Tcb Tcb* “Terminal Control Block” giữ tất cả các thông


tin trong file DGN hiện thời, được định
nghĩa trong tcb.h

Mgds_modes Mgds_mode Chứa các thông tin về sự thực thi hiện thời của
s MicroStation, được định nghĩa trong
global.h
graphConfig MSGraphCo Chứa các cấu hình đồ hoạ, được định nghĩa trong
nfig global.h

mdlCommandNumbe long Chứa số lệnh của ứng dụng MDL gần nhất
r

userPrefsP UserPrefs* Chứa các thói quen khác nhau của người sử
dụng, được định nghĩa trong userpref.h

mgdsPrompt[35] char Giữ các bài text treong dấu nhắc, mặc định là
"uStn>"

render_designLightP void* Cho phép định nghiã các độ sáng thích hợp, được
định nghĩa trong light.h

msTransientElmP TransDescrP Mục đích chung cho sự miêu tả tạm thời

mdlErrno int Số lỗi cho các hàm MDL khác nhau


Cách tạo file .bat

• Ba biến sau cần được thiết lập. Nó có thể được


thiết lập trong AUTOEXEC.BAT, System
Setup Tool hoặc trong file batch và file script
chạy trong các lệnh shell.
Thêm mdl\bin directory vào đường đẫn.
(đường dẫn tới
Ví dụ :
BMAKEWIN.EXE)
Set path=%path%;C:\win32app\ustation\mdl\bin

Thiết lập biến môi trường MS


(Đường dẫn tới MicroStation)
Ví dụ: Set MS=C:\win32app\ustation

Thiết lập biến môi trường BMAKE_OPT


Ví dụ: (đường dẫn tới MDL.MKI)
SetBMAKE_OPT=-
IC:\win32app\ustation\mdl\include

Chú ý: Trong dòng BMAKE_OPT trên, có dấu trừ và chữ i viết hoa (- I) không có dấu
cách từ BMAKE_OPT tới cuối dòng.
• Trong DOS, thay đổi thư mục dẫn đến file chứa mã
nguồn (ví dụ như YOURMAP.mc, YOURMAP.h,
v.v.). Trong trường hợp này, gõ như sau:
cd\...\YOURAPP
• Từ thư mục C:\...\YOURAPP gõ : bmakewin -a
YOURAPP.MKE
• Nếu trình ứng dụng dược biên dịch, chương trình
biên dịch sẽ đưa ra thông báo : "Building
C:\win32app\ustation\mdlapps\YOURAPP.ma".
• Cuối cùng, load chương trình YOURAPP trong
Microstation.
Chương trình minh họa
• Chức năng chính là tính toán tọa độ điểm đo chi tiết từ file
số liệu đầu vào, hiển thị các điểm đó lên file dgn trong
Microstation và tạo ra file tọa độ các điểm chi tiết.
• Chương trình gồm các file :
– file.mc : là file nguồn
– file.h và filetxt.h : là 2 tệp tiêu đề.
– filetyp.r và filedlg.r: là 2 file tài nguyên
– filetyp.mt để khai báo kiểu biến cho compiler
– File số liệu đo chi tiết đầu vào.
– File bat để chạy chương trình.
• Chương trình sử dụng các hàm chính sau :
– Hàm double Phvi(double XM,double YM,double
XH,double YH) để tính phương vị của một cạnh.
– Hàm int File_Read(void) đọc file đầu vào.
– Hàm int File_getFile(char *filename,char
*defaultExtension,char *prompt) nhận file được nhập
vào.
– Hàm int File_pushButtonHook(DialogItemMessage
*dimP) hiển thị các mức móc nối trong hộp thoại mở file.
– Hàm int File_unloadFunction(void) có chức năng
unload một hàm.
– Hàm int File_dialogBoxHook để nhận hộp thoại.
Kết luận
• MDL là một môi trường phát triển hoàn chỉnh, cho
phép các ứng dụng lợi dụng tối đa khả năng của
Microstation.
• MDL có thể được dùng để phát triển các tiện ích đơn
giản, những yêu cầu của khách hàng, hay những ứng
dụng trong thương mại đòi hỏi cần sự tinh vi, chi tiết.
• Đây là một hướng phát triển các ứng dụng chuyên
nghiệp trong Microstation để mang lại hiệu quả cao
trong công việc.
• Chuơng trình minh họa còn đơn giản và có nhiều thiếu
sót nên sẽ được nghiên cứu phát triển trong thời gian
sắp tới để có thể hoàn thiện hơn.

You might also like