Đến nội dung


Hình ảnh
- - - - -

AutoCAD .NET


  • Please log in to reply
48 replies to this topic

#1 Jin Yong

Jin Yong

    biết lệnh group

  • Vip
  • PipPipPipPipPipPip
  • 498 Bài viết
Điểm đánh giá: 334 (khá)

Đã gửi 12 September 2010 - 04:07 PM

Với sự phát triển ồ ạt và những lợi ích mà .NET mang lại, Autodesk đã có những bước tiến để phát triển VBA lên AutoCAD. NET
Vốn là một người yêu thích VBA, nên khi chuyển qua sử dụng VB.NET (cụ thể là Visual Basic 2008) Jinthấy khả năng hỗ trợ của VB.NET quả đã giúp cho việc viết Code nhẹ nhàng hơn nhiều, bên cạnh đó chương trình cũng mạnh hơn nhờ công cụ truy xuất vào hệ thống hiệu quả.
Trên diễn đàn cũng đã có người post lên sản phẩm của AutoCAD.NET (Ứng dụng AutoCAD .NET: chuyển đổi các bảng mã tiếng Việt thông dụng, Unicode, VNI-Windows, TCVN3(ABC), Unicode tổ hợp, UTF-8)

Nhưng tóm lại AutoCAD.NET là gì, tương tác với AutoCAD như thế nào (có phải là 1 modul như VBA không?), cách cách đặt và sử dụng như nào?

Mong những người đi trước đóng góp các hiểu biết của mình (dù là thô sơ hay hiện đại) để những người khác có thể tìm hiểu!


  • 1

Phát triển phần mềm thiết kế Kết cấu Việt Nam - http://www.ketcausoft.com


#2 gia_bach

gia_bach

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1435 Bài viết
Điểm đánh giá: 1426 (rất tốt)

Đã gửi 13 September 2010 - 09:55 AM

Với sự phát triển ồ ạt và những lợi ích mà .NET mang lại, Autodesk đã có những bước tiến để phát triển VBA lên AutoCAD. NET
Vốn là một người yêu thích VBA, nên khi chuyển qua sử dụng VB.NET (cụ thể là Visual Basic 2008) Jin thấy khả năng hỗ trợ của VB.NET quả đã giúp cho việc viết Code nhẹ nhàng hơn nhiều, bên cạnh đó chương trình cũng mạnh hơn nhờ công cụ truy xuất vào hệ thống hiệu quả.
Trên diễn đàn cũng đã có người post lên sản phẩm của AutoCAD.NET (Ứng dụng AutoCAD .NET: chuyển đổi các bảng mã tiếng Việt thông dụng, Unicode, VNI-Windows, TCVN3(ABC), Unicode tổ hợp, UTF-8)

Nhưng tóm lại AutoCAD.NET là gì, tương tác với AutoCAD như thế nào (có phải là 1 modul như VBA không?), cách cách đặt và sử dụng như nào?

Mong những người đi trước đóng góp các hiểu biết của mình (dù là thô sơ hay hiện đại) để những người khác có thể tìm hiểu!

Chào Jin Yong
Bạn tham khảo một vài ý về AutoCAD.NET

Từ AutoCAD 2010, VBA không còn bao gồm trong gói cài đặt AutoCAD. Nếu bạn muốn tiếp tục sử dụng nó cho 2010 bạn sẽ cần phải lên trang chủ của AutoCAD tải về và cài đặt VBA Enabler. (Có thể) trong tương lai AutoCAD thậm chí sẽ không hỗ trợ VBA ?! ( do Microsoft ngưng cung cấp)

AutoCAD cung cấp nhiều cách khác nhau để truy xuất DataBase thông qua các API khác nhau (API viết tắt của Application Programming Interfaces : giao diện lập trình ứng dụng).
VD : AutoLISP và ARX (C++ interface)
Trong khi đó AutoCAD Visual Basic for Applications gọi tắt là VBA giao tiếp với AutoCAD thông qua giao diện ActiveX Automation.

Microsoft giới thiệu Môi trường Net (.NET Framework) cho phép bạn có thể sử dụng bất kỳ ngôn ngữ lập trình để tạo ra một ứng dụng .

Thông qua .Net, các AutoCAD .NET API cho phép bạn thao tác với giao diện Acad và các tập tin.
AutoCAD .NET API gồm các tập tin DLL khác nhau chứa một loạt các lớp(classes), cấu trúc(structures), phương thức(methods) và các sự kiện( events) cung cấp truy cập vào các đối tượng trong một file bản vẽ hoặc các ứng dụng AutoCAD. 
Các DLL này bao gồm trong gói cài đặt AutoCAD, và mặc nhiên đuợc tự động cài đặt cùng với AutoCAD.
Mỗi tập tin DLL chứa các thành phần của các thư viện khác nhau.
Có hai DLL chính là :
- AcDbMgd.dll : cung cấp các thư viện (hàm) để làm việc với các đối tuợng trong bản vẽ.
- AcMgd.dll : cung cấp các thư viện (hàm) để làm việc với các ứng dụng AutoCAD.
Truớc khi sử dụng các AutoCAD .NET API, chúng ta phải tham chiếu (Add reference) các DLL này vào project

Thuận lợi của AutoCAD .NET API là bạn có thể sử dụng bất kì thư viện nào viết trên Môi trường Net.
VD : System.Text, System.Linq, Microsoft.Win32, System.Windows.Forms ... của Microsoft

Một số e-book tham khảo trên mạng (nếu bạn nào có xin vui lòng Share) :undecided: :
AutoCAD.NET-Developers-Guide
VB.NET Programming for AutoCAD Customization
  • 5

#3 dkkx3a

dkkx3a

    biết lệnh trim

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

Đã gửi 13 September 2010 - 11:49 AM

Các anh chị tham "khổ" cái này, em mới tậu được nhưng mà ebook có nội dung "sơ lược" quá không nhiều mấy:
Link: http://www.mediafire...9zwahcejr3hwle0
  • 1
TỰ SỰ
Biển vào chiều buồn giữa cô liêu
Sóng vỗ bờ bạc đầu con nước
Khi biển động như lòng ta chợt động
Biển ồn ào nhưng thực rất dịu êm.......

#4 Jin Yong

Jin Yong

    biết lệnh group

  • Vip
  • PipPipPipPipPipPip
  • 498 Bài viết
Điểm đánh giá: 334 (khá)

Đã gửi 13 September 2010 - 11:51 AM

Chào Jin Yong
Bạn tham khảo một vài ý về AutoCAD.NET

Từ AutoCAD 2010, VBA không còn bao gồm trong gói cài đặt AutoCAD. Nếu bạn muốn tiếp tục sử dụng nó cho 2010 bạn sẽ cần phải lên trang chủ của AutoCAD tải về và cài đặt VBA Enabler. (Có thể) trong tương lai AutoCAD thậm chí sẽ không hỗ trợ VBA ?! ( do Microsoft ngưng cung cấp)

AutoCAD cung cấp nhiều cách khác nhau để truy xuất DataBase thông qua các API khác nhau (API viết tắt của Application Programming Interfaces : giao diện lập trình ứng dụng).
VD : AutoLISP và ARX (C++ interface)
Trong khi đó AutoCAD Visual Basic for Applications gọi tắt là VBA giao tiếp với AutoCAD thông qua giao diện ActiveX Automation.

Microsoft giới thiệu Môi trường Net (.NET Framework) cho phép bạn có thể sử dụng bất kỳ ngôn ngữ lập trình để tạo ra một ứng dụng .

Thông qua .Net, các AutoCAD .NET API cho phép bạn thao tác với giao diện Acad và các tập tin.
AutoCAD .NET API gồm các tập tin DLL khác nhau chứa một loạt các lớp(classes), cấu trúc(structures), phương thức(methods) và các sự kiện( events) cung cấp truy cập vào các đối tượng trong một file bản vẽ hoặc các ứng dụng AutoCAD. 
Các DLL này bao gồm trong gói cài đặt AutoCAD, và mặc nhiên đuợc tự động cài đặt cùng với AutoCAD.
Mỗi tập tin DLL chứa các thành phần của các thư viện khác nhau.
Có hai DLL chính là :
- AcDbMgd.dll : cung cấp các thư viện (hàm) để làm việc với các đối tuợng trong bản vẽ.
- AcMgd.dll : cung cấp các thư viện (hàm) để làm việc với các ứng dụng AutoCAD.
Truớc khi sử dụng các AutoCAD .NET API, chúng ta phải tham chiếu (Add reference) các DLL này vào project

Thuận lợi của AutoCAD .NET API là bạn có thể sử dụng bất kì thư viện nào viết trên Môi trường Net.
VD : System.Text, System.Linq, Microsoft.Win32, System.Windows.Forms ... của Microsoft

Một số e-book tham khảo trên mạng (nếu bạn nào có xin vui lòng Share) :undecided: :
AutoCAD.NET-Developers-Guide
VB.NET Programming for AutoCAD Customization


Cảm ơn bạn gia_bach vì những thông tin trên.
Sau khi tìm hiểu thì Jin có biết thêm rằng có thể sử dụng chính VB8 để viết một ứng dụng AutoCAD.NET
Chương trình được xuất ra có dạng *.dll và được load vào CAD bằng lệnh NetLoad

Jin còn thắc mắc một vấn đề:
1 file VBA có thể bao gồm nhiều Sub, như thế trong 1 file VBA sẽ bao gồm nhiều ứng dụng (thông qua các Sub), trong khi một ứng dụng .Net thì chỉ là một chương trình đơn lẻ duy nhất.
Jin hiểu như thế có đúng không?
  • 0

Phát triển phần mềm thiết kế Kết cấu Việt Nam - http://www.ketcausoft.com


#5 gia_bach

gia_bach

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1435 Bài viết
Điểm đánh giá: 1426 (rất tốt)

Đã gửi 13 September 2010 - 12:38 PM

Các anh chị tham "khổ" cái này, em mới tậu được nhưng mà ebook có nội dung "sơ lược" quá không nhiều mấy:
Link: http://www.mediafire...9zwahcejr3hwle0

eBook của bạn viết về VB.Net (chung cho tất cả lĩnh vực), ebook tôi giới thiệu viết về Lập trình trên AutoCad .NET


Cảm ơn bạn gia_bach vì những thông tin trên.
Sau khi tìm hiểu thì Jin có biết thêm rằng có thể sử dụng chính VB8 để viết một ứng dụng AutoCAD.NET
Chương trình được xuất ra có dạng *.dll và được load vào CAD bằng lệnh NetLoad

Jin còn thắc mắc một vấn đề:
1 file VBA có thể bao gồm nhiều Sub, như thế trong 1 file VBA sẽ bao gồm nhiều ứng dụng (thông qua các Sub), trong khi một ứng dụng .Net thì chỉ là một chương trình đơn lẻ duy nhất.
Jin hiểu như thế có đúng không?

- trong khi một ứng dụng .Net thì chỉ là một chương trình đơn lẻ duy nhất?

Commands and AutoLISP® functions can be defined with the AutoCAD .NET API through the use of two attributes: CommandMethod and LispFunction.
Trong 1 ứng dụng có thể bao gồm nhiều lệnh và hàm Lisp.

Code VB.Net :
Public Class Class1
'CMD 1
<CommandMethod("HelloWorld")> _
Public Sub HelloWorld()
Dim ed As Editor = Application.DocumentManager.MdiActiveDocument.Editor
ed.WriteMessage("\nChào mừng đến với AutoCad .Net API")
End Sub

'CMD 2
<CommandMethod("getPoint")> _
Public Sub Asdkcmd1()
Dim prPointOptions As PromptPointOptions = New PromptPointOptions("\nChọn điểm :")
Dim prPointRes As PromptPointResult
Dim ed As Editor = Application.DocumentManager.MdiActiveDocument.Editor
prPointRes = ed.GetPoint(prPointOptions)
If prPointRes.Status <> PromptStatus.OK Then
Return
End If

ed.WriteMessage("\nTọa độ diểm : " & prPointRes.Value.ToString)
End Sub

'CMD 3
<CommandMethod("getDistance")> _
Public Sub getdistance()
Dim ed As Editor = Application.DocumentManager.MdiActiveDocument.Editor
Dim prDistOptions As PromptDistanceOptions = New PromptDistanceOptions("\nSelect first point:")
Dim prDistRes As PromptDoubleResult
prDistRes = ed.GetDistance(prDistOptions)
If prDistRes.Status <> PromptStatus.OK Then
Return
End If

ed.WriteMessage("\nKhoảng cách là : " & prDistRes.Value.ToString)
End Sub

End Class

  • 2

#6 Jin Yong

Jin Yong

    biết lệnh group

  • Vip
  • PipPipPipPipPipPip
  • 498 Bài viết
Điểm đánh giá: 334 (khá)

Đã gửi 13 September 2010 - 01:52 PM

Commands and AutoLISP® functions can be defined with the AutoCAD .NET API through the use of two attributes: CommandMethod and LispFunction.
Trong 1 ứng dụng có thể bao gồm nhiều lệnh và hàm Lisp.

Như lời bạn đã từng hứa trong bài viết về ứng dụng chuyển mã,
mong bạn gia_bach có thể bắt đầu những bài viết của mình về AutoCAD.NET cho Jin và mọi người có thể tìm hiểu.
Có thể viết theo ý bạn, hoặc đơn giản là một ví dụ đầu tiên về vẽ một lệnh Line đi.
  • 2

Phát triển phần mềm thiết kế Kết cấu Việt Nam - http://www.ketcausoft.com


#7 Jin Yong

Jin Yong

    biết lệnh group

  • Vip
  • PipPipPipPipPipPip
  • 498 Bài viết
Điểm đánh giá: 334 (khá)

Đã gửi 14 September 2010 - 05:45 PM

Do không thấy phản hồi của gia_bach, đồng thời cũng muốn chia sẻ cũng như muốn kiểm lại thông tin vừa thu nhận được, Jin sẽ bắt đầu trình bày về AutoCAD. NET.
Các bài viết được trình bày trên cơ sở người dùng sử dụng ngôn ngữ Visual Basic. NET
Do hiểu biết hạn hẹp nên mong các tiền bối bỏ quá và đóng góp các ý kiến để Jin sửa sai cho chính mình.


1. Cơ bản về AutoCAD. NET

AutoCAD.NET = .NET + AutoCAD Libraries


AutoCAD. NET thực chất là sử dụng các phần mềm lập trình .NET trên cơ sở tham chiếu các thư viện của AutoCAD (các file *.dll do AutoCAD cung cấp) để tạo ra các sản phẩm ứng dụng dưới dạng *.dll. Các ứng dụng này sau khi được khai báo trong AutoCAD bằng lệnh NetLoad, sẽ được thực thi bằng cách gọi các lệnh đã được định nghĩa (lập trình).

AutoCAD. NET khác VBA ở điểm nào?
Chính là việc thay vì là 1 modul của AutoCAD như VBA (các lệnh VBA cần được soạn thảo bằng VBA Editor trong CAD, lưu lại dưới dạng *.dvb), AutoCAD.NET sử dụng chính các phần mềm lập trình thông dụng như Visual Basic 8.0 để làm chương trình soạn thảo, tất nhiên là với điều kiện phải tham chiếu các thư viện của CAD vào VB8. Bằng cách đó, bạn sẽ:
- Có một sản phẩm mạnh hơn. Hẳn như các bạn còn nhớ, tạo Form trong VBA rất khổ sở
- Dễ dàng lập trình hơn. Vì bản thân VB8 hỗ trợ rất mạnh mẽ cho công tác lập trình
- Sản phẩm quá pro dưới dạng *.dll. Vì như chúng ta vẫn nhớ, load file *.dvb khá chậm

Làm việc đó như thế nào?
Bạn sạn thảo chương trình bằng VB8 (bản Microsoft Visual Basic 2008 Express Edition hiện nay đang được Microsoft cung cấp Free). Nhưng thay vì lựa chọn tạo một Windows Forms Application (sản phẩm là file *.exe), bạn hãy chọn Class Library để tạo ra một sản phẩm *.dll. Việc tiếp theo là phải tham chiếu (Reference) 2 file AcDbmgd.dllAcmgd.dll để có thế sử dụng các lệnh với AutoCAD, nói cách khác là biến VB8 thành VBA đời cao.

Sản phẩm là gì?
Sản phẩm của AutoCAD.NET (hay chính là VB8 đã tham chiếu file thư viện của CAD) là file *.dll
File này làm việc y như *.lsp
Nghĩa là nếu trong AutoLisp, bạn sử dụng cú pháp defun c: để khai báo 1 lệnh thì trong VB8 sẽ là CommandMethod. Một file *.dll sẽ có thể bao gồm nhiều lệnh như file *.lsp, và các file *.dll này sau khi được load bằng lệnh NetLoad thì nó làm việc cũng như file *.lsp (có điều sức mạnh thì... he he)
  • 1

Phát triển phần mềm thiết kế Kết cấu Việt Nam - http://www.ketcausoft.com


#8 Jin Yong

Jin Yong

    biết lệnh group

  • Vip
  • PipPipPipPipPipPip
  • 498 Bài viết
Điểm đánh giá: 334 (khá)

Đã gửi 15 September 2010 - 09:53 AM

2. Khởi tạo một dự án

1. Khởi động VB8 với lựa chọn Class Library trong hộp thoại New Project

Hình đã gửi


2. Trong VB8, ở cửa sổ Solution Explorer, chọn Show All Files

Hình đã gửi


3. Click chuột phải vào mục References, chọn Add References, trong hộp thoại Add Reference chuyển sang Tab Browse, chọn 2 file acdbmgd.dll acmgd.dll trong thư mục AutoCAD (Ví dụ C:\Program Files\Autocad 2009)

Hình đã gửi

Và sau đây là đoạn mã đầu tiên...
  • 3

Phát triển phần mềm thiết kế Kết cấu Việt Nam - http://www.ketcausoft.com


#9 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 17 September 2010 - 03:21 PM

Có lẽ một số bạn đã nghiên cứu AutoCAD.NET, cho mình hỏi một tý :
- Giữa AutoCAD.NET và ObjectARX(hình như chỉ viết trên VC++) có gì khác nhau, Ưu khuyết điểm của chúng, cái nào mạnh hơn, cái nào chạy nhanh hơn.
- AutoCAD.NET có thể lập trình trên VB7, VC7 ... trở lên (riêng Delphi 2009 không biết có đc không) và nó chạy với cad dưới dạng một thư viện (liên kết động) chứ kg phải là một ứng dụng độc lập phải kg
- AutoCAD.NET có phụ thuộc phiên bản không? File dll đã biên dịch trên thư viện cad 2008 có chạy đc trên cad2010 kg?
  • 0

#10 Jin Yong

Jin Yong

    biết lệnh group

  • Vip
  • PipPipPipPipPipPip
  • 498 Bài viết
Điểm đánh giá: 334 (khá)

Đã gửi 18 September 2010 - 01:52 PM

Có lẽ một số bạn đã nghiên cứu AutoCAD.NET, cho mình hỏi một tý :
- Giữa AutoCAD.NET và ObjectARX(hình như chỉ viết trên VC++) có gì khác nhau, Ưu khuyết điểm của chúng, cái nào mạnh hơn, cái nào chạy nhanh hơn.
- AutoCAD.NET có thể lập trình trên VB7, VC7 ... trở lên (riêng Delphi 2009 không biết có đc không) và nó chạy với cad dưới dạng một thư viện (liên kết động) chứ kg phải là một ứng dụng độc lập phải kg
- AutoCAD.NET có phụ thuộc phiên bản không? File dll đã biên dịch trên thư viện cad 2008 có chạy đc trên cad2010 kg?


1. Rất tiếc mình chưa nghiên cứu về ObjectARX nên không thể có câu trả lời về vấn đề này
2. AutoCAD.NET không phải là một phần mềm lập trình, AutoCAD.NET thực chất là dùng công nghệ .NET để lập trình cho CAD, nó chính là VBA, nhưng khác VBA ở chỗ nõ không nằm trong AutoCAD. Xin nhắc lại rằng AutoCAD.NET thực chất là dùng các phần mềm lập trình theo công nghệ .NET (Visual Basic. NET, Visual C.NET...) rồi liên kết với các file *.dll của AutoCAD để có thể viết các lệnh về CAD.
3. Trong cuốn hướng dẫn về AutoCAD. NET, có đề cập đến vấn đề phiên bản, ở đó nói rằng: đối với CAD2010 thì sử dụng VB8, còn với CAD2007 đến CAD2009 thì sử dụng VB5. Trên thực tế Jin vẫn đang dùng VB8, và File *.dll xuất ra vẫn chạy được trên CAD2007 và CAD2009. Vẫn biết rằng các đời CAD khác nhau thì các file *.dll (sử dụng làm thư viện) của CAD cũng khác nhau, nhưng Jin nghĩ là về cơ bản cốt lõi của CAD vẫn không thay đổi, nên sự khác biệt về phiên bản chắc không gấy khó khăn gì.
  • 1

Phát triển phần mềm thiết kế Kết cấu Việt Nam - http://www.ketcausoft.com


#11 Jin Yong

Jin Yong

    biết lệnh group

  • Vip
  • PipPipPipPipPipPip
  • 498 Bài viết
Điểm đánh giá: 334 (khá)

Đã gửi 19 September 2010 - 12:11 AM

Jin định viết các ví dụ, nhưng nhận ra cuốn AutoCAD .NET Developer's Guide đã trình bày khá cụ thể những vấn đề cơ bản.
Bản PDF: http://www.scribd.co...evelopers-Guide
Bản Online (rất tiện để tra cứu): http://docs.autodesk...uide/index.html

Ví dụ để add một đường Line vào trong bản vẽ thì đoạn mã được trình bày như sau: http://docs.autodesk...uide/index.html

Ban đầu thì viết mã với AutoCAD. NET có vẻ mang tính thủ tục phiền phức một chút. Nhưng sau khi viết một vài ứng dụng, hiểu sâu thêm một chút thì bạn sẽ thấy CAD tổ chức cơ sở dữ liệu rất chặt chẽ, và vì tính chặt chẽ minh bạch nên mọi thứ sẽ dễ nắm bắt và vận dụng thôi.
  • 4

Phát triển phần mềm thiết kế Kết cấu Việt Nam - http://www.ketcausoft.com


#12 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 19 September 2010 - 09:55 PM

1. Rất tiếc mình chưa nghiên cứu về ObjectARX nên không thể có câu trả lời về vấn đề này
2. AutoCAD.NET không phải là một phần mềm lập trình, AutoCAD.NET thực chất là dùng công nghệ .NET để lập trình cho CAD, nó chính là VBA, nhưng khác VBA ở chỗ nõ không nằm trong AutoCAD. Xin nhắc lại rằng AutoCAD.NET thực chất là dùng các phần mềm lập trình theo công nghệ .NET (Visual Basic. NET, Visual C.NET...) rồi liên kết với các file *.dll của AutoCAD để có thể viết các lệnh về CAD.
3. Trong cuốn hướng dẫn về AutoCAD. NET, có đề cập đến vấn đề phiên bản, ở đó nói rằng: đối với CAD2010 thì sử dụng VB8, còn với CAD2007 đến CAD2009 thì sử dụng VB5. Trên thực tế Jin vẫn đang dùng VB8, và File *.dll xuất ra vẫn chạy được trên CAD2007 và CAD2009. Vẫn biết rằng các đời CAD khác nhau thì các file *.dll (sử dụng làm thư viện) của CAD cũng khác nhau, nhưng Jin nghĩ là về cơ bản cốt lõi của CAD vẫn không thay đổi, nên sự khác biệt về phiên bản chắc không gấy khó khăn gì.

Cám ơn Jin. Mình cũng có vài điều muốn bày tỏ:
Trước nay, ngoài lisp, mình chỉ biết có hai kỹ thuật đang đc dùng để viết ứng dụng hỗ trợ cad. Đó là : liên kết động (viết theo ARX) và ActiveX Automation (viết trên VBA, VB, Delphi ...). Trong hai kỹ thuật trên, về sức mạnh thì có vẻ như nhau, đều do người lập trình tận dụng những thê mạnh của ngôn ngữ để tạo ra ứng dụng của mình. Nhưng về tốc độ, thì liên kết động nhanh hơn nhiều.
Nhưng với công nghệ AutoCAD.NET, mình kg hiểu nó đã dùng kỹ thuật nào trong hai kỹ thuật trên hay là một kỹ thuật khác nữa. Hiện nay trên nền .NET, các ngôn ngữ chỉ khác nhau về cú pháp, còn về sức mạnh và tốc độ thì đều như nhau. vỉ khi biên dịch chúng có cùng bộ mã (kiểu như mả code của java). Nếu bạn lập trình chỉ phục vụ những công việc đơn giản thì kg quan trọng, nếu bạn lập trình với qui mô lớn, phải giải quyết nhiều bài toán phức tạp, lựa chọn công nghệ phải đc nghĩ đến. Mình thấy các phần mềm lớn viết trên cad thường sd ARX hơn là ActiveX Automation
Những điều nói trên mình chỉ nói theo hiểu biết hết sức nghiệp dư của mình, có gì kg đúng mong các bạn chỉ giáo thêm
Mình thấy có 1 địa chỉ tranh luận khá nhiều về ARX và .NET nhưng kg hiểu sao lại kg tiếp tục nữa, các bạn có thể tham khảo để có thêm thông tin http://www.ketcau.co...hp?t=1828&pp=20
và ở đây http://vi.ketcau.wik.../wiki/ObjectARX
  • 0

#13 ks_chang

ks_chang

    biết vẽ line

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

Đã gửi 19 September 2010 - 10:33 PM

Mình cũng đang chuyển hướng nghiên cứu sang cái này, cảm ơn gia_bach và Jin Yong rất nhiều, bài viết của các bạn rất hay.
Tài liệu về autocad.net hiên tại cũng ko nhiều, toàn phải đọc online và toàn tiếng Anh. Có bản PDF dọc offline thì tốt quá!
Đây là 1 số trang web về autocad.net:
- diễn đàn: http://forums.autode...t5/NET/bd-p/152
- Các bạn vào đây: http://usa.autodesk....x...&id=1911627
download file: AutoCAD 2011 .Net Wizards.zip , trong đó là file setup cái Temp Autocad cho các dự án khi mở bằng VB.Net, đỡ mất công khi tạo 1 dự án mới phải add lại mấy cái .Ddll của cad

- Rất mong gia_bach, Jin Yong và diễn đàn có những bài viết chất lượng để mọi người có thể tiếp cận với ngôn ngữ này dễ hơn.
Mình có đọc qua cuốn Lập trình VBA cho Excel của tác giả Phan Tự Hướng, hay tài liệu Tự Động Hóa TK Cầu Đường, rất rõ ràng và dễ học. Thông qua diễn đàn, mình mong đợi Việt Nam sẽ có những cuốn tài liệu về Autocad. Net bổ ích như vậy. Chân thành càm ơn!
  • 1

#14 Jin Yong

Jin Yong

    biết lệnh group

  • Vip
  • PipPipPipPipPipPip
  • 498 Bài viết
Điểm đánh giá: 334 (khá)

Đã gửi 21 September 2010 - 07:33 AM

Nhìn chung viết code cho AutoCAD. NET sẽ phiền phức dài dòng hơn một chút.
Bạn luôn phải sử dụng một Transaction để làm bất cứ một việc gì đó, và phải luôn kết thúc bằng Transaction.Commit() để hoàn tất việc cập nhật dữ liệu
Với VBA, để tạo một đường Line, tất cả những điều bạn cần làm là:

Sub Add_Line(X1, Y1, X2, Y2, tLayer)
Dim tLine As AcadLine
Dim P1(0 To 2) As Double
Dim P2(0 To 2) As Double
P1(0) = X1: P1(1) = Y1
P2(0) = X2: P2(1) = Y2
Set tLine = ThisDrawing.ModelSpace.AddLine(P1, P2)
tLine.Layer = tLayer
End Sub

Nhưng trong .NET, bạn phải truy cập vào dữ liệu chứa các đối tượng đồ họa: BlockTable, các đối tượng đồ họa (Line, Circle, Dim, Text ...) được ghi trong bảng này bằng các dòng (giống như file *.MDB của Microsoft Access vậy). Bạn không nhất thiết phải hiểu hết cấu trúc của các dòng dữ liệu này, nên việc cần làm để thêm dữ liệu (thêm các đối tường đồ họa) chính là phải khai báo một biến có cấu trúc như thế, và trong AutoCAD.NET, biến đó sẽ có kiểu: BlockTableRecord.

Chính vì dữ liệu trong AutoCAD.NET được sắp xếp là các bảng, nên làm bất cứ việc gì bạn cũng phải truy cập vào các bảng. Các bảng dữ liệu thường xuyên phải truy cập là: BlockTable (đối tượng đồ họa như đã nêu trên), DimStyleTable (chứa các kiểu Dim), TextStyleTable (Chứa các kiểu Text). Chẳng hạn nếu bạn muốn gán kiểu Dim cho đường Dim vừa mới tạo ra, trong VBA chỉ đơn giản là:

dimObj.StyleName = "D200"

Trong khi đó, với AutoCAD.NET, bạn phải truy cập vào DimStyleTable, lấy ID của kiểu dim D200, sau đó gán ID đó cho đường Dim vừa tạo
  • 2

Phát triển phần mềm thiết kế Kết cấu Việt Nam - http://www.ketcausoft.com


#15 dbc

dbc

    Chưa sử dụng CAD

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

Đã gửi 30 September 2010 - 10:24 AM

Chào các bạn.
Thấy diễn đàn vui vẻ quá nên mình cũng muốn góp vui một tý chút. Mình muốn trao đổi về một số loại công cụ lập trình mở rộng cho AutoCAD.
- AutoLisp hay hiện nay là Visual Lisp: các bạn cũng biết rồi, gồm những mã lệnh của được lưu trong file .lsp. Khi dùng ứng dụng này, phải tải vào CAD và được CAD thông dịch các mã lệnh để thực thi.
- VBA: là một mô đun lập trình có thể được tích hợp hay không tích hợp vào CAD. Mô đun này chứa môi trường lập trình VBAIDE. Ứng dụng viết từ VBA chưa được dịch (gồm các mã lệnh Visual Basic được chứa trong các module, class module hay form). Khi ứng dụng kiểu này được tải vào CAD và chạy: nó sẽ được trình dịch VBRuntime thông dịch. Việc kết nối giữa ứng dụng VBA và CAD (gọi là ứng dụng chủ hay host application) thực hiện thông qua cơ chế COM (Component Object Model)
- ObjectArx: công cụ lập trình cho phép tạo ra các thư viện .arx. Thực chất đây là các thư viện liên kết động đã được biên dịch sang mã nhị phân (tương tự như các thư viện .dll truyền thống trong Win9x hoặc WinXP). Vì vậy tốc độ thực thi của các ứng dụng này là rất cao. Các ứng dụng ARX tương tác với CAD bằng các API và có khả năng can thiệp rất sâu vào AutoCAD. Tuy nhiên công cụ ObjARX tương đối khó học và phải dùng ngôn ngữ C++ để phát triển
- .NET API: công cụ lập trình cho phép tạo ra các thư viện dạng .dll. Tuy nhiên có vài điểm khác so với .arx, thư viện .NET là dạng thư viện động dạng gói kết hợp (assembly) và ở dạng mã trung gian (IL). Các thư viện này sẽ được .NẺT Framework dịch sang mã máy khi thực thi. Tốc độ của ứng dụng .NET API cho AutoCAD cũng rất cao (vì các mã IL rất gần gũi với mã máy). Một điểm khác của .NET API so với ObjARX là việc kết nối với AutoCAD mặc dù cũng được thực hiện qua các API nhưng các API này ở dạng thư viện lớp đã được đóng gói (Wrapped Class) và sử dụng bộ nhớ có quản lý (managed code). Việc các bạn phải tham chiếu tới "acmgd.dll" (viết tắt của Managed Autocad) và "“acdbmgd.dll” (viết tắt của Managed Autocad database) chính là vì lý do này.
Ngôn ngữ sử dụng cho .NET API với AutoCAD là các ngôn ngữ khá dễ học như CSharp hoặc VB. NET và sử dụng môi trường lập trình Visual Studio .NET rất thân thiện với người dùng.
Có bạn nói ".NET API chính là VBA" chưa chính xác. Về mặt cơ chế làm việc và tạo ứng dụng thì .NET API giống ObjectARX và VB Automation nhiều hơn là VBA.
Vì rất nhiều ưu điểm như: hướng đối tượng hoàn toàn, ngôn ngữ lập trình và môi trường lập trình thân thiện, tốc độ biên dịch và thực thi cao nên .NET API là một công cụ rất được Autodesk tập trung phát triển (không chỉ cho AutoCAD mà hầu hết các sản phẩm khác như Revit, Civil 3D) và hứa hẹn sẽ rất phổ biến.

- Ngoài ra, còn một loại công cụ mới hơn đang được Autodesk triển khai cho các sản phẩm của mình: VSTA (Visual Studio Tools for Application). Công cụ này tương tự như VSTO trong MS Office. Công cụ này được dự định sẽ thay thế cho VBA (công cụ mà hãng có thể không hỗ trợ và cài đặt cùng AutoCAD trong tương lai)

Các bạn nên chọn loại công cụ lập trình nào tùy theo khả năng của mình, nhu cầu của mình về ứng dụng mở rộng. Mình cũng dùng qua tất cả các công cụ trên và thấy NET API là công cụ rất tốt và hợp lý nhưng nhiều khi với Script, AutoLisp hoặc VBA bạn cũng có thể tạo ra các ứng dụng thỏa mãn các yêu cầu của mình mà lại tốn ít thời gian nghiên cứu hơn (mình đang nói dưới góc độ của một kỹ sư xây dựng - chuyên môn là số 1).

Hy vọng kiến thức ít ỏi của mình sẽ góp phần nào đó vào diễn đàn.

PS: Về tài liệu cho .NET API với AutoCAD bạn có thể vào Website của autodesk để download như một bạn đã viết ở trên nhưng mình muốn bổ sung thêm một số chi tiết:
- Trong bộ cài đặt ObjArx ngoài các có thể có chứa các file .chm cho cả ObjectArx và .NetAPI để các bạn đọc offline.
- Các bạn có thể tải thêm "autocad_2010_dotnet_training" và DevTV_Introduction_to_AutoCAD_NET_Programming (chứa cả video hướng dẫn) để học hiệu quả hơn.
- Các bạn có thể đăng ký các buổi webcast hoặc đặt các câu hỏi trên autodesk university. Món này rất hay đấy.
  • 5

#16 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 27 October 2010 - 11:18 AM

......
Một số e-book tham khảo trên mạng (nếu bạn nào có xin vui lòng Share) :lol: :
AutoCAD.NET-Developers-Guide

Sau 1 hồi lang thang trên mạng -> Tìm cách đăng kí tài khoản trên facebook và "lần mò" tìm cách down load cuốn sách này. Được sự giúp đỡ của bạn svba1608, anh gia_bach Tue_NV đã download được cuốn AutoCAD-NET-Developers-Guide lưu dưới dạng file pdf.
Tue_NV upload cuốn sách này lên đây để các bạn tiện việc học tập và tra cứu
AutoCAD-NET-Developers-Guide

Hy vọng được thảo luận về đề tài này nhiều hơn nữa
Cảm ơn anh gia_bach, em svba1608 rất nhiều
  • 5

#17 huyhoangute

huyhoangute

    biết zoom

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

Đã gửi 04 December 2010 - 05:55 PM

Bác nào có ebook "VB.NET Programming for AutoCAD Customization" cho em xin được không?
mail: phunghuyhoang@gmail.com
xin cảm ơn và hậu tạ nếu có thể :undecided:
  • 0

#18 zoro107

zoro107

    biết vẽ ellipse

  • Members
  • PipPip
  • 51 Bài viết
Điểm đánh giá: 10 (tàm tạm)

Đã gửi 15 September 2011 - 05:00 PM

cho minh voi. minh tim qua troi ma khong thay . cam on cac ban nhieu.
  • 0

#19 Nguyen_Van_Nghia

Nguyen_Van_Nghia

    biết pan

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

Đã gửi 15 September 2011 - 06:12 PM

Như lời bạn đã từng hứa trong bài viết về ứng dụng chuyển mã,
mong bạn gia_bach có thể bắt đầu những bài viết của mình về AutoCAD.NET cho Jin và mọi người có thể tìm hiểu.
Có thể viết theo ý bạn, hoặc đơn giản là một ví dụ đầu tiên về vẽ một lệnh Line đi.

Mình cũng đã viết một đoạn cho VB.net nhưng vấn đề thực sự mình cảm thấy khó khăn nhất là kiểm soát lỗi trong VB.Net.
- Đối VBA viết code kiểm tra lỗi khá dễ dàng khi chạy thử.
- Nhưng VB.Net thì không biết cách xứ lí thế nào.Mình phải tạo ra 1 file .dll rồi chạy => không thể kiểm soát được code.
Có ai giúp mình với.
  • 0

#20 Jin Yong

Jin Yong

    biết lệnh group

  • Vip
  • PipPipPipPipPipPip
  • 498 Bài viết
Điểm đánh giá: 334 (khá)

Đã gửi 15 September 2011 - 08:50 PM

VB.Net cũng có thể chạy thử

Mình cũng đã viết một đoạn cho VB.net nhưng vấn đề thực sự mình cảm thấy khó khăn nhất là kiểm soát lỗi trong VB.Net.
- Đối VBA viết code kiểm tra lỗi khá dễ dàng khi chạy thử.
- Nhưng VB.Net thì không biết cách xứ lí thế nào.Mình phải tạo ra 1 file .dll rồi chạy => không thể kiểm soát được code.
Có ai giúp mình với.


VB.Net cũng có thể chạy thử, nếu bạn dùng Visual Studio 8.0, bằng cách thiết lập như sau:
- Vào menu Tools -> [Tên chương trình] Properties
- Vào tab Debug, mục Start Action, chọn Start external program, chọn đường dẫn tới Autocad.exe (như hình dưới)

Hình đã gửi

Như vậy, mỗi lần bạn Run (F5), VB sẽ tự bật Autocad lên, nhiệm vụ của bạn là dùng lệnh Netload để load file Dll của bạn (bạn cũng có thể đặt đường dẫn và dùng lisp trong autocad để tự thực hiện khâu netload).
Nó khác cách thông thường ở chỗ bạn không nhất thiết tắt Autocad mỗi lần biên dịch, cũng như khi gặp lỗi nó sẽ hiện lên trong chương trình VB
  • 2

Phát triển phần mềm thiết kế Kết cấu Việt Nam - http://www.ketcausoft.com