Đến nội dung


Hình ảnh
- - - - -

Tự động hoá thiết kế trong AutoCad từ VB6


  • Please log in to reply
34 replies to this topic

#1 phantuhuong

phantuhuong

    biết dimstyle

  • Moderator
  • PipPipPipPipPip
  • 383 Bài viết
Điểm đánh giá: 200 (khá)

Đã gửi 16 May 2009 - 11:07 AM

1. Tạo chương trình chạy exe để điều khiển AutoCad:


Cách này rất đơn giản, dễ thực hiện, nhất là ai đã thành thạo VBA:

Hình đã gửi

File kèm theo:
http://www.cadviet.c.../vb6exeacad.rar

2. Tạo thư viện dll để AutoCad truy cập:

Món này hơi độc chiêu và gần như không có tài liệu, tôi mò mẫm chuyển đổi theo phương pháp trong Office.

Hình đã gửi

File kèm theo (đã sửa lỗi download):
http://www.cadviet.c..._in_autocad.rar


Hướng dẫn sử dụng VB6 trong AutoCad đây, mời các bạn nghiên cứu:

http://www.cadviet.c...phantuhuong.rar

Hai ứng dụng tôi mới upload lại do bổ sung 1 chút.
  • 15
Bồi dưỡng Excel & VBA cho các đơn vị ở Hà Nội và khu vực lân cận

Từng bước loại đồ Tàu ra khỏi cuộc sống!


#2 tucdrom

tucdrom

    — T — U — N — A —

  • Members
  • PipPipPipPipPipPip
  • 497 Bài viết
Điểm đánh giá: 642 (tốt)

Đã gửi 16 May 2009 - 11:13 AM

Trên diễn đàn có bác nào giành về Object Arx ko nhỉ?em đang tìm hiểu về Object Arx nhưng mà khó quá,có cao thủ chỉ dẫn vẫn hơn.thanks!!
:mellow:
  • 0

Email : anhtu2101@gmail.com



 


#3 phantuhuong

phantuhuong

    biết dimstyle

  • Moderator
  • PipPipPipPipPip
  • 383 Bài viết
Điểm đánh giá: 200 (khá)

Đã gửi 17 May 2009 - 11:00 PM

Trên diễn đàn có bác nào giành về Object Arx ko nhỉ?em đang tìm hiểu về Object Arx nhưng mà khó quá,có cao thủ chỉ dẫn vẫn hơn.thanks!!
:mellow:


Muốn xây dựng được Arx phải thành thạo C, tham khảo tài liệu tiếng Anh

http://www.cadviet.c...10_training.zip
  • 1
Bồi dưỡng Excel & VBA cho các đơn vị ở Hà Nội và khu vực lân cận

Từng bước loại đồ Tàu ra khỏi cuộc sống!


#4 TRUNGNGAMY

TRUNGNGAMY

    biết lệnh block

  • Members
  • PipPipPipPipPipPip
  • 401 Bài viết
Điểm đánh giá: 91 (tàm tạm)

Đã gửi 18 May 2009 - 12:48 AM

Trên diễn đàn có bác nào giành về Object Arx ko nhỉ?em đang tìm hiểu về Object Arx nhưng mà khó quá,có cao thủ chỉ dẫn vẫn hơn.thanks!!
:mellow:

Ở mức độ căn bản, Arx gần giống như AutoLisp. Mỗi hàm của AutoLisp thường có một hàm tương ứng với Arx với các đối số gần như giống nhau nhưng Arx đòi hỏi chặt chẽ hơn. Với Arx, tận dụng thế mạnh của Visual C++, bạn có thể phát triển CT vượt xa AutoLisp. Tuy nhiên, nếu yêu cầu công việc không cao (không sử dụng con trỏ, không dùng lớp, không cần đến CSDL, liên kết động ...) bạn không nên dùng Arx, vì nó khá phức tạp, việc thiết kế một hàm trong Arx khó hơn Lisp lại dễ bị lỗi bộ nhớ có khi do người viết CT cũng có khi do Arx quản lý bộ nhớ không tốt bằng Lisp (bạn thấy các tiện ích đc phát triển bằng Arx do các Cty phần mềm chuyên nghiệp của VN viết vẫn bị một số lỗi khi chạy CT), hơn nữa phải biên dịch và phụ thuộc phiên bản cad. File Arx chỉ chạy trên bản cad phù hợp mà thôi. Vài lời cùng bạn, mình cũng là dân học mót.
  • 6

#5 phantuhuong

phantuhuong

    biết dimstyle

  • Moderator
  • PipPipPipPipPip
  • 383 Bài viết
Điểm đánh giá: 200 (khá)

Đã gửi 22 May 2009 - 12:14 AM

Ở mức độ căn bản, Arx gần giống như AutoLisp. Mỗi hàm của AutoLisp thường có một hàm tương ứng với Arx với các đối số gần như giống nhau nhưng Arx đòi hỏi chặt chẽ hơn. Với Arx, tận dụng thế mạnh của Visual C++, bạn có thể phát triển CT vượt xa AutoLisp. Tuy nhiên, nếu yêu cầu công việc không cao (không sử dụng con trỏ, không dùng lớp, không cần đến CSDL, liên kết động ...) bạn không nên dùng Arx, vì nó khá phức tạp, việc thiết kế một hàm trong Arx khó hơn Lisp lại dễ bị lỗi bộ nhớ có khi do người viết CT cũng có khi do Arx quản lý bộ nhớ không tốt bằng Lisp (bạn thấy các tiện ích đc phát triển bằng Arx do các Cty phần mềm chuyên nghiệp của VN viết vẫn bị một số lỗi khi chạy CT), hơn nữa phải biên dịch và phụ thuộc phiên bản cad. File Arx chỉ chạy trên bản cad phù hợp mà thôi. Vài lời cùng bạn, mình cũng là dân học mót.


Như thế này thì rất hạn chế, thua đứt VB6, 2 chương trình trên có thể chạy được từ Cad 2000 đến 2010. Mình nhớ Nova cũ của Hài Hoà chạy trên Cad 14, hiện nay nhiều người vẫn cài vì chỉ chạy trên Cad đời cao hơn thì không được (hiện nay Hài Hoà có cập nhật Nova đời Cad mới hơn)
  • 0
Bồi dưỡng Excel & VBA cho các đơn vị ở Hà Nội và khu vực lân cận

Từng bước loại đồ Tàu ra khỏi cuộc sống!


#6 TRUNGNGAMY

TRUNGNGAMY

    biết lệnh block

  • Members
  • PipPipPipPipPipPip
  • 401 Bài viết
Điểm đánh giá: 91 (tàm tạm)

Đã gửi 22 May 2009 - 07:13 AM

Như thế này thì rất hạn chế, thua đứt VB6, 2 chương trình trên có thể chạy được từ Cad 2000 đến 2010. Mình nhớ Nova cũ của Hài Hoà chạy trên Cad 14, hiện nay nhiều người vẫn cài vì chỉ chạy trên Cad đời cao hơn thì không được (hiện nay Hài Hoà có cập nhật Nova đời Cad mới hơn)

Đúng rồi. Về mặt này thì Arx không tiện bằng VBA và VB, VC, Delphi ..., vì VBA, VB, VC, Delphi can thiệp vào cad, excel, word ... bằng công nghệ OLE Automation. Chỉ cần phần mềm đang sử dụng có cung cấp dịch vụ này thì các trình VBA, VB, VC, Delphi can thiệp đc, không phụ thuộc phiên bản. Tuy nhiên, nó không nhanh. Còn Arx chạy trực tiếp như chính bản thân cad, nó sử dụng thư viện chung với cad để tạo ra file Arx (các file *.lib do VC++ tạo ra) nên chạy rất nhanh, nếu các file thư viện này thay đổi thì Arx thay đổi theo (phải biên dịch lại). Ví dụ, file Arx trên cad14 không chạy trên cad2000..2002 mặc dù cùng đc biên dịch trên VC++6. cad2004..2006 trên VC++2000, cad2007..2008 trên VC++2005, còn cad2009..2010 hình như trên VC++2008.
Tuy có hơi bất tiện nhưng đối với người lập trình chuyên nghiệp hoặc chương trình đòi hỏi cao về cấu trúc dữ liệu và tốc độ thì người ta vẫn chọn ARX.
  • 3

#7 phantuhuong

phantuhuong

    biết dimstyle

  • Moderator
  • PipPipPipPipPip
  • 383 Bài viết
Điểm đánh giá: 200 (khá)

Đã gửi 23 May 2009 - 11:43 PM

Nếu không phải dân lập trình chuyên nghiệp hoặc chỉ can thiệp ở mức độ vừa phải thì có lẽ dù.ng VBA hoặc VB6 là hay nhất..
  • 1
Bồi dưỡng Excel & VBA cho các đơn vị ở Hà Nội và khu vực lân cận

Từng bước loại đồ Tàu ra khỏi cuộc sống!


#8 TRUNGNGAMY

TRUNGNGAMY

    biết lệnh block

  • Members
  • PipPipPipPipPipPip
  • 401 Bài viết
Điểm đánh giá: 91 (tàm tạm)

Đã gửi 24 May 2009 - 01:21 AM

Nếu không phải dân lập trình chuyên nghiệp hoặc chỉ can thiệp ở mức độ vừa phải thì có lẽ dù.ng VBA hoặc VB6 là hay nhất..

Dùng VBA thì nên nhưng VB, VC, Delphi ... thì không nên. VBA đã đc nhúng vào cad nên chạy trực tiếp và nhanh hơn. Việc sử dụng VB, VC, Delphi ... thông qua công nghệ OLE Automation do hệ điều hành điều khiển nên chậm và thậm chí đôi khi nhầm lẫn khi trên máy của bạn đang chạy nhiều hơn một CT CAD. Việc điều khiển CAD từ bên ngoài chỉ nên dùng khi bạn viết một chương trình khác mà chỉ có một ít công đoạn cần đến cad. Ví dụ trong bài toán bình sai lưới trắc địa, sau khi có kq bình sai người ta dùng cad để vẽ lưới hoặc đẩy tọa độ điểm chi tiết vào cad. Tuy nhiên, ở mức căn bản ARX rất giống Lisp nên ai đã từng sử dụng Lisp thì sẽ dễ dàng sử dụng ARX (tất nhiên phải biết C). Ở mức cao hơn của ARX cũng giống như VBA, VB, Delphi đều phải lập trình thông qua lớp (sử dụng các thuộc tính và phương thức). Vấn đề để lựa chọn có lẽ là thói quen và tốc độ.
Đó là những hiểu biết mang tính ngiệp dư của mình, các bạn biết nhiều hơn thì góp ý nhé.
  • 2

#9 phantuhuong

phantuhuong

    biết dimstyle

  • Moderator
  • PipPipPipPipPip
  • 383 Bài viết
Điểm đánh giá: 200 (khá)

Đã gửi 27 May 2009 - 12:08 PM

Dùng VBA thì nên nhưng VB, VC, Delphi ... thì không nên. VBA đã đc nhúng vào cad nên chạy trực tiếp và nhanh hơn.


Nói gì thì nói, VBA vẫn chỉ mang tính ứng dụng, hạn chế về nhiều thứ (không biên dịch, khó bảo mật, hỗ trợ ActiveX ít,...). Gọi là "chương trình" một cách đúng nghĩa khi dùng môi trường lập trình điều khiển AutoCad (và còn nhiều ứng dụng khác nữa). Ví dụ VSTA (Visual Studio Tools for Applications) đang được phát triển, đó chính là VB.NET phát triển trong các ứng dụng như Office, AutoCad,...
Cho dù hơi chậm nhưng không ảnh hưởng vì tốc độ máy tính cao.

Ví dụ chương trình vẽ mặt cắt Địa chất công trình GeoSection do tôi viết tôi dùng nền Excel, toàn bộ project viết trong VB6. VBA chỉ có chức năng gọi dll để chạy thôi. Tốc độ nhìn chung khá nhanh:

http://www.giaiphape...7210#post157210
  • 1
Bồi dưỡng Excel & VBA cho các đơn vị ở Hà Nội và khu vực lân cận

Từng bước loại đồ Tàu ra khỏi cuộc sống!


#10 tigertiger

tigertiger

    biết zoom

  • Members
  • Pip
  • 16 Bài viết
Điểm đánh giá: 0 (bình thường)

Đã gửi 04 June 2009 - 04:00 AM

Nói gì thì nói, VBA vẫn chỉ mang tính ứng dụng, hạn chế về nhiều thứ (không biên dịch, khó bảo mật, hỗ trợ ActiveX ít,...). Gọi là "chương trình" một cách đúng nghĩa khi dùng môi trường lập trình điều khiển AutoCad (và còn nhiều ứng dụng khác nữa). Ví dụ VSTA (Visual Studio Tools for Applications) đang được phát triển, đó chính là VB.NET phát triển trong các ứng dụng như Office, AutoCad,...
Cho dù hơi chậm nhưng không ảnh hưởng vì tốc độ máy tính cao.

Ví dụ chương trình vẽ mặt cắt Địa chất công trình GeoSection do tôi viết tôi dùng nền Excel, toàn bộ project viết trong VB6. VBA chỉ có chức năng gọi dll để chạy thôi. Tốc độ nhìn chung khá nhanh:

http://www.giaiphape...7210#post157210



Giờ thì nên dùng Visual studio , C# hoặc C++ thì có nhiều tiện ích, vì VBA hay VB (nếu không thuần túy can thiệp ở ngoài vào) thì hạn chế

Nhưng tóm lại ngôn ngữ không quan trọng mà là quan trọng liên kết thế nào thôi?
  • 0

#11 phantuhuong

phantuhuong

    biết dimstyle

  • Moderator
  • PipPipPipPipPip
  • 383 Bài viết
Điểm đánh giá: 200 (khá)

Đã gửi 04 June 2009 - 11:24 AM

Giờ thì nên dùng Visual studio , C# hoặc C++ thì có nhiều tiện ích, vì VBA hay VB (nếu không thuần túy can thiệp ở ngoài vào) thì hạn chế

Nhưng tóm lại ngôn ngữ không quan trọng mà là quan trọng liên kết thế nào thôi?


Cái này mới quan trọng anh ạ, ai có súng dùng súng, ai có dao dùng dao ---> quan trọng là giết được địch :s_big:

Ai theo VB.NET, VB6, VBA, C, Delphi,... thì cứ phát triển theo hướng đó, quan trọng là mục đích cuối cùng phải đạt được thôi.
  • 0
Bồi dưỡng Excel & VBA cho các đơn vị ở Hà Nội và khu vực lân cận

Từng bước loại đồ Tàu ra khỏi cuộc sống!


#12 tigertiger

tigertiger

    biết zoom

  • Members
  • Pip
  • 16 Bài viết
Điểm đánh giá: 0 (bình thường)

Đã gửi 09 June 2009 - 01:42 AM

Cái này mới quan trọng anh ạ, ai có súng dùng súng, ai có dao dùng dao ---> quan trọng là giết được địch :lol2:

Ai theo VB.NET, VB6, VBA, C, Delphi,... thì cứ phát triển theo hướng đó, quan trọng là mục đích cuối cùng phải đạt được thôi.


Vấn đề không có súng có dao thì dùng GẬY, hiiiiii

hoặc bí quá thì dùng tay vẽ luông

Nói vậy, nhưng tùy ai mạnh gì dùng đó, chứ không nên áp đặt VB6 đúng không?
?
  • 0

#13 nduyh

nduyh

    biết zoom

  • Members
  • Pip
  • 13 Bài viết
Điểm đánh giá: 2 (bình thường)

Đã gửi 22 June 2009 - 12:20 AM

1. Tạo chương trình chạy exe để điều khiển AutoCad:


Cách này rất đơn giản, dễ thực hiện, nhất là ai đã thành thạo VBA:

Hình đã gửi

File kèm theo:
http://www.cadviet.c.../VB6exeAcad.zip

2. Tạo thư viện dll để AutoCad truy cập:

Món này hơi độc chiêu và gần như không có tài liệu, tôi mò mẫm chuyển đổi theo phương pháp trong Office.

Hình đã gửi

File kèm theo:
http://www.cadviet.c...n_AutoCad_1.zip

Tôi sẽ viết huớng dẫn sử dụng sau ...



Há há, em chạy được 2 VD của bác Hướng ròi!!! Hay phết!!!
  • 0

#14 Lâm Tứ

Lâm Tứ

    biết vẽ line

  • Members
  • PipPip
  • 26 Bài viết
Điểm đánh giá: 5 (bình thường)

Đã gửi 13 July 2009 - 07:57 AM

[b]1. Tạo chương trình chạy exe để điều khiển AutoCad:
Tôi sẽ viết huớng dẫn sử dụng sau ...

Bác cho em 01 bài HDSD đi bác thank bác trước nhé!
  • 0

#15 nguyendongdhgt

nguyendongdhgt

    biết zoom

  • Members
  • Pip
  • 14 Bài viết
Điểm đánh giá: 0 (bình thường)

Đã gửi 30 July 2009 - 06:48 PM

Bác cho em 01 bài HDSD đi bác thank bác trước nhé!

bác hướng ơi bác có thể cho em bản hướng dẫn dc ko ạ?
vì năm nay em ra trường đang cầm về chuyên đè bác viết em rất thich
mong bác post lên
  • 0

#16 Flex

Flex

    biết lệnh erase

  • Members
  • PipPipPip
  • 104 Bài viết
Điểm đánh giá: 22 (tàm tạm)

Đã gửi 31 July 2009 - 11:35 PM

Thực ra lập trình còn tuỳ vào mục đích, đơn giản thì làm mấy câu LÍP, khó hơn tẹo thì VB (giờ thì C#), Tôi làm các bài lớn toàn phải dùng ObjectARX, C# có hay nhưng đến lúc debug thì ngại vô cùng (khởi động lại CAD). Nói chung mức độ nào thì xào cái đấy. Tuy nhiên có phương pháp này cũng hay áp dụng. Giao diện làm bang C#, tính toán dùng DLL của VSC-> tiện vô cùng tận.
  • 0
Phần mềm và Tiện ích trên AutoCAD
->SHD- Phần mềm TK nhà xưởng thép tiền chế
->Nhận hợp tác thiết kế nhà thép tiền chế
website: www.cad-app.com
email: flexnet@cad-app.com
ym: flex_tools

#17 nguyendongdhgt

nguyendongdhgt

    biết zoom

  • Members
  • Pip
  • 14 Bài viết
Điểm đánh giá: 0 (bình thường)

Đã gửi 01 August 2009 - 11:53 PM

Thực ra lập trình còn tuỳ vào mục đích, đơn giản thì làm mấy câu LÍP, khó hơn tẹo thì VB (giờ thì C#), Tôi làm các bài lớn toàn phải dùng ObjectARX, C# có hay nhưng đến lúc debug thì ngại vô cùng (khởi động lại CAD). Nói chung mức độ nào thì xào cái đấy. Tuy nhiên có phương pháp này cũng hay áp dụng. Giao diện làm bang C#, tính toán dùng DLL của VSC-> tiện vô cùng tận.

mong các bác hướng dẫn thêm do đang hạn chế về lường kiến thức trong trường đại học nên rất mong dc các bác hướng dẫn và cho bài để tham khảo thêm!cảm ơn các bác
  • 0

#18 nguyendongdhgt

nguyendongdhgt

    biết zoom

  • Members
  • Pip
  • 14 Bài viết
Điểm đánh giá: 0 (bình thường)

Đã gửi 11 August 2009 - 05:19 PM

Các bạn chờ khoảng 1 tuần nữa nhé, có hướng dẫn sơ bộ thôi, nhưng đủ để hiểu.

bác phantuhuong ạ. bác đã có hướng dẫn sơ bộ chưa ạ?em đợi lâu quá mong bác đưa lên sớm
  • 0

#19 nguyendongdhgt

nguyendongdhgt

    biết zoom

  • Members
  • Pip
  • 14 Bài viết
Điểm đánh giá: 0 (bình thường)

Đã gửi 15 August 2009 - 11:49 AM

Các bạn chờ khoảng 1 tuần nữa nhé, có hướng dẫn sơ bộ thôi, nhưng đủ để hiểu.

bác phantuhuong ạ cho em hỏi?em làm dc thư viện dll kết nối với cad dc nhưng khi chậy thì em bị vướng khi vẽ ra cad thì đang bị lỗi bác có thể nối rõ chỗ này dc ko ạ.khi tạo fỏm vẽ các đối tượng có giống VBA trong cad ko ạ?em làm giống trong cad nhưng bị lỗi ko hiểu nó thiếu hay chưa đúng chỗ nào
  • 1

#20 tuanthanhbp

tuanthanhbp

    biết pan

  • Members
  • Pip
  • 6 Bài viết
Điểm đánh giá: 0 (bình thường)

Đã gửi 22 August 2009 - 08:19 AM

Chào bác Huong. Em đang cần viết 1 chương trình viết bằng VB6 cho CAD mong bác chỉ giúp.
Yêu cầu: Tạo 1 Form có 4 textbox và 1 command, khi chạy chương trình sẽ kiểm tra cad đã được mở hay chưa, nếu chưa được mở thì mở Cad lên sau đó nhập text vào 4 textbox rồi bấm vào Command, khi đó các text sẽ được ghi lên Model của Cad ở các vị trí được chỉ định. VD: text1 ở vị trí (0.000,0.000), text2(10.000,0.000), text3(10.000,10.000), text4(0.000,10.000)
Nếu được thì bác thêm cho em đoạn code để tạo cho Model hiện hành 1 text Style VNI-Times để các Text trên bản vẽ là Font VNI-Times.
Bác cho en xin code luôn nhé, Thanks bác!
  • 0