Khi có nhu cầu thực hiện một vài hành động nào đó với đối tượng tùy biến, VeCAD thực thi các sự kiện đặc biệt và ứng dụng của người lập trình phải xử lý chúng để tạo nên các thay đổi tươ
Trang 1MỤC LỤC
MỤC LỤC 1
Phần 1:ĐẶT VẤN ĐỀ 3
1.1 Phạm vi nghiên cứu của đồ án 6
1.2 Các mục tiêu của đồ án 6
Phần 2:NGHIÊN CỨU KHẢ NĂNG CỦA THƯ VIỆN ĐỒ HỌA VECAD 7
2.1 Giới thiệu về thư viện đồ họa VeCAD 7
2.2 Thư viện đồ họa liên kết động VeCAD 9
2.2.1 Hệ thống đối tượng 9
2.2.2 Các sự kiện được cung cấp 13
2.3 Điều khiển VeCAD ActiveX 15
2.4 Nghiên cứu khả năng xây dựng đối tượng mới của VeCAD 15
2.4.1 Cách thức tạo đối tượng tùy biến 16
2.4.2 Hiển thị dữ liệu của đối tượng tùy biến trên cửa sổ “Properties” 20
2.4.3 Các sự kiện của đối tượng tùy biến 22
2.4.4 Các sự kiện dùng khi hiển thị đối tượng tùy biến 30
2.5 Đánh giá về thư viện đồ họa VeCAD: 41
Phần 3:PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG 42
3.1 Phân tích bài toán 42
3.1.1 Các yêu cầu cần thiết 42
3.1.2 Phân tích sơ bộ các yếu tố của đối tượng “Mặt cắt ngang đường” 42
3.1.3 Phân tích đặc điểm hình học của các cấu kiện khác: 44
3.2 Phương pháp thiết kế hệ thống 47
3.3 Thiết kế hệ thống đối tượng cho chương trình 47
3.3.1 Các lớp mô tả đối tượng “Mặt cắt ngang nền đường” 47
3.3.2 Các lớp mô tả đối tượng cấu kiện “Dầm BTCT”, “Cọc BTCT”, “Bản BTCT”: 51
3.3.3 Các lớp quản lý chung phục vụ cho chương trình 56
3.3.4 Định dạng các tệp dữ liệu được thiết kế trong chương trình 56
3.3.5 Phân tích thiết kế các giao diện cho chương trình 59
Trang 24.1 Môi trường lập trình và các công cụ phục vụ phát triển chương trình 60
4.2 Ngôn ngữ lập trình C#: 61
4.3 XML 61
4.3.1 Khái niệm XML 61
4.3.2 Ưu nhược điểm 62
4.4 Xây dựng các lớp cho chương trình 62
4.4.1 Các lớp mô tả đối tượng “Mặt cắt ngang nền đường” 62
4.4.2 Các lớp mô tả các đối tượng cấu kiện hình học 64
4.4.3 Lớp quản lý bản vẽ (clsDrawingManager), lớp quản lý các form (clsFormManager), lớp xử lý file XML (clsXML) 66
4.5 Xây dựng các giao diện cho chương trình 67
4.5.1 Giao diện chính (frmMain) 67
4.5.2 Giao diện nhập thông số hiển thị mặt cắt ngang đường (frmInputCSParam) 79
4.5.3 Giao diện nhập thông số cho đầu trắc ngang (frmTableViewStyle) 80
4.5.4 Giao diện nhập dữ liệu cho dầm bê tông cốt thép mặt cắt chữ nhật (frmBeamRect) 81
4.5.5 Giao diện nhập dữ liệu cho cọc bê tông cốt thép mặt cắt vuông (frmPillingSquare) 83
4.5.6 Giao diện nhập dữ liệu cho cọc bê tông cốt thép mặt cắt tròn (frmPillingCircle) 84
4.5.7 Giao diện nhập dữ liệu cho bản bê tông cốt thép (frmPlate) 85
4.5.8 Giao diện để vẽ các đối tượng hình học (frmVeCAD) 86
4.5.9 Giao diện thông tin về chương trình (frmAbout) 86
Phần 5:KẾT QUẢ ĐẠT ĐƯỢC VÀ HƯỚNG PHÁT TRIỂN 87
5.1 Kết quả đạt được của đồ án: 87
5.1.1 Một chương trình CAD thông dụng: 87
5.1.2 Xây dựng và thể hiện đối tượng “Mặt cắt ngang nền đường” 88
5.1.3 Xây dựng và hiển thị thành công đối tượng dầm BTCT 3D 89
5.1.4 Xây dựng và hiển thị thành công đối tượng cọc BTCT 3D 91
5.2 Hướng phát triển: 94
MỤC LỤC HÌNH VẼ 95
Trang 3Phần 1: ĐẶT VẤN ĐỀ
Thông thường sự ra đời của một công trình giao thông (cầu, đường, ) bắt đầu từviệc nghiên cứu để chỉ ra sự cần thiết của công trình đó hay vai trò của nó trong đờisống xã hội Sau đó bước khảo sát thiết kế sẽ được triển khai, kết quả của quá trình này
là những tài liệu bao gồm bản vẽ, bản tính và bản thuyết minh để thể hiện cấu tạo vàcách thức cơ bản để thi công cũng như chi phí cho công trình đó Quá trình thi công sẽdựa vào kết quả của quá trình thiết kế để trực tiếp tạo ra công trình trên thực địa Nhưvậy thiết kế là một khâu trong quá trình tạo ra một công trình
Kết quả của quá trình thiết kế, như đã nêu ở trên, bao gồm hệ thống các bản vẽ,bản tính và thuyết minh mà nội dung của nó chỉ rõ cấu tạo của công trình, phươngpháp chính để thực hiện và chi phí xây dựng công trình Việc tạo ra hệ thống các tàiliệu trên luôn đòi hỏi một khối lượng tính toán và thao tác rất lớn vì thế việc giảm bớtcông sức cho người thiết kế đồng thời nâng cao được năng suất và chất lượng của đồ
án thiết kế là một công việc rất có ý nghĩa
Quá trình thiết kế là sự vận dụng kiến thức chuyên môn và công cụ hỗ trợ để giải
quyết hàng loạt các vấn đề nhằm tạo ra hồ sơ thiết kế Thực tế đã chứng tỏ rằng vớikiến thức chuyên môn tốt nhưng công cụ chưa tốt thì hiệu quả công việc không caocòn nếu thiếu kiến thức chuyên môn thì dù có công cụ hỗ trợ tốt thì chất lượng đồ án
sẽ không đảm bảo Như vậy đây chính là hai yếu tố chủ chốt tạo nên một đồ án thiết kế
có chất lượng
Kiến thức chuyên môn ở đây bao gồm nhiều nội dung khác nhau và được cung cấp
trong suốt quá trình học đại học dưới dạng từng học phần hay môn học cụ thể Mỗimôn học sẽ đóng vai trò như một bộ phận tạo nên một khối kiến thức tổng hợp giúpcho người kỹ sư có thể định hướng được cách giải quyết các vấn đề trong quá trình tạo
ra công trình
Công cụ hỗ trợ thiết kế giúp người kỹ sư triển khai chi tiết ý tưởng của mình và
trong thực tế nó đóng một vai trò quan trọng trong việc quyết định năng suất và chấtlượng của quá trình thiết kế Với những công cụ hỗ trợ vẽ, tính toán đơn giản thì nhiềuvấn đề phức tạp, mặc dù về mặt lý thuyết có thể giải quyết được, nhưng không thể
Trang 4chiều hoặc thể hiện kết quả thiết kế của tuyến đường dưới dạng mô hình ba chiều.
Với đặc thù của công tác thiết kế chủ yếu là tính toán và triển khai bản vẽ cho nên
những công cụ hỗ trợ mang lại hiệu quả thiết thực sẽ phải đáp ứng được những yêucầu về tính toán, tạo bản vẽ và lưu trữ dữ liệu Do đặc điểm của những yêu cầu trêncùng với sự phát triển của công nghệ thông tin cho nên có thể thấy rằng hệ thống cácphần mềm hỗ trợ thiết kế là công cụ thích hợp nhất
Hệ thống phần mềm hỗ trợ thiết kế bao gồm những chương trình chuyên dụng
được xây dựng để giải quyết một hay nhiều vấn đề nào đó trong quá trình thiết kế côngtrình, ví dụ như xử lý số liệu khảo sát, tính toán kết cấu, hoặc tạo bản vẽ Bên trongmỗi chương trình chuyên dụng bao giờ cũng chứa rất nhiều kiến thức chuyên môn vìthế nhiều phần trong quá trình thiết kế có thể thực hiện được tự động Tuy nhiên khithực hiện từng phần trong quá trình thiết kế hay một công đoạn nào đó luôn đòi hỏi rấtnhiều sự lựa chọn, phân tích, lập luận theo hình thức “chuyên gia”, điều này là một cảntrở cho quá trình xây dựng các chương trình chuyên dụng vì thế các chương trình này,hiện nay, đa số mới chỉ thực hiện tự động hoàn toàn đối với những vấn đề độc lập và
có nhiều yếu tố cố định, như tính toán nội lực kết cấu, còn những vấn đề mang tính hệthống, đòi hỏi có sự suy luận, phân tích thì mức độ tự động đạt được chưa cao, ví dụnhư quá trình thiết kế bình đồ tuyến đường
Tự động hóa thiết kế ở đây được hiểu là sự kết hợp giữa chương trình trợ giúp
thiết kế với kiến thức chuyên môn để đưa ra một cách nhanh chóng, chính xác và hợp
lý phương án thiết kế của công trình Như vậy, khả năng của chương trình trợ giúpthiết kế sẽ đóng một vai trò quan trọng trong việc tự động hóa thiết kế, do đó việc cânnhắc lựa chọn một chương trình trợ giúp thiết kế phù hợp là rất quan trọng
Trong công tác thiết kế đường, việc thiết kế hình học là một khâu rất quantrọng Nó ảnh hưởng đến kinh tế xã hội, kinh tế, quyết định đến sự thành công sựthành công của một dự án Do vậy, một chương trình trợ giúp thiết kế tốt sẽ tiết kiệmthời gian thiết kế của người kỹ sư
Hiện nay, tại Việt Nam, có rất nhiều hệ thống phần mềm đã được thương mạihóa, được sản xuất bởi các công ty, tổ chức trong và ngoài nước để trợ giúp công tácthiết kế đường Có thể kể ra đây một số phần mềm đã được sử dụng tại Việt Nam như
phần mềm TKD của Bộ môn Tự động hóa Thiết kế cầu đường – Trường Đại học Giao thông vận tải, phần mềm NovaTDN, RoadPlan của công ty Hài Hòa, phần mềm Microstation Geopak của hãng Bentley, phần mềm Softdesk (phiên bản cũ), Land
Trang 5phần mềm khác nữa
Các phần mềm nước ngoài sản xuất thường có quy mô rất lớn với nhiều tínhnăng đáp ứng Việc thiết kế hình học đường của các phần mềm này được đánh giá rấttốt Một điểm mạnh nữa của các phần mềm này là tạo ra mối quan hệ nhiều chiều vàkhép kín giữa các đối tượng Nhìn chung các phần mềm nước ngoài được chia thành 3nhóm :
+ Nhóm chạy dựa trên một hệ thống CAD: hệ thống CAD tồn tại hai hệ thốngrất mạnh đó là AutoCAD của Autodesk và Microstation của Bentley
- Hệ thống AutoCAD: phần mềm Softdesk (phiên bản cũ), Land Desktop (phiên bản cũ), Civil 3D (phiên bản mới), MXRoad,…
- Hệ thống Microstation: Geopak của hãng Bentley, MXRoad,…
+ Nhóm độc lập
+ Nhóm chạy trên các hệ thống CAD và độc lập: MXRoad,…
Các ưu điểm của phần mềm nước ngoài là khả năng phong phú trong việc xử lý,tương tác cao trong quá trình thiết kế, quản lý tập trung một dự án thiết kế, tính đồng
bộ cao, Khả năng tạo tùy biến rất cao Một số phần mềm còn cung cấp mô hình đốitượng COM (Component Object Model) để nhà phát triển thứ bà có thể lập ra phầnmềm phù hợp với mục đích của riêng mình Tuy nhiên nhược điểm của các phần mềmnày là do có qui mô lớn nên việc sử dụng và triển khai là rất khó khăn, đồng thời cònđưa ra một số kết quả chưa phù hợp với qui trình, qui phạm hiện hành của Việt Namcũng như một số tình huống thiết kế
Các phần mềm trong nước thường có qui mô nhỏ hơn và đã có thể đáp ứng đượcphần nào nội dung công việc nhưng các phần mềm này đa số đều hoạt động dựa vào
một phần hoặc toàn bộ nền của hệ thống CAD Ưu điểm của các phần mềm này là dễ
sử dụng, cho ra kết quả thiết kế (bản vẽ, bảng biểu) phù hợp với qui trình hiện hành.Khả năng ứng dụng trong thực tiễn cao và triển khai dễ dàng Tính cơ động cao, phùhợp với các dự án thuần túy về đường bộ Do hoạt động dựa trên một hệ thống CADnên để hoạt động được thì các phần mềm này đều phải cần phải đi kèm với một hệ
thông CAD (ví dụ AutoCAD) Điều này làm tính linh hoạt của các phần mềm này
không cao
Do vậy, việc nghiên cứu xây dựng một phần mềm hỗ trợ thiết kế hình học đườngđộc lập hoàn toàn và phù hợp với tiêu chuẩn của Việt Nam là rất cần thiết
Trang 6của một số cấu kiện dưới dạng số liệu Vectơ” nhằm tạo tiền đề cho việc xây dựng
một phần mềm hỗ trợ thiết kế hình học đường và phần mềm mô hình hóa kết cấu, tínhtoán kết cấu
1.1 Phạm vi nghiên cứu của đồ án
Phạm vi của đồ án này là nghiên cứu khả năng sử dụng thư viện đồ họa VeCAD
để xây dựng một phần mềm hỗ trợ thiết kế hình học Trong đó đi sâu vào nghiên cứucác vấn đề sau:
+ Nghiên cứu các đối tượng được cung cấp trong thư viện VeCAD và cách sửdụng chúng
+ Nghiên cứu xây dựng và thể hiện đối tượng hình học mới (Custom Object)dựa trên các đối tượng sẵn có của thư viện Từ đó đi xây dựng:
Đối tượng “mặt cắt ngang nền đường”.
- Xây dựng các mô dun thể hiện :
+ Mặt cắt ngang nền đường với đầy đủ các phần theo cách thể hiện mặt cắtngang của Việt Nam
+ Dầm BTCT 3D mặt cắt chữ nhật, chữ T, chữ I,… trong không gian
+ Cọc BTCT 3D mặt cắt vuông, hình tròn,…trong không gian
+ Bản BTCT 3D trong không gian
Trang 9 Giao tiếp thông qua lệnh có thể được đăng ký trực tiếp vào các menu, nút lệnh,
và các phím tăng tốc của một chương trình
Hỗ trợ các loại phông chữ của Windows (phông TTF) và của AutoCAD (phông SHP/SHX).
Hỗ trợ các mẫu tô của AutoCAD (PAT) và kiểu đường (LIN).
Sao chép và dán bộ nhớ tạm
Bộ nhớ đệm Undo-redo có thể lưu trữ khoảng 100 lệnh.
Một cửa sổ dòng lệnh phụ trợ tạo điều kiện thuận lợi cho việc thao các các dònglệnh, đây là một giao tiếp macro tiềm năng cho người lập trình
1.4 Thư viện đồ họa liên kết động VeCAD.
1.4.1 Hệ thống đối tượng
Thư viện đồ họa VeCAD bao gồm các đối tượng hình học và phi hình học Người dùng có thể sử dụng các đối tượng hình học như: điểm (Points), đường thẳng (Lines), đường đa tuyến (Sub-classed Polylines), hình tròn (Circles), cung tròn (Arcs), elíp (Ellipses), hình chữ nhật (Rectangles), văn bản (Text), khối chèn (Block Insertions), kích thước (Dimensions) và ảnh “raster” (Raster Images) để tạo các thiết kế của họ Các đối tượng phi hình học bao gồm các đối tượng như kiểu chữ (Text style), kiểu ghi kích thước (Dimension style), lớp (Layer), …
Trang 10Hình 1 Mô hình đối tượng trong thư viện VeCAD
Phi hình học
VeCAD
Layers
Hình học Layer
Linetypes Linetype
Blocks Block
Text Styles Text Style
Point Styles Point Style
Multiline Styles Multiline Style
Dimension Styles Phi hình học
Points Point
Polylines Polyline Rectangles
s
Rectangle Multilines Multiline
Circle Ellipses
Multiline Texts Multiline Text Raster Images Raster Image Block Insertions Block Insertion Hatchs Hatch
External references
External Reference Dimensions Dimension Leaders Leader Block Attributes Block Attribute Custom Objects Custom Object
Tập đối tượng Đối tượng
Chú giải:
Trang 111.4.1.1 Đối tượng phi hình học
Các đối tượng phi hình học bao gồm các đối tượng như kiểu chữ (Text style), kiểu ghi kích thước (Dimension style), lớp (Layer), …Tại một thời điểm, người dùng
sử dụng thông tin của đối tượng phi hình học để quản lý các thiết kế Nói một cáchkhác, các đối tượng phi hình học là các đối tượng hình học đặc biệt Đối tượng phihình học giúp người dùng thiết kế hiệu quả hơn Ví dụ, nếu người dùng sử dụng mộttập hợp các thuộc tính của kiểu đường một các thường xuyên, người dùng có thể lưucác thuộc tính thành một kiểu đường và sau đó áp dụng kiểu đường này cho các đoạn
thẳng trong bản vẽ Thư viện đồ họa VeCAD lưu trữ các đối tượng phi hình học theo loại, trong các bảng khác nhau Các hàm API của VeCAD cung cấp các hàm để thêm,
xóa, và thay đổi thuộc tính của các đối tượng phi hình học này
Các đối tượng phi hình học của VeCAD được mô tả trong bảng sau:
Multiline style Lưu trữ các thiết lập mà kiểm sự thể hiện của các đối tượng đường song song (multiline).Point style Lưu trữ thiết lập mà kiểm soát sự thể hiện của các đối tượng điểm.
Text style Lưu trữ các thiết lập mà kiểm soát sự thể hiện của đối tượng chữ… Ví dụ, thuộc tính kéo dài, co ngắn, góc nghiêng, đối xứng,…Dimension style Lưu trữ thiết lập ghi kích thước mà kiểm soát sự thể hiện của các ghi chú kích thước.
chúng như tâm, bán kính và diện tích
Thư viện đồ họa VeCAD hỗ trợ các loại đối tượng hình học sau:
Tên đối Mô tả
Trang 12Điểm ( Po int) Điểm là một vạch dấu mà có thể được thể hiện như một dâu chấm (“.”), hình
vuông, hình tròn, dấu “X”, hoặc dấu cộng (“+”), hoặc như là một điểm chèn khối khi áp dụng cho đối tượng chữ Thể hiện của điểm phụ thuộc vào kiểu điểm (Po Style) được gán Các điểm có thể đóng vai trò như các nút mà người dùng có thể bắt điểm các đối tượng.
Đoạn thẳng ( Line ) Một đoạn thẳng đơn chỉ có hai điểm Các đoạn thẳng có thể chỉ có một đoạn
hoặc một loạt các đoạn nối với nhau, nhưng mỗi đoạn là một đối tượng đoạn thẳng riêng biệt Đoạn thẳng được sử dụng nếu người dùng muốn hiệu chỉnh một đoạn riêng biệt Nếu người dùng muốn vẽ một loạt các đoạn thẳng như một đối tượng đơn thì sử dụng đối tượng đường đa tuyến (Polyline).
Đường đa tuyến
( Polyline ) Một đường đa tuyến là một chuỗi nối liên tục các đoạn thẳng hoặc đoạncông để tạo nên một đối tượng đơn Sử dụng các đường đa tuyến nếu
người dung muốn hiệu chỉnh toàn bộ đoạn một lúc (mặc dù cũng có hiệu chỉnh chúng từng đoạn một) Người dùng có thể áp dụng các loại phương thức khác nhau cho đường đa tuyến để tạo nên một đa giác Một đường đa tuyến khép kín có thể được tô đặc
Hình chữ nhật
( Rectangle ) Đối tượng hình chữ nhật là đối tượng tạo nên từ các đoạn thẳng.
Đoạn song song
( Multiline ) Một đối tượng đường song song là một đối tượng tương tự như đối tượngđường đa tuyến nhưng dưới dạng đường song song với nhau.Cung tròn ( Arc )
Đường tròn ( Circle )
Elíp ( Ellipse )
Text Đối tượng này truyền tải thông tin quan trọng trong bản vẽ của người dùng.
Người dùng có thể sử dụng đối tượng dòng chữ đơn cho tiêu đề của các khối, để gán nhãn cho các phần của bản vẽ, mang đến sự khác biệt hoặc viết dòng chú giải Những đối tượng Text mới được tạo ra sẽ được gán cho kiểu chữ hiện tại.
Mutiline Text Đối tượng “Multiline text” bao gồm nhiều dòng chữ hoặc một đoạn văn bản
mà sẽ được điền vừa độ rộng người dùng xác định Nó có thể kéo dãn theo phương đứng theo một chiều dài không xác định Không quan tâm đến số dòng, mỗi một tập hợp các đoạn văn bản tạo theo một định dạng đối tượng đơn , mà người dùng có thể di chuyển, xoay, xóa, copy, đối xứng hoặc thay đổi tỷ lệ Ví dụ người dùng có thể thiết lập phông chữ, màu và chiều cao chữ cho từng kí tự, chữ hoặc câu riêng biệt trong một đoạn văn bản.
Khối ( Block) Chèn một khối đã được định nghĩa vào bản vẽ hiện tại Chèn một khối vào
trong một khối khác để tạo nên các khối cần thiết Một khối được chèn có thể được vẽ như một mảng các khối giống nhau nếu số hàng và số cột lớn hơn 1.
Ảnh “raster” Ảnh “raster” bao gồm một lưới chữ nhật các hình vuông nhỏ hoặc các dấu
chấm được biết như một điểm ảnh Thư viện VeCAD không lưu trữ các ảnh
“raster” trong định dạng tệp của nó Nó chỉ lưu trữ liên kết đến đường dẫn của tệp ảnh được chèn vào bản vẽ Thư viện VeCAD chỉ hỗ trợ định dạng ảnh BMP.
Gạch bóng ( Hatch ) Đối tượng “Hatch” là một ranh giới được tô đặc bởi một mẫu các đoạn thẳng
hoặc bởi một màu nào đó Phạm vi to có một vùng không được tô bên trong Thư viện VeCAD sử dụng các mẫu tô giống như định dạng của AutoCAD Tệp “hatches.pat” đi kèm với thư viện VeCAD bao gồm 68 mẫu tô được định nghĩa sẵn Người dùng có thể tạo mẫu tô của riêng mình.
Trang 13(External
Referrence) đóng vai trò như một khối, nhưng các định nghĩa của nó được lưu trữ trongtệp bản vẽ chèn vào Đối tượng XrefAn insertion of an external drawing, or
external reference (Xref), is an object that acts like a block, but its definitions are stored in the inserted drawing's file Xref objects don't inherit any properties of the current drawing (layers, colors, etc.) An Xref drawing is drawn with its own properties.
Ghi chú kích thước
( Dimension )
Đối tượng “Dimensions” chỉ ra kích thước của các đối tượng, khoảng cách hoặc góc đo giữa các đối tượng, show the measurements of objects, the distances or angles between objects, hoặc khoảng cách tính từ điểm một điểm này đến một điểm khác do người dùng xác định Thư viện VECAD cung cấp 2 loại khi kích thước cơ bản: kích thước đoạn thẳng, kích thước bán kính, và góc đo Đối tượng “Dimensions” có thể nằm ngang, thẳng đứng, được xoay,…
Chú giải ( Leader ) Một đối tượng “leader” là một đoạn thẳng hoặc một đoạn cong cùng với một
đầu mũi tên ở một một đầu và một xâu ký tự ở đầu còn lại Thư viện VeCAD đặt đối tượng “leader” vào lớp hiện tại Mỗi một đối tượng “leader” đều được mặc định nhận kiểu ghi kích thước hiện tại.
Thuộc tính
( Attribute ) Đối tượng “attribute” là một nhãn hoặc một thẻ mà gắn dữ liệu vào một khối.Bất cứ khi nào người dùng chèn một khối có thuộc tính, VeCAD gán giá trị
mặc định cho các thuộc tính này Sau đó người dùng có thể thay đổi giá trị thuộc tính trong hộp thoại hoặc qua cửa sổ “Properties” Các đối tượng thuộc tính có thể đặt ẩn Một thuộc tính ẩn không được hiển thị hoặc in ra, tuy nhiên, thông tin của đối tượng này được lưu trữ trong tệp bản vẽ.
Đối tượng tùy biến
(Custom Object) Đây là điểm mạnh của thư viện VeCAD Nó cung cấp cho người dùng khảnăng tạo ra đối tượng hình học của riêng mình Cách tạo và sử dụng đối
tượng này sẽ được nói kỹ trong phần sau.
1.4.2 Các sự kiện được cung cấp
Các sự kiện được cung cấp cho phép người lập trình có thể kiểm soát các hành
động của người dùng khi người dùng chạy chương trình Thư viện VeCAD cung cấp
một vài loại sự kiện có thể được sử dụng để thêm mã thực thi Với mỗi loại sự kiệnnày người lập trình có thể tạo một hàm sự kiện riêng trong khi viết chương trình.Những hàm này có một cú pháp xác định và cú pháp này bị phụ thuộc vào mẫu hàm đãđịnh sẵn Trong quá trình viết mã, người lập trình phải đăng ký các hàm sự kiện vào hệthống theo các mẫu hàm khai báo sau:
CadOnEventMouseMove Người dùng di chuyển chuột trên cửa sổ bản vẽ.
CadOnEventMouseDown Người dùng nhấn chuột trong phạm vi cửa sổ bản vẽ.
CadOnEventMouseUp Người dùng nhả nút nhấn chuột trong phạm vi cửa sổ bản vẽ.
CadOnEventMouseDblClk Người dùng nhấn đúp chuột trong phạm vi cửa sổ bản vẽ.
CadOnEventMouseWheel Người dùng xoay chuột giữa.
CadOnEventMouseSnap Con trỏ chuột di chuyển (Khi hiệu ứng bắt điểm được bật)
CadOnEventKeyDown Người dùng nhấn một phím.
CadOnEventRegen Tái tạo lại bản vẽ.
CadOnEventLoadSave Tải hoặc ghi bản vẽ.
Trang 14CadOnEventDistance Người dùng đo chiều dài
CadOnEventArea Người dùng đo diện tích
CadOnEventSelCodepage Người dùng lựa chọn trang đã được tải lên.
CadOnEventFontReplace Thay thế phông chữ
CadOnEventPa Vẽ lại bản vẽ trong một cửa sổ.
CadOnEventDrawImage Vẽ các ảnh tùy biến.
CadOnEventSaveDib Lưu bản vẽ lại thành một ảnh “raster”.
CadOnEventPrompt Thông điệp hiển thi nhắc được đưa ra.
CadOnEventSelPage Trang in hiện tại được thay đổi
CadOnEventEntCreate Người dùng tạo một đối tượng.
CadOnEventEntLoad Một đối tượng được tải vào từ một tệp tin.
CadOnEventEntCopy Một đối tượng được copy.
CadOnEventEntErase Người dùng xóa một đối tượng.
CadOnEventEntMove Người dùng di chuyển một đối tượng.
CadOnEventEntRotate Người dùng xoay một đối tượng.
CadOnEventEntScale Người dùng thay đổi tỷ lệ của đối tượng.
CadOnEventEntChange Người dùng hiệu chỉnh một đối tượng.
CadOnEventEntSelect Người dùng thay đổi trạng thái lựa chọn của đối tượng.
CadOnEventExecute Khi một câu lệnh được thực hiện từ cửa sổ lệnh của VeCAD.
CadOnEventGripDrag Điểm “grip” đang được kéo.
CadOnEventGripMove Điểm “grip” được di chuyển.
CadOnEventCmdStart Ảnh hưởng của câu lệnh được bắt đầu.
CadOnEventCmdLBDown Người dùng nhấn chuột trong khi thực hiện lệnh trong cửa sổ lệnh.
CadOnEventCmdFinish Tác động của câu lệnh hết hiệu lực.
CadOnEventView Vùng hiển thị của bàn vẽ bị thay đổi.
CadOnEventEngrave Tạo các đường gạch cùng với hàm CadEngrave.
CadOnEventPolyFill Tô các đối tượng đa giác.
1.5 Điều khiển VeCAD ActiveX
VeCAD ActiveX là một phần của hệ thống VeCAD, sau khi cài đặt VeCAD người lập trình có thể thấy chúng trong danh sách các ActiveX với tên là VeCAD control Nó được mô tả bởi tệp tin “vecad.ocx” và sử dụng tệp “vecad.dll” cho quá trình làm việc của nó Giao tiếp của VeCAD OCX được dựa trên VeCAD API, tuy nhiên người lập trình phải tuân theo các hướng dẫn của VeCAD API và áp dụng chúng cho OCX với
một vài quy tắc sau:
Trang 15 Các tên dùng cho các phương thức OCX cũng giống như các hàm API, bỏ qua
từ “Cad” ở đầu Ví dụ, để áp sử dụng hàm “CadAddLine” trong OCX phải sử dụng phương thức Object.AddLine.
Mỗi đối tượng OCX đều đã bao gồm đối tượng VeCAD và VeCAD cửa sổtrong đó, tuy nhiên không cần thiết phải xác định “handle” của chúng như cáctham số cho các phương thức của OCX
Ví dụ, để quan sát toàn bộ bản vẽ trong một cửa sổ:
Khi sử dụng hàm API:
CadExecute (hDwg, hWnd, CAD_CMD_ZOOM_EXT ).
Khi sử dụng hàm OCX:
Object.Execute( CAD_CMD_ZOOM_EXT ).
Người không cần phải sử dụng các hàm CadOnEvent<event name> để đăng ký
các hàm sự kiện Tất cả các sự kiện đều được cung cấp trong đối tượng VeCAD OCX Người lập trình chỉ cần thêm một đoạn mã cho các hàm sự kiện bằng IDE
của ngôn ngữ lập trình người lập trình sử dụng
1.6 Nghiên cứu khả năng xây dựng đối tượng mới của VeCAD.
Thư viện VeCAD có một tập hợp các hàm chức năng và sự kiện cho phép tạo các đối tượng đặc biệt Thư viện VeCAD cấp phát một vùng nhớ cho mỗi đối tượng, ứng
dụng của người lập trình chịu trách nhiệm cho loại dữ liệu sẽ được lưu trong vùng nhớnày Khi có nhu cầu thực hiện một vài hành động nào đó với đối tượng tùy biến,
VeCAD thực thi các sự kiện đặc biệt và ứng dụng của người lập trình phải xử lý chúng
để tạo nên các thay đổi tương ứng trong đối tượng hay bản vẽ
Đối tượng tùy biến là một đối tượng đặc biệt của VeCAD VeCAD xin cấp phát
một vùng nhớ cho đối tượng này và lưu chúng vào trong một bản vẽ Khi đối đượng
tùy biến phải được hiển thị trong một cửa sổ hoặc sửa đổi bởi người sử dụng VeCAD
thực thi các sự kiện đặc biệt và ứng dụng của người lập trình chịu trách nhiệm thựchiện các sự kiện này theo thứ tự mà người sử dụng có thể thao tác với các đối tượng
tùy biến này như các đối tượng thông thường của VeCAD.
Nếu một bản vẽ trong đó có chứa các đối tượng tùy biến được mở bằng bằng mộtchương trình khác mà không được hỗ trợ các đối tượng này thì người dùng sẽ khôngthể thấy chúng trong các chương trình này
Trang 161.6.1 Cách thức tạo đối tượng tùy biến.
Để tạo một đối tượng tùy biến trong lập trình ta sử dụng hàm có tên
xác định loại đối tượng thông qua hàm có tên là “EntityGetType” Nếu đối tượng này
là một đối tượng tùy biến (CAD_ENT_CUSTOM), các hàm dưới đây có thể được sử
dụng:
CustomPutOwner Thiết lập một con trỏ trỏ đến một đối tượng bao bọc một đối tượng tùy biến
CustomGetOwner Trả lại một con trỏ trỏ đến một đối tượng bao bọc một đối tượng tùy biến
CustomGetType Trả lại kiểu của đối tượng tùy biến
CustomPutData Sao chép dữ liệu vào đối tượng tùy biến
CustomGetData Sao chép dữ liệu từ đối tượng tùy biến
CustomGetDataPtr Trả lại một con trỏ trỏ đến dữ liệu
CustomGetSize Trả lại kích thước của bộ đệm chứa dữ liệu của đối tượng tùy biến
int hDwg, // “Handle” của đối tượng VeCAD
int CustType, // Kiểu của đối tượng tùy biến
void* pData, // Con trỏ trỏ đến dữ liệu
int nBytes // Kích thước dữ liệu
)
Tham số:
hDwg - “Handle” của đối tượng VeCAD
CustType - Kiểu của đối tượng tùy biến Giá trị này sẽ được chuyển tiếp
cùng với các sự kiện của đối tượng tùy biến
pData - Con trỏ trỏ đến dữ liệu sẽ sao chép cho đối tượng này khi được
Trang 17nBytes - Kích thước dữ liệu của đối tượng tính theo byte Nó định nghĩa
rằng kích thước bộ nhớ cần thiết mà VeCAD sẽ cấp phát cho đốitượng này
Giá trị trả lại: Giá trị “handle” của đối tượng tùy biến được tạo ra hoặc giá trị NULL
nếu hàm này không tạo ra đối tượng tùy biến
Ý nghĩa: Tạo một con trỏ trỏ đến đối tượng chứa đối tượng tùy biến của VeCAD Sau
đó, ta có thể truy xuất con trỏ trỏ đến đối tượng tùy biến nếu ta có giá trị “handler” củađối tượng VeCAD thông qua hàm sự kiện
Cú pháp:
void CadCustomPutOwner (
int hEnt, //“Handle” của đối tượng VeCAD
void* pObject // Con trỏ trỏ đến đối tượng tùy biến
)
Tham số:
hEnt - “Handle” của đối tượng tùy biến
pObject - Con trỏ trỏ đến đối tượng tùy biến
Giá trị trả lại: Không có.
Ent - “Handle” của đối tượng tùy biến
Giá trị trả lại: Con trỏ trỏ đến đối tượng tùy biến.
Ý nghĩa: Trả lại kiểu của đối tượng tùy biến
Trang 18hEnt - “Handle” của đối tượng tùy biến.
Giá trị trả lại: Kiểu của con trỏ trỏ đến đối tượng tùy biến Nó là giá trị mà đã được
đăng ký khi đối tượng tùy biến được tạo ra
Ý nghĩa: Sao chép dữ liệu vào đối tượng tùy biến
Cú pháp:
void CadCustomPutData (
int hEnt, // “Handle” của đối tượng tùy biến
void* pData, // con trỏ trỏ đến dữ liệu
int nBytes // kích thước dữ liệu
)
Tham số:
hEnt - “Handle” của đối tượng tùy biến
pData - Con trỏ trỏ đến dữ liệu sẽ sao chép cho đối tượng này khi được
tạo ra
nBytes - Kích thước dữ liệu của đối tượng tính theo byte Nó định nghĩa
rằng kích thước bộ nhớ cần thiết mà VeCAD sẽ cấp phát cho đốitượng này
Giá trị trả lại: Không có.
Ý nghĩa: Truy xuất dữ liệu từ đối tượng tùy biến
Cú pháp:
Trang 19void CadCustomGetData (
int hEnt, // “Handle” của đối tượng tùy biến
void* pData // Con trỏ trỏ đến vùng nhớ đệm
)
Tham số:
hEnt - “Handle” của đối tượng tùy biến
pData - Con trỏ trỏ đến vùng nhớ đệm có thể truy xuất dữ liệu từ đối
tượng Ứng dụng của người lập trình phải cấp phát đủ bộ nhớ chovùng nhớ đệm kiểm soát dữ liệu này Người lập trình có thể truy
xuất kích thước của dữ liệu bằng hàm CadCustonGetSize.
Giá trị trả lại: Không có.
Ý nghĩa: Trả lại con trỏ trỏ đến dữ liệu của đối tượng tùy biến Sử dụng con trỏ này ta
có thể đọc/ghi dữ liệu của đối tượng này Cách này thực hiện nhanh hơn cách
hEnt - “Handle” của đối tượng tùy biến
Giá trị trả lại: Con trỏ trỏ đến đối tượng tùy biến.
Trang 20hEnt - “Handle” của đối tượng tùy biến.
Giá trị trả lại: Kích thước của dữ liệu tính theo byte.
1.6.2 Hiển thị dữ liệu của đối tượng tùy biến trên cửa sổ “Properties”
Các hàm sau đây được sử dụng để hiển thị các dữ liệu của đối tượng tùy biến
trên của sổ “Properties” nơi mà người dùng có thể thay đổi dữ liệu của đối tượng tùy
biến
AddCustProp Truyền các giá trị của thuộc tính đến cửa sổ “Properties”
SetCustProp Cập nhật các giá trị hiển thị trong cửa sổ “Properties”
SetCustPropMode Cập nhật chế độ truy cập cho một thuộc tính nào đó
Ý nghĩa: Truyền giá trị thuộc tính của đối tượng tùy biến đến cửa sổ “Properties”.
Hàm này chỉ có thể được sử dụng trong hàm sự kiện “CEntGetProps”
Cú pháp:
CadAddCustProp (
int IdProp, // Chỉ số xác định thuộc tính
string szName, // Tên thuộc tính
string szValue, // Giá trị thuộc tính
int ValType // Kiểu giá trị
)
Tham số:
IdProp - Thuộc tính xác định đối tượng Nó sẽ được chuyển tiếp đến hàm
sự kiện CentGetProps khi người dùng thay đổi các giá trị của
thuộc tính này
szName - Tên của thuộc tính Giá trị của tham số này sẽ được hiển thị ở cột
bên trái trong của sổ “Properties”.
szValue - Chuỗi ký tự biểu thị cho giá trị của thuộc tính Giá trị của tham số
này sẽ được hiển thị ở cột bên phải trong của sổ “Properties”.
ValType - Loại của điều khiển trong cửa sổ “Properties” có thể nhận một
trong các giá trị dưới đây:
Trang 21CAD_PROP_VALUE Hộp thoại “Combobox” với 2 giá trị “Yes” và
“No”
CAD_PROP_LIST Hộp thoại “Combobox” với một danh sách các
giá trị có thể nhận đượcViệc kết hợp với bất kỳ loại hằng số nào trên đây đều có thể được
sử dụng hằng số CAD_PROP_READONLY để tạo nên một thuộc
tính không thay đổi được
Giá trị trả lại: Nếu hàm thành công, giá trị trả lại sẽ khác “0”.
Ý nghĩa: Hàm này chỉ có thể được dùng trong hàm sự kiện “CEntPutProp” nhằm cập
nhật các giá trị hiển thị trong cửa sổ “Properties”.
Cú pháp:
CadSetCustProp (
int IdProp, // Chỉ số xác định thuộc tính
string szValue // Giá trị mới
)
Tham số:
IdProp - Thuộc tính xác định đối tượng Tham số này được gán cho thuộc
tính cùng với hàm CadAddCustProp.
szValue - Giá trị mới gán cho thuộc tính của đối tượng tùy biến
Giá trị trả lại: Nếu hàm thành công, giá trị trả lại sẽ khác “0”.
Ý nghĩa: Hàm này chỉ có thể được dùng trong hàm sự kiện “CEntPutProp” nhằm cập
nhật chế độ truy cập đến các giá trị xác định trong cửa sổ “Properties”.
Cú pháp:
CadSetCustPropMode (
int IdProp, // Chỉ số xác định thuộc tính
bool bReadOnly // Chế độ truy cập mới
)
Tham số:
IdProp - Thuộc tính xác định đối tượng Tham số này được gán cho thuộc
tính cùng với hàm CadAddCustProp.
Trang 22bReadOnly - Nếu giá trị là đúng (khác “0”) thì người dùng không thể thay đổi
giá trị cua thuộc tính
Giá trị trả lại: Nếu hàm thành công, giá trị trả lại sẽ khác “0”.
1.6.3 Các sự kiện của đối tượng tùy biến
Tên sự
kiện Sự kiện xảy ra khi…
CEntGetName VeCAD cần tên của đối tượng tùy biến
CEntGetProps VeCAD cần điền các giá trị vào cửa sổ “Properties” cho đối tượng tùy biến
CEntPutProp Người dùng thay đổi giá trị thuộc tính trong cửa sổ “Properties”
CEntGetExts VeCAD cần các thuộc tính mở rộng của đối tượng tùy biến 3D
CEntNumGrips VeCAD cần số điểm “grip” của đối tượng tùy biến
CEntGetGrip VeCAD cần vị trí các điểm “grip”của đối tượng tùy biến
CEntMoveGrip Người dùng di chuyển các điểm “grip” của đối tượng tùy biến
CEntMove Người dùng di chuyển đối tượng tùy biến
CEntRotate Người dùng xoay đối tượng tùy biến
CEntScale Người dùng thay đổi tỉ lệ hiển thị của đối tượng tượng tùy biến
CEntMirror Người dùng sao chép đối tượng tùy biến
CEntDisplay VeCAD hiển thị đối tượng tùy biến
Ý nghĩa: VeCAD gọi sự kiện “CEntGetName” mỗi khi cần truy xuất tên của đối
tượng tùy biến Ứng dụng của người lập trình phải trả lại tên của đối tượng
thông qua hàm “CadSetReturnStr” VeCAD hiển thị tên của đối tượng này trong cửa sổ “Properties” khi đối tượng này được lựa chọn.
Cú pháp: Hàm này phải được tạo ra trong ứng dụng của người lập trình theo cú pháp
sau
void CEntGetNameProc (
int hDwg, // “handle” của đối tượng VeCAD
int hEnt // “handle” của đối tượng tùy biến
)
Tham số:
hDwg - “Handle” của đối tượng VeCAD
hEnt - “Handle” của đối tượng tùy biến
Giá trị trả lại: Tên của đối tượng tùy biến xác định Giá trị này được trả lại bởi hàm
Trang 231.6.3.2 Hàm sự kiện CEntGetProps
Ý nghĩa: VeCAD gọi sự kiện “CEntGetProps” mỗi khi cần truy xuất các thuộc tính
của đối tượng tùy biến cho cửa sổ “Properties” Trong sự kiện này người lập trình phải sử dụng hàm “CadAddCustProp” để thiết lập cho các giá trị
của các thuộc tính
Cú pháp: Hàm này phải được tạo ra trong ứng dụng của người lập trình theo cú pháp
sau
void CEntGetPropsProc (
int hDwg, //“handle” của đối tượng VeCAD
int hEnt // “handle” của đối tượng tùy biến
)
Tham số:
hDwg - “Handle” của đối tượng VeCAD
hEnt - “Handle” của đối tượng tùy biến
Giá trị trả lại: Không có.
Ý nghĩa: VeCAD gọi sự kiện “CEntPutProps” sau khi người dùng thay đổi giá trị
của thuộc tính của đối tượng tùy biến trong cửa sổ “Properties”
Cú pháp: Hàm này phải được tạo ra trong ứng dụng của người lập trình theo cú pháp
sau
void CEntPutPropProc (
int hDwg, // “handle” của đối tượng VeCAD
int hEnt // “handle” của đối tượng tùy biến
int PropId, // chỉ số xác định thuộc tính
string szValue // giá trị của thuộc tính
)
Tham số:
hDwg - “Handle” của đối tượng VeCAD
hEnt - “Handle” của đối tượng tùy biến
PropId - Tham số xác định đối tượng, nó đã được gán cho thuộc tính đối
tượng khi thuộc tính này đã được thếp vào cửa sổ “Properties” trong hàm “CadAddCustProp”
Trang 24szValue - Giá trị mới cho thuộc tính của đối tượng tùy biến, dưới dạng
chuỗi Nếu thuộc tính này ở dạng dữ liệu khác, người lập trìnhphải có sự chuyển đổi thích hợp
Trong sự kiện này người lập trình phải kiểm tra tính hợp lệ của giá trị, và thiết
lập chính xác giá trị trong của sổ “Properties” cùng với hàm
“CadSetCustProp” Nếu giá trị mới làm thay đổi các giá trị của các thuộc tính
khác, thì người lập trình cũng phải thiết lập cho chúng Nếu người lập trình cầnthiết phải thay đổi chế độ “chỉ đọc” (“ReadOnly”) cho một vài thuộc tính người
lập trình có thể sử dụng hàm “CadSetCustPropMode”.
Giá trị trả lại: Không có.
Ý nghĩa: VeCAD gọi sự kiện “CEntGetExts” khi truy xuất không gian 3 chiều (3D)
của đối tượng tùy biến Phạm vi không gian 2 chiều trong cửa sổ hiện thịđược tính toán tự động Nếu người lập trình không cần quan tâm đến bản vẽ
3 chiều trong ứng dụng của người lập trình thì người lập trình có thể bỏ qua
sự kiện này
Cú pháp: Hàm này phải được tạo ra trong ứng dụng của người lập trình theo cú pháp
sau
void CEntGetExtsProc (
int hDwg, // “handle” của đối tượng VeCAD
int hEnt, // “handle” của đối tượng tùy biến
double* pXmin, // con trỏ trỏ đến tọa độ X nhỏ nhất
double* pYmin, // con trỏ trỏ đến tọa độ Y nhỏ nhất
double* pZmin, // con trỏ trỏ đến tọa độ Z nhỏ nhất
double* pXmax, // con trỏ trỏ đến tọa độ X lớn nhất
double* pYmax, // con trỏ trỏ đến tọa độ Y lớn nhất
double* pZmax // con trỏ trỏ đến tọa độ Z lớn nhất
)
Tham số:
pXmin, pYmin, pZmin - Con trỏ trỏ đến biến sẽ nhận giá trị nhỏ nhất của
không gian
Trang 25pXmax, pYmax, pZmax - Con trỏ trỏ đến biến sẽ nhận giá trị lớn nhất của
không gian
Giá trị trả lại: Không có.
Ý nghĩa: VeCAD gọi sự kiện “CEntNumGrips” khi truy xuất số điểm “grip” của một
đối tượng tùy biến
Cú pháp: Hàm này phải được tạo ra trong ứng dụng của người lập trình theo cú pháp
sau
void CEntNumGripsProc (
int hDwg, // “handle” của đối tượng VeCAD
int hEnt, // “handle” của đối tượng tùy biến
int* pNum // con trỏ trỏ đến biến số nguyên
)
Tham số:
“grip”
Giá trị trả lại: Không có.
Ý nghĩa: VeCAD gọi sự kiện “CEntGetGrip” khi truy xuất tọa độ điểm “grip” của
một đối tượng tùy biến
Cú pháp: Hàm này phải được tạo ra trong ứng dụng của người lập trình theo cú pháp
sau
void CEntGetGripProc (
int hDwg, // “handle” của đối tượng VeCAD
int hEnt, // “handle” của đối tượng tùy biến
uint iGrip, // Chỉ số của điểm “grip”
double* pX, // con trỏ trỏ đến biến tọa độ X
double* pY, // con trỏ trỏ đến biến tọa độ Y
double* pZ // con trỏ trỏ đến biến tọa độ Z
)
Tham số:
Trang 26hDwg - “Handle” của đối tượng VeCAD.
hEnt - “Handle” của đối tượng tùy biến
iGrip - Chỉ số điểm gốc cơ sở của điểm “grip”
pX, pY, pZ - Con trỏ trỏ đến biến số nguyên sẽ chứa các tọa độ điểm “grip”
Giá trị trả lại: Không có.
Ý nghĩa: VeCAD gọi sự kiện “CEntMoveGrip” khi người dùng di chuyển điểm grip
của đối tượng tùy biến
Cú pháp: Hàm này phải được tạo ra trong ứng dụng của người lập trình theo cú pháp
sau
void CEntMoveGripProc (
int hDwg, // “handle” của đối tượng VeCAD
int hEnt, // “handle” của đối tượng tùy biến
uint iGrip, // chỉ số điểm “grip”
double dx, // khoảng dịch chuyển X của điểm “grip” double dy, // khoảng dịch chuyển Y của điểm “grip” double dz // khoảng dịch chuyển Z của điểm “grip” )
Tham số:
hDwg - “Handle” của đối tượng VeCAD
hEnt - “Handle” của đối tượng tùy biến
iGrip - Chỉ số điểm gốc cơ sở của điểm “grip”
dx, dy, dz - Khoảng dịch chuyển của điểm “grip”
Giá trị trả lại: Không có.
Ý nghĩa: VeCAD gọi sự kiện “CEntMove” khi người dùng di chuyển đối tượng tùy
biến Trong hàm này người lập trình phải hiệu chỉnh dữ liệu của đối tượngtùy biến, theo thứ tự nó hiển thị chính xác sau khi di chuyển
Cú pháp: Hàm này phải được tạo ra trong ứng dụng của người lập trình theo cú pháp
sau
Trang 27void CEntMoveProc (
int hDwg, // “handle” của đối tượng VeCAD
int hEnt, // “handle” của đối tượng tùy biến
double dx, // khoảng dịch chuyển X của điểm “grip” double dy, // khoảng dịch chuyển Y của điểm “grip” double dz // khoảng dịch chuyển Z của điểm “grip” )
Tham số:
hDwg - “Handle” của đối tượng VeCAD
hEnt - “Handle” của đối tượng tùy biến
dx, dy, dz - Khoảng dịch chuyển
Giá trị trả lại: Không có.
1.6.3.9 Hàm sự kiện CEntRotate
Ý nghĩa: VeCAD gọi sự kiện “CEntRotate” khi người dùng xoay đối tượng tùy biến.
Trong hàm này người lập trình phải hiệu chỉnh dữ liệu của đối tượng tùybiến, theo thứ tự nó hiển thị chính xác sau khi xoay
Cú pháp: Hàm này phải được tạo ra trong ứng dụng của người lập trình theo cú pháp
sau
void CEntRotateProc (
int hDwg, // “handle” của đối tượng VeCAD
int hEnt, // “handle” của đối tượng tùy biến
double x0, // tọa độ X của tâm quay
double y0, // tọa độ X của tâm quay
double z0, // tọa độ X của tâm quay
double Angle, // góc quay
int Plane // mặt phẳng quay
)
Tham số:
hDwg - “Handle” của đối tượng VeCAD
hEnt - “Handle” của đối tượng tùy biến
x0, y0, z0 - Tọa độ tâm quay
Angle - Góc quay tính theo radian theo chiều ngược chiều kim đồng hồ
tính từ trục 0-x
Trang 28Plane - Mặt phẳng quay.
Giá trị trả lại: Không có.
1.6.3.10 Hàm sự kiện CEntScale
Ý nghĩa: VeCAD gọi sự kiện “CEntScale” khi người dùng thu phóng đối tượng tùy
biến Trong hàm này người lập trình phải hiệu chỉnh dữ liệu của đối tượngtùy biến, theo thứ tự nó hiển thị chính xác sau thao tác thu phóng
Cú pháp: Hàm này phải được tạo ra trong ứng dụng của người lập trình theo cú pháp
sau
void CEntScaleProc (
int hDwg, // “handle” của đối tượng VeCAD
int hEnt, // “handle” của đối tượng tùy biến
double x0, // tọa độ X của tâm thu phóng
double y0, // tọa độ Y của tâm thu phóng
double z0, // tọa độ Z của tâm thu phóng
double ScaleX, // tỷ lệ dọc theo trục X
double ScaleY, // tỷ lệ dọc theo trục X
double ScaleZ // tỷ lệ dọc theo trục X
)
Tham số:
ScaleX, ScaleY, ScaleZ - Giá trị tỉ lệ thu phóng dọc theo từng trục
Giá trị trả lại: Không có.
1.6.3.11 Hàm sự kiện CEntMirror
Ý nghĩa: VeCAD gọi sự kiện “CEntMirror” khi người dùng lấy đối xứng đối tượng
tùy biến Trong hàm này người lập trình phải hiệu chỉnh dữ liệu của đốitượng tùy biến, theo thứ tự nó hiển thị chính xác sau thao tác lấy đối xứng
Cú pháp: Hàm này phải được tạo ra trong ứng dụng của người lập trình theo cú pháp
sau
Trang 29void CEntMirrorProc (
int hDwg, // “handle” của đối tượng VeCAD
int hEnt, // “handle” của đối tượng tùy biến
double A1, // hệ số xác định các cạnh lấy đối xứng
double B1, // hệ số xác định các cạnh lấy đối xứng
int Plane // mặt phẳng lấy đối xứng
)
Tham số:
A1, B1 - Các hệ số xác định các cạnh lấy đối xứng
Giá trị trả lại: Không có.
1.6.3.12 Hàm sự kiện CEntDisplay
Ý nghĩa: VeCAD gọi sự kiện “CEntDisplay” khi cần hiển thị hoặc tái tạo lại đối
tượng tùy biến Trong hàm này người lập trình phải dùng các hàm
CadDraw… để xác định kiểu dáng của đối tượng tùy biến.
Cú pháp: Hàm này phải được tạo ra trong ứng dụng của người lập trình theo cú pháp
sau
void CEntDisplayProc (
int hDwg, // “handle” của đối tượng VeCAD
int hEnt, // “handle” của đối tượng tùy biến
)
Tham số:
hDwg - “Handle” của đối tượng VeCAD
hEnt - “Handle” của đối tượng tùy biến
Giá trị trả lại: Không có.
1.6.4 Các sự kiện dùng khi hiển thị đối tượng tùy biến
Trong thủ tục của sự kiện CentDisplay người lập trình phải sử dụng các hàm thiết
lập sau để tạo nên hiển thị của đối tượng tùy biến trong một bản vẽ
DrawSet Thiết lập các thông số vẽ
Trang 30DrawGetDC Trả lại “handle” của thiết bị hiện tại
DrawAddVertex Định nghĩa một đỉnh của đối tượng hình học
DrawGenArc Phát sinh một mảng các đỉnh tạo nên một cung tròn
DrawGenCircle Phát sinh một mảng các đỉnh tạo nên một đường tròn
DrawPolyline Vẽ một đường “polyline”
DrawPolygon Vẽ một đa giác ( đường “polyline” khi kín được tô đặc bên trong)
DrawPolyPolygon Vẽ một loạt các đa giác
int Param, // chỉ số của tham số
int Value // giá trị mới cho tham số
)
Tham số:
Param - Xác định tham số sẽ được thiết lập Có thể lấy một trong các
hằng số sau
CAD_CE_CLEARVERS Xóa bộ nhớ đệm các đỉnh Bỏ qua
CAD_CE_COLOR Được dùng trong hàm sự kiện
CentDisplay để thiết lập màu sắc
cho các phần tử của đối tượng tùy biến
Nếu người lập trình thiết lập màu sắc bởi phương thức này thì sau này người lập trình không thể thay
Màu VeCAD
Trang 31diện VeCAD.
Tham số này được sử dụng để tạo các đối tượng tùy biến có nhiều màu sắc.
CAD_CE_BRUSH
Định nghĩa mẫu tô cho các hình đa giác được vẽ bởi các hàm
CadDraw…
Tham số này không có ảnh hưởng
trong hàm sự kiện CEntDisplay.
“Handle” của đối tượng vẽ của Windows (HBRUSH) Nếu giá trị ‘0’ được xác định thì mẫu tô đặc cùng với màu hiện tại của VeCAD sẽ được sử dụng.Value - Giá trị cho tham số đã xác định Một vài tham số không yêu cầu
Ý nghĩa: Thêm một đỉnh của đường đa tuyến vào vùng nhớ đệm Trước khi người lập
trình gọi hàm này để vẽ một đường đa tuyến, người lập trình phải đưa tất cảcác đỉnh của nó vào trong vùng nhớ đệm
Chú ý: Mặc định, vùng nhớ đệm đỉnh đường đa tuyến sẽ được xóa sau khi việc thực
hiện một hàm vẽ khối hình học Nếu người lập trình không muốn xóa vùng nhớ đệm
Trang 32này thì phải gọi hàm CadDrawSet cùng với tham số CAD_CE_KEEPVERS trước khi
double Xcen, // tọa độ X của tâm cung tròn
double Ycen, // tọa độ Y của tâm cung tròn
double Zcen, // tọa độ Z của tâm cung tròn
double Radius, // bán kính cung tròn
double AngStart, // góc bắt đâu của cung tròn
double AngArc, // góc tổng của cung tròn
int nVers // số đỉnh trên một cung tròn 90 0
)
Tham số:
Xcen, Ycen, Zcen - Tọa độ điểm tâm cung tròn
Radius - Bán kính cung tròn
AngStart - Góc bắt đầu của cung tròn tính theo radian, theo chiều
ngược chiều kim đồng hồ tính từ trục O-X
AngArc - Góc của cung tròn, tính theo radian Giá trị dương có
nghĩa là hướng của cung tròn theo chiều ngược chiều kimđồng hồ, giá trị âm có nghĩa là hướng của cung tròn theochiều thuận chiều kim đồng hồ
nVers - Số đỉnh được phát sinh cho một cung tròn có góc là 90o
Giá trị trả về: Số đỉnh được phát sinh.
Ý nghĩa: Phát sinh một mảng các đỉnh tạo nên một đường tròn và lưu chúng vào trong
một vùng nhớ đệm
Cú pháp:
Trang 33CadDrawGenCircle (
double Xcen, // tọa độ X của tâm đường tròn
double Ycen, // tọa độ Y của tâm đường tròn
double Zcen, // tọa độ Z của tâm đường tròn
double Radius, // bán kính đường tròn
int nVers // số đỉnh trên một đoạn đường tròn góc 90 0
Chú ý: Mặc định, hàm này sẽ xóa toàn bộ các đỉnh trong vùng nhớ đệm sau khi sử
dụng Để giữ vùng nhớ đệm cho các thao tác khác, trước đó gọi hàm
CadDrawSet với tham số CAD_CE_KEEPVERS.
Ý nghĩa: Hàm này thực hiện vẽ một đa giác (đường đa tuyến khép kín và được tô đặc)
sử dựng các đỉnh mà đã được thêm trước vào vùng nhớ đệm bằng hàm
CadDrawAddVertex.
Cú pháp:
void CadDrawPolygon ()
Tham số: Không có.
Trang 34Giá trị trả về: Không có.
Chú ý: Mặc định, hàm này sẽ xóa toàn bộ các đỉnh trong vùng nhớ đệm sau khi sử
dụng Để giữ vùng nhớ đệm cho các thao tác khác, trước đó gọi hàm
CadDrawSet với tham số CAD_CE_KEEPVERS.
int* PgonSize, // con trỏ trỏ đến mảng các số nguyên
int nPgons // số đa giác
)
Tham số:
PgonSize - Con trỏ trỏ đến một mảng các số nguyên, mỗi một phần tử của
mảng sẽ xác định số điểm tương ứng của mỗi đa giác Mỗi sốnguyên phải lớn hơn hoặc bằng 3 Tổng các số này phải bằng sốđỉnh trong vùng nhớ đệm
nPgons - Xác định tổng số đa giác
Giá trị trả về: Không có.
Chú ý: Mặc định, hàm này sẽ xóa toàn bộ các đỉnh trong vùng nhớ đệm sau khi sử
dụng Để giữ vùng nhớ đệm cho các thao tác khác, trước đó gọi hàm
CadDrawSet với tham số CAD_CE_KEEPVERS.
Ý nghĩa: Thực hiện vẽ một đường thẳng trong cửa sổ VeCAD.
Cú pháp:
Trang 35void CadDrawLine (
double X1, // tọa độ X của điểm đầu
double Y1, // tọa độ Y của điểm đầu
double Z1, // tọa độ Z của điểm đầu
double X2, // tọa độ X của điểm cuối
double Y2, // tọa độ Y của điểm cuối
double Z2 // tọa độ Z của điểm cuối
)
Tham số:
X1, Y1, Z1 - Tọa độ của điểm đầu đoạn thẳng
X2, Y2, Z2 - Tọa độ của điểm cuối đoạn thẳng
double X, // tọa độ X của điểm vẽ
double Y, // tọa độ Y của điểm vẽ
double Z, // tọa độ Z của điểm vẽ
int PtMode, // cách thể hiện của điểm
double PtSize // kích thước của điểm
)
Tham số:
X, Y, Z - Tọa độ của điểm vẽ
PtMode - Xác định thể hiện của điểm vẽ theo các hằng số sau:
CAD_PNT_PIXEL Điểm ảnh CAD_PNT_NONE Không có gì CAD_PNT_PLUS Dấu cộng “+”
CAD_PNT_X Dấu nhân “x”
CAD_PNT_TICK Dấu tích thẳng đứng Các giá trị hằng số sau có thể được sử dụng kết với từng hằng số trên để tạo thành thể hiện thích hợp
CAD_PNT_CIRCLE Hình tròn
Trang 36CAD_PNT_SQUARE Hình vuôngPtSize - Kích thước điểm
Giá trị dương (+): nghĩa là theo đơn vị của bản vẽ, việc hiển thịcủa kích thước điểm phụ thuộc vào tỷ lệ khung nhìn của bản vẽtrong một cửa sổ
Giá trị âm (-): nghĩa là theo tỷ lệ % chiều cao của màn hình, việchiển thị kích thước điểm luôn là một hằng số
Giá trị trả về: Không có.
Chú ý: Các minh họa sau chỉ ra toàn bộ kiểu hiển thị của điểm:
Hình 2 Hình vẽ mô tả thể hiện của các điểm
1.6.4.11 Hàm CadDrawText
Ý nghĩa: Thực hiện vẽ dòng chữ lên cửa sổ VeCAD.
Cú pháp:
void CadDrawText (
int hDwg, // “handle” của đối tượng VeCAD
string szText, // xâu ký tự
double X, // tọa độ X của điểm chèn
double Y, // tọa độ X của điểm chèn
double Z // tọa độ X của điểm chèn
)
Tham số:
hDwg - “Handle” của đối tượng VeCAD
szText - Xâu ký tự muốn vẽ
Trang 37X, Y, Z - Tọa độ của điểm chèn Vị trí của dòng chữ xung quanh điểm
chèn phụ thuộc vào kiểu căn chỉnh hiện tại mà đã được thiết lập
trước bằng hàm CadSetTextAlign.
Chú ý: Để vẽ một dòng chữ hàm này sử dụng các tham số mặc định đã thiết lập bởi
các hàm sau:
CadSetTextAlign Thiết lập căn chỉnh hiển thị dòng chữ mặc định
CadSetTextHeight Thiết lập chiều cao chữ mặc định
CadSetTextWidth Thiết lập hệ số chiều rộng chữ mặc định
CadSetTextRotAngle Thiết lập góc quaymặc định của dòng chữ
CadSetTextOblique Thiết lập góc nghiêng mặc định của chữ
1.6.4.11.1 Hàm CadSetTextAlign
Ý nghĩa: Thiết lập căn chỉnh mặc định cho đối tượng “text” sẽ được tạo ra sau này.
Cú pháp:
CadSetTextAlign (
int hDwg, // “handle” của đối tượng VeCAD
int Align // giá hằng số căn chỉnh
)
Tham số:
hDwg - “Handle” của đối tượng VeCAD
Align - Hằng số căn chỉnh dòng chữ liên quan đến vị trí điểm chèn Thư
viện VeCAD cung cấp các hằng số mặc định sau:
CAD_TA_BOTLEFT Điểm chèn ở góc trái dưới dòng chữ
CAD_TA_BOTCENTER Điểm chèn ở chính giữa bên dưới dòng chữ
CAD_TA_BOTRIGHT Điểm chèn nằm ở góc trái dưới dòng chữ
CAD_TA_MIDLEFT Điểm chèn nằm ở giữa bên trái dòng chữ
CAD_TA_MIDCENTER Điểm chèn nằm ở tâm hình chữ nhật bao dòng chữ
CAD_TA_MIDRIGHT Điểm chèn nằm ở giữa bên phải dòng chữ
CAD_TA_TOPLEFT Điểm chèn nằm ở góc trái trên dòng chữ
CAD_TA_TOPCENTER Điểm chèn nằm ở giữa bên trên dòng chữ
CAD_TA_TOPRIGHT Điểm chèn nằm ở góc trên bên phải dòng chữ
Giá trị mặc định ban đầu là: CAD_TA_BOTLEFT.
Trang 38Giá trị trả về: Giá trị căn chỉnh mặc định trước đó.
1.6.4.11.2 Hàm CadSetTextHeight
Ý nghĩa: Thiết lập chiều cao chữ mặc định cho đối tượng “Text” tạo ra sau này.
Cú pháp:
CadSetTextHeight (
int hDwg, // “handle” của đối tượng VeCAD
double Height // chiều cao chữ
)
Tham số:
hDwg - “Handle” của đối tượng VeCAD
Height - Chiều cao chữ theo đơn vị của bản vẽ Giá trị ban đầu là 2.5
Giá trị trả về: Giá trị chiều cao chữ mặc định trước đó.
1.6.4.11.3 Hàm CadSetTextWith
Ý nghĩa: Thiết lập tỷ lệ chiều rộng chữ mặc định cho đối tượng “Text” tạo ra sau này.
Cú pháp:
CadSetTextWidth (
int hDwg, // “handle” của đối tượng VeCAD
double Width // tỷ lệ chiều rộng
)
Tham số:
hDwg - “Handle” của đối tượng VeCAD
Width - Tỷ lệ chiều rộng chữ Giá trị giới hạn từ 0.1 đến 5 Giá trị ban
đầu là 1 Giá trị trả về: Giá trị tỷ lệ chiều rộng chữ mặc định trước đó.
1.6.4.11.4 Hàm CadSetTextRotAngle
Ý nghĩa: Thiết lập góc quay mặc định cho đối tượng “Text” tạo ra sau này.
Cú pháp:
Trang 39CadSetTextRotAngle (
int hDwg, // “handle” của đối tượng VeCAD
double Angle // góc quay
)
Tham số:
hDwg - “Handle” của đối tượng VeCAD
Angle - Góc quay theo chiều ngược chiều kim đồng hồ Giá trị ban đầu
là 0.0 Giá trị trả về: Góc quay mặc định trước đó.
1.6.4.11.5 Hàm CadSetTextOblique
Ý nghĩa: Thiết lập góc nghiêng chữ mặc định cho đối tượng “Text” tạo ra sau này.
Cú pháp:
CadSetTextOblique (
int hDwg, // “handle” của đối tượng VeCAD
double Angle // góc nghiêng của chữ
)
Tham số:
hDwg - “Handle” của đối tượng VeCAD
Angle Góc nghiêng của ký tự tính theo đơn vị độ Giá trị giới hạn từ
-70 đến -70 Giá trị ban đầu là 0.
Giá trị trả về: Góc nghiêng của ký tự trước đó.
1.6.4.12 Hàm CadDrawBlock
Ý nghĩa: Thực hiện vẽ một khối lên cửa sổ VeCAD tương tự như đối tượng khối
nhưng không thêm đối tượng này vào bản vẽ
Cú pháp:
Trang 40void CadDrawBlock (
int hDwg, // “handle” của đối tượng VeCAD
int hBlock, // “handle” của một khối nào đó
double X, // tọa độ X của điểm chèn
double Y, // tọa độ Y của điểm chèn
double Z, // tọa độ Z của điểm chèn
double ScaleX, // tỷ lệ dọc theo trục X
double ScaleY, // tỷ lệ dọc theo trục Y
double ScaleZ, // tỷ lệ dọc theo trục Z
double RotAngle // góc quay
)
Tham số:
X, Y, Z - Tọa độ của điểm chèn Điểm chèn cơ sở của khối
này sẽ bị thay thế bởi điểm này,ScaleX, ScaleY, ScaleZ - Tỷ lệ của một khối khi được vẽ
RotAngle - Góc quay của khối khi được vẽ
Giá trị trả về: Không có.
1.7 Đánh giá về thư viện đồ họa VeCAD:
Từ những trình bày trên đây, có thể thấy thư viện đồ họa VeCAD cung cấp đầy
đủ các đối tượng hình học cơ bản, và các hàm chức năng phục vụ cho việc xử lý hiểnthị các đối tượng này
Ngoài ra thư viện còn cung cấp cho người lập trình khả năng mở rộng để xâydựng thêm các đối tượng hình học mới phục vụ cho chính mình