|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
28.09.2015, 11:24 | #1 | |
Помогите создать lisp по перемещению множества схем внутрь форматок в пространстве модели
Регистрация: 28.09.2015
Сообщений: 28
|
||
Просмотров: 6847
|
|
||||
Основной вопрос - зачем все профили в одном файле ? Удобнее же один фал - один профиль.
Как вариант если все в кучу в одном файле: 1. Разделить файл на отдельные, так чтобы в одном файле был один профиль. 2. Собрать один файл из этих разделённых, но с шагом большим чем существуют. 3. Вставить рамку и выполнить копирование массивом.
__________________
Вопрос : Где находится Тургай ? Ответ : Между Парагваем и Уругваем..... |
||||
|
||||
КЖ; C# Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,589
|
ИМХО, штатными средствами Автокада это не автоматезируется, с другой стороны поместить каждый рисунок в рамку листа, это максимум 10 секунд времени, соответственно 420*10/60 = 70 минут работы, 14 файлов, это 16 часов рабочего времени.
За 3 дня сделаете точно. Если это разовая задача, то автоматизировать нет смысла, писать программу, которая сама будет анализировать и расставлять по листам по времени никак не меньше (Тем более в файле все взорвано до простейших элементов) |
|||
|
||||
Регистрация: 28.09.2015
Сообщений: 28
|
3 дня я в курсе этого, но таких задач раз в месяц! Так как это не проектные а фактические, тоесть был бы проектным да 1 раз сделал и забыл, но фактически там все время меняеться, грунт не так положили щебень не тот и тд и тп. Я бы честно не обращался бы, но и так загружают каждый день работой, и 3 или 2 дня это слишком много, сами Вы тоже строители от части и прекрассно понимаете.
|
|||
|
||||
Всё можно сделать, ща подумаем...
__________________
Вопрос : Где находится Тургай ? Ответ : Между Парагваем и Уругваем..... |
||||
|
||||
понимаю, не совсем в лоб, но тем не менее....
1. выбираем все рамки, которые вокруг профилей 2. настраиваем принтер на форматку (макрос, мой) 3. заменяем все рамки на рамки форматки (макрос, есть в наборе) 4. переносим обратно на наши профили. этих телодвижений можно было бы избежать, если бы все профили размещались с одинаковым шагом по оси Х 5. печатаем все профили. единственно, надо ещё штамп с рамкой на них напялить. ну тут если это печать на бумагу - сначало напечатать штампы, потом уже печатать на них если надо ПДФ - надо смотреть про основу. т.е. сначало печатать штамп, а потом уже использовать это дело для печати чертежа. штампже всегда одинаковый... единственно. в моей программе не должно быть ничего на слое 0. (от этого так задумалась программа на выборе рамок) в архиве мультик по операциям описаным выше и результат в файле ПДФ ----- добавлено через ~6 мин. ----- в принципе, можно так же сделать наложение рамок и потом использовать любые макросы для печати, которые тут есть. можно автоматом разнести по лейаутам (был вроде лисп). правда создастся многовато этих лейаутов.... или ещё вариант, это посмотреть, откуда идёт экспорт этих профилей и на том этапе настраивать расстояние между профилями. Тогда на них в принципе можно будет нацепить нормальную штамп. сделать его блоком, и так же заменить одно на другое. ----- добавлено через ~2 ч. ----- чет я... думал надо распечатать... а тут надо сделать что бы все в рамки встало. ну тогда, если только расширить пустоты между профилями. изначально при их создании. Последний раз редактировалось ssn, 28.09.2015 в 21:05. |
||||
|
||||
Цитата:
Тут только разбивать через _Wblock в отдельные файлы каждый профиль, а потом складывать их в один файл. Это всё я за 2 секунды делаю, но надо чтобы в шаблоне _Wblock была уже рамка. Надеюсь понятна связь ?
__________________
Вопрос : Где находится Тургай ? Ответ : Между Парагваем и Уругваем..... |
||||
|
||||
а массив не обязательно. так же, заменой примитива на примитив
как я показал. копируем рамку допустим со сдвигом 1000 вверх, заменяем её и возвращаем на эту 1000 назад. и все. главное что бы зазоры позволяли штампам не соприкасаться замена примитива на примитив конечно не штатная команда... но макрос такой есть. |
||||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,848
|
maratovich, кто-то мешает потом лист создавать с форматкой?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,848
|
Хоть убей не пойму, кто мешает из рамки сделать блок и блок уже таскать и масштабировать, раз уж так по-дурному выданы данные. Я полагаю, что данные были сформированы программно - просто программка не отлажена на выдачу нормального результата.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
КЖ; C# Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,589
|
Оказалось там все очень просто... Правда я в Лисп не силен, так что помочь автору наверное не смогу, но для собственного развлечения на C# написал.
https://youtu.be/yHMwENX_MoM |
|||
|
||||
Регистрация: 28.09.2015
Сообщений: 28
|
Цитата:
Ого это очень классно, скажите как мне это сделать? |
|||
|
||||
Регистрация: 28.09.2015
Сообщений: 28
|
Автокад 2016 / 2015
Они радком стоят, но размер и масштаб нельзя менять! По другому не знаю как можно вставить, можно ручками, за 3 дня. Я же говорил что вчера в одном файле нашел 499, рамок и 499 чертежей. Теперь все это надо вставить в рамки, если размер чертежа больше чем рамка, придеться опять измерять на дороге, то есть где сделали ошибку но не проектировщики. Но большенство чертежей правильны, и их нужно в рамки вставить. |
|||
|
||||
КЖ; C# Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,589
|
я в лисп совершенно ничего не понимаю, потому
Цитата:
на C# я скопипастил и скомбинировал несколько примеров из справки. Выглядит это примерно так: Выбрать рамки, у автора это полилиния длинной в диапазоне 1420-1430 Выбрать профиль, тут просто полилинии, текст попадающий в секущую рамку отсеиваю Сортирую обе выборки по Х для каждой пары профиль-формат считаю вектор смещения Выбираю объекты внутри рамки профиля и смещаю по вычисленному вектору и так для каждой пары. Просто как молоток Я конструктором работаю, моя работа - думать и конструировать. |
|||
|
||||
КЖ; C# Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,589
|
Честно говоря это не самая хорошая идея. Между программой написанной на коленке для проверки идеи и программой которую можно дать пользователям - большая пропасть.
Доводить эту программу до годного к использованию уровня мне лень, а в том виде в котором она есть сейчас, малейшая неточность и фатал ерор. Это похоже на подростка с дробовиком, чуть что и отстрелил себе ногу... Библиотека под 2016 автокад во вложении, используйте на свой страх и риск (AS IS), никакой ответственности с моей стороны. команда: Sorted Сначала выбрать рамки форматов, затем рамки вокруг профиля, после выбора отзумить, что бы был виден весь файл (Да, для проверки идеи использовал выбор рамкой, со всеми его ограничениями). |
|||
|
||||
Регистрация: 09.10.2006
Санкт-Петербург
Сообщений: 99
|
Подумал я, что лисп для этого случая простенький, учитывая, что и профиля, и форматки окружены рамками в разных слоях. Ну, написал. В чертеже, где 2 - 3 десятка элементов, работает отлично. Но сделал я чертеж где-то с 600 элементами, и стала получаться ерунда: похоже, что при выполнении foreach при каждом переносе профиля в наборе выбора остается часть объектов прежнего набора и, соответственно, они перемещаются еще раз. Вот такая чертовщина.
Код:
|
|||
|
||||
идущий по граблям Регистрация: 26.05.2005
Сообщений: 5,095
|
сильно в код пока не вникал и не тестировал, но заметил, что используется режим выбора "_W" (обычная рамка). Если координаты углов рамки не попадают в видимую на экране область, его результаты бывают непредсказуемые. Поэтому предлагаю в начале программы добавить что-то типа
Код:
Последний раз редактировалось kp+, 30.09.2015 в 15:30. |
|||
|
||||
Регистрация: 28.09.2015
Сообщений: 28
|
Есть результат, но все равно делаю в ручную по 5 максимум 10, так как там 6 или 7 чертеж падает вниз на рамку и приходитья поднимать а когда по 5 то все нормально.
----- добавлено через ~4 мин. ----- Что посоветуете люди добрые? Продолжать по 5 - 10 штук? Или можем что нибудь другое попробовать? |
|||
|
||||
КЖ; C# Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,589
|
Вот ничего не понял, можно выложить файл с тем местом, где это случилось?
В ролике явно больше 10 форматок было и ошибок обработки не было. Такое поведение может быть если Вы неправильную рамку форматки выбрали. ЗЫ. А вообще если не жалко, в личном сообщении скиньте файл с 400 листами... |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,848
|
При условии расположения и форматок, и объектов только в горизонтальном положении. Тестировал только на файле из шапки. Честно говоря, результатом не сильно доволен, но допиливать некогда:
Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Ну не совсем чтобы заинтересовался, но своё решение уже есть.
Тут самое интересное будет, когда автор скажет, что у него профиля и рамки не в одну линию. А ещё хлеще если они в перемешку или есть только профиля... Если автора заинтересует у меня реализовано как я писал и прежде: 1. Разделить файл на отдельные, так чтобы в одном файле был один профиль. 2. Собрать один файл из этих разделённых, но с одинаковым шагом, большим чем существуют. 3. Вставить рамку и выполнить копирование массивом. 4. Переномеровать номера листов. Все это не за один проход и не быстро, но практически автоматом, и переваривает "интресное" описанное выше. Акбар Пишите в скайп, покажу.
__________________
Вопрос : Где находится Тургай ? Ответ : Между Парагваем и Уругваем..... |
||||
|
||||
КЖ; C# Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,589
|
Акбар Доолосбеков, и как результат? Поведение описанное ранее появляется?
|
|||
|
||||
Регистрация: 09.10.2006
Санкт-Петербург
Сообщений: 99
|
Кулик Алексей aka kpblc, попытался я протестировать твой код на файле с ~ 600 профилями. Есть в нем существенный недостаток - время обработки возрастает в геометрической прогрессии в зависимости от количества объектов: на каждый перенос профиля у тебя сканируется весь список объектов. Поэтому, для файла более чем со 100 профилями программа становится практически неприменима. Такой вот не очевидный момент.
|
|||
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Пакетная печать множества рамок (форматов) из пространства модели. | maratovich | AutoCAD | 410 | 23.08.2023 16:17 |