|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
23.12.2013, 16:49 | #1 | |
C# Разбивка чертежа на "Модель - Лист".
VB, C++, C#, Java
Санкт-Петербург
Регистрация: 19.04.2013
Сообщений: 48
|
||
Просмотров: 7590
|
|
||||
Это как? И где тогда чертеж если его бить и на Модель и на Лист ?
__________________
Вопрос : Где находится Тургай ? Ответ : Между Парагваем и Уругваем..... |
||||
|
||||
Алгоритм следующий:
Основной чертёж с несколькими листами дублируется в некотором каталоге (temp) в количестве экземпляров = количеству листов(layout). Каждый экземпляр именуется в соответствии с именем layout'a который в нём останется, из экземпляров удаляются "лишние" листы, которые не соответствуют имени файла-экземпляра, т.о. должны остаться файлы, которые содержат только модель и 1 лист. Имя файла = имени единственного листа. После всех манипуляций экземпляры из temp сохраняются в каталоге "D:\Layouts" и удаляются из temp. Основной чертёж открыт в AutoCAD, его разбивка происходит без открывания экземпляров в AutoCAD т.е. "фоном". Вот читается база экземпляра чертежа... Код:
Последний раз редактировалось Sfinks7s1, 23.12.2013 в 17:50. |
||||
|
||||
Я выполняю копирование объектов листа по этому примеру: http://adndevblog.typepad.com/autoca...w-drawing.html
Переписать на C# несложно. У меня работает нормально.
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic) |
||||
|
||||
Цитата:
Но всё же, например данный код работает нормально, но здесь для обработки каждый экземпляр открывается в AutoCAD... При этом работает на файлах с 30 - 40 листами и всё бы ничего, но это время и ресурсы компа. Т.е. на слабом компе такой скрипт теоретически может привести к зависанию, по этому и было принято решение переписать так, чтобы обработка происходила в "фоновом" режиме. Код:
|
||||
|
||||
А... Семен-Семеныч... Я понял идею: делаем копию файла, из этой копии удаляем лишние листы, а потом эту копию сохраняем отдельным чертежом. Да, копирование листа тут не нужно.
P.S. Хотя, можно и с копированием листа. 100% быстрее будет.
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic) |
||||
|
||||
Остался единственный вопрос - зачем это всё? Чтобы машина меньше грузилась при работе ?
__________________
Вопрос : Где находится Тургай ? Ответ : Между Парагваем и Уругваем..... |
||||
|
||||
Переписал Ваш пример на C#
Код:
Работает нормально. Свой вопрос решил, реализовал так: Код:
Код:
Код отрабатывает даже на больших чертежах, правда всё равно ждать приходится. Видимо придётся так оставить или уже разбивать на потоки или через BackgroundWorkers... ----- добавлено через ~8 мин. ----- Разбивка в целом нужна более для архивного хранения, т.к. с точки зрения архива более корректно не только основной файл с кучей листов хранить, но и отдельно каждый лист. Да и заказчику бывает требуется отправлять только определённые листы. В любом случае данный функционал сокращает время на "разбивку". |
||||
|
||||
Я думаю, что если в переписанный на C# код по копированию листа в новый чертеж добавить копирование всех объектов модели, то значительно быстрее получится, чем создавать копию чертежа а потом ее модифицировать. Друге дело, что создаваться новый чертеж будет на основе шаблона и этот шаблон должен соответствовать чертежу-донору.
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic) |
||||
|
||||
Цитата:
Шаблон... У нас например активно используется функционал AutoCAD Architecture, множество настраиваемых стилей и блоков, многие сотрудники разработанный шаблон ещё и "под себя" подгоняют. По этому копирование базового чертежа, а затем удаление "лишних" листов с каждого экземпляра в моём случае более универсально. Для удобства хранения и передачи заказчику (а-то столько порой мусора в модели....), а также сокращения объёма файлов думаю дальше опционально добавить возможность удаления графики, которая не входит во вьюпорты на актуальном листе.. Дальше думаю надо в сторону многопоточности смотреть или выносить выполнение "тяжёлого" функционала на сервер... Последний раз редактировалось Sfinks7s1, 23.12.2013 в 23:02. |
||||
|
||||
Цитата:
https://sites.google.com/site/bushma...nost-i-autocad но есть ещё возможности Async\Await и BackgroundWorker, которые стоит хотя бы попробовать. В общем попробую, вдруг чего и получится. О результатах отпишусь. |
||||
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,840
|
Цитата:
Да хоть вверх ногами - если система не расчитанна на одновременное обращение - то только целиковыми транзакциями, с блокировкой всех остальных...
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
|
||||
__________________
Сообщество программистов Autodesk в СНГ - техническая поддержка |
||||
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Почему при вставке чертежа в Word меняются пропорции чертежа? | МишаИнженер | AutoCAD | 9 | 28.11.2014 15:31 |
Hp laserjet 5035 MFP смещение чертежа на формате A3 при печати из Autocad 2011 и 2013 | merdoc2003 | AutoCAD | 6 | 18.04.2013 23:59 |
Несвойственные Автокаду вещи | Vova | AutoCAD | 49 | 01.02.2012 19:33 |
Копирование файла одного чертежа в директорию текущего чертежа в автокаде... | CAHTEXHuK | Программирование | 3 | 23.06.2010 00:23 |
Максимальная подготовка DXF файла для SCAD. (Разбивка готового чертежа на элементы указанной длины) | Juss_00 | AutoCAD | 2 | 09.12.2008 17:35 |