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  
nvson

Hỏi cách lấy tọa độ của đối tượng POLYLINE?

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

nvson    4

Nhờ các bác hoàn thiện cho đoạn code sau để lấy được tọa độ của từng đối tượng POLYLINE

<CommandMethod("Print_Frame")> _

Public Sub P_Frame()

Dim pointVertex

Dim pt1 As Point2d

Dim pt2 As Point2d

Dim objPL 'As AcadPolyline

'' Get the current document editor

Dim acDocEd As Editor = Application.DocumentManager.MdiActiveDocument.Editor

'' Create a TypedValue array to define the filter criteria

Dim acTypValAr(0) As TypedValue

acTypValAr.SetValue(New TypedValue(DxfCode.Start, "LWPOLYLINE"), 0)

'' Assign the filter criteria to a SelectionFilter object

Dim acSelFtr As SelectionFilter = New SelectionFilter(acTypValAr)

'' Request for objects to be selected in the drawing area

Dim acSSPrompt As PromptSelectionResult

acSSPrompt = acDocEd.GetSelection(acSelFtr)

Dim acSSet As SelectionSet

'' If the prompt status is OK, objects were selected

If acSSPrompt.Status = PromptStatus.OK Then

acSSet = acSSPrompt.Value

For Each objPL In acSSet

''================

''Nh cc bc ly gip ta nh 1 v nh 2 ca tng i tng POLYLINE

''bin ta l pt1 v pt2

''================

Next objPL

Else

Application.ShowAlertDialog("Number of objects selected: 0")

End If

End Sub

 

Nếu bác nào có code khác thì cho em xin.

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
gia_bach    1.442

Nhờ các bác hoàn thiện cho đoạn code sau để lấy được tọa độ của từng đối tượng POLYLINE

 

Nếu bác nào có code khác thì cho em xin.

Thanks

Tham khảo code lấy thông tin LWPolyline :

<CommandMethod("PlineInfo")> Public Sub PlineInfo()

Dim adoc As Document = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument

Dim db As Database = adoc.Database

Dim ed As Editor = adoc.Editor

Using tr As Transaction = db.TransactionManager.StartTransaction

Try

Dim preOp As PromptEntityOptions = New PromptEntityOptions(vbCrLf & "Chọn LWPolyline : ")

preOp.AllowNone = False

preOp.SetRejectMessage(vbCrLf & "Không phải LWPolyline!")

preOp.AddAllowedClass(GetType(Polyline), False)

 

Dim res As PromptEntityResult = ed.GetEntity(preOp)

If res.Status <> PromptStatus.OK Then

Return

End If

 

Dim plObj As Polyline = tr.GetObject(res.ObjectId, OpenMode.ForRead)

ed.WriteMessage(vbCrLf + "Thông tin Pline : ")

For i As Integer = 1 To plObj.NumberOfVertices

ed.WriteMessage(vbCrLf + " - Tọa độ vertex " + i.ToString() + " = " + plObj.GetPoint3dAt(i - 1).ToString())

Next i

ed.WriteMessage(vbCrLf + " + Chiều dài Pline : " + plObj.Length.ToString())

ed.WriteMessage(vbCrLf + " + Diện tích Pline : " + plObj.Area.ToString())

tr.Commit()

Catch ex As Autodesk.AutoCAD.Runtime.Exception

ed.WriteMessage(ex.StackTrace)

Finally

tr.Dispose()

End Try

End Using

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
nvson    4

Cảm ơn bác Gia_bach

Phiền bác bổ sung thêm: toimuoosn chọn nhiều PLine, sau đó duyệt từng Pline trong tập hợp chọn đó rồi lấy tọa độ của các Pline.

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

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  

×