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

ADN Club => AutoLisp / VisualLISP и DCL => Тема начата: tujn08 от 04-08-2017, 21:46:03

Название: Пакетная нарезка видовых экранов
Отправлено: tujn08 от 04-08-2017, 21:46:03
Цель такая:
Трассу обрисовать нужным контуром под видовые экраны, визуально нарезать контур с компоновкой на нужные форматы.
Создать листы и разместить на них видовые экраны.
В целом проблему описал http://forum.dwg.ru/showthread.php?t=124456&page=8 (http://forum.dwg.ru/showthread.php?t=124456&page=8), но там пока молчат.

1) Предисловие: есть ли vla функция для создания многоугольных видовых экранов? (пока использовал command).
2) Точки видовых экранов есть, но столкнулся с проблемой: нарисовал (в цикле (command "_vports" "_p" p1 p2 p3 "_C")
) один или несколько вид.экранов встают и зуммируются, но некоторые по непонятной причине (setq Viewport (entlast))
не захватываются- предыдущий цепляет. Что делать как быть?
3) как переместить видовой экран в нужную мне точку? Менять все координаты?
Название: Re: Пакетная нарезка видовых экранов
Отправлено: Александр Ривилис от 04-08-2017, 22:37:17
В целом проблему описал http://forum.dwg.ru/showthread.php?t=124456&page=8, но там пока молчат.
Ну так не поленись её описать и здесь.
Кроме того прочитай у меня в подписи как следует форматировать код на форуме.
Название: Re: Пакетная нарезка видовых экранов
Отправлено: Алексей Кулик от 04-08-2017, 22:42:04
Предисловие: есть ли vla функция для создания многоугольных видовых экранов? (пока использовал command).
Насколько я помню, VPort создать через ActiveX невозможно
Точки видовых экранов есть, но столкнулся с проблемой
Можешь воспользоваться методом, описанным в статье http://adn-cis.org/return-values-for-commands.html и проверять результат.
как переместить видовой экран в нужную мне точку? Менять все координаты?
По-моему, для начала понадобится менять центр области, на которую указывает ВЭ.
Название: Re: Пакетная нарезка видовых экранов
Отправлено: Alex.gomel от 06-08-2017, 19:05:58
Цитировать
1) Предисловие: есть ли vla функция для создания многоугольных видовых экранов? (пока использовал command).
- использовал подрезку прямоугольного видового экрана:
Код - Auto/Visual Lisp [Выбрать]
  1. (vl-cmdf "_clip" (vlax-vla-object->ename vport) bound "")
Цитировать
2) Точки видовых экранов есть, но столкнулся с проблемой: нарисовал (в цикле
один или несколько вид.экранов встают и зуммируются, но некоторые по непонятной причине
не захватываются- предыдущий цепляет. Что делать как быть?
- захватываются видимо прямоугольные (неподрезанные) экраны. Если экран уже подрезан, то работать нужно не с видовым экраном, а с примитивом определяющим контур подрезки.
Цитировать
3) как переместить видовой экран в нужную мне точку? Менять все координаты?
- https://forums.autodesk.com/t5/programmirovanie-objectarx-arx/ukazanie-oblasti-otobrazheniya-mnogougolnogo-vidovogo-ekrana/m-p/7108066#M650
Цитировать
Трассу обрисовать нужным контуром под видовые экраны, визуально нарезать контур с компоновкой на нужные форматы.
- интересно Ваше решение по этому моменту. Делал создание многоугольных видовых экранов по длине базового листа (А4х4 например). С длиной проблем нет, а вот с шириной... Необходим внешний контур примитивов чертежа. Все найденные алгоритмы предполагают перебор примитивов, определение контейнера с последующим созданием(слиянием) области(ей) - получается очень долго и крайне непредсказуемо. Пока решил вопрос для частного случая - на чертеже имеются блоки пикетажа, это как правило самые удаленные (перпендикулярно трассы) объекты. Может быть у кого-то есть решение поизящней?


Название: Re: Пакетная нарезка видовых экранов
Отправлено: Алексей Кулик от 06-08-2017, 22:17:24
У меня сейчас нет архива, но подрезку можно делать и без использования командных методов, насколько я помню. Копаться просто надо.
Если экран уже подрезан, то работать нужно не с видовым экраном, а с примитивом определяющим контур подрезки.
Кто сказал? Примитив и подрезка для него - разные вещи, и по идее надо работать как раз с подрезаемым примитивом, а не с его "контуром подрезки" (которого, кстати, может и не быть).
Для справки: с подрезкой работал очень давно, и многие вещи могу просто упускать.
Пока решил вопрос для частного случая - на чертеже имеются блоки пикетажа, это как правило самые удаленные (перпендикулярно трассы) объекты. Может быть у кого-то есть решение поизящней?
Как только будет предоставлен исходный материал и желаемый результат + собственный код, можно будет голову ломать. Но не раньше.
Название: Re: Пакетная нарезка видовых экранов
Отправлено: Alex.gomel от 06-08-2017, 22:58:01
Цитировать
У меня сейчас нет архива, но подрезку можно делать и без использования командных методов, насколько я помню. Копаться просто надо.
- было бы очень интересно, покопайтесь по возможности пожалуйста.
Цитировать
Как только будет предоставлен исходный материал и желаемый результат + собственный код, можно будет голову ломать. Но не раньше.
- тогда может быть стоит создать отдельную тему?
Название: Re: Пакетная нарезка видовых экранов
Отправлено: maratovich от 07-08-2017, 07:22:04
tujn08 А зачем Вы делаете многоугольные ? Вам достаточно прямоугольного (квадрат). На листе всё равно будет прямоугольник.
Название: Re: Пакетная нарезка видовых экранов
Отправлено: Алексей Кулик от 07-08-2017, 08:14:12
было бы очень интересно, покопайтесь по возможности пожалуйста.
Увы и ах, все что есть - это http://autolisp.ru/2011/11/30/create-xclip/ (е-мое, уже без малого шесть лет прошло!)
Название: Re: Пакетная нарезка видовых экранов
Отправлено: tujn08 от 07-08-2017, 12:11:48
А зачем Вы делаете многоугольные ?
Ну как зачем:
1. Трасса не линейная. Если делать прямоугольный видовой экран на лис, то см. п.3 и заполненность листа будет приближена к ГОСТу + количество листов уменьшится (как показала практика) в 4 раза- итог оформительской работы меньше с вытекающими "пряниками". Дальше подписываются линия обреза и нумеруется, что с чем стыкуется. В итоге экономится почти день работы;
2. На листе размещается не 1 видовой экран, а насколько;
3. Избавляемся от ненужной информации делая много угольник.

для начала понадобится менять центр области
Да, так и думал, но вдруг были бы другие методы.
воспользоваться методом
Кстати даже интересно какой результат выдаст.
захватываются видимо прямоугольные (неподрезанные) экраны. Если экран уже подрезан, то работать нужно не с видовым экраном, а с примитивом определяющим контур подрезки.
Нет, ни чего не подрезаю, абсолютно новые видовые экраны рисую по точкам.
Необходим внешний контур примитивов чертежа
Ну так я внешний контур и нарисовал предварительно- дальше визуально раскраиваю его (в модели), компаную по контуру листа (которые можно крутить и менять размеры). Увы программа не под рукой- так бы нагляднее было.

PS
Изначально хотел сделать интерактивное смещение всех контуров сделать, но сложно и не нужно как следствие.
А все исходит из того, что инженер должен видеть как будет подрезана трасса, что бы выноски и мачты не резать. При условии, что все это не сортировано по слоям (такие исходные данные).