Сообщество программистов Autodesk в СНГ

ADN Club => VBA => Тема начата: Marik от 03-12-2024, 03:39:36

Название: Перенос системы координат
Отправлено: Marik от 03-12-2024, 03:39:36
        Подскажите, пожалуйста. Как перенести ПСК по X на заданное значение? Не понятно про векторы по примеру в manual. И почему отрезок в примере вычерчивается от старой (Мировой) системы координат?

Код - Visual Basic [Выбрать]
  1. Sub Example_UserCoordinateSystems()
  2.     ' Этот пример находит текущую коллекцию UserCoordinateSystems
  3.    ' и добавляет новый UCS к этой коллекции.
  4.    
  5.     Dim UCSColl As AcadUCSs
  6.     Set UCSColl = ThisDrawing.UserCoordinateSystems
  7.    
  8.     ' Создайте UCS по имени "TEST" в текущем рисунке
  9.    Dim NewUCS As AcadUCS
  10.     Dim origin(0 To 2) As Double
  11.     Dim xAxisPnt(0 To 2) As Double
  12.     Dim yAxisPnt(0 To 2) As Double
  13.    
  14.     Dim startPoint(0 To 2) As Double
  15.     Dim endPoint(0 To 2) As Double
  16.    
  17.     ' Определите UCS
  18.    origin(0) = 4#: origin(1) = 5#: origin(2) = 3#
  19.     xAxisPnt(0) = 5#: xAxisPnt(1) = 5#: xAxisPnt(2) = 3#
  20.     yAxisPnt(0) = 4#: yAxisPnt(1) = 6#: yAxisPnt(2) = 3#
  21.    
  22.     ' Добавьте UCS к коллекции UserCoordinatesSystems
  23.    Set NewUCS = UCSColl.Add(origin, xAxisPnt, yAxisPnt, "TEST")
  24.    
  25.     ThisDrawing.ActiveUCS = NewUCS
  26.    
  27.     startPoint(0) = 0 ' Начальная точка X (относительно новой системы)
  28.    startPoint(1) = 0 ' Начальная точка Y (относительно новой системы)
  29.    startPoint(2) = 0 ' Начальная точка Z
  30.    endPoint(0) = 10 ' Конечная точка X (относительно новой системы)
  31.    endPoint(1) = 10 ' Конечная точка Y (относительно новой системы)
  32.    endPoint(2) = 0 ' Конечная точка Z
  33.    
  34.     Set line = ThisDrawing.ModelSpace.AddLine(startPoint, endPoint)
  35.    
  36.    
  37. End Sub
Название: Re: Перенос системы координат
Отправлено: Алексей Кулик от 16-12-2024, 21:23:04
По-моему, именно отрезку глубоко параллельно (при программном создании) на системы координат.
Название: Re: Перенос системы координат
Отправлено: Александр Ривилис от 16-12-2024, 21:33:07
. И почему отрезок в примере вычерчивается от старой (Мировой) системы координат?
Потому что этот метод (как написано в документации) работает именно в МСК. И ему глубоко наплевать на текущую систему координат.
Название: Re: Перенос системы координат
Отправлено: Marik от 19-12-2024, 00:10:12
Ок, подскажите какие нужно использовать методы для вычерчивания отрезка и прочих примитивов в новой системе координат или нет такого функционала? Смысл такой. Есть код, который вычерчивает чертеж относительно 0,0,0 МСК. Чтобы вычертить его относительно какой-то другой точки не хочу изменять код, внося в код поправки на начальную координату, так как код сложный и долго отлаживать его придется. Есть мысль просто перенести СК в эту точку и запустить код. Или не в ту сторону думаю? Как вариант можно добавить в коллекцию все что начертит код и чехом перенести туда куда нужно, но боюсь, что не все так просто. Ну, или создать блок, добавить элементы коллекции в блок. Вставить блок в ту точку в которую нужно, взорвать блок, удалить блок. Все как-то сложно. Куда копать, подскажите, пожалуйста.
Название: Re: Перенос системы координат
Отправлено: Александр Ривилис от 19-12-2024, 00:16:39
Или не в ту сторону думаю?
Не в ту. Если не менять весь код, то тогда следует использовать метод TransformBy для переноса:
https://help.autodesk.com/view/OARX/2025/ENU/?guid=GUID-2FAE4C13-06F2-47A2-B213-8A9A6958B799
Название: Re: Перенос системы координат
Отправлено: Marik от 19-12-2024, 22:32:47
Спасибо!