Upload
api-3777947
View
815
Download
6
Embed Size (px)
Citation preview
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
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ở đầ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
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
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
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
Đượ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
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á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.
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
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
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
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
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
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
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
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
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
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
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
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
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.
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
• 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.