Tải bản đầy đủ (.doc) (32 trang)

Sử dụng phần mềm visual basic for application xây dựng chương trình tính toán thiết kế và vẽ két dự trữ LO cho tàu hàng 10500 tấn, lắp máy chính MAN bw 6S35MC

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (306.16 KB, 32 trang )

MỞ ĐẦU
a. Tính thời sự của đề tài
Trong những năm gần đây, cùng với sự phát triển mạnh mẽ của công
nghiệp đóng tàu trong cả nước và động cơ Diesel là một thiết bị động lực chính
được áp dụng rộng rãi không chỉ dưới tàu thuỷ mà cả trên nhiều thiết bị giao
thông, vận chuyển khác.
Các hệ thống cơ bản của động cơ Diesel được chế tạo phải đảm bảo các
chi tiêu về kinh tế và kỹ thuật theo các hệ thống tiêu chuẩn nhất định. Như vậy,
quá trình tính toán thiết kế các hệ thống phục vụ của động cơ có ý nghĩa rất quan
trọng đối với hiệu quả khai thác động cơ, việc nghiên cứu hướng tới một phần
mềm tự động hoá thiết kế các hệ thống phục vụ cơ bản của động cơ Diesel thực sự
là một vấn đề cấp thiết hiện nay đối với nước ta và cả trên thế giới.
Trong công nghệ thiết kế, chế tạo các hệ thống phục vụ động cơ, thiết bị
gia công kỹ thuật số được áp dụng ở hầu hết các bước gia công, các chi tiết được
thiết kế dưới dạng bản vẽ CAD có thể tiếp cận gần hơn với ngôn ngữ của máy gia
công CNC và có thể dễ dàng sử dụng tích hợp với các ngôn ngữ lập trình khác
như C++, Delphi, Turbo .v.v... để áp dụng các phần mềm tính toán khác đã có sẵn
trong thiết kế tối ưu hoá các hệ thống phục vụ của động cơ Diesel. Vì vậy, sử
dụng ngôn ngữ lập trình VBA (Visual Basic for Application) để tự động hoá thiết
két dự trữ dầu LO là hợp lý và cần thiết.
b. Mục đích của đề tài
Sử dụng phần mềm Visual Basic for Application xây dựng chương trình
tính toán thiết kế và vẽ két dự trữ LO cho tàu hàng 10500 tấn, lắp máy chính
MAN B&W 6S35MC..


c. Nội dung chính của đề tài
Đề tài gồm các chương sau:
Chương 1: Tìm hiểu về bộ ngôn ngữ Visual Studio
Chương 2: Cơ sở lý thuyết tinhs toán két dự trữ dâu LO cho tàu
hàng 10500 tấn, lắp máy chính MAN B&W 6S35MC.


Chương 3: Sơ đồ thuật toán và dao diện của chương trình
Chương 4: Kết quả chạy phần mềm.
d. Phương pháp nghiên cứu của đề tài
Về lý thuyết trên cơ sở các tài liệu liên quan đến thiết kế tính toán két dự trữ
dầu LO xây dựng phận mềm tính toán thiết kế két dự trữ dầu LO cho tàu hàng
10500 tấn, lắp máy MAN B&W 6S35MC bằng ngôn ngữ lập trình Visual Basic
for Application.
Phần mềm này có thể áp dụng tính toán thiết kế két dự trữ dầu LO.
e. Phạm vi nghiên cứu của đề tài
Xây dựng chương trình tính toán thiết kế két dự trữ dầu LO.
f. Ý nghĩa khoa học và thực tiễn
Ứng dụng phần mềm lập trình Visual Basic for Application vào việc thiết kế
và hỗ trợ cho việc vẽ AutoCad.
Thiết kế một chương trình tự động thiết kế két dự trữ dầu LO là công việc
phức tạp, đòi hỏi nhiều công sức và thời gian. Với điều kiện còn hạn chế về thời
gian và kinh nghiệm lập trình, nội dung đề tài này mới chỉ đề cập tới việc tính
toán các kích thước cơ bản và dung tích các két. Tuy vậy đề tài cũng mong muốn
đưa ra được một hướng nghiên cứu lâu dài, tạo cơ sở ban đầu cho việc nghiên
cứu hoàn thiện một chương trình của Việt Nam để tự động thiết kế và chế tạo.

2


I. CHƯƠNG 1 : TÌM HIỂU VỀ BỘ NGÔN NGỮ LẬP TRÌNH VISUAL
STUDIO CỦA MICROSOFT VÀ VBA DO CHÍNH AUTODESK PHÁT
TRIỂN.
1.1.

Giới thiệu về VISUAL STUDIO :
Bộ Visual Studio bao gồm các ngôn ngữ lập trình trực quan:

- Microsoft Visual C++.
- Microsoft Visual J++.
- Microsoft Visual Basic.
- Microsoft Visual Foxpro.
- Microsoft Visual InterDev.
Mỗi một ngôn ngữ lập trình có một đặc điểm riêng, có một miền ứng dụng

riêng. Tuy nhiên để quan tâm tối các vấn đề mạng, quản trị cơ sở dữ liệu với
mạng, xây dựng các hệ thống phần mềm lớn với mạng ta phải kể tới Visual J ++.
Visual InterDev được dùng để thiết kế trang Web, kết hợp với Visual Basic để
quản trị cơ sở dữ liệu và thương mại điện tử. Trong ngành máy tàu, thì ta cần
phải quan tâm tới 3 ngôn ngữ còn lại đó là Visual C ++, Visual Basic, và Visual
FoxPro.
Visual C++ là một ngôn ngữ lập trình dựa trên nền tảng cơ bản của C ++ đó là
lập trình hướng đối tượng. Khi thực hiện lập trình trên C/C ++, để tạo ra các giao
dịch phức tạp, trình bày đẹp hoàn toàn không đơn giản. Nhưng đối với Visual C +
+

thì việc đó khá đơn giản. Người lập trình chỉ cần sử dụng các điều khiển hay

xây dựng một menu đưa vào ứng dụng của mình mà các mã lệnh cần phải viết
không quá dài dòng và phức tạp như trong C/C ++. Đó chính là thế mạnh của
Visual C++ trợ giúp đắc lực cho người lập trình trong khi xây dựng những đề án
chương trình lớn hoặc trong kỹ thuật lập trình hệ thống.

3


VisualBasic: Phần “Visual’’ đề cập đến phương pháp được sử dụng để tạo
giao diện đồ họa người dùng (GUI), tức là người lập trình có thể trực tiếp tạo các

giao diện đồ hoạ như Form, nút bấm, hộp chọn, hộp nhập dữ liệu. Phần “Basic’’
đề cập đến ngôn ngữ lập trình BASIC là ngôn ngữ cơ sở cho ngôn ngữ Visual
Basic. BASIC là ngôn ngữ được nhiều nhà lập trình sử dụng hơn bất kỳ ngôn
ngữ nào khác trong lịch sử máy tính. Ngôn ngữ Visual Basic đã được tạo ra từ
ngôn ngữ BASIC gốc và hiện nay có chứa hàng trăm hàm, câu lệnh, từ khoá liên
hệ trực tiếp đến Windows GUI. Những người mới bắt đầu có thể tạo các ứng
dụng hữu ích bằng cách học chỉ vài từ khoá, khả năng của ngôn ngữ này cho
phép những người chuyên nghiệp hoàn thành bất kỳ điều gì mà tạo được từ
những ngôn ngữ lập trình Windows nào khác.
Các công cụ của Visual Basic:
- Các đặc tính truy cập dữ liệu cho phép ta tạo ra các cơ sở dữ liệu, các
trình ứng dụng trọn gói, các thành phần vip server dành cho hầu hết các định
dạng cơ sở dữ liệu của vip bao gồm Microsoft SQL Server và các cơ sở dữ liệu
enterpries – level khác.
- Các kỹ thuật hoạt động xtm cho phép ta sử dụng chức năng cung cấp bởi
các trình ứng dụng khác, chẳng hạn máy sử lý từ Micrsoft Word, trang bảng tính
Microsoft Exel, và các trình ứng dụng Windows khác.
- Các khả năng internet làm cho nó dễ dàng truy cập đến các tài liệu và
các trình ứng dụng thông qua Internet hoặc Internet từ trong trình ứng dụng của
nó, hoặc để tạo các trình ứng dụng Internet server.
1.2. Đặc điểm của Microsoft VISUAL STUDIO
1.2.1. Ưu điểm
- Microsoft Visual Studio là bộ công cụ lập trình trực quan, có nghĩa là
người lập trình có thể tạo ra chương trình có giao diện đồ hoạ của Windows một
cách dễ dàng chỉ bằng vài cái nhấp chuột. Như vậy công cụ lập trình Microsoft
Visual Studio giúp giảm nhẹ rất lớn công việc lập trình của người lập trình.
4


- Microsoft Visual Studio chứa trong những chiến lược lập trình hết sức

mới mẻ và hiện đại như lập trình hướng đối tượng, xây dựng chương trình thành
các mô dun, sử dụng thư viện liên kết động. Điều này làm cho nó trở thành một
công cụ phổ biến, được nhiều người lựa chọn để lập trình trên thế giới hiện nay.
- Với Microsoft Visual Studio người lập trình có thể làm được mọi điều mà
họ muốn trong chương trình của mình, với bộ nhớ của chương trình là không có
giới hạn (chỉ phụ thuộc vào bộ nhớ của máy tính).
1.2.2. Nhược điểm
Nói đến nhược điểm của Microsoft Visual Studio thực ra chỉ là đề cập
đến những khía cạnh không chuyên nghiệp của nó về một lĩnh vực cụ thể, còn lại
nó rất nhiều ưu điểm so với các ngôn ngữ lập trình hiện nay. Microsoft Visual
Studio được thiết kế để lập trình ra những ứng dụng thông thường, phần lớn là
nhằm vào các ứng dụng mang tính thương mại, do vậy nó không thể chuyên về
một lĩnh vực nào. Như vậy, trong ngành cơ khí máy tàu, ta có thể dùng nó để lập
trình ra các chương trình tính toán thông thường. Nếu muốn tạo ra các chương
trình mang nặng tính khoa học thì ngôn ngữ lực chọn để lập trình tốt hơn sẽ là
Fortran, còn muốn tạo chương trình vẽ các bản vẽ cơ khí thì ngôn ngữ được lựa
chọn tốt hơn sẽ là AutoLisp.
1.3. Ngôn ngữ lập trình Visual Basic For Application
Sự quen thuộc với AutoCAD của người làm công tác thiết kế là hiển
nhiên bởi khả năng hỗ trợ tạo bản vẽ kỹ thuật tuyệt vời cùng tính dễ dùng của nó.
Tuy vậy, với đòi hỏi ngày càng cao của công việc, AutoCAD đang dần phát
triển, từ một môi trường hỗ trợ tạo bản vẽ, đã biến thành một môi trường tích
hợp, mà ở đó người dùng có thể lấy AutoCAD làm nền để xây dựng cho mình
những công cụ làm việc có khả năng tùy biến cao, vượt ra khỏi giới hạn là công
cụ tạo bản vẽ thông thường. công cụ phát triển AutoCAD là VBA thực sự thích
hợp để xây dựng những công cụ mang tính chất tự động như thế. Thứ nhất, nó

5



được tích hợp sẵn trong AutoCAD và có thể khai thác mọi khả năng sẵn có trong
AutoCAD. Thứ hai, ngôn ngữ lập trình VB rất phổ biến bởi tính dễ sử dụng và
nhiều tài liệu tham khảo, điều này rất hữu ích cho người lập trình bằng VBA.
Mặc dù hiện tại có rất nhiều ngôn ngữ lập trình liên quan tới ngành máy
tàu thủy nhưng với những ưu điểm đã nêu của ngôn ngữ Visual Basic for
Application thì trong phạm vi chương trình này sẽ được lựa chọn để tiến hành
xây dựng phần mềm. Tuy đây là ngôn ngữ còn một số hạn chế nhưng với yêu
cầu không quá cao và phạm vi nghiên cứu chỉ nằm ở việc thiết kế một chi tiết
xylanh của động cơ diesel 4 kỳ nên việc lựa chọn ngôn ngữ Visual Basic for
Application là rất hợp lý.

6


CHƯƠNG 2 : CƠ SỞ LÝ THUYẾT THIẾT KẾ KÉT DỰ TRỮ DẦU LO.
2.1. Yêu cầu cơ bản của hệ thống
- Các hệ thống dầu bôi trơn trong buồng máy phải được bố trí sao cho
có thể dễ dàng bảo quản và kiểm tra, Tất cả các van phải có khả năng vận
hành được từ trên sàn buồng máy,
- Phải có các khay hứng dầu rò rỉ đủ chiều cao dưới các thiết bị liên quan
tới dầu bôi trơn, các mỏ đốt, các bơm dầu đốt, các thiết bị hâm dầu, các bộ
làm mát dầu bôi trơn, các bầu lọc dầu bôi trơn và các két dầu bôi trơn, Khi
không thể trang bị các khay kim loại hứng dầu rò rỉ thì phải làm các thành
quây để giữ dầu rò rỉ lại,
- Số lượng và sản lượng của các bơm dầu bôi trơn cho máy chính, hệ trục
chân vịt và thiết bị truyền động:
- Máy chính, hệ trục chân vịt và hệ truyền động của chúng phải có một
bơm dầu bôi trơn chính, đủ sản lượng cung cấp dầu bôi trơn ở công suất liên
tục lớn nhất của máy chính và phải có một bơm dầu bôi trơn dự phòng đủ sản
lượng cấp dầu ở điều kiện hành hải bình thường, Các bơm này phải được nối

với nhau và sẵn sàng hoạt động,
- Nếu có từ hai máy chính, hệ trục chân vịt và các thiết bị truyền động
của chúng trở lên và mỗi trong số chúng có sẵn một bơm dầu bôi trơn chính và
nếu tàu cơ thể đảm bảo tốc độ hành hải ngay cả khi một trong các bơm dầu
này không hoạt động thì có thể không cần có bơm dự phòng với điều kiện là
trên tàu có một bơm dự trữ,
- Số lượng và sản lượng của các bơm dầu bôi trơn cho máy phụ, máy
phát điện và các động cơ lai chúng,
- Các máy phát điện, máy phụ cần phải trang bị kép và các động cơ lai
chúng phải có bơm dầu bôi trơn chính và dự phòng đủ sản lượng cấp dầu bôi

7


trơn ở công suất liên tục lớn nhất của máy, Các bơm này phải nối với nhau để
sẵn sang hoạt động,
- Khi mỗi hệ thống quy định ở trên có bơm dầu bôi trơn chính riêng có
thể không cần có bơm dầu bôi trơn dự phòng,
- Hệ dẫn động các bơm dầu bôi trơn dự phòng và việc sử dụng các bơm
khác,
- Hệ dẫn động các bơm dầu bôi trơn dự phòng phải được dẫn động bằng
nguồn năng lượng độc lập,
- Khi một bơm dầu bôi trơn nào đó được dẫn động cơ giới độc lập dùng
cho mục đích khác có thể sử dụng như là một bơm dầu bôi trơn dự phòng thì
có thể dùng bơm đó làm bơm dự phòng,
Van chặn giữa động cơ và két gom dầu bôi trơn:
- Đối với các tàu dài từ 100m trở lên, nếu dùng một ngăn đáy đôi làm két
gom dầu bôi trơn thì phải có van chặn dễ thao tác từ các sàn buồng máy hoặc
thiết bị chống chảy ngược thích hợp,
Các bầu lọc dầu bôi trơn:

- Khi dung hệ thống bôi trơn cướng bức (bao gồm cả việc cấp bằng trọng
lực từ két áp lực) để bôi trơn các hệ thống máy, thì phải trang bị các bầu lọc
dầu bôi trơn,
- Các bầu lọc dùng trong hệ thống bôi trơn cho máy chính, thiết bị truyền
động trục chân vịt và chân vịt biến bước phải có khả năng làm vệ sinh được
mà không phải ngừng cấp dầu bôi trơn đã được lọc,
- Bầu lọc dầu bôi trơn phải có van để giảm áp suất trước khi mở,
Các thiết bị phân ly dầu bôi trơn:
- Các hệ thống dầu bôi trơn phải có hệ thống phân ly dầu bôi trơn như các máy
phân ly dầu bôi trơn hoặc các bầu lọc thay cho các máy phân ly

8


2.3. Các công thức sử dụng để tính két dự trữ dầu LO
- Dung tích két dầu bôi trơn Diesel chính :
V = .t.Z.gm.N/ γ 103
[dm3]
- Dung tích két dầu bôi trơn Diesel phụ :
Vp = .t.Zp.gnp.Np/ γ 103 [dm3]

(2-1)
(2-2)

gm : Suất tiêu hao dầu bôi trơn máy chính , gm = 1,2

[g/kW.h]

gmp : Suất tiêu hao dầu bôi trơn máy phụ,


[g/kW.h]

gmp = 0,8

N : Công suất máy chính , N = 4200

[kW]

Np : Công suất máy phụ , Np = 310

[kW]

Z : Số tổ máy chính, Z = 1
Zp : Số tổ máy phụ , Zp = 2
t : Thời gian hoạt động của động cơ, t = 1440

[giờ]

γ Tỷ trọng trung bình của dầu nhờn ở điều kiện khai thác [kg/cm3]

γ

[kg/dm3]

= 0,9

Vậy chọn két dự trữ dầu LO như sau :
- Dung tích két dầu bôi trơn dự trữ cho diesel chính :
V0 = V. k1.k2.k3.10-3


[m3]

(2-3)

- Dung tích két dầu bôi trơn dự trữ cho diesel phụ :
V0p = Vp. k.k1.k2.k3 .10-3

[m3]

k : Hệ số hoạt động đồng thời của các Diesel phụ, k = 0,5
k1 : Hệ số dự trữ dầu bôi trơn,

k1 = 1,2

k2 : Hệ số sử dụng dầu bôi trơn,

k2 = 1,1

k3 : Hệ số dung tích két

k3 = 1,12

9

(2-4)


CHƯƠNG 3: XÂY DỰNG SƠ ĐỒ THUẬT TOÁN VÀ DAO DIỆN CỦA
CHƯƠNG TRÌNH.
3.1. Sơ đồ thuật toán của chương trình


Hình 1: Sơ đồ thuật toán
10


3.2. Dao diện làm việc của chương trình
3.2.1. Dao diện làm việc số 1

Hình 2: dao diện làm việc đầu tiên
Giải thích dao diện :
Dao diện làm việc đầu tiên là dao diện khi người dùng bắt đầu chạy
chương trình trên nền autocad. Dao diện bao gồm những thông tin sau:
- Tên đề tài: Tính toán các thông số …
- Xây dựng phần mềm: bao gồm những thông tin về giảng viên hướng dẫn bài
tập lớn, tên sinh viên, MSV, lớp, trường.
-Thông số người dùng: phần nay bao gồm các thông tin do người dùng nhập
vào như: Họ và tên người dùng, ở đây mặc định sẽ là Phùng Văn Tiến, tương
tự là lớp và giảng viên hướng dẫn. Những thông tin mà người dùng nhập vào
sẽ được sử dụng để in vào khung tên khi suất ra bản vẽ autocad.

11


-Nút bấm OK : nút bấm này sẽ lưu thông tin người dùng vào bản vẽ autocad
đồng thời chuyển sang màn hình làm việc tiếp theo. Trong lần tiếp theo sử
dụng phần mềm tiếp theo thì nút bấm OK này sẽ thực hiện xóa thông tin người
dùng trước đó và lưu thông tin người dùng mới.
- Nút bấm EXIT: nút bấm này sẽ đưa người dùng thoát khỏi ứng dụng đang làm
việc.
3.2.2. Dao diện làm việc số 2


Hình 3: dao diện làm việc số 2
Giải thích dao diện số 2:
-Phần 1: Các thông số đầu vào. Phần này bao gồm các thông số mà người dùng
sẽ nhập vào để tiến hành tính toán. Gồm có: công suất diesel chính, công suất
diêsel phụ, suất tiêu hao dầu bôi trơn diesel chính, suất tiêu hao dầu bôi trơn
diesel phụ, tỉ trọng dầu, thời gian hoạt động của động cơ, các hệ số. Các thông
12


số được sử dụng để tính toán trong chương trình. Các thông số nhập vào còn
lại được sử dụng để in ra trên bản vẽ, thể hiện các thông số của động cơ.
-

Phần 2: Kết quả thông số kích thước. Phần này bao gồm dung tích các

két mà sau khi nhập thành công thông số đầu vào và được phần mềm sử lý
đưa ra.
- .Phần 3: Dựa trên dung tích két dự trữ vừa tính được, ta chọn các thông số
của ket sao cho có thể tích không nhỏ hơn thể tích két tính được ở trên. Khi
chọn thông số kích thước của két phù hợp thì ta nhập các thông số đó vào để
tiến hành xuất ra bản vẽ.
- Phần 4: Các nút bấm
+ Tính kích thước: sau khi nhập các thông số đầu vào và Click vào nút bấm
này thì chương trình sẽ tự động suất ra kết quả ở phần 2, thông số người dùng
nhập vào có lỗi thì khi Click vào nút bấm này sẽ hiện ra thông báo tương ứng
trong phần thông báo.
+ Xuất ra bản vẽ: Khi người dùng đã được thông báo là tính toán kết quả
thành công thì việc Click vào nút này sẽ cho phép xuất ra sơ đồ nguyên lý két
dự trữ dầu LO trong autocad.

+ Thoát: nút này cho phép thoát khỏi chương trình.
+ Back : nút này cho phép quay lại màn hình đầu tiên trong trường hợp người
dùng muốn thay đổi thông tin người dùng.

13


CHƯƠNG 4:LẬP TRÌNH TÍNH TOÁN THIẾT VÀ VẼ KÉT DỰ TRỮ DẦU LO
Code chương trình:

Private Sub CommandButton1_Click()
Dim N As Double
Dim Np As Double
Dim Z As Double
Dim Zp As Double
Dim k As Double
Dim k1 As Double
Dim k2 As Double
Dim k3 As Double
Dim gm As Double
Dim gmp As Double
Dim t As Double
Dim gama As Double
Dim V0 As Double
Dim V0p As Double
N = TextBox1.Value
Np = TextBox2.Value
gm = TextBox3.Value
gmp = TextBox4.Value
Z = TextBox5.Value

Zp = TextBox6.Value
k = TextBox32.Value
k1 = TextBox30.Value
k2 = TextBox31.Value
14


k3 = TextBox33.Value
t = TextBox28.Value
gama = TextBox29.Value
' cong thuc tinh toan dung tich ket du tru LO
V0 = t * k1 * k2 * k3 * Z * gm * N / (gama * 10 ^ 6)
V0p = t * k * k1 * k2 * k3 * Zp * gmp * Np / (gama * 10 ^ 6)
TextBox10.text = V0p
TextBox8.text = V0
End Sub
Private Sub CommandButton2_Click()
Dim rectang As AcadLWPolyline
Dim points(0 To 9) As Double
Dim pointsth(0 To 9) As Double
Dim pointsthr(0 To 9) As Double
points(0) = 0: points(1) = 0: points(2) = 90: points(3) = 0: points(4) = 90: points(5)
= 60: points(6) = 0: points(7) = 60: points(8) = 0: points(9) = 0
pointsth(0) = 133: pointsth(1) = 0: pointsth(2) = 223: pointsth(3) = 0: pointsth(4) =
223: pointsth(5) = 60: pointsth(6) = 133: pointsth(7) = 60: pointsth(8) = 133:
pointsth(9) = 0
Set rectang = ThisDrawing.ModelSpace.AddLightWeightPolyline(points)
Set rectang = ThisDrawing.ModelSpace.AddLightWeightPolyline(pointsth)
Dim cheo As AcadLine
Dim sp1(0 To 2) As Double

Dim sp2(0 To 2) As Double
Dim sp3(0 To 2) As Double
Dim sp4(0 To 2) As Double
Dim ep1(0 To 2) As Double
Dim ep2(0 To 2) As Double
15


Dim ep3(0 To 2) As Double
Dim ep4(0 To 2) As Double
sp1(0) = 133: sp1(1) = 0: sp1(2) = 0: ep1(0) = 223: ep1(1) = 60: ep1(2) = 0
sp2(0) = 133: sp2(1) = 60: sp2(2) = 0: ep2(0) = 223: ep2(1) = 0: ep2(2) = 0
sp3(0) = 0: sp3(1) = 60: sp3(2) = 0: ep3(0) = 90: ep3(1) = 0: ep3(2) = 0
sp4(0) = 90: sp4(1) = 60: sp4(2) = 0: ep4(0) = 0: ep4(1) = 0: ep4(2) = 0
Set cheo = ThisDrawing.ModelSpace.AddLine(sp1, ep1)
Set cheo = ThisDrawing.ModelSpace.AddLine(sp2, ep2)
Set cheo = ThisDrawing.ModelSpace.AddLine(sp3, ep3)
Set cheo = ThisDrawing.ModelSpace.AddLine(sp4, ep4)
Dim xacan As AcadLWPolyline
Dim dthang As AcadLine
Dim ket1(0 To 9) As Double
Dim ket2(0 To 9) As Double
Dim stp1(0 To 2) As Double
Dim stp2(0 To 2) As Double
Dim edp1(0 To 2) As Double
Dim edp2(0 To 2) As Double
ket1(0) = 3: ket1(1) = 0: ket1(2) = 3: ket1(3) = -3: ket1(4) = 9: ket1(5) = -3: ket1(6)
= 9: ket1(7) = 0: ket1(8) = 3: ket1(9) = 0
ket2(0) = 140: ket2(1) = 0: ket2(2) = 140: ket2(3) = -3: ket2(4) = 146: ket2(5) = -3:
ket2(6) = 146: ket2(7) = 0: ket2(8) = 140: ket2(9) = 0

stp1(0) = 3: stp1(1) = -1.5: stp1(2) = 0: edp1(0) = 9: edp1(1) = -1.5: edp1(2) = 0
stp2(0) = 140: stp2(1) = -1.5: stp2(2) = 0: edp2(0) = 146: edp2(1) = -1.5: edp2(2) = 0
Set xacan = ThisDrawing.ModelSpace.AddLightWeightPolyline(ket1)
Set xacan = ThisDrawing.ModelSpace.AddLightWeightPolyline(ket2)
Set dthang = ThisDrawing.ModelSpace.AddLine(stp1, edp1)
Set dthang = ThisDrawing.ModelSpace.AddLine(stp2, edp2)
16


Dim dodau1 As AcadLine
Dim dodau2 As AcadCircle
Dim dodau3 As AcadLWPolyline
Dim dt1(0 To 9) As Double
Dim dt2(0 To 15) As Double
Dim dt3(0 To 31) As Double
Dim dt4(0 To 5) As Double
Dim dt5(0 To 5) As Double
Dim tam(0 To 2) As Double
Dim r As Double
dt1(0) = 0: dt1(1) = 3: dt1(2) = -8: dt1(3) = 3: dt1(4) = -8: dt1(5) = 1: dt1(6) = -8:
dt1(7) = 3: dt1(8) = 0: dt1(9) = 3
dt2(0) = -5: dt2(1) = 3: dt2(2) = -5: dt2(3) = 8: dt2(4) = -9: dt2(5) = 8: dt2(6) = -9:
dt2(7) = 60: dt2(8) = -12: dt2(9) = 60
dt2(10) = -12: dt2(11) = 0: dt2(12) = -9: dt2(13) = 0: dt2(14) = -9: dt2(15) = 8
dt3(0) = -10.5: dt3(1) = 4: dt3(2) = -11: dt3(3) = 4: dt3(4) = -11: dt3(5) = 2: dt3(6)
= -10: dt3(7) = 2: dt3(8) = -10: dt3(9) = 4
dt3(10) = -10.5: dt3(11) = 4: dt3(12) = -10.5: dt3(13) = 62: dt3(14) = -14.5: dt3(15)
= 62: dt3(16) = -14.5: dt3(17) = 60
dt3(18) = -16: dt3(19) = 60: dt3(20) = -14.5: dt3(21) = 58: dt3(22) = -13: dt3(23) =
60: dt3(24) = -14.5: dt3(25) = 60

dt3(26) = -14.5: dt3(27) = 62: dt3(28) = -10.5: dt3(29) = 62: dt3(30) = -10.5:
dt3(31) = 4
tam(0) = -5: tam(1) = 3: tam(2) = 0
r=2
dt4(0) = -1.5: dt4(1) = 4: dt4(2) = -1.5: dt4(3) = 2: dt4(4) = -1.5: dt4(5) = 4
dt5(0) = -7: dt5(1) = 6: dt5(2) = -3: dt5(3) = 6: dt5(4) = -7: dt5(5) = 6
17


Set dodau3 = ThisDrawing.ModelSpace.AddLightWeightPolyline(dt1)
Set dodau3 = ThisDrawing.ModelSpace.AddLightWeightPolyline(dt2)
Set dodau3 = ThisDrawing.ModelSpace.AddLightWeightPolyline(dt3)
Set dodau3 = ThisDrawing.ModelSpace.AddLightWeightPolyline(dt4)
Set dodau3 = ThisDrawing.ModelSpace.AddLightWeightPolyline(dt5)
Set dodau2 = ThisDrawing.ModelSpace.AddCircle(tam, r)
Dim dt12(0 To 9) As Double
Dim dt13(0 To 15) As Double
Dim dt14(0 To 31) As Double
Dim dt15(0 To 5) As Double
Dim dt16(0 To 5) As Double
Dim tam1(0 To 2) As Double
Dim r1 As Double
dt12(0) = 0 + 133: dt12(1) = 3: dt12(2) = -8 + 133: dt12(3) = 3: dt12(4) = -8 + 133:
dt12(5) = 1: dt12(6) = -8 + 133: dt12(7) = 3: dt12(8) = 0 + 133: dt12(9) = 3
dt13(0) = -5 + 133: dt13(1) = 3: dt13(2) = -5 + 133: dt13(3) = 8: dt13(4) = -9 + 133:
dt13(5) = 8: dt13(6) = -9 + 133: dt13(7) = 60: dt13(8) = -12 + 133: dt13(9) = 60
dt13(10) = -12 + 133: dt13(11) = 0: dt13(12) = -9 + 133: dt13(13) = 0: dt13(14) = -9
+ 133: dt13(15) = 8
dt14(0) = -10.5 + 133: dt14(1) = 4: dt14(2) = -11 + 133: dt14(3) = 4: dt14(4) = -11 +
133: dt14(5) = 2: dt14(6) = -10 + 133: dt14(7) = 2: dt14(8) = -10 + 133: dt14(9) = 4

dt14(10) = -10.5 + 133: dt14(11) = 4: dt14(12) = -10.5 + 133: dt14(13) = 62:
dt14(14) = -14.5 + 133: dt14(15) = 62: dt14(16) = -14.5 + 133: dt14(17) = 60
dt14(18) = -16 + 133: dt14(19) = 60: dt14(20) = -14.5 + 133: dt14(21) = 58:
dt14(22) = -13 + 133: dt14(23) = 60: dt14(24) = -14.5 + 133: dt14(25) = 60
dt14(26) = -14.5 + 133: dt14(27) = 62: dt14(28) = -10.5 + 133: dt14(29) = 62:
dt14(30) = -10.5 + 133: dt14(31) = 4
tam1(0) = -5 + 133: tam1(1) = 3: tam1(2) = 0
18


r1 = 2
dt15(0) = -1.5 + 133: dt15(1) = 4: dt15(2) = -1.5 + 133: dt15(3) = 2: dt15(4) = -1.5
+ 133: dt15(5) = 4
dt16(0) = -7 + 133: dt16(1) = 6: dt16(2) = -3 + 133: dt16(3) = 6: dt16(4) = -7 +
133: dt16(5) = 6
Set dodau3 = ThisDrawing.ModelSpace.AddLightWeightPolyline(dt12)
Set dodau3 = ThisDrawing.ModelSpace.AddLightWeightPolyline(dt13)
Set dodau3 = ThisDrawing.ModelSpace.AddLightWeightPolyline(dt14)
Set dodau3 = ThisDrawing.ModelSpace.AddLightWeightPolyline(dt15)
Set dodau3 = ThisDrawing.ModelSpace.AddLightWeightPolyline(dt16)
Set dodau2 = ThisDrawing.ModelSpace.AddCircle(tam1, r1)
Dim van As AcadLWPolyline
Dim dt6(0 To 21) As Double
Dim dt7(0 To 21) As Double
Dim dt8(0 To 21) As Double
Dim dt9(0 To 21) As Double
Dim dt10(0 To 21) As Double
Dim dt11(0 To 21) As Double
Dim dt25(0 To 7) As Double
Dim dt26(0 To 7) As Double

Dim dt27(0 To 7) As Double
Dim dt28(0 To 7) As Double
Dim dt29(0 To 7) As Double
Dim dt30(0 To 7) As Double
dt6(0) = 34: dt6(1) = 0: dt6(2) = 34: dt6(3) = -3: dt6(4) = 36: dt6(5) = -3: dt6(6) =
32: dt6(7) = -8: dt6(8) = 34: dt6(9) = -8
dt6(10) = 34: dt6(11) = -18: dt6(12) = 34: dt6(13) = -8: dt6(14) = 36: dt6(15) = -8:
dt6(16) = 32: dt6(17) = -3
19


dt6(18) = 34: dt6(19) = -3: dt6(20) = 34: dt6(21) = 0
dt7(0) = 48: dt7(1) = 0: dt7(2) = 48: dt7(3) = -3: dt7(4) = 50: dt7(5) = -3: dt7(6) =
46: dt7(7) = -8: dt7(8) = 48: dt7(9) = -8
dt7(10) = 48: dt7(11) = -18: dt7(12) = 48: dt7(13) = -8: dt7(14) = 50: dt7(15) = -8:
dt7(16) = 46: dt7(17) = -3
dt7(18) = 48: dt7(19) = -3: dt7(20) = 48: dt7(21) = 0
dt8(0) = 170: dt8(1) = 0: dt8(2) = 170: dt8(3) = -3: dt8(4) = 172: dt8(5) = -3: dt8(6)
= 168: dt8(7) = -8: dt8(8) = 170: dt8(9) = -8
dt8(10) = 170: dt8(11) = -18: dt8(12) = 170: dt8(13) = -8: dt8(14) = 172: dt8(15) =
-8: dt8(16) = 168: dt8(17) = -3
dt8(18) = 170: dt8(19) = -3: dt8(20) = 170: dt8(21) = 0
dt9(0) = 183: dt9(1) = 0: dt9(2) = 183: dt9(3) = -3: dt9(4) = 185: dt9(5) = -3: dt9(6)
= 181: dt9(7) = -8: dt9(8) = 183: dt9(9) = -8
dt9(10) = 183: dt9(11) = -18: dt9(12) = 183: dt9(13) = -8: dt9(14) = 185: dt9(15) =
-8: dt9(16) = 181: dt9(17) = -3
dt9(18) = 183: dt9(19) = -3: dt9(20) = 183: dt9(21) = 0
dt10(0) = 190: dt10(1) = 0: dt10(2) = 190: dt10(3) = -3: dt10(4) = 192: dt10(5) =
-3: dt10(6) = 188: dt10(7) = -8: dt10(8) = 190: dt10(9) = -8
dt10(10) = 190: dt10(11) = -18: dt10(12) = 190: dt10(13) = -8: dt10(14) = 192:

dt10(15) = -8: dt10(16) = 188: dt10(17) = -3
dt10(18) = 190: dt10(19) = -3: dt10(20) = 190: dt10(21) = 0
dt11(0) = 197: dt11(1) = 0: dt11(2) = 197: dt11(3) = -3: dt11(4) = 199: dt11(5) =
-3: dt11(6) = 195: dt11(7) = -8: dt11(8) = 197: dt11(9) = -8
dt11(10) = 197: dt11(11) = -18: dt11(12) = 197: dt11(13) = -8: dt11(14) = 199:
dt11(15) = -8: dt11(16) = 195: dt11(17) = -3
dt11(18) = 197: dt11(19) = -3: dt11(20) = 197: dt11(21) = 0

20


dt25(0) = 35: dt25(1) = -10: dt25(2) = 34: dt25(3) = -14: dt25(4) = 33: dt25(5) =
-10: dt25(6) = 35: dt25(7) = -10
dt26(0) = 35 + 14: dt26(1) = -10: dt26(2) = 34 + 14: dt26(3) = -14: dt26(4) = 33 +
14: dt26(5) = -10: dt26(6) = 35 + 14: dt26(7) = -10
dt27(0) = 35 + 136: dt27(1) = -10: dt27(2) = 34 + 136: dt27(3) = -14: dt27(4) = 33
+ 136: dt27(5) = -10: dt27(6) = 35 + 136: dt27(7) = -10
dt28(0) = 35 + 149: dt28(1) = -10: dt28(2) = 34 + 149: dt28(3) = -14: dt28(4) = 33
+ 149: dt28(5) = -10: dt28(6) = 35 + 149: dt28(7) = -10
dt29(0) = 35 + 156: dt29(1) = -10: dt29(2) = 34 + 156: dt29(3) = -14: dt29(4) = 33
+ 156: dt29(5) = -10: dt29(6) = 35 + 156: dt29(7) = -10
dt30(0) = 35 + 163: dt30(1) = -10: dt30(2) = 34 + 163: dt30(3) = -14: dt30(4) = 33
+ 163: dt30(5) = -10: dt30(6) = 35 + 163: dt30(7) = -10
Set van = ThisDrawing.ModelSpace.AddLightWeightPolyline(dt6)
Set van = ThisDrawing.ModelSpace.AddLightWeightPolyline(dt7)
Set van = ThisDrawing.ModelSpace.AddLightWeightPolyline(dt8)
Set van = ThisDrawing.ModelSpace.AddLightWeightPolyline(dt9)
Set van = ThisDrawing.ModelSpace.AddLightWeightPolyline(dt10)
Set van = ThisDrawing.ModelSpace.AddLightWeightPolyline(dt11)
Set van = ThisDrawing.ModelSpace.AddLightWeightPolyline(dt25)

Set van = ThisDrawing.ModelSpace.AddLightWeightPolyline(dt26)
Set van = ThisDrawing.ModelSpace.AddLightWeightPolyline(dt27)
Set van = ThisDrawing.ModelSpace.AddLightWeightPolyline(dt28)
Set van = ThisDrawing.ModelSpace.AddLightWeightPolyline(dt29)
Set van = ThisDrawing.ModelSpace.AddLightWeightPolyline(dt30)
Dim dgo As AcadLWPolyline
Dim ct As AcadArc
Dim dt17(0 To 5) As Double
Dim dt18(0 To 7) As Double
21


Dim dt19(0 To 5) As Double
Dim dt20(0 To 7) As Double
Dim dt21(0 To 5) As Double
Dim dt22(0 To 7) As Double
Dim dt23(0 To 5) As Double
Dim dt24(0 To 7) As Double
Dim tam2(0 To 2) As Double
Dim r2 As Double
Dim bd As Double
Dim kt As Double
bd = 0
kt = 3.14
r2 = 0.5
tam2(0) = 27.5: tam2(1) = 77: tam2(2) = 0
dt17(0) = 15 + 0: dt17(1) = 94: dt17(2) = 15 + 0: dt17(3) = 60: dt17(4) = 15 + 0:
dt17(5) = 94
dt18(0) = 16 + 0: dt18(1) = 71: dt18(2) = 15 + 0: dt18(3) = 67: dt18(4) = 14 + 0:
dt18(5) = 71: dt18(6) = 16 + 0: dt18(7) = 71

dt19(0) = 27 + 0: dt19(1) = 60: dt19(2) = 27: dt19(3) = 77: dt19(4) = 27: dt19(5) =
60
dt20(0) = 26: dt20(1) = 68: dt20(2) = 27: dt20(3) = 72: dt20(4) = 28: dt20(5) = 68:
dt20(6) = 26: dt20(7) = 68
dt21(0) = 15 + 133: dt21(1) = 94: dt21(2) = 15 + 133: dt21(3) = 60: dt21(4) = 15 +
133: dt21(5) = 94
dt22(0) = 16 + 133: dt22(1) = 71: dt22(2) = 15 + 133: dt22(3) = 67: dt22(4) = 14 +
133: dt22(5) = 71: dt22(6) = 16 + 133: dt22(7) = 71
dt23(0) = 27 + 133: dt23(1) = 60: dt23(2) = 27 + 133: dt23(3) = 77: dt23(4) = 27 +
133: dt23(5) = 60
22


dt24(0) = 26 + 133: dt24(1) = 68: dt24(2) = 27 + 133: dt24(3) = 72: dt24(4) = 28 +
133: dt24(5) = 68: dt24(6) = 26 + 133: dt24(7) = 68
Set dgo = ThisDrawing.ModelSpace.AddLightWeightPolyline(dt17)
Set dgo = ThisDrawing.ModelSpace.AddLightWeightPolyline(dt18)
Set dgo = ThisDrawing.ModelSpace.AddLightWeightPolyline(dt19)
Set dgo = ThisDrawing.ModelSpace.AddLightWeightPolyline(dt20)
Set ct = ThisDrawing.ModelSpace.AddArc(tam2, r2, bd, kt)
Set dgo = ThisDrawing.ModelSpace.AddLightWeightPolyline(dt21)
Set dgo = ThisDrawing.ModelSpace.AddLightWeightPolyline(dt22)
Set dgo = ThisDrawing.ModelSpace.AddLightWeightPolyline(dt23)
Set dgo = ThisDrawing.ModelSpace.AddLightWeightPolyline(dt24)
Dim kg As AcadLWPolyline
Dim dt31(0 To 9) As Double
dt31(0) = 320: dt31(1) = 130: dt31(2) = 320: dt31(3) = -160: dt31(4) = -90: dt31(5)
= -160: dt31(6) = -90: dt31(7) = 130: dt31(8) = 320: dt31(9) = 130
Set kg = ThisDrawing.ModelSpace.AddLightWeightPolyline(dt31)
've khung ten

Dim line As AcadLine
Dim point1(0 To 2) As Double
Dim point2(0 To 2) As Double
'd1
point1(0) = 200: point1(1) = -160: point1(2) = 0
point2(0) = 200: point2(1) = -120: point2(2) = 0
Set line = ThisDrawing.ModelSpace.AddLine(point1, point2)
'd2
point1(0) = 200: point1(1) = -120: point1(2) = 0
point2(0) = 320: point2(1) = -120: point2(2) = 0
Set line = ThisDrawing.ModelSpace.AddLine(point1, point2)
23


'd3
point1(0) = 200: point1(1) = -140: point1(2) = 0
point2(0) = 320: point2(1) = -140: point2(2) = 0
Set line = ThisDrawing.ModelSpace.AddLine(point1, point2)
'd4
point1(0) = 254: point1(1) = -120: point1(2) = 0
point2(0) = 254: point2(1) = -160: point2(2) = 0
Set line = ThisDrawing.ModelSpace.AddLine(point1, point2)
'd5
point1(0) = 200: point1(1) = -130: point1(2) = 0
point2(0) = 254: point2(1) = -130: point2(2) = 0
Set line = ThisDrawing.ModelSpace.AddLine(point1, point2)
'd6
point1(0) = 214: point1(1) = -120: point1(2) = 0
point2(0) = 214: point2(1) = -140: point2(2) = 0
Set line = ThisDrawing.ModelSpace.AddLine(point1, point2)

'd7
point1(0) = 244: point1(1) = -140: point1(2) = 0
point2(0) = 244: point2(1) = -120: point2(2) = 0
Set line = ThisDrawing.ModelSpace.AddLine(point1, point2)
'd8
point1(0) = 304: point1(1) = -160: point1(2) = 0
point2(0) = 304: point2(1) = -140: point2(2) = 0
Set line = ThisDrawing.ModelSpace.AddLine(point1, point2)
'd9
point1(0) = 304: point1(1) = -150: point1(2) = 0
point2(0) = 320: point2(1) = -150: point2(2) = 0
Set line = ThisDrawing.ModelSpace.AddLine(point1, point2)
24


'ghi chu
Dim textstyle As AcadTextStyle
Set textstyle = ActiveDocument.TextStyles.Add("K1")
textstyle.SetFont ".VnArialH", False, True, 0, 34
textstyle.Height = 5
Dim textstyle2 As AcadTextStyle
Set textstyle2 = ActiveDocument.TextStyles.Add("K2")
textstyle.SetFont ".VnArial", False, True, 0, 34
textstyle2.Height = 3
Dim text As AcadText
Dim textstring As String
Dim heigh As Double
Dim point(0 To 2) As Double
textstring = "KET DU TRU DAU LO"
point(0) = 265: point(1) = -133: point(2) = 0

heigh = 3
Set text = ThisDrawing.ModelSpace.AddText(textstring, point, heigh)
text.StyleName = "K1"
textstring = "Ho ten"
point(0) = 202: point(1) = -126: point(2) = 0
heigh = 2
Set text = ThisDrawing.ModelSpace.AddText(textstring, point, heigh)
text.StyleName = "K1"
textstring = "G.Vien"
point(0) = 202: point(1) = -136: point(2) = 0
heigh = 2
Set text = ThisDrawing.ModelSpace.AddText(textstring, point, heigh)
25


×