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  
BKXD98

Cách lấy giá trị cao độ trong block được tạo bởi Land Desktop

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

BKXD98    0

Tôi có file bản vẽ được tạo bởi Acad Land Destop, tôi cần lấy các giá trị cao độ của block cao độ (xem trong bản vẽ đính kèm), các block này chứa 4 ATTRIBUTE, trong đó có 2 ATTRIBUTE là phần nguyên và phần lẻ của giá trị cao độ (nếu xem trong bản vẽ đính kèm thì giá trị cao độ là số lẻ nằm ở giữa).

Các truy cập vào cơ sở dữ liệu của kiểu block này thì tôi chưa biết, mong được các bác hướng dẫn.

Xin cảm ơn.

 

File dwg

  • 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
tucdrom    642
Tôi có file bản vẽ được tạo bởi Acad Land Destop, tôi cần lấy các giá trị cao độ của block cao độ (xem trong bản vẽ đính kèm), các block này chứa 4 ATTRIBUTE, trong đó có 2 ATTRIBUTE là phần nguyên và phần lẻ của giá trị cao độ (nếu xem trong bản vẽ đính kèm thì giá trị cao độ là số lẻ nằm ở giữa).

Các truy cập vào cơ sở dữ liệu của kiểu block này thì tôi chưa biết, mong được các bác hướng dẫn.

Xin cảm ơn.

File dwg

Ko hiểu ý bạn cho lắm.Bạn lấy cao độ làm j vậy?Cao độ nhìn thấy rồi còn j(theo như bạn nói:cao độ là số lẻ nằm giữa)

Cách truy cập vào cơ sở dữ liệu của Block dùng lệnh:Be(Block edit) xem sao?Block cần truy cập trong bản vẽ của bạn có tên là:Elev_Point_BLK2

Hoặc eidt lại Block thử dùng lệnh ed(edit) 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
BKXD98    0
Ko hiểu ý bạn cho lắm.Bạn lấy cao độ làm j vậy?Cao độ nhìn thấy rồi còn j(theo như bạn nói:cao độ là số lẻ nằm giữa)

Cách truy cập vào cơ sở dữ liệu của Block dùng lệnh:Be(Block edit) xem sao?Block cần truy cập trong bản vẽ của bạn có tên là:Elev_Point_BLK2

Hoặc eidt lại Block thử dùng lệnh ed(edit) xem sao?

Box này là VBA mà, ý tôi muốn hỏi là đoạn code VBA để lấy giá trị cao độ này.

 

Do 1 số đơn vị khảo sát tự chế thêm 1 số điểm khảo sát bằng cách chép các block cao độ có sẵn rồi tự sửa lại giá trị cao độ nhưng không để ý đến tọa độ z của block cao độ, nên khi muốn xây dựng lại lưới DTM trên land desktop thì không chính xác.

 

Tôi muốn viết 1 đoạn code để xuất tọa độ các block cao độ (với tọa độ x,y là tọa x,y của block, tọa độ z là giá trị cao độ của block) sang file txt, để từ file txt này xây dựng lại lưới DTM bằng land desktop hay civil 3d.

Tôi chỉ không biết đoạn code truy cập vào csdl của block để lấy giá trị cao độ của 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
ndtnv    397
Tôi có file bản vẽ được tạo bởi Acad Land Destop, tôi cần lấy các giá trị cao độ của block cao độ (xem trong bản vẽ đính kèm), các block này chứa 4 ATTRIBUTE, trong đó có 2 ATTRIBUTE là phần nguyên và phần lẻ của giá trị cao độ (nếu xem trong bản vẽ đính kèm thì giá trị cao độ là số lẻ nằm ở giữa).

Các truy cập vào cơ sở dữ liệu của kiểu block này thì tôi chưa biết, mong được các bác hướng dẫn.

Xin cảm ơn.

 

File dwg

Đây là code lấy cao độ

Function PointHeight(Obj As AcadBlockReference) As Double
 Dim Att

 Att = Obj.GetAttributes
 PointHeight = CDbl(Att(1).TextString & "." & Att(2).TextString)
End Function

Không hiểu vì sao lại xuất hiện 2 dấu ";", bạn copy về rồi xóa hoặc bấm vào reply rồi copy text trong đó

VD về cách dùng

Public Sub Test()
 Dim i&, n&, s$, Obj As Object
 n = 0
 For i = 0 To ModelSpace.Count - 1
Set Obj = ModelSpace.Item(i)
 If TypeName(Obj) = "IAcadBlockReference" Then
	If Obj.Name = "Elev_Point_Blk2" Then
	   n = n + 1
	   s = s & PointHeight(Obj) & vbLf
	End If
 End If
 Next i
 MsgBox "Co " & n & " block, Cao do la:" & vbLf & s
End Sub

  • Vote tăng 2

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
lamtecco2    856

Chưa cần thiết phải dùng VBA khi Acad đã có lệnh EATTEXT hay ATTEXT xuất các giá trị thuộc tính của block ra tệp số liệu .

  • Vote tăng 2

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  

×