franciscocsilva 发表于 2020-6-8 07:35:36

如何选择多段线并获取当前坐标

你好
,谁能帮我?
我需要选择一条折线并读取当前坐标系中的起点和终点。
我有这个:
Dim id1 As ObjectId = SelectSpecificObjectType(vbLf & "Select polyline: ", GetType(Polyline))
      If id1.IsNull Then
            Return
      End If

Private Shared Function SelectSpecificObjectType(ByVal prompt As String, ByVal objectClass As System.Type) As ObjectId
      Dim ed As Editor = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor
      Using tr As Transaction = ed.Document.Database.TransactionManager.StartTransaction()
            While True
                Dim res As PromptEntityResult = ed.GetEntity(prompt)
                If res.StatusPromptStatus.OK Then
                  Return ObjectId.Null
                End If
                Dim ob As DBObject = tr.GetObject(res.ObjectId, OpenMode.ForRead)
                If objectClass.IsAssignableFrom(ob.()) Then
                  Return res.ObjectId
                End If
                ed.WriteMessage(vbLf & "Invalid selection, {0} entity expected", RXClass.GetClass(objectClass).DxfName)
            End While
      End Using

Dim lineA As Polyline = CType(acTrans.GetObject(id2, OpenMode.ForRead), Polyline)
IntersectionPointA = lineIntersectors(AuxMuroA.StartPoint, AuxMuroA.EndPoint, lineA.StartPoint, lineA.EndPoint)

我需要一个当前用户坐标系的行A。
谢谢
**** Hidden Message *****

n.yuan 发表于 2020-6-9 10:44:17

实体在数据库中的坐标始终是世界坐标。如果需要当前UCS中的坐标,只需使用编辑器变换坐标点即可。CurrentUserSystemCoordinate:,类似于:
var ed=Application.DocumentManager.MdiDocument。编辑
var endPt=LineA.EndPoint.TransformBy(ed.CurrentUserCoorinateSystem)
类似地,如果您在当前UCS中拾取的点与世界不同,则在使用该点对实体进行计算之前,您可以通过使用Editor.CurrentUserCoordinationSystem.Inverse()将拾取的点转换为世界坐标系。

franciscocsilva 发表于 2020-7-20 07:19:14


多谢各位

emrahctrk 发表于 2020-10-15 08:08:15

是否有此解决方案的 C# 代码?

Atook 发表于 2020-10-15 13:12:14


https://codeconverter.icsharpcode.net/
页: [1]
查看完整版本: 如何选择多段线并获取当前坐标