Chuyển đến nội dung
Diễn đàn CADViet
  • Thông báo

    • Nguyen Hoanh

      CADViet đã hoàn tất nâng cấp   14/09/2017

      Chào các bạn, CADViet đã hoàn tất việc nâng cấp lên phiên bản mới. Tất cả các chức năng đã hoạt động theo kỳ vọng của ban quản trị. Nếu có vấn đề gì cần phản hồi, các bản post ở đây nhé: Trân trọng, Nguyễn Hoành.
Đăng nhập để thực hiện theo  
longtdh1

Tìm basepoint của 1 block để chèn 1 block khác

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

Mình muốn chèn 1 block vào 1 block khác theo tọa độ basepoint của block đó. Có bạn nào biết cách tìm basepoint của 1 block bằng VBA không giúp mình với. 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 muốn chèn 1 block vào 1 block khác theo tọa độ basepoint của block đó. Có bạn nào biết cách tìm basepoint của 1 block bằng VBA không giúp mình với. Thanks.

Cách tìm basepoint của 1 block :

Sub BlockInsertPoint()
   On Error Resume Next

   Dim Point As Variant
   Dim Ent As AcadEntity

   ThisDrawing.Utility.GetEntity Ent, Point, "Chon Block:"

   If TypeOf Ent Is AcadBlockReference Then
       Point = Ent.InsertionPoint
       MsgBox "Insertion Point : " & Chr(10) _
           & " X = " & Point(0) & Chr(10) _
           & " Y = " & Point(1) & Chr(10) _
           & " Z = " & Point(2)
   Else
       MsgBox "Khong phai Block."
   End If

End Sub

  • 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
Cách tìm basepoint của 1 block :

Sub BlockInsertPoint()
   On Error Resume Next

   Dim Point As Variant
   Dim Ent As AcadEntity

   ThisDrawing.Utility.GetEntity Ent, Point, "Chon Block:"

   If TypeOf Ent Is AcadBlockReference Then
       Point = Ent.InsertionPoint
       MsgBox "Insertion Point : " & Chr(10) _
           & " X = " & Point(0) & Chr(10) _
           & " Y = " & Point(1) & Chr(10) _
           & " Z = " & Point(2)
   Else
       MsgBox "Khong phai Block."
   End If

End Sub



Cám ơn bạn nhiều. Tiện thể cho mình hỏi sao đoạn code này của mình lại không ra được kết quả:

 

Sub basepoint()

On Error Resume Next

Dim blockObj As AcadBlock

Dim insertionPnt(0 To 2) As Double

Dim bpoint As Variant

 

Set blockObj = ThisDrawing.Blocks.Item("AAA")

bpoint = blockObj.InsertionPoint

insertionPnt(0) = bpoint(0)

insertionPnt(1) = bpoint(1)

insertionPnt(2) = bpoint(2)

 

MsgBox "Block: " & blockObj.Name & " Basepoint:" & vbCrLf & insertionPnt(0) & ", " & insertionPnt(1) & ", " & insertionPnt(2)

 

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
Cách tìm basepoint của 1 block :

Sub BlockInsertPoint()
   On Error Resume Next

   Dim Point As Variant
   Dim Ent As AcadEntity

   ThisDrawing.Utility.GetEntity Ent, Point, "Chon Block:"

   If TypeOf Ent Is AcadBlockReference Then
       Point = Ent.InsertionPoint
       MsgBox "Insertion Point : " & Chr(10) _
           & " X = " & Point(0) & Chr(10) _
           & " Y = " & Point(1) & Chr(10) _
           & " Z = " & Point(2)
   Else
       MsgBox "Khong phai Block."
   End If

End Sub



Cám ơn bạn nhiều. Tiện thể cho mình hỏi sao đoạn code này của mình lại không ra được kết quả:

 

Sub basepoint()

On Error Resume Next

Dim blockObj As AcadBlock

Dim insertionPnt(0 To 2) As Double

Dim bpoint As Variant

 

Set blockObj = ThisDrawing.Blocks.Item("AAA")

bpoint = blockObj.InsertionPoint

insertionPnt(0) = bpoint(0)

insertionPnt(1) = bpoint(1)

insertionPnt(2) = bpoint(2)

 

MsgBox "Block: " & blockObj.Name & " Basepoint:" & vbCrLf & insertionPnt(0) & ", " & insertionPnt(1) & ", " & insertionPnt(2)

 

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

Các bác cho em hoi để lấy toạ độ của 1 point object thì làm thế nào. Em mò mẫm mãi không được nên hỏi các Bác....

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ác bác cho em hoi để lấy toạ độ của 1 point object thì làm thế nào. Em mò mẫm mãi không được nên hỏi các Bác....
Sử dụng Sub BlockInsertPoint() ở trên, tại dòng : If TypeOf Ent Is AcadBlockReference Then

Bạn thay AcadBlockReference bằng AcadPoint là đuợc.

 

tưong tự cho Text, MText là AcadText, AcadMText.

  • 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
Sử dụng Sub BlockInsertPoint() ở trên, tại dòng : If TypeOf Ent Is AcadBlockReference Then

Bạn thay AcadBlockReference bằng AcadPoint là đuợc.

 

tưong tự cho Text, MText là AcadText, AcadMText.

Cám ơn bác. Đêm qua nghiên cứu mãi cùng ketxu thì dùng ent.coordinates cũng được Bác ạ. Để em dùng thử theo cách của Bác xem.

  • 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
Cám ơn bác. Đêm qua nghiên cứu mãi cùng ketxu thì dùng ent.coordinates cũng được Bác ạ. Để em dùng thử theo cách của Bác xem.
Sorry! Anh nhầm. :)

(vì thử với Ent.InsertionPoint Cad vẫn cho kết quả (không báo lỗi) nhưng là giá trị của tọa độ điểm pick.)

 

Với AcadPoint chính xác phải là Ent.Coordinates.

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 ta 1 block nguồn trong 1 bản vẽ.Ví dụ: C:\thu vien.dwg

Sau do mình mở bản vẽ khác ra mà muốn lấy block XX của bản vẽ thư viện bằng VBA thì làm thế 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

Các bạn cho hỏi tại sao?

Lấy tọa độ Block bằng thuộc tính: InsertionPoint (Dùng VBA)

Cho ra tọa độ khác với tọa độ Pick trên bản vẽ

Cám ơ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

Các bạn cho hỏi tại sao?

Lấy tọa độ Block bằng thuộc tính: InsertionPoint (Dùng VBA)

Cho ra tọa độ khác với tọa độ Pick trên bản vẽ

Cám ơn!

Vì hệ tọa độ hiện hành không phải là WCS.

 

InsertionPoint trả về giá trị theo hệ tọa độ WCS.

 

 

Command: ucs

Current ucs name: *NO NAME*

Specify origin of UCS or [Face/NAmed/OBject/Previous/View/World/X/Y/Z/ZAxis] <World>: w

  • 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ọi người cho tôi hỏi: khi dùng lệnh insert để chèn 1 block thì pick điểm chèn 1 đằng nó lại xuất hiện 1 nẻo...rất xa? làm sao để nó insert đúng vị trí mình chọn vậ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

mọi người cho tôi hỏi: khi dùng lệnh insert để chèn 1 block thì pick điểm chèn 1 đằng nó lại xuất hiện 1 nẻo...rất xa? làm sao để nó insert đúng vị trí mình chọn vậy?

Đấy là do khi tạo block bạn không lấy đúng điểm chuẩn là điểm (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

Đấy là do khi tạo block bạn không lấy đúng điểm chuẩn là điểm (0 0).

lấy đúng điểm chuẩn (0,0) là sao bạn? mình tạo 1 hình vẽ bất kì trên bản vẽ rồi gom lại 1 block....ko lẽ phải đưa block đó về tọa độ (0,0) rồi mới gom lại thành block 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

lấy đúng điểm chuẩn (0,0) là sao bạn? mình tạo 1 hình vẽ bất kì trên bản vẽ rồi gom lại 1 block....ko lẽ phải đưa block đó về tọa độ (0,0) rồi mới gom lại thành block hả bạn?

Bạn xem lại dialog của lệnh tạo block, trong đó có chọn điểm chuẩ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

Vâng, hình đó. Khi tạo block nếu bạn "Pick point" vào điểm nào trên bản vẽ thì điểm đó là điểm chuẩn. Ví dụ điểm A(xa,yb).

Đến khi insert, giả dụ bạn chọn điểm chèn là B(xb,yb), thì điểm khi đó điểm A sẽ ở vị trí điểm B. Thế 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

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  

×