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ị

Cho em hỏi: Có những giải pháp nào cho việc tạo ra 1 đối tượng phức tạp hơn những đối tượng hình học cơ bản (như block chẳng hạn) bằng C# không ạ? Ưu nhược của các giải pháp này như nà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
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

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

×