Tải bản đầy đủ (.doc) (57 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ế chi tiết xylanh động cơ diesel 4 kỳ

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 (576.19 KB, 57 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, nhu cầu nội địa hóa các trang thiết bị dưới tàu đang được quan
tâm đặc biệt. Độ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. Mặt
khác, với giá thành tương đối lớn so với một con tàu việc sản xuất động cơ Diesel
trong nước đang được nhà nước đặc biệt quan tâm bằng việc đầu tư xây dựng nhiều cơ
sở chế tạo và lắp ráp động cơ Diesel có công suất lớn. Để chế tạo động cơ Diesel
không chỉ đầu tư về cơ sở vật chất thiết bị mà còn phải quan tâm đầu tư nâng cao khả
năng thiết kế và nghiên cứu công nghệ chế tạo các thiết bị, chi tiết của động cơ.
Các chi tiết 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 chi tiết của động cơ có ý nghĩa rất quan trọng đối với chất lượng chế
tạo của chúng, việc nghiên cứu hướng tới một phần mềm tự động hoá thiết kế các chi
tiết 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ệ chế tạo động cơ Diesel cá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 chi tiết 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 chi tiết xylanh của động cơ Diesel 4 kỳ 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ế chi tiết xylanh động cơ Diesel 4 kỳ.
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 thiết kế chi tiết xylanh động cơ diesel 4 kỳ



1


Chương 3: Sơ đồ thuật toán và dao diện của chương trình
Chương 4: Lập trình thiết kế chi tiết xylanh
Chương 5: Kết quả chạy phần mềm cho 1 động cơ cụ thể
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ế động cơ Diesel xây dựng
phận mềm tính toán thiết kế chi tiết xylanh của động cơ Diesel 4 kỳ 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ế chi tiết xylanh của động cơ Diesel
4 kỳ.
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ế chi tiết xylanh của động cơ diesel 4 kỳ sử
dụng vật liệu là gang hoặc thép.
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ế chi tiết xylanh của động cơ Diesel 4 kỳ
là một công việc rất lớn, đò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à nghiệm bền cho chi tiết xylanh của động cơ
diesel 4 kỳ. 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 động cơ Diesel trong nước, góp phần vào
sự phát triển của công nghiệp chế tạo máy nước nhà và làm tài liệu bổ ích cho sinh
viên trong học tập và nghiên cứu khoa học.

2



CHƯƠNG 1 : TÌM HIỂU VỀ BỘ NGÔN NGỮ LẬP TRÌNH
VISUAL STUDIO CỦA MICROSOFT
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.
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ừ

3


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

4


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. Tổng kết
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ý.

5



CHƯƠNG 2 : CƠ SỞ LÝ THUYẾT THIẾT KẾ CHI TIẾT XYLANH CỦA
ĐỘNG CƠ DIESEL 4 KỲ.

Hình 1: Kết cấu xylanh động cơ diesel 4 kỳ
2.1. Điều kiện làm việc của xylanh
Ống lót xylanh dung làm Bàn trượt cho piston, tạo thành không gian chưa môi
chất công tác và truyền nhiệt từ môi chất công tác cho nước làm mát. Ống lót xylanh
được đỡ bởi thân xylanh và cùng với thân xylanh tạo thành khoang chứa nước làm
mát.
2.2. Yêu cầu cơ bản của ống lót xylanh
Trong quá trình làm việc,mặt trong xylanh chịu áp suất và nhiệt độ cao,
ăn mòn hóa học và mài mòn. Mặt ngoài ống lót xylanh tiếp xúc với nước làm mát. Do
đó chênh lệch nhiệt độ cao giữa mặt trong với mặt ngoài, giữa vùng buồng cháy với
vùng bàn trượt. Nên ngoài chịu được ứng suất cơ, ống lót xylanh còn phải chịu được
ứng suất nhiệt cao.Phần chịu lực chủ yếu của ống lót xylanh là phần gờ vai phía buông
cháy. Chính vì thế vai ống lót xylanh cần chịu được ứng suất cắt và ứng suất uốn.

6


Ngoài ra, tại mặt tiếp xúc với mặt đầu xylanh và vành gờ đế nắp xylanh phải có
rãnh hình vành khăn để lắp gioăng làm kín buồng cháy tránh không cho khí cháy rò
lọt.
2.3. Các công thức sử dụng để tính kết cấu và nghiệm bền cho xylanh
- Đường kính tại đỡ: D2 = (1,15 ÷ 1,35 ).D
- Chiều rộng đệm kín: b = (0,02 ÷ 0,05).D
- Chiều dày phần thân xilanh:
∆ = ( 0,05 ÷ 0,085).D .

δ = (0,05÷ 0,1)D


L = (2÷2,4)S
D1 = D + 2.∆
- Chiều dày của tai đỡ:
a = (D2 – D)/2 ; D3 = D + 2. δ

(2-1)

Ứng suất kéo tác dụng trên tiếp tuyến mặt trong

σ kx max =

D12 + Dxl2
. pz max
D12 − Dxl2

(MN/m2)

(2-2)
Ứng suất

kéo hướng tiếp tuyến mặt ngoài có giá trị nhỏ nhất:

σ kx min =

2.Dxl2
. pz max
D12 − Dxl2

(MN/m2)


(2-3)
Ứng suất

kéo hướng kính ở mặt trong:
σ ky min = − p z max

(MN/m2)

(2-4)

Ứng suất nhiệt ở mặt trong ống lót (ứng suất nén) tính theo công thức, MN/m 2:

σ tt =

α gn .E.(tt − tn ) Dxl + 2.D1
.
(MN/m2)
3.(1 − µ )
Dxl + D1

(2-5)

7


Trong đó: E – môđun đàn hồi của vật liệu chế tạo ống lót xilanh, MN/m 2
µ - Hệ số Poát xông, đối với gang đúc và thép
Ứng suất nhiệt trên mặt ngoài ống lót (ứng suất kéo), MN/m2:


σ tn =

α gn .E.(tt − tn ) 2.Dxl + D1
.
(MN/m2)
3.(1 − µ )
Dxl + D1

(2-6)

αgn - hệ số giãn dài,
tt, tn - nhiệt độ mặt trong và mặt ngoài ống lót xi lanh,
Ứng suất kéo tổng trên mặt ngoài lớn hơn mặt trong:
σ to = σ tn + σ kx min

(2-7)

Khi xiết guzông nắp xi lanh, vai ống lót xi lanh chịu lực nén P g. Giá trị Pg nằm
trong khoảng Pg = (1,2 ÷ 1,6) Pzmax Df2 (MN),
Df - đường kính trung bình zoăng ống lót xi lanh.
- Ứng suất tại tiết diện I - I:
Phân lực Pg thành hai thành phần PT và PH.
Theo hình vẽ kết cấu ống lót xilanh ta có:
PT = Pg.sin 100

(2-8)

PH = Pg.cos 100

(2-9)


Lực PH sẽ gây nên ứng suất kéo tại tiết diện I - I,:
σk =

PH
(MN/m2)
πDm h

(2-10)

Ứng suất cắt tại tiết diện I - I,
τc =

PT
(MN/m2)
πDm h

(2-11)

Ứng suất uốn tại tiết diện I - I,:
σu =

Pg l
Wu

=

(πD

Pg l

2
6
mh

)

(MN/m2)

(2-12)

Dm - đường kính trung bình ứng với tiết diện nguy hiểm nhất sử dụng để tính
toán, m;
Theo hình vẽ kết cấu ống lót xilanh ta có: Dm = 330 (mm)
h - chiều rộng của tiết diện I - I, m.
Ứng suất tổng tại tiết diện nguy hiểm nhất được xác định theo công thức,:

8


(σ k + σ u ) 2 + 4τ c2 (MN/m2)

σ to =

(2-13)

- Ứng suất tại tiết diện II - II: tại tiết diện này chỉ cần tính ứng suất cắt do lực P g
gây nên,:
τc =

Pg


πDII a

=

0,878
< [τc] (MN/m2)
3,14.0,4.0,02

(2-14)

- Ứng suất nén do lực Pg gây ra, MN/m2:
σn =

Pg

πD f b

< [σn] = 100 (MN/m2)

(2-15)

- Ứng suất nén trên mặt tựa phía dưới vai ống lót do lực Pg gây ra,:

σn =

4 Pg

π ( D22 − D32 )


< [σn] (MN/m2)

(2-16)

9


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

B?t d?u

Nh ?p các thông s ?
d?u vào
(D,S,Pz,Ne,v,i)

Ki?m tra các thông s? d?u
vào D>30, S>D, 6
Tính toán các thông s?
k?t c?u xylanh
D2, L, Df, L1, L2, L3,
a, b, delta

Tính toán các thông s? ? ng
su?t c?a xylanh
Pg, Pt, Ph, h, xmKmin, xmTN,
xmT, xmK, ToC, xmU, xmTo,
ToC2, xmN, xmNt


Ki?m tra các ?ng su?t
xmT>80, ToC2>40, xmN>100,
xmNt>100, xmTo>80

Xu?t ra b?n v? autocad

K?t thúc

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ạm Ngọc Quý, 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.
- 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.

11


- Picture : là hình ảnh mặt cắt xylanh và một phần cắt trích của xylanh tại vị trí
tai đỡ bên phải mặt cắt, trên mặt cắt còn hiển thị một số thông tin về kích thước chủ
yếu dùng để nghiệm bền xylanh.
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ó: đường kính xylanh, hành trình piston, áp
suất cháy cực đại, số xylanh của động cơ, công suất động cơ, vòng quay định mức.
Các thông số được sử dụng để tính toán trong chương trình gồm có các thông số bắt
buộc người dùng phải nhập vào đó là : đường kích xylanh, hành trình piston, áp suất
cháy cực đại. 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 các thông số kích
thước của xylanh 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. Bao gồm các thông số như: đường kính tai đỡ, chiều dày tai đỡ, đường kính
trung bình, chiều dài xylanh, bề rộng gioăng kín khí, chiều dày thân xylanh, chiều dài
phần thân lắp gioăng L1, chiều dài phần tiếp xúc với khoang nước làm mát L2, chiều
dài phần lắp ghép L3.

12



- Phần 3: Kết quả thông số kiểm tra ứng suất. Phần này bao gồm các thông số
ứng suất của xylanh, các thông số ứng suất giới hạn dùng để người dùng so sánh. Sau
khi các thông số đầu vào thỏa mãn thì các thông số ứng suất được tính toán sẽ được
hiện lên và các thông số ứng suất giới hạn cũng hiện lên để so sánh.
- Phần 4: Thông báo. Khi bắt đầu sang màn hình làm việc thứ 2 thì phần thông
báo sẽ hiển thị lời chào mừng và chỉ dẫn người dùng nhập và o các thông số đầu vào.
Khi người dùng nhập các thông số đầu sai so với điều kiện hoặc thông số đầu vào
không mang tính chất thực tế thì thông báo sẽ hiển thị báo lỗi và đưa ra chỉ dẫn để
người dùng có thể nhập lại các thông số cho hợp lý. Khi các thông số người dùng nhập
vào là hợp lý thì việc tính toán sẽ hiển thị thông báo kết quả hợp lý, và xylanh có đủ
bền hay không. Nếu đủ bền sẽ chỉ dẫn người dùng xuất ra bản vẽ autocad.
- Phần 5: 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 và phần 3 (kich thước và ứng
suất). Nếu 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 mặt cắt chi tiết xylanh 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 THIẾT KẾ CHI TIẾT XYLANH
Private Sub CommandButton1_Click()
Me.Hide
End Sub

Private Sub CommandButton2_Click()
Me.Hide
Form2.Show
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 = "MAT CAT XYLANH DONG CO DIESEL"
point(0) = 766 - 1000: point(1) = 40: point(2) = 0
heigh = 4
Set text = ThisDrawing.ModelSpace.AddText(textstring, point, heigh)
text.StyleName = "K1"
textstring = "Ho va Ten"
point(0) = 685 - 1000: point(1) = 50: point(2) = 0
heigh = 3
Set text = ThisDrawing.ModelSpace.AddText(textstring, point, 3)
text.StyleName = "K1"
textstring = "GV Ktra"
point(0) = 686 - 1000: point(1) = 35: point(2) = 0
heigh = 3
Set text = ThisDrawing.ModelSpace.AddText(textstring, point, 3)
text.StyleName = "K1"


14


textstring = "Truong dai hoc hang hai Viet Nam"
point(0) = 693 - 1000: point(1) = 22: point(2) = 0
heigh = 3
Set text = ThisDrawing.ModelSpace.AddText(textstring, point, 3)
text.StyleName = "K1"
textstring = "Khoa Co Khi Dong Tau"
point(0) = 700 - 1000: point(1) = 14: point(2) = 0
heigh = 3
Set text = ThisDrawing.ModelSpace.AddText(textstring, point, 3)
text.StyleName = "K1"
textstring = "Lop : " + TextBox2.Value
point(0) = 700 - 1000: point(1) = 6: point(2) = 0
heigh = 3
Set text = ThisDrawing.ModelSpace.AddText(textstring, point, 3)
text.StyleName = "K1"
textstring = TextBox1.Value
point(0) = 708 - 1000: point(1) = 50: point(2) = 0
heigh = 3
Set text = ThisDrawing.ModelSpace.AddText(textstring, point, 3)
text.StyleName = "K1"
textstring = TextBox3.Value
point(0) = 708 - 1000: point(1) = 35: point(2) = 0
heigh = 3
Set text = ThisDrawing.ModelSpace.AddText(textstring, point, 3)
text.StyleName = "K1"
ZoomAll

End Sub
Private Sub Label4_Click()
End Sub
Private Sub Label5_Click()
End Sub

15


Private Sub TextBox1_Change()
EndSub
Private Sub CommandButton1_Click()
Dim D As Double
Dim a As Double
Dim b As Double
Dim delta As Double
Dim L As Double
Dim D1 As Double
Dim D3 As Double
Dim S As Double
Dim D2 As Double
Dim Df As Double
Dim L1 As Double
Dim L2 As Double
Dim L3 As Double
Dim Pz As Double
Dim xmKmin As Double
Dim xmTN As Double
Dim xmT As Double
Dim Pg As Double

Dim Pt As Double
Dim Ph As Double
Dim h As Double
Dim xmK As Double
Dim ToC As Double
Dim xmU As Double
Dim xmTo As Double
Dim ToC2 As Double
Dim xmN As Double
Dim xmNt As Double
Dim pi As Double
On Error Resume Next

16


' nhap lieu thong so dau vao
D = TextBox1.Value
S = TextBox2.Value
Pz = TextBox3.Value
' cong thuc tinh toan kich thuoc
D2 = 1.265 * D
a = (1 / 15) * D
b = 0.02 * D
delta = 0.083 * D
L=2*S
D1 = D + 2 * delta
D3 = D + 0.48 * delta
Df = (D + D2) / 2
pi = 3.141592654

L1 = 0.111 * L - 0.24 * delta
L2 = 0.497 * L - 1.75 * a - 0.24 * delta
L3 = 0.09 * L + 0.75 * a + 0.48 * delta
' cong thuc tinh ung suat
xmKmin = 2 * (D ^ 2) * Pz / (D1 ^ 2 + D ^ 2)
xmTN = 27.5 * (2 * D + D1) / (D + D1)
xmT = xmKmin + xmTN ' ung suat keo tong
Pg = Pz * (Df ^ 2)
Pt = Pg * 0.17365
Ph = Pg * 0.984808
h = Sqr((a - b) ^ 2 + ((1.24 * delta - b / 2 + (D - D2) / 4)) ^ 2) ' chieu day tai mat cat I-I
xmK = Ph / (pi * (Df + b) * h) 'ung suat keo
ToC = Pt / (pi * (Df + b) * h) ' ung suat cat
xmU = 6 * Pg * 0.008 / (pi * (Df + b) * h ^ 2) ' ung suat uon

17


xmNt = 4 * Pg / (pi * (D2 ^ 2 - D3 ^ 2)) 'ung suat nen tong duoi vai ong lot xylanh
xmTo = Sqr((xmK + xmU) ^ 2 + 4 * ToC ^ 2) 'ung suat tong tai tiet dien I-I
ToC2 = Pg / (1.2 * pi * D2 * a) ' ung suat cat do Pg gay ra
xmN = Pg / (2 * pi * Df * b) 'ung suat nen do Pg gay ra
'thong bao
If D < 30 Or S < 50 Or Pz < 6 Or Pz > 14 Or D > S Then
TextBox27.text = "Thong so ban nhap vao khong hop ly
"Ban hay kiem tra lai va nhap vao gia tri:

"&_

"&_


" D > 30 , S > D ,6 < Pz < 14"
End If
If D >= 30 And S >= 50 And Pz > 6 And Pz < 14 And ToC2 <= 40 And xmN <= 100
And xmT <= 80 And xmTo <= 80 Then
TextBox27.text = Delete
TextBox27.text = "+ Cac thong so kich thuoc cua ban hop ly
"+ Ung suat da kiem nghiem thanh cong

"&_

"&_

"+ Ban Click vao [Xuat ra ban ve] de tien hanh ve Xylanh"
End If
If D >= 30 And S >= 50 And Pz > 6 And Pz < 14 And ToC2 > 40 And xmN > 100
And xmT > 80 And xmTo > 80 Then
TextBox27.text = Delete
TextBox27.text = "+ Xylanh cua ban chua du ben" & _
"+ Ban hay kiem tra lai cac thong so tinh"
End If
TextBox12.text = L1
TextBox7.text = L2
TextBox13.text = L3
TextBox8.text = D2
TextBox9.text = Df
TextBox14.text = a
TextBox10.text = b
TextBox11.text = delta


18


TextBox15.text = L
TextBox17.text = Fix(xmT)
TextBox26.text = Fix(xmTo)
TextBox18.text = Fix(ToC2)
TextBox22.text = Fix(xmN)
TextBox23.text = Fix(xmNt)
TextBox19.text = "80 MN/m2"
TextBox20.text = "40 MN/m2"
TextBox24.text = "100 MN/m2"
TextBox21.text = "100 MN/m2"
TextBox25.text = "80 MN/m2"
End Sub
Private Sub CommandButton2_Click()
Dim startpoint(0 To 2) As Double
Dim endpoint(0 To 2) As Double
Dim lineobj As AcadLine
Dim dblRadius As Double
Dim objent As AcadArc
Dim center(0 To 2) As Double
Dim startangle As Double
Dim endangle As Double
On Error Resume Next
D = TextBox1.Value
S = TextBox2.Value
D2 = 1.265 * D
a = (1 / 15) * D
b = 0.02 * D

delta = 0.083 * D
L=2*S
D1 = D + 2 * delta

19


D3 = D + 0.48 * delta
Df = (D + D2) / 2
Dim line As AcadLine
Dim point1(0 To 2) As Double
Dim point2(0 To 2) As Double
'line0
point1(0) = 48 - 1000: point1(1) = 0: point1(2) = 0
point2(0) = 48 - 1000: point2(1) = 576: point2(2) = 0
Set line = ThisDrawing.ModelSpace.AddLine(point1, point2)
'line1
point1(0) = 864 - 1000: point1(1) = 576: point1(2) = 0
point2(0) = 48 - 1000: point2(1) = 576: point2(2) = 0
Set line = ThisDrawing.ModelSpace.AddLine(point1, point2)
'line2
point1(0) = 864 - 1000: point1(1) = 576: point1(2) = 0
point2(0) = 864 - 1000: point2(1) = 0: point2(2) = 0
Set line = ThisDrawing.ModelSpace.AddLine(point1, point2)
'line3
point1(0) = 864 - 1000: point1(1) = 0: point1(2) = 0
point2(0) = 48 - 1000: point2(1) = 0: point2(2) = 0
Set line = ThisDrawing.ModelSpace.AddLine(point1, point2)
'line4
point1(0) = 684 - 1000: point1(1) = 0: point1(2) = 0

point2(0) = 684 - 1000: point2(1) = 60: point2(2) = 0
Set line = ThisDrawing.ModelSpace.AddLine(point1, point2)
'line5
point1(0) = 684 - 1000: point1(1) = 60: point1(2) = 0
point2(0) = 864 - 1000: point2(1) = 60: point2(2) = 0
Set line = ThisDrawing.ModelSpace.AddLine(point1, point2)
'line6
point1(0) = 764 - 1000: point1(1) = 0: point1(2) = 0
point2(0) = 764 - 1000: point2(1) = 60: point2(2) = 0
Set line = ThisDrawing.ModelSpace.AddLine(point1, point2)
'line7

20


point1(0) = 684 - 1000: point1(1) = 30: point1(2) = 0
point2(0) = 864 - 1000: point2(1) = 30: point2(2) = 0
Set line = ThisDrawing.ModelSpace.AddLine(point1, point2)
'line8
point1(0) = 839 - 1000: point1(1) = 0: point1(2) = 0
point2(0) = 839 - 1000: point2(1) = 30: point2(2) = 0
Set line = ThisDrawing.ModelSpace.AddLine(point1, point2)
'line9
point1(0) = 839 - 1000: point1(1) = 15: point1(2) = 0
point2(0) = 864 - 1000: point2(1) = 15: point2(2) = 0
Set line = ThisDrawing.ModelSpace.AddLine(point1, point2)
'line10
point1(0) = 684 - 1000: point1(1) = 45: point1(2) = 0
point2(0) = 764 - 1000: point2(1) = 45: point2(2) = 0
Set line = ThisDrawing.ModelSpace.AddLine(point1, point2)

'line11
point1(0) = 704 - 1000: point1(1) = 30: point1(2) = 0
point2(0) = 704 - 1000: point2(1) = 60: point2(2) = 0
Set line = ThisDrawing.ModelSpace.AddLine(point1, point2)
'line12
point1(0) = 749 - 1000: point1(1) = 30: point1(2) = 0
point2(0) = 749 - 1000: point2(1) = 60: point2(2) = 0
Set line = ThisDrawing.ModelSpace.AddLine(point1, point2)
'duong A-1
startpoint(0) = 0: startpoint(1) = 0: startpoint(2) = 0
endpoint(0) = -1.24 * delta: endpoint(1) = 0: endpoint(2) = 0
Setlineobj = ThisDrawing.ModelSpace.AddLine(startpoint, endpoint)
'duong 1-2
startpoint(0) = -1.24 * delta: startpoint(1) = 0: startpoint(2) = 0
endpoint(0) = -1.24 * delta: endpoint(1) = 0.035 * L: endpoint(2) = 0
Setlineobj = ThisDrawing.ModelSpace.AddLine(startpoint, endpoint)
'duong 4-5
startpoint(0) = -delta: startpoint(1) = 0.035 * L + 0.24 * delta: startpoint(2) = 0
endpoint(0) = -delta: endpoint(1) = 0.28 * L - 0.035 * L: endpoint(2) = 0
Setlineobj = ThisDrawing.ModelSpace.AddLine(startpoint, endpoint)

21


'duong 7-8
startpoint(0) = -1.24 * delta: startpoint(1) = 0.28 * L - 0.035 * L + 0.24 * delta:
startpoint(2) = 0
endpoint(0) = -1.24 * delta: endpoint(1) = 0.2954 * L - 0.035 * L + 0.24 * delta:
endpoint(2) = 0
Setlineobj = ThisDrawing.ModelSpace.AddLine(startpoint, endpoint)

'duong 9-10
startpoint(0) = -1.24 * delta: startpoint(1) = 0.2954 * L - 0.035 * L + 0.72 * delta:
startpoint(2) = 0
endpoint(0) = -1.24 * delta: endpoint(1) = 0.3406 * L - 0.48 * delta: endpoint(2) = 0
Setlineobj = ThisDrawing.ModelSpace.AddLine(startpoint, endpoint)
'duong 11-12
startpoint(0) = -1.24 * delta: startpoint(1) = 0.3406 * L: startpoint(2) = 0
endpoint(0) = -1.24 * delta: endpoint(1) = 0.356 * L: endpoint(2) = 0
Setlineobj = ThisDrawing.ModelSpace.AddLine(startpoint, endpoint)
'duong 16-17
startpoint(0) = -delta: startpoint(1) = 0.356 * L + 0.24 * delta: startpoint(2) = 0
endpoint(0) = -delta: endpoint(1) = 0.853 * L - 1.75 * a - 0.48 * delta: endpoint(2) =
0
Setlineobj = ThisDrawing.ModelSpace.AddLine(startpoint, endpoint)
'duong 19-20'
startpoint(0) = -1.24 * delta: startpoint(1) = 0.853 * L - 1.75 * a - 0.24 * delta:
startpoint(2) = 0
endpoint(0) = -1.24 * delta: endpoint(1) = 0.91 * L - 1.75 * a - 0.48 * delta:
endpoint(2) = 0
Setlineobj = ThisDrawing.ModelSpace.AddLine(startpoint, endpoint)
'duong 21-22
startpoint(0) = -delta: startpoint(1) = 0.91 * L - 1.75 * a - 0.24 * delta: startpoint(2) = 0
endpoint(0) = -delta: endpoint(1) = L - 1.75 * a - 0.24 * delta: endpoint(2) = 0
Setlineobj = ThisDrawing.ModelSpace.AddLine(startpoint, endpoint)
'duong 24-25
startpoint(0) = -1.24 * delta: startpoint(1) = L - 1.75 * a: startpoint(2) = 0
endpoint(0) = -1.24 * delta: endpoint(1) = L - a: endpoint(2) = 0
Setlineobj = ThisDrawing.ModelSpace.AddLine(startpoint, endpoint)
'duong 25-26


22


startpoint(0) = -1.24 * delta: startpoint(1) = L - a: startpoint(2) = 0
endpoint(0) = (D - D2) / 2: endpoint(1) = L - a: endpoint(2) = 0
Setlineobj = ThisDrawing.ModelSpace.AddLine(startpoint, endpoint)
'duong 26-27
startpoint(0) = (D - D2) / 2: startpoint(1) = L - a: startpoint(2) = 0
endpoint(0) = (D - D2) / 2: endpoint(1) = L: endpoint(2) = 0
Setlineobj = ThisDrawing.ModelSpace.AddLine(startpoint, endpoint)
'duong 27-28
startpoint(0) = (D - D2) / 2: startpoint(1) = L: startpoint(2) = 0
endpoint(0) = (D - D2) / 4 - b / 2: endpoint(1) = L: endpoint(2) = 0
Setlineobj = ThisDrawing.ModelSpace.AddLine(startpoint, endpoint)
'duong 28-30
startpoint(0) = (D - D2) / 4 - b / 2: startpoint(1) = L: startpoint(2) = 0
endpoint(0) = (D - D2) / 4 - b / 2: endpoint(1) = L - b: endpoint(2) = 0
Setlineobj = ThisDrawing.ModelSpace.AddLine(startpoint, endpoint)
'duong 30-31
startpoint(0) = (D - D2) / 4 - b / 2: startpoint(1) = L - b: startpoint(2) = 0
endpoint(0) = (D - D2) / 4 + b / 2: endpoint(1) = L - b: endpoint(2) = 0
Setlineobj = ThisDrawing.ModelSpace.AddLine(startpoint, endpoint)
'duong 31-29
startpoint(0) = (D - D2) / 4 + b / 2: startpoint(1) = L - b: startpoint(2) = 0
endpoint(0) = (D - D2) / 4 + b / 2: endpoint(1) = L: endpoint(2) = 0
Setlineobj = ThisDrawing.ModelSpace.AddLine(startpoint, endpoint)
'duong 29-D
startpoint(0) = (D - D2) / 4 + b / 2: startpoint(1) = L: startpoint(2) = 0
endpoint(0) = D: endpoint(1) = L: endpoint(2) = 0
Setlineobj = ThisDrawing.ModelSpace.AddLine(startpoint, endpoint)

'duong A-C
startpoint(0) = 0: startpoint(1) = 0: startpoint(2) = 0
endpoint(0) = 0: endpoint(1) = L: endpoint(2) = 0
Setlineobj = ThisDrawing.ModelSpace.AddLine(startpoint, endpoint)
'duong A-E
startpoint(0) = 0: startpoint(1) = 0: startpoint(2) = 0
endpoint(0) = D + 1.24 * delta: endpoint(1) = 0: endpoint(2) = 0
Setlineobj = ThisDrawing.ModelSpace.AddLine(startpoint, endpoint)

23


've cac duong cong trai
'duong cong 2-4
center(0) = -1.24 * delta: center(1) = 0.035 * L + 0.24 * delta: center(2) = 0
startangle = -90 * 3.141592654 / 180
endangle = 0
dblRadius = 0.24 * delta
Set objent = ThisDrawing.ModelSpace.AddArc(center, dblRadius, startangle,
endangle)
'duong cong 5-7
center(0) = -1.24 * delta: center(1) = 0.28 * L - 0.035 * L: center(2) = 0
startangle = 0
endangle = 90 * 3.141592654 / 180
dblRadius = 0.24 * delta
Set objent = ThisDrawing.ModelSpace.AddArc(center, dblRadius, startangle,
endangle)
'duong cong 8-9
center(0) = -1.24 * delta: center(1) = 0.2954 * L - 0.035 * L + 0.48 * delta: center(2) = 0
startangle = -90 * 3.141592654 / 180

endangle = 90 * 3.141592654 / 180
dblRadius = 0.24 * delta
Set objent = ThisDrawing.ModelSpace.AddArc(center, dblRadius, startangle,
endangle)
'duong cong 10-11
center(0) = -1.24 * delta: center(1) = 0.3406 * L - 0.24 * delta: center(2) = 0
startangle = -90 * 3.141592654 / 180
endangle = 90 * 3.141592654 / 180
dblRadius = 0.24 * delta
Set objent = ThisDrawing.ModelSpace.AddArc(center, dblRadius, startangle,
endangle)
'duong cong 12-16
center(0) = -1.24 * delta: center(1) = 0.356 * L + 0.24 * delta: center(2) = 0
startangle = -90 * 3.141592654 / 180
endangle = 0

24


dblRadius = 0.24 * delta
Set objent = ThisDrawing.ModelSpace.AddArc(center, dblRadius, startangle,
endangle)
'duong cong 17-19
center(0) = -1.24 * delta: center(1) = 0.853 * L - 1.75 * a - 0.48 * delta: center(2) = 0
startangle = 0
endangle = 90 * 3.141592654 / 180
dblRadius = 0.24 * delta
Set objent = ThisDrawing.ModelSpace.AddArc(center, dblRadius, startangle,
endangle)
'duong cong 20'-21

center(0) = -1.24 * delta: center(1) = 0.91 * L - 1.75 * a - 0.24 * delta: center(2) = 0
startangle = -90 * 3.141592654 / 180
endangle = 0
dblRadius = 0.24 * delta
Set objent = ThisDrawing.ModelSpace.AddArc(center, dblRadius, startangle,
endangle)
'duong cong 22-24
center(0) = -1.24 * delta: center(1) = L - 1.75 * a - 0.24 * delta: center(2) = 0
startangle = 0
endangle = 90 * 3.141592654 / 180
dblRadius = 0.24 * delta
Set objent = ThisDrawing.ModelSpace.AddArc(center, dblRadius, startangle,
endangle)
'nua ben phai cua Xylanh
'duong B-D
startpoint(0) = D: startpoint(1) = 0: startpoint(2) = 0
endpoint(0) = D: endpoint(1) = L: endpoint(2) = 0
Setlineobj = ThisDrawing.ModelSpace.AddLine(startpoint, endpoint)
'duong E-1
startpoint(0) = D + 1.24 * delta: startpoint(1) = 0: startpoint(2) = 0
endpoint(0) = D + 1.24 * delta: endpoint(1) = 0.035 * L: endpoint(2) = 0
Setlineobj = ThisDrawing.ModelSpace.AddLine(startpoint, endpoint)
'duong 3-4

25


×