Đến nội dung


Hình ảnh
- - - - -

[Chia sẻ] Giao diện hỗ trợ lập trình trong thiết kế


  • Please log in to reply
23 replies to this topic

#1 anhcos

anhcos

    biết lệnh hatchedit

  • Advance Member
  • PipPipPipPip
  • 260 Bài viết
Điểm đánh giá: 170 (tàm tạm)

Đã gửi 21 December 2011 - 06:06 PM

Giao diện hỗ trợ lập trình trong thiết kế

Đây là một trong những dự án tâm đắc nhất của tôi, nay đưa lên đây chia sẻ với mọi người.

Hy vọng nó sẽ hỗ trợ cho các kỹ sư tạo thêm được các ứng dụng cho riêng mình với trình bày đẹp mắt hơn.

Các tính năng chính của điều kiểm mới (Control), là một phần thể hiện trước ý tưởng thiết kế trước khi xuất dữ liệu qua Acad hay Excel.
Giao diện có 3 phần, thanh công cụ trên cùng, phần dưới cùng là thanh trạng thái và phần chính giữa là nơi thể hiện.

Hình đã gửi

Trong đó có các chức năng chính:
- Thể hiện các đối tượng như Line, Polyline, Cirle, Arc và Text.
- Có thể phóng to, thu nhỏ và dời bằng chuột
- Đo khoảng cách với truy bắt điểm (kết hợp với zoom và pan như acad)
- Không phụ thuộc vào Acad

Sau đây là một số mẫu VD:

- VD về dữ liệu có chuyển động
Hình đã gửi


- Khung dầm:

Hình đã gửi

- Vẽ cây chơi:

Hình đã gửi

- Chương trình vẽ mặt cắt:

Hình đã gửi

Tải chương trình mẫu ở đây (yêu cầu .NET 2.0)
  • 14
Clear sky!

MF Rock collection.

#2 anhcos

anhcos

    biết lệnh hatchedit

  • Advance Member
  • PipPipPipPip
  • 260 Bài viết
Điểm đánh giá: 170 (tàm tạm)

Đã gửi 21 December 2011 - 06:06 PM

Hướng dẵn sử dụng
Chú ý: Nên sử dụng bằng VB.NET trong bộ Visual Studio (VS)

1. Đưa điều kiểm (control) vào Form Designer
- Ấn chuột phải và Toolbox, chọn Choose Item.. như hình vẽ:
29151211.png

- Trong Tab .NET Framework Components chọn nút Browse... và chọn file thư viện EquipmentPreview.dll (tải về trước ở post#3):
93993275.png

- Nhấn OK, trên Toolbox sẽ hiện thêm ra một điều kiểm mới như hình dưới, bên trái:
Đưa điều kiểm vào trong Form, như hình giữa.
Các thuộc tính ban đầu nằm bên phải, trong đó:
ShowCommand, ShowOrigin, ShowPreview, ShowStatusbar, ShowToolbar: thể hiện or không các thành phần xuất hiện trong điều kiểm.
70172471.png


- Chèn vào dòng đầu tiên vào phần viết code của form (sẽ thuận tiện hơn cho việc coding):
Imports EquipmentPreview

2. Điều kiểm EquipmentPreview sẽ thể hiện một đối tượng kế thừa từ lớp cơ sở TEquipment, cách khai báo như sau:
VD: điều kiểm nằm trên Form1 có tên là eqPreview, thì cầu lệnh sau:
eqPreview.SelectObject = equip

trong đó equip được khai báo (màu đỏ bắt nuộc phải có):
Tạo một Class kết thừa từ lớp TEquipment

Class MyEquip
Inherits TEquipment 'dòng này bắt buộc phải có

'hàm khởi tạo, có thể tùy biến, nhưng phải gọi hàm khởi tạo cơ sở
Sub New(Name as String)
MyBase.New(Name)

'Code do người dùng viết thêm nằm ở đây
End Sub
End Class
Dim equip as new MyEquip("Của tôi")

3. Thao tác với các đối tượng

- Tạo dữ liệu thể hiện cho đối tượng
+ Tạo hàm ghi đè Create2D như sau:
Public Overrides Sub Create2D()
ClearEntities() 'dùng dòng này để xóa các dữ liệu cũ

'Phần thêm các đối tượng vào đây

End Sub

+ Các thực thể cơ bản xây dựng nên đối tượng bao gồm Line, Polylile (chưa có cung), Rectangle, Arc, Circle, Text.
Sử dụng các hàm tương ứng để thêm vào các thực thể:
AddLine(x1,y1,x2,y2) thêm vào một Line qua 2 điểm
AddPolyline(đỉnhs,Closed) tạo một polyline với các đỉnh nằm trong mảng 2 phần tử X,Y liên tiếp nhau. Closed dùng để đóng hay mở polyline
AddPolyline(x,y,Width,Height) ' tạo một hình chữ nhật
AddCircle(CenX, CenY,Radius) dùng để thêm vào một vòng tròn
AddArc(CenX,CenY,Radius,StartAngle,EngAngle) thêm vào một cung tròn, các góc đều ở radians
AddText(x,y,Text,Height,Rotation) tạo một dòng văn bản, góc nghiêng tính bằng radians

+ Tất cả các hàm trên đều có 2 tham số mặc định nằm cuối cùng là Layer và Type
và một hàm nạp chồng với màu chỉ định có kiểu Color của VB.NET

Layer chọn theo sau:
Public Enum TLayer As Integer
Continuous = 0
Center = 1
Hidden = 2
Text = 3
Dimension = 4
End Enum

và Type
Public Enum TEntityType As Integer
'Trông thấy và xuất qua acad được, được thêm vào đối tượng khác (cha)
Normal = 1
'Trông thấy được nhưng không xuất qua acad được và không thêm vào đối tượng khác (cha)
Preview = 2
'Trông thấy được và xuất qua acad được nhưng không thêm vào đối tượng khác (cha)
Privated = 3
End Enum

VD:
AddLine(1,2,6,-1,TLayer.Center)' tạo đường thẳng qua 2 điểm (1,2) và (6,-1) nằm trong lớp Center
AddLine(1,2,6,-1,Color.Red,TLayer.Center)' tạo đường thẳng qua 2 điểm (1,2) và (6,-1) nằm trong lớp Center, màu đỏ
AddLine(1,2,6,-1,Color.Yellow)tạo đường thẳng qua 2 điểm (1,2) và (6,-1) màu vàng

AddArc(0,1,1,7*PI/4,PI/4,TLayer.Hidden,TEntityType.Preview) cung tròn có góc bắt đầu lớn hơn góc cuối, chỉ thấy trên điều kiểm nhưng không xuất qua Acad được.

- Để xuất qua AutoCAD, ta dùng câu lệnh
equip.Draw(acad_app), trong đó acad_app là biến đại diện cho chương trình AutoCAD đang chạy.

Hàm Draw chỉ xuất các dữ liệu được phép của đối tượng qua AutoCAD (hiện tại bản 1.1 tất cả các đối tượng đều tạo vào layer và textstyle hiện hành)

Còn tiếp ...


  • 3
Clear sky!

MF Rock collection.

#3 anhcos

anhcos

    biết lệnh hatchedit

  • Advance Member
  • PipPipPipPip
  • 260 Bài viết
Điểm đánh giá: 170 (tàm tạm)

Đã gửi 21 December 2011 - 06:06 PM

Tải về

* 05-Jul-2012
- Thêm User Control - NumericAcad giúp lấy số liệu từ Acad. Kế thừa từ Control NumericUpDown, ngoài ra còn đo khoảng cách hoặc lấy chiều dài cung, đường thẳng, polyline, số trong text và mtext, kích thước / nội dung của Dimesion.

* 02-May-2012:
- Bổ sung thêm lệnh ArrayPolar và ArrayRectangle

* 26-Dec-2011:
- Cải tiến chút ít cho dễ sử dụng

Bài mẫu:

1. http://www.fshare.vn/file/TW7GWAWQ5T

2. http://www.fshare.vn/file/TY8FG2D0JT
  • 2
Clear sky!

MF Rock collection.

#4 NvThanh

NvThanh

    biết zoom

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

Đã gửi 21 December 2011 - 07:17 PM

ứng dụng rất hay, tiếc không có code mẫu ^^
Cảm ơn đã chia sẻ !
  • 0

#5 anhvanyeuem

anhvanyeuem

    HÀ TĨNH CHÍNH GỐC 38!

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 764 Bài viết
Điểm đánh giá: 473 (tốt)

Đã gửi 21 December 2011 - 07:50 PM

Ui sao mình không thây link đâu nhỉ,kích vào không thây tệp tin xuất hiện?help me?
Ai down được rùi cho mình xin link đựoc không nhỉ?
  • 0

Hội những người yêu kỹ thuật chân chính


#6 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5678 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 21 December 2011 - 09:01 PM

Đăng ký xin bác anhcos từ lâu, cuối cùng bác ấy cũng tung ra ^^ T4S
  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#7 phamngoctukts

phamngoctukts

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1107 Bài viết
Điểm đánh giá: 696 (tốt)

Đã gửi 25 December 2011 - 10:59 AM

Giao diện hỗ trợ lập trình trong thiết kế

Đây là một trong những dự án tâm đắc nhất của tôi, nay đưa lên đây chia sẻ với mọi người.

Hy vọng nó sẽ hỗ trợ cho các kỹ sư tạo thêm được các ứng dụng cho riêng mình với trình bày đẹp mắt hơn.

Các tính năng chính của điều kiểm mới (Control), là một phần thể hiện trước ý tưởng thiết kế trước khi xuất dữ liệu qua Acad hay Excel.
Giao diện có 3 phần, thanh công cụ trên cùng, phần dưới cùng là thanh trạng thái và phần chính giữa là nơi thể hiện.

Tải chương trình mẫu ở đây (yêu cầu .NET 2.0)

Bác anhcos! có phải cái này Bác dùng VDraw không?
  • 0
Tất cả vì sự phát triển của diễn đàn ...
Cám ơn đừng nói lời suông mà hãy nhấn Hình đã gửi!

#8 anhcos

anhcos

    biết lệnh hatchedit

  • Advance Member
  • PipPipPipPip
  • 260 Bài viết
Điểm đánh giá: 170 (tàm tạm)

Đã gửi 25 December 2011 - 09:38 PM

Bác anhcos! có phải cái này Bác dùng VDraw không?

Cái này mình viết từ đầu đến cuối, bản này chỉ hỗ trợ 2D và 1 viewport thôi.

Đầu tuần mình sẽ viết phần hướng dẫn sử dụng, cũng rất dễ dùng.
  • 3
Clear sky!

MF Rock collection.

#9 NvThanh

NvThanh

    biết zoom

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

Đã gửi 31 December 2011 - 08:40 PM

Phiên bản 1.1 (26-12-2011): Hình như không sử dụng được bác ah,
- Chưa thấy add biến cho textbox để người dùng có thể thay đổi tùy biến
  • 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 02 January 2012 - 08:47 PM

Properties Box sử dụng đối tượng gì đấy anhcos ơi???
  • 0

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


#11 Detailing

Detailing

    biết lệnh imageclip

  • Members
  • PipPipPipPipPipPipPip
  • 667 Bài viết
Điểm đánh giá: 278 (khá)

Đã gửi 04 January 2012 - 09:31 AM

Properties Box sử dụng đối tượng gì đấy anhcos ơi???

Câu hỏi của bạn Jin đã 2 ngày nhưng ko thấy bạn trả lời nên xin phép bạn anhcos trả lời thay, nếu chưa đúng thì anhcos chỉnh lại giúp.
Properties box bạn có thể sử dụng control: PropertyGrid có trong .NET Framework 2.0 trở lên. Tuy nhiên bạn nên sử dụng thêm DisplayNameAttribute để thể hiện tên của các thuộc tính cho nó đẹp (vd: Chiều dày thay vì Chiều_dày) và DescriptionAttribute để giải thích ý nghĩa của thuộc tính.
một vd về PropertyGrid:
Hình đã gửi

Thân!
  • 2

Ideas don't matter, execution does!

1908412_308002392716743_8165279281236341


#12 anhcos

anhcos

    biết lệnh hatchedit

  • Advance Member
  • PipPipPipPip
  • 260 Bài viết
Điểm đánh giá: 170 (tàm tạm)

Đã gửi 04 January 2012 - 11:39 AM

Phiên bản 1.1 (26-12-2011): Hình như không sử dụng được bác ah, - Chưa thấy add biến cho textbox để người dùng có thể thay đổi tùy biến


Mình vẫn thấy dùng được, cũng không có ai phản hồi thêm.
Add biến cho textbox là sao, VD cụ thể hơn đi bạn.

Properties Box sử dụng đối tượng gì đấy anhcos ơi???


Câu hỏi này không rõ ràng lắm, dù sao Detailing cũng đã trả lời dùm bạn rồi.

Bổ sung 1 chút thôi, cú pháp để cho 1 thuộc tính thể hiện trong PropertyGrid là:

- Chèn vào đầu tiên
Imports ComponentModel

...

- Khai báo thuộc tính
<Category("Tên nhóm các thuộc tính"),DisplayName("Tên thuộc tính"),Description("Diễn giải ý nghĩa thuộc tính")>
public Property ThuocTinh as ...

Tất cả các cấp độ dưới cấp public thì thuộc tính sẽ không xuất hiện trong PropertyGrid
  • 2
Clear sky!

MF Rock collection.

#13 NvThanh

NvThanh

    biết zoom

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

Đã gửi 04 January 2012 - 02:23 PM

Ví dụ khi chạy chương trình em muốn thay đổi chiều dài của Line, Polyline, ... bằng cách nhập số vào ô textbox có được không ạ
AddLine(x1,y1,x2,y2) thêm vào một Line qua 2 điểm
gán x1 cho textbox1
x2 cho textbox2
y1 cho textbox3
y2 cho textbox4
Mới học nên ngôn ngữ lập trình chưa diễn tả đúng mong bác thông cảm !
  • 0

#14 anhcos

anhcos

    biết lệnh hatchedit

  • Advance Member
  • PipPipPipPip
  • 260 Bài viết
Điểm đánh giá: 170 (tàm tạm)

Đã gửi 04 January 2012 - 04:37 PM

Ví dụ khi chạy chương trình em muốn thay đổi chiều dài của Line, Polyline, ... bằng cách nhập số vào ô textbox có được không ạ
AddLine(x1,y1,x2,y2) thêm vào một Line qua 2 điểm
gán x1 cho textbox1
x2 cho textbox2
y1 cho textbox3
y2 cho textbox4
Mới học nên ngôn ngữ lập trình chưa diễn tả đúng mong bác thông cảm !


Gởi bạn một ví dụ về thêm mới Line bằng cách nhập tọa độ từ chương trình.
  • 1
Clear sky!

MF Rock collection.

#15 anhcos

anhcos

    biết lệnh hatchedit

  • Advance Member
  • PipPipPipPip
  • 260 Bài viết
Điểm đánh giá: 170 (tàm tạm)

Đã gửi 11 January 2012 - 01:13 PM

Hướng dẫn sử dụng tập chọn đối tượng có trong thư viện:

Tập chọn đối tượng của acad rất mạnh và dễ tùy biến, tuy nhiên việc triển khai hơi mất công sức một chút.
Vì thế rút gọn được phần này sẽ đỡ mất thời gian hơn.

Trong thư viện sử dụng lớp TFilterSet để chọn đối tượng trong acad.

* Cách khai báo:
- TFilterSet(mảng_tên_các_đối_tượng() as string) 'không quan tâm đến tên của tập chọn
- hoặc TFilterSet(Tên_tập chọn as string, mô_tả as string, mảng_tên_các_đối_tượng() as string)

VD:
- Tạo tập chọn Line và Text
Dim fs as New TFilterSet(new string(){"Line","Text"})
- Tạo tập chọn MText và Block có tên là "tập chọn a"
Dim fs as New TFilterSet("tap chon a", "tap chon vd", new string(){"Insert", "Mtext"})

* Để kết hợp dùng thêm Layer khi chọn, sử dụng hàm SetFilter(layers() as tring) như sau:
Dim fs as New TFilterSet(new string(){"Line","Text"})
fs.SetFilter(new string(){"0","Center"})
Sẽ chọn Line và Text nằm trong layer "0" và "Center"

*Để kết hợp với TextStyle, sử dụng hàm SetFilter(layers() as tring, textstyles() as string) như sau:
Dim fs as New TFilterSet(new string(){"Line","Text"})
fs.SetFilter(new string(){"0","Center"}, new string(){"UNI"})[/code]
Sẽ chọn Line và Text nằm trong layer "0" và "Center", Text phải thuộc textstyle có tên là UNI

* Để chọn theo tên Block, dùng hàm SetBlock(blocks() as string)

Dim fs as New TFilterSet(new string(){"Line","INSERT","Text"})
fs.SetFilter(new string(){"0","Center"}, new string(){"UNI"})
fs.SetBlock(new string(){"Abc","Def","GGH"})
Sẽ chọn Line, Text, BlockRef trong layer 0 và Center, texstyle UNI, block có tên "Abc" or "Def" or"GGH".

* Chọn đối tượng
Gọi hàm SelectOnScreen(Dwg as Object, SelectionSet as Object, Optional Clear as Boolean = True) hoặc
SelectAll(Dwg as Object, SelectionSet as Object, Optional Clear as Boolean = True)

Trong đó:
Hàm sẽ trả về True nếu có đối tượng được chọn
- Dwg là biến đại diện cho bản vẽ
- SelectionSet là biến đại diện cho tập chọn sẽ được tạo ra trong bản vẽ
- Clear: xóa tập chọn trước khi bắt đầu chọn mới

VD:

if Acad_link() then
...Dim selset as Object
...Dim fs as New TFilterSet(new string(){"Line","Text"})

...if fs.SelectOnScreen(acad.ActiveDocument, selset) then
......'neu co doi tuong duoc chon
......'xu ly no....
......Dim i%
......for i=0 to selset.Count -1
......next i
...end if
end if

hoặc đơn giản hơn có thể dùng bằng như sau:
if Acad_link() then
...Dim selset as Object

...If New TFilterSet(New String() {"Line","Text"}).SelectOnScreen(Acad.ActiveDocument, SelSet) Then
......Dim i%
......for i=0 to selset.Count -1
......next i
...End If
End if

Lưu ý:
Tập chọn chỉ dùng theo các tên thực thể, layer, textstyle, block name, các kiểu lọc theo các tính chất khác chưa có trong phiên bản này, VD như lọc theo màu, dimstyle ... hoặc áp dụng lọc tùy chọn của người dùng
  • 4
Clear sky!

MF Rock collection.

#16 dylog

dylog

    Chưa sử dụng CAD

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

Đã gửi 29 March 2012 - 09:45 AM

Bác anhcos ơi, cho em hỏi, ở tất cả các form của bác: bác dùng tool j cho các ô trên cùng bên trái của các form ấy ạ
em nhìn như là TreeView phải không ạ, khi ấn và là form thay đổi phải không ạ
cơ mà em tìm mãi trên mạng không nói rõ nhiều về TreeView, chỉ là các hướng dẫn thêm bớt TreeView
nếu không phải là treeview bác có thể cho em biết các form này dùng tool gì được không ạ :D
  • 0

#17 phuonghuynhduy

phuonghuynhduy

    biết vẽ line

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

Đã gửi 01 May 2012 - 04:44 PM

Hi AnhCos!
Mình đang dùng tool của bạn cho ứng dụng của mình. Nói chung là ổn và tuyệt.
Mình xin góp ý bạn có thể add thêm array đối tượng nữa là tuyệt.
Cảm ơn share của bạn.
  • 0

#18 anhcos

anhcos

    biết lệnh hatchedit

  • Advance Member
  • PipPipPipPip
  • 260 Bài viết
Điểm đánh giá: 170 (tàm tạm)

Đã gửi 14 May 2012 - 08:27 AM

Hi AnhCos! Mình đang dùng tool của bạn cho ứng dụng của mình. Nói chung là ổn và tuyệt. Mình xin góp ý bạn có thể add thêm array đối tượng nữa là tuyệt. Cảm ơn share của bạn.


Đã thêm lệnh tạo đối tượng mảng cho đối tượng: ArrayPolar và ArrayRectangle.

Cách sử dụng:

'Tạo đối tượng mà không thêm vào khung thể hiện
dim ent as TEntityData = CreateCircle(0,0,1)

+ Entity.ArayPolar(NumberOfObjects, AngleToFill, CenterPoint)
'array thành 16 đối tượng, góc quay tổng 3*pi/2, tâm quay (12,8)
dim ents() as TEntityData = ent.ArrayPolar(16 , 3*pi/2, 12, 8)
'thêm vào khung thể hiện
Add(ents)

hoặc viết tắt:
Add(ent.ArrayPolar(16 , 3*pi/2, 12, 8))

+ Entity.ArrayRectangular (NumberOfRows, NumberOfColumns, DistBetweenRows, DistBetweenColumns)
'array 2 chiều, 4 hàng, 5 cột ...
Add(ent.ArrayRecTangle(4,5,1.3,2.85))
  • 1
Clear sky!

MF Rock collection.

#19 phuonghuynhduy

phuonghuynhduy

    biết vẽ line

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

Đã gửi 14 May 2012 - 08:46 AM

Hi Anhcos!
Sao không thấy link down nhỉ. Bạn up lên nhé. Thx
  • 0

#20 truongvu

truongvu

    Chưa sử dụng CAD

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

Đã gửi 05 July 2012 - 11:02 AM

Hi Anhcos!
link bi die roi gui lai di ban.
  • 0