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

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

Mình có 2 bản vẽ: 1 bản là bản vẽ không có gì (bản vẽ mới) và 1 bản vẽ có chứa 3 block có tên là 1,2 và 3

Cho mình hỏi là làm thế nào để chèn vào bản vẽ mới block 1 hoặc 2 hoặc 3 (tức là không đồng thời chèn cả 3 block và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
Mình có 2 bản vẽ: 1 bản là bản vẽ không có gì (bản vẽ mới) và 1 bản vẽ có chứa 3 block có tên là 1,2 và 3

Cho mình hỏi là làm thế nào để chèn vào bản vẽ mới block 1 hoặc 2 hoặc 3 (tức là không đồng thời chèn cả 3 block vào).

Chào bạn huyhoangute,

Mở bản vẽ có chứa các block 1, 2, 3,.... lên.

Copy cái block cần insert vào clipboad.

Mở bản vẽ cần insert.

Paste cái clipboard đó vô.

Thế là từ đó bạn thoải mái mà insert cái thằng cu block đó.

Hề hề hề... dễ như ăn ..... ỚT

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

Sử dụng như sau:

Copy Block có tên abc từ bản vẽ hiện hành qua bản vẽ khác

 

Dim ban_ve_khac as AcadDocument

Set biến ban_ve_khac này ở đây

 

Dim object_to_copies(0) as AcadEntity

set object_to_copies(0) = ThisDrawing.Blocks.Item("abc")

 

ThisDrawing.CopyObject object_to_copies, ban_ve_khac

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
Sử dụng như sau:

Copy Block có tên abc từ bản vẽ hiện hành qua bản vẽ khác

 

Dim ban_ve_khac as AcadDocument

Set biến ban_ve_khac này ở đây

 

Dim object_to_copies(0) as AcadEntity

set object_to_copies(0) = ThisDrawing.Blocks.Item("abc")

 

ThisDrawing.CopyObject object_to_copies, ban_ve_khac

Mình muốn copy block từ một bản vẽ đã có (coi như là một thư viện ) vào bản vẽ hiện hành cơ. help me, thanks!

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 có 2 bản vẽ: 1 bản là bản vẽ không có gì (bản vẽ mới) và 1 bản vẽ có chứa 3 block có tên là 1,2 và 3

Cho mình hỏi là làm thế nào để chèn vào bản vẽ mới block 1 hoặc 2 hoặc 3 (tức là không đồng thời chèn cả 3 block vào).

Dùng lệnh

Command: dc

Xuất hiện

Bảng biểu

Chọn bảng vẽ chứa blok

Chọn block cần lấy

dùng chột lôi vào là bảng vẽ mới là được

vuhaiok@yahoo.com.vn

 

:cheers: :leluoi:

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 có 2 bản vẽ: 1 bản là bản vẽ không có gì (bản vẽ mới) và 1 bản vẽ có chứa 3 block có tên là 1,2 và 3

Cho mình hỏi là làm thế nào để chèn vào bản vẽ mới block 1 hoặc 2 hoặc 3 (tức là không đồng thời chèn cả 3 block vào).

Dùng lệnh

Command: dc

Xuất hiện

Bảng biểu

Chọn bảng vẽ chứa blok

Chọn block cần lấy

dùng chột lôi vào là bảng vẽ mới là được

vuhaiok@yahoo.com.vn

 

:cheers: :leluoi:

Mấy anh "đọc kĩ hướng dẫn sử dụng trước khi dùng hộ em cái", đã bảo là VBA mà. Đến bó tay!

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 muốn copy block từ một bản vẽ đã có (coi như là một thư viện ) vào bản vẽ hiện hành cơ. help me, thanks!

Bạn làm ngược lại so với phần code trên kia là xong thô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

Private Sub chen_block()
Dim tpoint
Dim blockRefObj As AcadBlockReference
tpoint = ThisDrawing.Utility.GetPoint(, "Diem dat block: ")
	Set blockRefObj = ThisDrawing.ModelSpace.InsertBlock(tpoint, "ten Block", 1#, 1#, 1#, 0)	
End Sub

Bạn thử đoạn này xem sao

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
Private Sub chen_block()
Dim tpoint
Dim blockRefObj As AcadBlockReference
tpoint = ThisDrawing.Utility.GetPoint(, "Diem dat block: ")
	Set blockRefObj = ThisDrawing.ModelSpace.InsertBlock(tpoint, "ten Block", 1#, 1#, 1#, 0)	
End Sub

Bạn thử đoạn này xem sao

 

 

"ten Block" của bạn thực ra đó là tên file chứa các block chứ không phải là tên Block chứa trong file

  • 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 làm ngược lại so với phần code trên kia là xong thôi.

Bạn cho mình code cụ thể hơn được không, làm thế nào để gọi được các block trong bản vẽ không hiện hành. Thanks!

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
"ten Block" của bạn thực ra đó là tên file chứa các block chứ không phải là tên Block chứa trong file

Srr vì viết vội^^.Mình viết trong trường hợp trong fle CAD đó chưa nhiều Block.

@chủ 2pic: để insert 1 block chứa trong 1 file,đầu tiên bạn phải khai báo đường dẫn tới file đó.

Khi bắt đầu chạy code thì sẽ có hàm khởi tạo insert toàn bộ file chứa block.

Sau đó,muốn insert block nào thì dùng tên block đó

 

Sub Khoi_Tao()
'On Error GoTo out:
Dim diemchen(0 To 2) As Double
Dim BlockFile
' Insert file chua block
BlockFile = "C:\fileblock.dwg" ' Duong dan file dwg
Dim blockRefObj As AcadBlockReference
Set blockRefObj = ThisDrawing.ModelSpace.InsertBlock(diemchen BlockFile, 1#, 1#, 1#, 0)
blockRefObj.Delete
out:
End Sub

Private Sub chen_block()
Khoi_tao
Dim tpoint
Dim blockRefObj As AcadBlockReference
 tpoint = ThisDrawing.Utility.GetPoint(, "Diem dat block: ")
'insert block trong file chua block
 Set blockRefObj = ThisDrawing.ModelSpace.InsertBlock(tpoint, "ten_Block", 1#, 1#, 1#, 0) 'ten 1 block trong file dwg  
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

Copy block từ bản vẽ khác, không phải bản vẽ hiện hành:

 

Bạn phải mở bản vẽ chứa block bằng lệnh VBA như sau:

ThisDrawing là bản vẽ mới đang active

 

Dim Ban_ve_moi as AcadDocument

 

'Lưu lại biến bản vẽ mới

Set Ban_ve_moi = ThisDrawing

 

ThisDrawing.Open(đường dẫn đến file bản vẽ chứa block)

'Lúc này bản vẽ hiện hành là bản vẽ vừa mở

 

'Chỗ này tùy theo nhu cầu mà thay đổi

Dim obj_to_copy(0) as AcadEntity

set obj_to_copy(0) = ThisDrawing.Blocks.Item("1")

 

ThisDrawing.CopyObjects obj_to_copy, Ban_ve_moi

 

'Đóng em nó

ThisDrawing.Close False

  • 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
Srr vì viết vội^^.Mình viết trong trường hợp trong fle CAD đó chưa nhiều Block.

@chủ 2pic: để insert 1 block chứa trong 1 file,đầu tiên bạn phải khai báo đường dẫn tới file đó.

Khi bắt đầu chạy code thì sẽ có hàm khởi tạo insert toàn bộ file chứa block.

Sau đó,muốn insert block nào thì dùng tên block đó

 

Sub Khoi_Tao()
'On Error GoTo out:
Dim diemchen(0 To 2) As Double
Dim BlockFile
' Insert file chua block
BlockFile = "C:\fileblock.dwg" ' Duong dan file dwg
Dim blockRefObj As AcadBlockReference
Set blockRefObj = ThisDrawing.ModelSpace.InsertBlock(diemchen BlockFile, 1#, 1#, 1#, 0)
blockRefObj.Delete
out:
End Sub

Private Sub chen_block()
Khoi_tao
Dim tpoint
Dim blockRefObj As AcadBlockReference
 tpoint = ThisDrawing.Utility.GetPoint(, "Diem dat block: ")
'insert block trong file chua block
 Set blockRefObj = ThisDrawing.ModelSpace.InsertBlock(tpoint, "ten_Block", 1#, 1#, 1#, 0) 'ten 1 block trong file dwg  
End Sub

Code trên chạy ok rùi nhưng Bác có thể giải thích đoạn code trên cho em được không? em chưa hiểu lắm.

Đầu tiên là gọi bản vẽ chứa block thì ok, đến cái blockRefObj.Delete tại sao lại xóa??? rùi lại out: nữa???

Nói chung là code từ đoạn blockRefObj.Delete về sau em ko hiểu, bác giải thích giúp em 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

cho mình hỏi luôn là tọa độ điểm chèn của block toàn chạy đi đâu thui chứ không như tọa độ mình chọn (mặc dù file chứa block mình đã tạo block ở gốc tọa độ).

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

blockRefObj.Delete Dòng này để xóa cái block file trong bản vẽ của mình đi.Vì giả thiết ở đây là trong file Block của bạn chứa nhiều block con,bạn chỉ add nó vào để bản vẽ hiện hành có những block ấy trong list thôi,rồi xóa đi chứ ai lại để chình ình ở đấy ^^ .Lúc đầu chỉ cần khởi tạo thế th mà.Trong t/hợp gile block chỉ có 1 block,thì không cần đoạn code dưới nữa

Out: liên quan đến dòng On Error GoTo out: (lúc post mình lại để dấu ' đằng trước,bạn xóa đi nhé)

Tức là nếu gặp lỗi (trùng tên block,k tìm thấy file gốc....) thì nhảy đến dòng OUT: để thực hiện tiếp các dòng sau đó (ở đây là end sub luôn)

  • 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

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


×