Chuyển đến nội dung
Diễn đàn CADViet
Đăng nhập để thực hiện theo  
phongvu199x

VBA trong auto cad

Các bài được khuyến nghị

Anh chị nào rành về Autocad cho em giúp em cái ạ:

Em cần làm 1 chương trình vba để autocad tự động vẽ 1 hình mà dữ liệu của hình được nhập từ 1 file excel Sau đó trả giá trị diện tích và chu vi hình vừa vẽ ngược về excel. Đây là hình cần vẽ ạ ( Các số đo H1->H10 là nhập trong excel ạ)

Ai giúp được em xin cảm ơn và hậu tạ ạ

139073_bt.png

 

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Cái này không phải là quá khó, có một số vấn đề sau nếu bạn đồng ý thì mình sẽ giúp:

1. So lieu dau vao va ket qua dau ra se xuat ra file txt. Dữ liệu đầu vào là tọa độ các đỉnh của hình vẽ, chỉ có mỗi chiều dài không thì mình chịu

2. Chương trình viết bằng ngôn ngữ autolisp, mình không thạo VBA

3. Chỉ vẽ hình, không ghi chú dim, chỉnh đường nét cho bạn được

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Cái này không phải là quá khó, có một số vấn đề sau nếu bạn đồng ý thì mình sẽ giúp:

1. So lieu dau vao va ket qua dau ra se xuat ra file txt. Dữ liệu đầu vào là tọa độ các đỉnh của hình vẽ, chỉ có mỗi chiều dài không thì mình chịu

2. Chương trình viết bằng ngôn ngữ autolisp, mình không thạo VBA

3. Chỉ vẽ hình, không ghi chú dim, chỉnh đường nét cho bạn được

Cảm ơn bạn ạ. Nhưng mà mình đang học VBA nên phải làm bằng VBA. Dù sao cũng rất cảm ơn bạn đã nhiệt tình :)

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Thế thì bạn phải chờ các bro rồi. Mà dù viết bằng ngôn ngữ VBA hay Lisp thì dữ liệu đầu vào của bạn chỉ gồm mỗi các cạnh cũng chưa đủ điều kiện để vẽ hình

Sẽ nhập tất cả dữ liệu để vẽ hình trong excel mà. Thầy gợi ý là dùng polyline để vẽ

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Dữ liệu của bạn đâu ?

Đây là BTL hay đồ án của bạn ?

Nếu đang học VBA thì mình thấy bài toán của bạn k phải vấn đề, chỉ việc code VBA bên Excel với Automation sang CAD để vẽ hình. Diện tích thì có thể tính toán ngay bên Excel cũng được

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

 

 

Dạ... Đây là bài tập lớn ạ. Anh có thể giúp em viết code được không ạ. Yêu cầu là phải viết code VBA bên autocad ạ. Autocad sẽ đọc dữ liệu mình nhập sẵn ở fileexcel sau đó lưu lại sau đó dùng lệnh để autocad có thể đọc được dữ liệu trong file đó và vẽ thành hình  ạ. Anh có thể giúp em viết đoạn code vẽ cái hình đó thôi cũng được ạ. Em cảm ơn139073_excel.png

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Mình thua. Ngần kia H, k ràng buộc thì vẽ bao nhiêu nghiệm :) Bạn có vẽ bằng tay được hay k ??

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Mình thua. Ngần kia H, k ràng buộc thì vẽ bao nhiêu nghiệm :) Bạn có vẽ bằng tay được hay k ??

Em xin lỗi ạ. Tại em hiểu sai đề. Hình em đã vẽ lại ở trên mong các anh giúp đỡ ạ

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Em đã vẽ được rồi ạ. Cảm ơn mọi người đã qua tâm. Đây là mã lệnh mong mọi người góp ý thêm ạ

Sub VeMatCat()
Dim AppEx As Excel.Application
Set AppEx = New Excel.Application
AppEx.Visible = False
Dim wb As Excel.Workbook
Dim ws As Worksheet
Set wb = Excel.Workbooks.Open("c:\matcat.xlsx")
Set ws = wb.Worksheets(1)
ThisDrawing.ActiveLayer = ThisDrawing.Layers("netdam")
Dim b1 As Double
Dim b2 As Double
Dim b3 As Double
Dim b4 As Double
Dim b5 As Double
Dim b6 As Double
Dim b7 As Double
Dim b8 As Double
Dim h1 As Double
Dim h2 As Double
Dim h3 As Double
Dim h4 As Double
Dim h5 As Double
Dim VB As String
b1 = ws.Range("B1").Value
b2 = ws.Range("B2").Value
b3 = ws.Range("B3").Value
b4 = ws.Range("B4").Value
b5 = ws.Range("B5").Value
b6 = ws.Range("B6").Value
b7 = ws.Range("B7").Value
b8 = ws.Range("B8").Value
h1 = ws.Range("B9").Value
h2 = ws.Range("B10").Value
h3 = ws.Range("B11").Value
h4 = ws.Range("B12").Value
h5 = ws.Range("B13").Value
AppEx.Quit
Dim plineObj As AcadLWPolyline
Dim gocve As Variant
Dim A(0 To 21) As Double
    gocve = ThisDrawing.Utility.GetPoint(, "Please choose the start point: ")
A(0) = gocve(0): A(1) = gocve(1)
A(2) = gocve(0) + b1: A(3) = gocve(1)
A(4) = gocve(0) + b1 + b3: A(5) = gocve(1) - h1
A(6) = gocve(0) + b1 + b2 + b3: A(7) = gocve(1) - h1 - h5
A(8) = gocve(0) + b1 + b2 + b3: A(9) = gocve(1) - h1 - h5 - h4
A(10) = gocve(0) + b1 + b2 + b3 - b8: A(11) = gocve(1) - h1 - h5 - h4
A(12) = gocve(0) + b1 + b2 + b3 - b8 - b7: A(13) = gocve(1) - h1 - h5 - h4 + h3
A(14) = gocve(0) + b1 + b2 + b3 - b8 - b7 - b6: A(15) = gocve(1) - h1 - h5 - h4 + h3
A(16) = gocve(0) + b1 + b2 + b3 - b8 - b7 - b6: A(17) = gocve(1) - h1 - h5 - h4 + h3 + h2
A(18) = gocve(0) + b1 + b2 + b3 - b8 - b7 - b6 + b5: A(19) = gocve(1) - h1 - h5 - h4 + h3 + h2 + h5
A(20) = gocve(0): A(21) = gocve(1)
Set plineObj = ThisDrawing.ModelSpace.AddLightWeightPolyline(A)
Dim plineArea As Double
plineArea = plineObj.Area
Dim plinelength As Double
plinelength = plineObj.Length
Dim dientich As AcadText
Dim point(2) As Double
point(0) = gocve(0) + b1 - 4: point(1) = gocve(1) - h1 - 7
Set dientich = ThisDrawing.ModelSpace.AddText("S = " & plineArea, point, 3)
Dim chuvi As AcadText
Dim point1(2) As Double
point1(0) = gocve(0) + b1 - 4: point1(1) = gocve(1) - h1 - 17
Set chuvi = ThisDrawing.ModelSpace.AddText("C = " & plinelength, point1, 3)
ZoomExtents
Set AppEx = New Excel.Application
AppEx.Visible = False
Set wb = Excel.Workbooks.Open("c:\matcat.xlsx")
Set ws = wb.Worksheets(1)
ws.Range("B14").Value = plinelength
ws.Range("B15").Value = plineArea
wb.Save
AppEx.Quit
End Sub

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Excel.Workbooks.Open("c:\matcat.xlsx")

 

Bạn có thể viết lại dòng trên theo chiều hướng gọi hộp thoại lên và chọn file excel được không,vì để đường dẫn và tên file cố định như thế sẽ kém linh hoạt hơn (luôn luôn phải có file matcat.xlsx ở ổ c mới chạy được chuơng trình)

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Tạo một tài khoản hoặc đăng nhập để nhận xét

Bạn cần phải là một thành viên để lại một bình luận

Tạo tài khoản

Đăng ký một tài khoản mới trong cộng đồng của chúng tôi. Điều đó dễ mà.

Đăng ký tài khoản mới

Đăng nhập

Bạn có sẵn sàng để tạo một tài khoản ? Đăng nhập tại đây.

Đăng nhập ngay

Đăng nhập để thực hiện theo  

×