ADN Club > VBA
Перенос системы координат
Marik:
Подскажите, пожалуйста. Как перенести ПСК по X на заданное значение? Не понятно про векторы по примеру в manual. И почему отрезок в примере вычерчивается от старой (Мировой) системы координат?
--- Код - Visual Basic [Выбрать] ---Sub Example_UserCoordinateSystems() ' Этот пример находит текущую коллекцию UserCoordinateSystems ' и добавляет новый UCS к этой коллекции. Dim UCSColl As AcadUCSs Set UCSColl = ThisDrawing.UserCoordinateSystems ' Создайте UCS по имени "TEST" в текущем рисунке Dim NewUCS As AcadUCS Dim origin(0 To 2) As Double Dim xAxisPnt(0 To 2) As Double Dim yAxisPnt(0 To 2) As Double Dim startPoint(0 To 2) As Double Dim endPoint(0 To 2) As Double ' Определите UCS origin(0) = 4#: origin(1) = 5#: origin(2) = 3# xAxisPnt(0) = 5#: xAxisPnt(1) = 5#: xAxisPnt(2) = 3# yAxisPnt(0) = 4#: yAxisPnt(1) = 6#: yAxisPnt(2) = 3# ' Добавьте UCS к коллекции UserCoordinatesSystems Set NewUCS = UCSColl.Add(origin, xAxisPnt, yAxisPnt, "TEST") ThisDrawing.ActiveUCS = NewUCS startPoint(0) = 0 ' Начальная точка X (относительно новой системы) startPoint(1) = 0 ' Начальная точка Y (относительно новой системы) startPoint(2) = 0 ' Начальная точка Z endPoint(0) = 10 ' Конечная точка X (относительно новой системы) endPoint(1) = 10 ' Конечная точка Y (относительно новой системы) endPoint(2) = 0 ' Конечная точка Z Set line = ThisDrawing.ModelSpace.AddLine(startPoint, endPoint) End Sub
Алексей Кулик:
По-моему, именно отрезку глубоко параллельно (при программном создании) на системы координат.
Александр Ривилис:
--- Цитата: Marik от 03-12-2024, 03:39:36 ---. И почему отрезок в примере вычерчивается от старой (Мировой) системы координат?
--- Конец цитаты ---
Потому что этот метод (как написано в документации) работает именно в МСК. И ему глубоко наплевать на текущую систему координат.
Marik:
Ок, подскажите какие нужно использовать методы для вычерчивания отрезка и прочих примитивов в новой системе координат или нет такого функционала? Смысл такой. Есть код, который вычерчивает чертеж относительно 0,0,0 МСК. Чтобы вычертить его относительно какой-то другой точки не хочу изменять код, внося в код поправки на начальную координату, так как код сложный и долго отлаживать его придется. Есть мысль просто перенести СК в эту точку и запустить код. Или не в ту сторону думаю? Как вариант можно добавить в коллекцию все что начертит код и чехом перенести туда куда нужно, но боюсь, что не все так просто. Ну, или создать блок, добавить элементы коллекции в блок. Вставить блок в ту точку в которую нужно, взорвать блок, удалить блок. Все как-то сложно. Куда копать, подскажите, пожалуйста.
Александр Ривилис:
--- Цитата: Marik от 19-12-2024, 00:10:12 --- Или не в ту сторону думаю?
--- Конец цитаты ---
Не в ту. Если не менять весь код, то тогда следует использовать метод TransformBy для переноса:
https://help.autodesk.com/view/OARX/2025/ENU/?guid=GUID-2FAE4C13-06F2-47A2-B213-8A9A6958B799
Навигация
Перейти к полной версии