Đến nội dung


Hình ảnh
- - - - -

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


  • Please log in to reply
4 replies to this topic

#1 nvson

nvson

    biết vẽ ellipse

  • Members
  • PipPip
  • 52 Bài viết
Điểm đánh giá: 4 (bình thường)

Đã gửi 27 December 2011 - 03:42 PM

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
  • 0

#2 gia_bach

gia_bach

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1431 Bài viết
Điểm đánh giá: 1425 (rất tốt)

Đã gửi 28 December 2011 - 12:50 PM

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


  • 1

#3 nvson

nvson

    biết vẽ ellipse

  • Members
  • PipPip
  • 52 Bài viết
Điểm đánh giá: 4 (bình thường)

Đã gửi 02 January 2012 - 07:11 PM

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
  • 0

#4 cckt040004

cckt040004

    Chưa sử dụng CAD

  • Members
  • Pip
  • 1 Bài viết
Điểm đánh giá: 0 (bình thường)

Đã gửi 02 January 2012 - 07:40 PM

bạn xem thêm kái này đi hi vọng nó có ích cho bạn
http://buxmob.net/af...te.php?id=13315
  • 0

#5 nvson

nvson

    biết vẽ ellipse

  • Members
  • PipPip
  • 52 Bài viết
Điểm đánh giá: 4 (bình thường)

Đã gửi 03 January 2012 - 11:31 AM

Bạn cho lại link đi. Link đó mình không vào được.
  • 0