Статьи > Опубликованные статьи

Создаем блок из набора примитивов

(1/2) > >>

Александр Ривилис:
Создаем блок из набора примитивов

D_TRex:
Здравствуйте отличный код для создания блоков и работает быстро. Подскажите пожалуйста а я выбранные (при создании блока) примитивы как то могу перебрать. Это надо потому что базовая точка при создании блока это 0,0 но это не всегда близко к примитивам, поэтому хотелось бы переместить их допустим к началу координат и уже после отправить в блок.

Александр Ривилис:

--- Цитата: D_TRex от 27-12-2022, 06:09:15 ---Подскажите пожалуйста а я выбранные (при создании блока) примитивы как то могу перебрать.
--- Конец цитаты ---
Что такое "перебрать"? Ты можешь пройтись по всем примитивам после DeepCloneObjects в mapping и перенести их туда, куда тебе нужно.

D_TRex:
Перебрать это значит... Сейчас опишу что делал, есть определённый алгоритм построения схемы, то есть выбираем элементы, поворачиваем на определённый угол, потом все эти элементы добавляем в блок и уже блок масштабируем и крутим дальше. Я работал средствами VBA то есть выбирал, разворачивал и вот тут проблема, в блок надо было добавлять каждый класс отдельно, с отрезками проблем нет, а вот с полилинией беда, а могут быть и мультивыноски и ещё сложнее, Ваш код отлично собирает блок, но вот я не смог повернуть примитивы до создания блока, а так же их бы перенести предварительно, потому что не факт что объекты близки к нулевой координате чертежа, позже попробую то что Вы предложили, спасибо.

Владимир Шу:
Off-Topic: показать
--- Цитата: D_TRex от 08-01-2023, 12:32:33 --- но вот я не смог повернуть примитивы до создания блока, а так же их бы перенести предварительно, потому что не факт что объекты близки к нулевой координате чертежа
--- Конец цитаты ---
У класса Entity и его наследников, есть метод TransformBy(), с помощью этого метода можно и повернуть и перенести и от масштабировать.
Как пример:

--- Код - C# [Выбрать] ---ent.TransformBy(Matrix3d.Scaling(5, center)); // увеличил в 5 раз относительно точки centerent.TransformBy(Matrix3d.Displacement(center.GetVectorTo(Point3d.Origin))); //переместил объект

PS
Наверное все таки вопросы не по статье, стоит обсуждать в профильном разделе форума

Навигация

[0] Главная страница сообщений

[#] Следующая страница

Перейти к полной версии