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

BÁO CÁO CHUYÊN Đề

Embed Size (px)

Citation preview

Page 1: BÁO CÁO CHUYÊN Đề

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ênSinh viên thực hiện : Trần Nhật Tâm

Nguyễn Mai PhươngLớp : Tin học Trắc địa K47

Page 2: BÁO CÁO CHUYÊN Đề

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

Page 3: BÁO CÁO CHUYÊN Đề

Nội dung chính

Mở đầuI. Cơ sở lý thuyết

1. Tổng quan về MDL 2. MDL framework3. MDL API4. 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

Page 4: BÁO CÁO CHUYÊ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.

Page 5: BÁO CÁO CHUYÊN Đề

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

Page 6: BÁO CÁO CHUYÊN Đề

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

Page 7: BÁO CÁO CHUYÊN Đề

MDL framework

Page 8: BÁO CÁO CHUYÊN Đề

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

Page 9: BÁO CÁO CHUYÊN Đề

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

Page 10: BÁO CÁO CHUYÊN Đề

MDL Utilities

Dùng để tạo ra sự mô tả các kiểu cho một nhóm các hàm built-in được sử dụng trong biểu ngữ C trong runtime.

Rsctype

Thư viện tài nguyên được dùng để trộn nhiều file tài nguyên vào một file.

Rlib

Chương trình dịch tài nguyên được dùng để biên dịch tài nguyên nguồn.

Rcomp

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

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

Mlib

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

Mcomp

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

Bmake

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

Page 11: BÁO CÁO CHUYÊN Đề

Các kiểu file nguồn

Được tham chiếu đến như map file, được tạo ra bởi mlink..mm

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

.ml

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

.mke

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

Được tham chiếu đến như tệp ứng dụng, đây là file nguồn nơi 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.

.ma

Được tham chiếu đến như tệp tiêu đề hay tệp include. Tệp tiêu đề được khai báo trong file .mc, .mt và .r.

.h

Mô tảKiểu file

Page 12: BÁO CÁO CHUYÊN Đề

Được tham chiếu đến như file tài nguyên, rcomp tạo ra các file tài nguyên này.

.rsc

Được tham chiếu đến như file tài nguyên nguồn, chẳng 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.

.r

Đượ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 hàm built-in. rsctype đọc type file và tạo ra file tài nguyên nguồn

.mt

Đượ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 khác sử dụng rlib.File chương trình được tạo ra bởi mlink.

.mp

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

.mo

Page 13: BÁO CÁO CHUYÊN Đề

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)

Page 14: BÁO CÁO CHUYÊN Đề

MDL API

Page 15: BÁO CÁO CHUYÊN Đề

MDL API

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

mdl + lĩnh vực + gạch dưới + thao tácVí 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.

Page 16: BÁO CÁO CHUYÊN Đề

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

Page 17: BÁO CÁO CHUYÊN Đề

Hàm các đối tượng có thể hiển thị được

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)

mdl..._createmselemen.fdf20Element creation

Cho phép giám sát mọi sự thay đổi trong file DGN

mdlChangeTrack_changetrack.fdf

2Element change tracking

Dùng để đọc, lặp lại, tạo thành, thực hiện hoặc xoá

các cell trong thư viện cell, và để đặt các cell vào file

design

mdlCell_mdlCellIterator_mdlSharedCell_

mscell.fdf 

msscell.fdf

42 

21

Cell functions  

Shared Cell functions

 

để Accudraw đạt được sự tối ưu

mdlAccudraw_mdllib.fdf1Accudraw

Dùng để thiết lập và quản lí B-spline

mdlBspline_msbsplin.fdf152

B-spline functions

Chú giảiTiền tố trong hàm API

File fdf#Kiểu API

Page 18: BÁO CÁO CHUYÊN Đề

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

mdlLinkage_mslinkge.fdf34Element linkage

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

mdlAsoc_msassoc.fdf23Element association

Cho phép liên kết các đối tượng mdlClip_msmisc.fdf5Element clipping

Dùng để thực hiện các thao tác với các đối tượng thành phần trong các đối tượng phức tạp

mdlElmdscr_mdlCopyContext_

mselmdsc.fdf105

Element descriptor functions

Cho phép thay đổi các đối tượng đơn hoặc sự miêu tả các đối tượng

mdlModify_msmisc.fdf4Element modification

Đáp ứng như API cho các đối tượng giao nhau

mdlIntersect_msmisc.fdf4Element intersection

Dùng cho thao tác trên các đối tượng đơn phổ biến

mdlElement_mselemen.fdf43Element common functions

Để tách thông tin từ các đối tượng cụ thể.

mdl..._extractmselemen.fdf13Element information extraction

Page 19: BÁO CÁO CHUYÊN Đề

Dùng cho các khía cạnh hình họcmdlMesh_msmdlmesh.fd

f71Mesh elements

 mdlPattern_msmisc.fdf8Patterining

Dùng cho các thao tác bề mặtmdlSurface_mselemen.fdf7Surface creation

Cho phép nhận dạng duy nhất một đối tượng trong session

elementRef_elementref.h30Element reference

Cho phép quản lí nhiều trường hợp của đối tượng trong các file hoặc cell tham chiếu

mdlDisplayPath_msdisplaypath.h

30Nested Element instances  presentation

Dùng cho các thao tác trên kích thước của đối tượng

mdlDim_mdlDimStyle_

msdim.fdfmsdimstyle.fdf

2328

Dimensioning element  Function

Cung cấp API cho các đối tượng chuyển tiếp

mdlTransient... mstrnsnt.fdf14Transient elements

Lấy các thuộc tính kích thước cơ bản của sự miêu tả các đối tượng

mdlMeasure_msmisc.fdf8Measurments functions

Dùng để thiết lập và thay đổi các đối tượng đa đường

mdlMline_msmline.fdf21Multi-line elements

Page 20: BÁO CÁO CHUYÊN Đề

Tìm kiếm đối tượng

Tìm kiếm đối tượng theo cách gần các điểm kiểm tra nhất

mdlHitPath_mshitpath.h10Hit list

Cho phép bắt các đối tượng 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

mdlSnapmdlAccuSnap

_

mslocate.fdf19Snapping 

API dùng để quét file cho các đối tượng

mdlScan_mdlScanCriter

ia_

msscan.fdfmsscancrit.fdf

62Scanning

Cho phép định vị các đối tượng

mdlLocate_ mdlAutoLocate_

mslocate.fdf40Loacate elements

Page 21: BÁO CÁO CHUYÊN Đề

Hàm container

Cho phép sử dụng danh sách các chuỗi như

một mảng động

mdlStringList_

strlist_

msstrlst.hrmgrstrl.h

37String List

cung cấp các mảng động đơn

mdlDArray_...

msdarray.fdf13Dynamic arrays

Cung cấp nhiều loại linear container có giá

trị

jdmlEmbedded....

embedded....fdf165

Embedded Arrays

Đáp ứng như một container cho các ma

trận số

mdlMatrix_msmdlmatrix.fdf

26Matrix storage

Page 22: BÁO CÁO CHUYÊN Đề

Giao diện người dùng

Điều khiển sự kiện số hóamdlDigitize_msinput.fdf3Digitizer function

Cho phép xem và quản lý các nhóm xem

mdlView....msview....fdf193

View handling

API cho hộp thoại và danh mục thoại

mdlDialog_msdialog.fdfditemlib.fdfmsritem.fdfhtmllib.fdf

miscilib.fdf ..and otheres

705

Dialog box and Dialog item functions

Điều khiển thực đơn Func keymdlFuncKey_msmisc.fdf9Function key

Quản lí hệ điều hành window một cách tổng quát

mdlWindow_mswindow.fdf87Windows functions

Cho phép thực hiện các hàm điều khiển trạng thái

mdlState_msstate.fdf21State control

     

API dùng cho các thông điêp đầu ra

mdlOutput_msoutput.fdf47Output handling

API dùng cho việc quản lí đầu vào

mdlInput_msinput.fdf23Input handling functions

Page 23: BÁO CÁO CHUYÊN Đề

Tài nguyên

Hàm Command table mdlParse_msparse.fdf10Parse command table

API cho quản lý tài nguyên

mdlResource_

msrmgr.h25Resource management

Page 24: BÁO CÁO CHUYÊN Đề

Thao tác

Cho phép thao tác giữa DLM(DLL) và

MDL

dlmSystem_dlmsys.fdf14Dynamic link modules

Cho phép chương trình bên ngoài giao tiếp với Microstation

mdlExternal_extprg_

extprg.fdf19inter program communicat

ion

Sử dụng cho macro của BASIC

mdlBasic_msbasic.fdf3BASIC interface

Cho phép đánh giá biểu thức C trong

runtime

mdlCExpression_mscexpr.fdf18C Expression

Page 25: BÁO CÁO CHUYÊN Đề

Hệ thống

Thay đổi các tham số của Microstation

mdlParams_msmisc.fdf4Active setting functions

Cho phép truy vấn các thông tin bản

quyền

mdlLicense_mslicens.fdf14License API

Tách các thông tin về các bản đang chạy

hiện thời của MicroStation

mdlVersion_msver.fdf2Version

quản lí các hàm redo/undo

mdlUndo_msundo.fdf9Undo API

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

mdlSystem_mssystem.fdf85MDL system

Page 26: BÁO CÁO CHUYÊN Đề

Tổng quan về các biến built-in

Chứa các thông tin về sự thực thi hiện thời của MicroStation, được định nghĩa trong

global.h

Mgds_modes

Mgds_modes

“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

Tcb*Tcb

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

MSStateData

statedata

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

MSElement*dgnBuf

DescriptionTypeVariable

Page 27: BÁO CÁO CHUYÊN Đề

Số lỗi cho các hàm MDL khác nhauintmdlErrno

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

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

void*render_designLightP

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

charmgdsPrompt[35]

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

UserPrefs*userPrefsP

Chứa số lệnh của ứng dụng MDL gần nhấtlongmdlCommandNumber

Chứa các cấu hình đồ hoạ, được định nghĩa trong global.h

MSGraphConfig

graphConfig

Page 28: BÁO CÁO CHUYÊN Đề

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.

Page 29: BÁO CÁO CHUYÊN Đề

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.

(đường dẫn tới MDL.MKI)

Thiết lập biến môi trường BMAKE_OPTVí dụ: SetBMAKE_OPT=-IC:\win32app\ustation\mdl\include

(Đường dẫn tới MicroStation)Thiết lập biến môi trường MSVí dụ: Set MS=C:\win32app\ustation

(đường dẫn tới BMAKEWIN.EXE)

Thêm mdl\bin directory vào đường đẫn. Ví dụ : Set path=%path%;C:\win32app\ustation\mdl\bin

Page 30: BÁO CÁO CHUYÊN Đề

• 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.

Page 31: BÁO CÁO CHUYÊN Đề

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.

Page 32: BÁO CÁO CHUYÊN Đề

• 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.

Page 33: BÁO CÁO CHUYÊN Đề

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.

Page 34: BÁO CÁO CHUYÊN Đề