Тоже проблема с видовым экраном, не могу получить координаты содержимого
Dim acCurDb As Database = acDoc.Database
Using acTrans As Transaction = acCurDb.TransactionManager.StartTransaction()
Dim acLayout As Layout = acTrans.GetObject(acLayoutMgr.GetLayoutId(acLayoutMgr.CurrentLayout), OpenMode.ForRead)
If (acLayoutMgr.CurrentLayout <> "Model") Then
' acDoc.SendStringToExecute("_.MSPACE" & vbCrLf, True, False, False) ' пробовал активировать, сейчас деактивировано
Dim wViewports As ObjectIdCollection = acLayout.GetViewports ' этот фрагмент служит для проверки наличия видового экрана и как Вы писали выше их почему то два
If wViewports.Count = 0 Then
acLayout.UpgradeOpen()
acLayout.Initialize()
acLayout.DowngradeOpen()
wViewports = acLayout.GetViewports
End If
Dim wVP As Viewport = acTrans.GetObject(wViewports(1), OpenMode.ForRead) ' ах да тут задействован wViewports(1), а не wViewports(0), потому что этот даёт те же результаты что и если бы я выполнил (_.MSPACE)
rtfTemp.Text = wVP.CenterPoint(0) & " x " & wVP.CenterPoint(1) & vbCrLf & wVP.ViewCenter(0) & " x " & wVP.ViewCenter(1) & vbCrLf & wVP.Height
End If
acTrans.Abort()
End Using
В общем должно быть цент Х (-1314) центр Y (-524) а выдаёт (-372091) и (-311153) пробовал делить, перемножать, вычитать в надежде что есть переводной коэффициент - безуспешно. При этом CenterPoint - это координаты в пространстве листа, а вот это ViewCenter наверное координаты содержимого.
Задачи редактирование содержимого листов, то есть перемещение содержимого для последующего клонирования, в идеале есть ещё вопрос о вращении содержимого, но пока хотя бы ОРТО.
Решил проверить на пустом листе, да проблема в системе координат (как вычислять и изменять не знаю) в общем я работаю одновременно в MEP и Civil и каждый из них видимо по своему интерпретирует координаты. В общем открыл просто "новый документ MEP" и так координаты считались корректно - буду дальше экспериментировать.