Chuyển đến nội dung
Diễn đàn CADViet
Đăng nhập để thực hiện theo  
ks_chang

Tao block thuộc tính trong Cad

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

Chào cả nhà, mình muốn tạo một Block có thuộc tính dữ liệu như sau:

- Có một loạt các ô (vẽ bằng Pline) có diện tích là S. Mình có sử dụng một đoạn code VBA để lấy ra giá trị S này và viết nó ra trong mỗi ô đó, bao gồm cả thứ tự ô và 1 vài đối tượng hình học khác (line, cỉcle...). Nay mình muốn mỗi đối tựong trong ô thống kê đó là 1 block có thuộc tính thì ko biết làm thế nào. Mong đựoc chỉ giáo?

ví dụ: http://www.mediafire.com/?j1mkqywym4e

- Mình có đọc qua Topic chuyểm dữ liệu giữa CAd và excel, Cách tạo Block có thuộc tính này cũng giúp mình chuyển dữ liệu qua lại excel đơn giản hơn.

Rất mong đựoc chỉ giá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

Để tạo 1 block có thuộc tính bạn hãy tạo như các block bình thường, riêng đối với các thuộc tính bạn hãy sử dụng lệnh ATTDEF để chèn các thuộc tính hoặc copy thuộc tính từ 1 block khác.

Để hiệu chỉnh thuộc tính có lệnh ATTEDIT.

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 1 block có thuộc tính bạn hãy tạo như các block bình thường, riêng đối với các thuộc tính bạn hãy sử dụng lệnh ATTDEF để chèn các thuộc tính hoặc copy thuộc tính từ 1 block khác.

Để hiệu chỉnh thuộc tính có lệnh ATTEDIT.

Hi, hình như bạn hiểu nhầm í mình rồi. Ý mình là muốn tạo Block thuộc tính viết bằng VBA. Mỗi Block thuộc tính đựoc tạo ra (trong ví dụ là 1 vòng tròn thống kê tên lô và diện tích PLine chẳng hạn) khi thực hiện selection mỗi Pline đó chứ ko phải dùng lệnh.

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
Hi, hình như bạn hiểu nhầm í mình rồi. Ý mình là muốn tạo Block thuộc tính viết bằng VBA. Mỗi Block thuộc tính đựoc tạo ra (trong ví dụ là 1 vòng tròn thống kê tên lô và diện tích PLine chẳng hạn) khi thực hiện selection mỗi Pline đó chứ ko phải dùng lệnh.

Tôi ko biết bạn làm cụ thể như thế nào.

Có vài đoạn code liên quan xin gửi bạn xem có tác dụng gì không.

	Dim Bl As AcadBlock
Dim center(0 To 2) As Double
center(0) = 2#: center(1) = 2#: center(2) = 0#
Set Bl = ThisDrawing.Blocks.Add(center, "Rebar011")
Bl.AddAttribute 250, acAttributeModeVerify, "Hay Nhap So", center, "NHAPSO", "12345"
Bl.AddCircle center, 250
Bl.AddText "Khong Co Gi", center, 25
ThisDrawing.ModelSpace.AddMInsertBlock center, "Rebar011", 1, 1, 1, 0, 1, 1, 0, 0

  • Vote tăng 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

Mình dùng đoạn code sau để chọn ra các 3d polyline:

Dim poly_3d As AcadSelectionSet
On Error Resume Next
Set poly_3d = ThisDrawing.SelectionSets("SSET")
poly_3d.Delete
Set poly_3d = ThisDrawing.SelectionSets.Add("SSET")
Dim gpCode3dpoly(0) As Integer
Dim dataValue3dpoly(0) As Variant
gpCode3dpoly(0) = 0: dataValue3dpoly(0) = "Polyline"
poly_3d.SelectOnScreen gpCode3dpoly, dataValue3dpoly

sau đó lấy ra giá trị diện tích, và tâm của polyline đó. Trong mối lần chọn đối tựợng polyline này mình muốn insert vào 1 block, sau đó add attributes vào mỗi block đó. Tuy nhiên sau khi add attributes vao thì Block này đã mạc định giá trị attribute đó, đến khi insert block này vào polyline tiếp theo (trong phép selection) thì sẽ có thêm att của đối tựong trước. Cho mình hỏi có cách nào loại bỏ đc att trước ko nhỉ?

 ' Insert the block
Dim blockRefObj As AcadBlockReference
Set blockRefObj = ThisDrawing.ModelSpace.InsertBlock _
(point1, "block_insert", 1#, 1#, 1#, 0)

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

Bạn thêm dòng này nữa:

blockRefObj.GetAttributes(0).TextString = "Giá trị cần thay đổi"

  • Vote tăng 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
Chào cả nhà, mình muốn tạo một Block có thuộc tính dữ liệu như sau:

- Có một loạt các ô (vẽ bằng Pline) có diện tích là S. Mình có sử dụng một đoạn code VBA để lấy ra giá trị S này và viết nó ra trong mỗi ô đó, bao gồm cả thứ tự ô và 1 vài đối tượng hình học khác (line, cỉcle...). Nay mình muốn mỗi đối tựong trong ô thống kê đó là 1 block có thuộc tính thì ko biết làm thế nào. Mong đựoc chỉ giáo?

ví dụ: http://www.mediafire.com/?j1mkqywym4e

- Mình có đọc qua Topic chuyểm dữ liệu giữa CAd và excel, Cách tạo Block có thuộc tính này cũng giúp mình chuyển dữ liệu qua lại excel đơn giản hơn.

Rất mong đựoc chỉ giáo! ^^

 

Hãy thử nghiệm với ACA, vấn đề của bạn sẽ được giải quyết rốt ráo.

File video

File ACA

  • Vote tăng 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

Bạn dùng cad phiên bản bao nhiêu (ACA) là gì và bạn đã sử dụng những lệnh gì thế, nhìn cái Video của bạn hoa hết cả mắt, quá lợi hạ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
Hãy thử nghiệm với ACA, vấn đề của bạn sẽ được giải quyết rốt ráo.

File video

File ACA

Cách làm này của bạn quá lợi hại, mình đang tìm theo từ khóa cách tạo Multi-View Block Reference để tham chiếu. Bạn có thể nói rõ hơn về cách tạo Multi-View Block Reference ko? có thể dùng VBA để tạo Multi-View Block Reference ko?

Thankyou so much!!!

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ách làm này của bạn quá lợi hại, mình đang tìm theo từ khóa cách tạo Multi-View Block Reference để tham chiếu. Bạn có thể nói rõ hơn về cách tạo Multi-View Block Reference ko? có thể dùng VBA để tạo Multi-View Block Reference ko?

Thankyou so much!!!

 

Để làm được như trên bạn phải sử dụng ACA (Tham khảo thêm ở Topic Autocad Architecture 2009)

Multi-View Block là đối tượng thiết lập bởi ACA được tạo thành từ Block Attribute

 

Bạn cứ từ từ đọc các bài viết của tôi về Tags, schedule và tìm hiểu

Trước mắt, để ứng dụng cho công việc bạn hãy lấy file ACA tôi đã post và làm theo video trên

- Chọn tag-> Add selected để chọn đối tượng

- Schedule sẽ tự động update

- Muốn xuất dữ liệu sang Exel thì kích chuột phải vào schedule -> Export

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 được như trên bạn phải sử dụng ACA (Tham khảo thêm ở Topic Autocad Architecture 2009)

Multi-View Block là đối tượng thiết lập bởi ACA được tạo thành từ Block Attribute

 

Bạn cứ từ từ đọc các bài viết của tôi về Tags, schedule và tìm hiểu

Trước mắt, để ứng dụng cho công việc bạn hãy lấy file ACA tôi đã post và làm theo video trên

- Chọn tag-> Add selected để chọn đối tượng

- Schedule sẽ tự động update

- Muốn xuất dữ liệu sang Exel thì kích chuột phải vào schedule -> Export

- Mình vừa đọc qua cái topic của bạn, quả thật rất đáng nể, từ bứoc đầu tìm hiểu cũng như lời lẽ, phân tích của quá trình nghiên cứu, thực hành, hướng dẫn. Rất đáng học hỏi!

Hóa ra cái ACA bạn nói là Autocad Architecture, thảo nào mình down file Cad của bạn dùng ko đc. Mình đang viết một đoạn code để tính khối lựong một lô bằng PL, gần như đã hoàn tất, nay mình muốn các đối tựong được tao ra trong một đối tượng selection là 1 block reference cho tiện quản lý và xuất nhập dự liệu. Ai dè lại học được chiêu mới của bác, thật thú vị.

- Mình ko dùng ACA và chưa dùng bao giờ vì thực chất là công việc của mình ít hoặc chưa dùng tới nó, mình dùng civil 3D 2010. Thấy trong chương trình cũng có đối tượng Multi Block View..., Tuy ko dùng đc cái ví dụ của bạn (có lẽ khác chưong trình); Nhưng mình nghĩ chưong trình này cũng có khả năng tạo Tag, schedule như ACA. Mình sẽ theo các bài học trên topic ACA để áp dụng theo xem thế nào.

- Một điểm chú ý nữa là chưong trình Civil 3D cũng có khả năng tạo ra sản phẩm giống như video Qhsdd, 1_8 của bạn bằng Menu Parcel, tiện lợi và khá nhanh (mình sẽ gửi video lên sau).

- Trở lại với mục dích chính trên topic này, mong đc giúp đỡ cách tạo Block thuộc tính bằng Vba giống như ví dụ mình có send.

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
Chào cả nhà, mình muốn tạo một Block có thuộc tính dữ liệu như sau:

- Có một loạt các ô (vẽ bằng Pline) có diện tích là S. Mình có sử dụng một đoạn code VBA để lấy ra giá trị S này và viết nó ra trong mỗi ô đó, bao gồm cả thứ tự ô và 1 vài đối tượng hình học khác (line, cỉcle...). Nay mình muốn mỗi đối tựong trong ô thống kê đó là 1 block có thuộc tính thì ko biết làm thế nào. Mong đựoc chỉ giáo?

ví dụ: http://www.mediafire.com/?j1mkqywym4e

- Mình có đọc qua Topic chuyểm dữ liệu giữa CAd và excel, Cách tạo Block có thuộc tính này cũng giúp mình chuyển dữ liệu qua lại excel đơn giản hơn.

Rất mong đựoc chỉ giáo! ^^

Đây là đoạn code tôi viết bạn xem có đúng với cái bạn đang cần không nhé. Bạn phải sử dụng đoạn code này trong file cad mà bạn up lên, vì tôi sử dụng các tên block và tên thuộc tính trong đó. Chúc bạn thành công!

 

Public Sub pratice()
On Error GoTo ketthuc
Dim bloref_p As AcadBlockReference
Dim ip(0 To 2) As Double
Dim sset As AcadSelectionSet
Dim entry As AcadEntity
Set sset = ThisDrawing.SelectionSets.Add("SS1")
sset.SelectOnScreen
Dim pl As AcadLWPolyline
Dim varAttributes As Variant
Dim i As Integer
For Each entry In sset
If entry.ObjectName = "AcDbPolyline" Then
	Set pl = entry
	ip(0) = pl.Coordinates(0)
	ip(1) = pl.Coordinates(1)
	Set bloref_p = ThisDrawing.ModelSpace.InsertBlock(ip, "556O", 1, 1, 1, 0, "")
	varAttributes = bloref_p.GetAttributes
	For i = LBound(varAttributes) To UBound(varAttributes)
	If varAttributes(i).TagString = "A1-1" Then
		varAttributes(i).TextString = Round(pl.Area)
	End If
	Next
End If
Next entry
sset.Delete
Exit Sub
ketthuc:
MsgBox "loi roi"
sset.Delete
End Sub

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

auto lisp là cái tào lao nhất

Hy vọng sẽ có 1 ngày đẹp trời bạn sẽ ồ lên rằng: "Ồ, nói autolisp tào lao là tào lao mất rồi!"

  • Vote tăng 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
12 giờ trước, ĐỖ VĂN đã nói:

mình muốn bỏ hẳn đường biên xclip thì làm ntn hả p

Một vấn đề bạn chỉ nên hỏi tại một chỗ thôi,

Mỗi vấn đề này của bạn mà bạn hỏi khắp nơi trên diễn đàn.

 

Lần tới như thế là bạn bị ban nick đấy.

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
Đăng nhập để thực hiện theo  

×