Chuyển đến nội dung
Diễn đàn CADViet
gia_bach

Tạo 1 ứng dụng AutoCAD .NET với MS Visual C#

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

Vào lúc 25/4/2021 tại 13:13, gia_bach đã nói:

Document chính chủ, từ đơn giản đến phức tạp (dimension, block, 3d object ...) : 

http://help.autodesk.com/view/OARX/2018/ENU/?guid=GUID-DF67671C-101D-4917-808B-DD2C5BE3C7E9

 

Em đang tìm hiểu về cách thức làm việc với các block, tuy nhiên vẫn chưa hiểu lắm. Như em tìm hiểu được thì có 2 cách thức chèn block vào bản vẽ:

+ Chèn 1 block đã vẽ từ bản vẽ autocad khác sang bản vẽ hiện hành. Cách này em không tìm thấy nhiều tài liệu chỉ dẫn thực hiện thao tác với block (như scale, rotate, align,..)

+ Vẽ block bằng các hàm hình học cơ bản (pline, line, circle,...) >> thêm vào bản vẽ hiện hành. Cách này có ưu điểm tiện lợi trong điều khiển nhưng để tạo được các block phức tạp (như bu-long, ...) thì số lượng các hình học sẽ lớn và khá khó khăn trong code (ít nhất là đối vs em ^_^).

Mấy anh cho em xin một ít ý kiến và lời khuyên khi làm việc vs block phức tạp với ạ. Cám ơn mọi người!

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
7 giờ trước, Nguyên Khải đã nói:

Cho em hỏi làm thế nào để làm được như hình dưới trong autocad không ạ? (tạo option lệnh Arc,... trong lệnh Pline như hình)

 

 

 

ảnh.png

 

Để làm được vậy bạn cần tìm hiểu về phương thức Getkeyword nhé

  • Like 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

Làm thế nào để nhận biết đối tượng người dùng chọn là block vậy mọi người ?

Như:

+ Nhận biết điểm => Dùng PromptPointOption

+ Nhận biết đường thẳng, tròn,...=> Dùng PromptEntityOption

+ Nhận biết khoảng cách => Dùng PromptDistanceOption

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
6 phút trước, Nguyên Khải đã nói:

Làm thế nào để nhận biết đối tượng người dùng chọn là block vậy mọi người ?

Như:

+ Nhận biết điểm => Dùng PromptPointOption

+ Nhận biết đường thẳng, tròn,...=> Dùng PromptEntityOption

+ Nhận biết khoảng cách => Dùng PromptDistanceOption

ý bạn là muốn lựa chọn chỉ block- kiểu quét bản vẽ và chỉ hight light block chẳng hạn hay ntn nhỉ, chưa rõ ý bạn lắm?

 

  • Like 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
1 giờ trước, CongNguyen91bn đã nói:

ý bạn là muốn lựa chọn chỉ block- kiểu quét bản vẽ và chỉ hight light block chẳng hạn hay ntn nhỉ, chưa rõ ý bạn lắm?

như là nhập lệnh >> chọn 1 block trong bản vẽ >> xuất ra tên của block ... ấy bạn

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
7 phút trước, Nguyên Khải đã nói:

như là nhập lệnh >> chọn 1 block trong bản vẽ >> xuất ra tên của block ... ấy bạn

Bạn hãy tìm hiểu về selectionset kèm theo bộ lọc điều kiện 

Còn đây là ví dụ về vb.net về lựa chọn đối tượng block nhé :

Dim Dieukien(0) As TypedValue

Dieukien.SetValue(New TypedValue(DxfCode.Start, "INSERT"), 0) ' Điều kiện để chỉ lựa chọn đối lượng là block - cái này bạn nên nghiên cứu đầy đủ về Selectionset & Use Selection Filters to Define Selection Set Rules

Dim Boloctheodieukien As SelectionFilter = New SelectionFilter(Dieukien

Dim acSSPrompt As PromptSelectionResult

acSSPrompt = acDocEd.GetSelection(Boloctheodieukien )

Như đoạn này thì là bạn đã lựa chọn được các đối tượng là block rồi nhé!

  • Like 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
Vào lúc 14/5/2021 tại 11:17, CongNguyen91bn đã nói:

Bạn hãy tìm hiểu về selectionset kèm theo bộ lọc điều kiện 

Còn đây là ví dụ về vb.net về lựa chọn đối tượng block nhé :

Dim Dieukien(0) As TypedValue

Dieukien.SetValue(New TypedValue(DxfCode.Start, "INSERT"), 0) ' Điều kiện để chỉ lựa chọn đối lượng là block - cái này bạn nên nghiên cứu đầy đủ về Selectionset & Use Selection Filters to Define Selection Set Rules

Dim Boloctheodieukien As SelectionFilter = New SelectionFilter(Dieukien

Dim acSSPrompt As PromptSelectionResult

acSSPrompt = acDocEd.GetSelection(Boloctheodieukien )

Như đoạn này thì là bạn đã lựa chọn được các đối tượng là block rồi nhé!

 

Cám ơn bạn CongNguyen91bn và cuongtk2 đã giúp nhé.

Mọi người có biết cách nào lập thêm tab, panel trên Ribbon của CAD bằng C# trong file template plug-in của autocad không ạ? Đọc mấy bài trên forum Autodesk mà bỏ vào toàn bị lỗi, không biết sửa như nào để chạy được luôn :(. Mọi người chia sẻ ví dụ đơn giản với ạ.

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
13 giờ trước, Nguyên Khải đã nói:

 

Cám ơn bạn CongNguyen91bn và cuongtk2 đã giúp nhé.

Mọi người có biết cách nào lập thêm tab, panel trên Ribbon của CAD bằng C# trong file template plug-in của autocad không ạ? Đọc mấy bài trên forum Autodesk mà bỏ vào toàn bị lỗi, không biết sửa như nào để chạy được luôn :(. Mọi người chia sẻ ví dụ đơn giản với ạ.

Tạo TAB, panel thì mình thường tạo 1 file .cuix cho đơn giản, cái này bạn có thể tìm kiếm trên youtube hoặc google có khá nhiều bài hướng dẫn

 

  • Like 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

Cho mình hỏi:

Như code trong bài đăng ở link: https://forums.autodesk.com/t5/net/find-block-inside-a-polyline/m-p/7588211#M56182

Có 2 file:

1. File "namespace Autodesk.AutoCAD.EditorInput"

2. File chạy lệnh "[CommandMethod("TEST")]

Mình thắc mắc ở file (1) là mở file thư viện có sẵn của Autodesk rồi bổ sung thêm class "EditorExtension" ? Hay là tạo mới 1 file với namespace như vậy ? Trong cả 2 trường hợp thì mình đều không biết cách thực hiện như nào để chạy được lệnh. Mong anh em 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

Add 2 Class rồi lần lượt dán nguyên từng đống code đó vô. Build rồi netload là được lệnh TEST. Class Commands là class chứa lệnh đó bạn. 

 

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
2 phút trước, cuongtk2 đã nói:

Add 2 Class rồi lần lượt dán nguyên từng đống code đó vô. Build rồi netload là được lệnh TEST. Class Commands là class chứa lệnh đó bạn.

Ý bạn là: dán class EditorExtension (thuộc namespace ...EditorInput) vào chung với class chạy lệnh rồi build hả bạn?

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

Đừng băn khoăn về namespace đó. Nó chỉ là một thứ được người dùng tạo ra thôi. Muốn dùng được class hay method trong đó bạn phải using namespace đó để gọi hàm cho tiện. Bạn nên học đôi chút kiến thức về .net

  • Like 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ám ơn cuongtk2 nhé, mình chạy được rồi. Dán 2 code vào chung file, sử dụng chung bộ thư viện using (khác namespace) thì chạy ngon. ^_^

Bạn có thể hướng dẫn mình cách add 2 file .cs như nào để chạy được với. Mới làm quen với .Net nên siêu gà mờ, tài liệu của autodesk thì có ví dụ nhưng chắc vì toàn Tiếng Anh nên chưa hiểu cách tra cứu và dùng như nào cho đúng cách. Nên mong các anh em đi trước chia sẻ thêm ebook hoặc các ví dụ để dễ học hỏi và tham khảo.

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
7 giờ trước, cuongtk2 đã nói:

Có gì liên hệ qua Zalo mình chỉ cho, trong bài viết khó nói hết được nội dung. 

 

Em gửi rồi, có gì add zalo của em nhé anh cuongtk2.

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 có đoạn code như sau, mà search hoài không ra cái đường dẫn Uri lấy file với đường dẫn như nào. Anh nào giúp đỡ với ạ

BitmapImage getBitmap(string fileName)
    {
      BitmapImage bmp = new BitmapImage();
  
      // BitmapImage.UriSource must be in a BeginInit/EndInit block.         
      bmp.BeginInit();
      bmp.UriSource = new Uri(string.Format(							//Không biết
        "pack://application:,,,/{0};component/{1}",						//đoạn này
        Assembly.GetExecutingAssembly().GetName().Name, fileName));				//hoạt động như nào
      bmp.EndInit();
      return bmp;
    }

 

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

 

 

Cho em hỏi đối tượng ribbon được khoanh trong autocad gọi là ribbon gì vậy mấy anh? Có tài liệu nào nói về cách điều khiển bằng C# cho em xin tham khảo với ạ.

 

ảnh.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
Vào lúc 14/9/2010 tại 12:25, gia_bach đã nói:

Tạo 1 ứng dụng AutoCAD .NET với MS Visual C#

Chúc bạn thành công.

Cho hỏi tí anh Gia_Bach, và các bạn biết: nếu viết C# cho Revit thì trong các mục trên cần thay đổi những mục nào? Thanks!

  • Vote giảm 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

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

×