| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Готовые программы > C# .net Создание Layout для чертежей, оформленных в модели

C# .net Создание Layout для чертежей, оформленных в модели

Ответ
Поиск в этой теме
Непрочитано 16.05.2012, 18:09 7 |
C# .net Создание Layout для чертежей, оформленных в модели
bargool
 
Санкт-Петербург
Регистрация: 16.08.2006
Сообщений: 508

Программа ищет новых хозяев.

Назначение программы:
Автоматическое создание листов по рамкам, указанным пользователем в модели (вручную, либо с помощью блоков). Автоматический выбор форматов бумаги и настройка листов.

Запуск / загрузка:
  • Выбираем dll из вложения к данному сообщению, либо самую последнюю версию из сообщения, указанного в конце "шапки"
  • Размещаем dll-ки в любом удобном месте, главное локально, а не в сети.
  • Командой _netload грузим выбранную dll в автокад
  • Автозагрузка рассматривается в #361 и #362

Принцип работы:
  • Программа формирует предварительный список настроек листа, с форматами бумаги
    Список формируется двумя способами
    1. Из DWG to PDF.pc3
      • Выбираются все пользовательские форматы
      • В конец списка добавляются форматы, начинающиеся на "ISO A.."
      • Область печати выставляется "Лист"
      • Единицы измерения - миллиметры
      • Масштаб 1:1
      • Стиль печати - acad.ctb. Позже буду брать из файла конфигурации
      • Имя настройки берётся из имени формата бумаги. Если встречаются символы из ряда "\<>/?"":;*|,=`" - убираются
    2. Из файла шаблона
      • Копируются пользовательские именованные настройки печати (для пространства листа, не для пространства модели), доступные из диалога "Page setup"
      • Повторяю. Пользовательские настройки. Не листы, а именно настройки
      • Ещё раз. В сами листы не заглядываем ВООБЩЕ - заглядываем в именованные настройки печати для пространства листа
      • Соответственно, имя настройки печати не должно начинаться с символа звёздочки "*"
  • - Запрашивает у пользователя "референтный размер".
    Используется для определения масштаба рамки. По-умолчанию это 185 мм. - длина основной надписи
  • - Запрашивает у пользователя противоположные углы рамок
    Слева-направо, сверху-вниз, или наоборот - не важно
    Привязка принудительно выставляется "конточка"
  • - На основе масштаба и списка форматов определяет наиболее подходящий
    При этом используется строго ориентация из "списка". Ориентацию с книжной на альбомную и обратно программа произвольно не меняет. Строго по "списку настроек"
  • - По выбранным форматам бумаги создаёт листы
    В чертёж добавляет подходящие именованные настройки из "списка", настроенные на нужный формат бумаги
    Присваивает созданным листам соответствующие именованные настройки
  • - Создаёт видовой экран, "смотрящий" на рамку, указанную пользователем

Процесс работы:
Указание рамок вручную:
  1. Для вызова программы введите в ком. строку bargLFM
  2. Либо задайте номер первого создаваемого листа, либо используйте опции ком. строки
  3. Укажите "референтный" размер
  4. Указывайте рамки, кликая по противоположным углам рамок.
    Опции ком. строки см. соответствующий раздел
  5. По окончании жмите escape или используйте опцию P
Рамки вставлены блоками:
  1. Для вызова программы введите в ком. строку bargLFBL
  2. Либо задайте номер первого создаваемого листа, либо используйте опции ком. строки
  3. Имя блока должно быть задано в конфигурации
  4. Формат будет определяться по габаритам конкретного вхождения блока. Включая атрибуты и дин. параметры (на данном этапе следите, что бы они не вылезали за пределы геометрии рамки)
    Опции ком. строки см. соответствующий раздел

Конфигурация:
  • Файл конфигурации. Имя файла - lfmsettings.xml. Хранится рядом программой
    Содержимое, не используемое диалогом конфигурации:
    • ReferenceDimension (По-умолчанию - 185). Референтный размер. Масштаб рамки будет определяться как отношение указанного пользователем размера к размеру в конфигурации. Если у вас референтный размер другой - можете изменить вручную
    • TemplatePath. Путь к шаблону для формирования списка настроек листов. Устанавливается программой при выборе опции templateSelect
  • Диалог конфигурации:
    • Префикс - Префикс имени создаваемого листа
    • Суффикс - Суффикс имени создаваемого листа
    • Точность определения форматов - Отвечает за точность определения форматов. Суть в том, что форматки иногда бывают примерно по госту. Таким образом, если указываемая форматка больше гостовского размера (уже после скалирования) на указанный размер - будет выбран соответствующий формат бумаги. Значение - целое число. По умолчанию = 10 мм
    • Удалять неинициализированые листы - Удалять ли листы, на которые ни разу не заходил пользователь
    • Оставаться в модели по окончании работы - Возвращать ли пользователя в модель по окончании работы программы

Опции ком. строки:
  • Undo - Отменить выбор последней рамки
  • Newscale - Задать новый масштаб рамки
  • Process - Выполнить создание листов
  • Configuration - Вызвать диалог конфигурации
  • useTemplate - Для создания листов использовать ранее выбранный шаблонный файл
  • templateSelect - Выбрать шаблонный файл. Переменная FILEDIA влияет на вид запроса (можно использовать в макросах)

Известные проблемы:
  • Если настройки листа подразумевают область печати Extents, и стоит галка Fit to paper - возможно неправильное отображение области бумаги в пространстве листа. На печать не влияет
  • Пока больше ничего не вспомнить


Короткое видео работы одной из последних версий программы
Increase Size Decrease Size LayoutsFromModel. ?’?µ????????, ???°?±???‚?°???‰?°?? ?? ?€?°?±?»?????°????
http://www.youtube.com/watch?v=TqaUcqZZCbA
Исходники на github. Репозиторий

Upd 20.12.2018: Спасибо Boxa, сборки для автокадов: 2017 и 2019
Upd 24.11.2022: Спасибо doctorraz, сборки для автокадов 2021 и 2022 и 2023

Миниатюры
Нажмите на изображение для увеличения
Название: scheisse.PNG
Просмотров: 3733
Размер:	28.7 Кб
ID:	80355  

Вложения
Тип файла: zip LayoutsFromModel.zip (196.8 Кб, 2900 просмотров)


Последний раз редактировалось bargool, 24.11.2022 в 11:45. Причина: добавил ссылки на свежие сборки
Просмотров: 313717
 
Автор темы   Непрочитано 19.10.2012, 18:38
#61
bargool


 
Регистрация: 16.08.2006
Санкт-Петербург
Сообщений: 508
<phrase 1=


perpetule, *.plt в европах активно используют, но он ведь создаётся под конкретный принтер/плоттер, у нас ни разу не видел, что бы использовали.
Цитата:
Сообщение от perpetule Посмотреть сообщение
а именовать по форматам вкладки - лениво
Вкладки в автокаде? Ну так можно программно, наверняка на форуме есть соответствующие лиспы, а если нет - свой велосипед несложно написать.
С пдф-ками я когда-то давно забавлялся - прогу написал (кривую довольно), которая пакетно раскидывала файлы в соответствии с размером первой страницы в соответствующие каталоги. Сейчас, правда, я просто установил в тотал коммандер плагин xPDFsearch, он умеет отображать в панельках размеры страниц.
С искажениями в pdf мы вполне уживаемся
bargool вне форума  
 
Непрочитано 20.10.2012, 20:48 bargool
#62
perpetule


 
Регистрация: 23.09.2008
Волгоград
Сообщений: 810
<phrase 1= Отправить сообщение для perpetule с помощью Skype™


Цитата:
Ну так можно программно, наверняка на форуме есть соответствующие лиспы
bargool,

Актуальнее для подшивок, а там только вручную.
От *.plt довольно приятные впечатления, правда существует только однолистовой вариант, главный плюс очень большая скорость слива в *.plt, далее его можно спец. софтом или просто far - ом (alt+f5) отправить на физ. принтер/плоттер, вопрос о совместимости это вопрос о поддержке вашим принтером плоттером hpgl/2 (все HP, пока на уровне предположений - на бумагу не пробовал, в pdf из plt все нормуль).

Поскольку вариант *.plt только однолистовой - есть только путь с корректным именованием файлов, а вот тут как раз для меня есть грабли, поскольку - сейчас навострился последнее выпускать следующим образом -

Мой вариант организации :
номер в подшивке --- сквозная нумерация (полем /текущий номер листа/ в форматку)
имя листа в подшивке (= имя вкладки) --- номер листа и краткое погоняло латиницей (полем и формулой /первые 4 символа/ в штамп)
свойство "описание" листа --- название без ограничений на спец симв и длину. (полем /описание текущего листа/ в штамп)


т.е. однотипно оформляя листы (один отвязанный от всего набор) я имею возможность управлять любым листом в подшивке, не заходя в сам лист /проблемно потому что долго/, но из-за криво организованной печати в многолистовой dwf, dwfx я все равно имею проблемы.

А используя однолистовые *.plt , (*.dwf , *.dwfx) я наступаю на грабли -
т.е. имя выходного *.plt в общем виде при такой организации будет иметь вид
(#1-сквозная)_(#2-номер листа)_(краткое погоняло).plt
,где (#2-номер листа "краткое погоняло")=имени вкладки лайаута
Куда тут еще формат прилепить, да еще с вариантом только первым (для последующей обязательной сортировки по имени=формату, т.е. можно то оно можно, но тогда я остальные плюсы теряю, а они существенные

http://forum.dwg.ru/showthread.php?p=984671#post984671

Мой предварительный вывод (совокупность разнообразных +) - следует все же покопать в направлении настройки при печати ИЗ многолистового dwfx - такое впечатление что - просто процессы начинают играть в пергонки и принтер получив вектор гораздо быстрее растра просто завершает процесс по таймауту (может напечатать только наложенный вектор, или часть растра с вектором, или почти весь растр с вектором, как с этим бороться - ума не приложу, в pdf все нормально вылетает и сам dwfx нормально выглядит, следовательно проблема именно во временных характеристиках печати на физ. плоттер возможно стоит проверить "Начинать печать после помещения в очередь всего задания" во вкладках физ. принтера?).


P.S. Прогуглил вопрос с софтом под *.plt - free софта нет как такового, мало того, даже коммерческий не позволяет сортировать файлы/листы по форматам (около 5 прог), и есть проблемы с корректным отображением многострочного текста со скрытием заднего плана, он просто не скрывается и в разных прогах, видимо баг формата, есть еще вариант с *.tiff=файл/лист, но это уже позже, и только в сторону внутренних виртуальных плоттеров, т.к. внешним кад не может передавать имя вкладки/листа, предварительно нарыл плагин к totall comander у с возможностью сортировки по размеру *.tiff=файл/лист.

Проблема с dwfx и полями решается следующим образом.
Цитата:
_.FIELDEVAL 27
перед распечаткой обязательное сохранение - для обновления полей.

Последний раз редактировалось perpetule, 08.11.2012 в 22:36.
perpetule вне форума  
 
Автор темы   Непрочитано 12.11.2012, 22:47
#63
bargool


 
Регистрация: 16.08.2006
Санкт-Петербург
Сообщений: 508
<phrase 1=


perpetule, а с какой целью вам нужна сортировка по форматам листов в plt? У нас, например, плоттер начинает фигнёй страдать, если программа, из которой ведётся печать меняет форматы в настройках

Последний раз редактировалось bargool, 19.11.2012 в 23:00.
bargool вне форума  
 
Непрочитано 19.11.2012, 22:57
#64
zvyagaaa


 
Регистрация: 11.08.2011
Сообщений: 41


bargool,
Почему-то программа путает книжную и альбомную ориентацию. Автокад 2012 локализованный. Пробовал на двух компах. Одинаково. Иногда все ОК, иногда путает. Не пойму, может какие-то преднастройки нужно делать? Приходится руками править ориентацию и нажимать кнопку - "Развернуть ВЭкран". Использовал все файлы настройки из шапки. У меня, например, горизонтальный А3, а программа пишет - Добавляем формат бумаги: A3h. И еще вопрос, можно ли у готовых листов как-то пакетно заменить принтер?
zvyagaaa вне форума  
 
Автор темы   Непрочитано 19.11.2012, 23:05
#65
bargool


 
Регистрация: 16.08.2006
Санкт-Петербург
Сообщений: 508
<phrase 1=


zvyagaaa, A3h означает, что добавляет формат ISO A3 именно горизонтальный (h -horizontal). Выложите, пожалуйста, dwg файл с перепутанной ориентацией после работы программы. Бонусом можно pc3 и pmp файлы (но для начала dwg)
bargool вне форума  
 
Непрочитано 27.11.2012, 14:20
#66
Вовочка

пищевая технология
 
Регистрация: 02.06.2009
Киев
Сообщений: 283
<phrase 1=


bargool, можно ли еще в конце кода выставить TILEMODE единицей?
Вовочка вне форума  
 
Непрочитано 27.11.2012, 14:26
#67
zvyagaaa


 
Регистрация: 11.08.2011
Сообщений: 41


bargool,
не понятно, то ли глюк какой-то завелся но мне не удается отловить этот баг.
zvyagaaa вне форума  
 
Автор темы   Непрочитано 27.11.2012, 15:51
#68
bargool


 
Регистрация: 16.08.2006
Санкт-Петербург
Сообщений: 508
<phrase 1=


Цитата:
Сообщение от Вовочка Посмотреть сообщение
можно ли еще в конце кода выставить TILEMODE единицей?
В принципе, можно, хотя если пользуетесь кнопкой - можно забить tilemode в макрос
Цитата:
Сообщение от zvyagaaa Посмотреть сообщение
не понятно, то ли глюк какой-то завелся но мне не удается отловить этот баг.
То есть теперь всё работает исправно?
bargool вне форума  
 
Непрочитано 28.11.2012, 10:16
#69
Вовочка

пищевая технология
 
Регистрация: 02.06.2009
Киев
Сообщений: 283
<phrase 1=


Кнопку создать не проблема. Но вариант, когда пользователь остается в модели кажется более логичным. Не вижу причины гнать его (юзера) на последний созданный лист.
Вовочка вне форума  
 
Автор темы   Непрочитано 29.11.2012, 13:54
#70
bargool


 
Регистрация: 16.08.2006
Санкт-Петербург
Сообщений: 508
<phrase 1=


Вовочка, Я и не возражал я просто предлагал временный вариант
Цитата:
Сообщение от zvyagaaa Посмотреть сообщение
не понятно, то ли глюк какой-то завелся но мне не удается отловить этот баг.
zvyagaaa, а вот мне удалось. Исправил
Обновил программу:
  • Добавил возможность возврата в модель по окончании работы программы (см. соответствующую опцию в конфигурации)
  • Теперь viewport создаётся не в размер листа, а с учётом непечатаемых полей (мало ли что?) Область печати теперь выставляется Extents (как оно там по-русски?)
  • Вроде как исправил глюк с ориентацией листов, глюк "плавающий", нужно посмотреть, не вылезло ли чего ещё. Причина была где-то в механизме выставления ориентации по-умолчанию непосредственно автокадом.
bargool вне форума  
 
Непрочитано 02.12.2012, 17:17
#71
zvyagaaa


 
Регистрация: 11.08.2011
Сообщений: 41


че-то стало только хуже сейчас формат пишет только А4h.
zvyagaaa вне форума  
 
Автор темы   Непрочитано 02.12.2012, 23:13
#72
bargool


 
Регистрация: 16.08.2006
Санкт-Петербург
Сообщений: 508
<phrase 1=


zvyagaaa, дайте файл, пожалуйста.
В алгоритме поиска форматов я ничего не менял. Только в настройках листов
bargool вне форума  
 
Непрочитано 03.12.2012, 14:48
#73
Вовочка

пищевая технология
 
Регистрация: 02.06.2009
Киев
Сообщений: 283
<phrase 1=


То же самое начиналось, как и у Звяги. Только А4 горизонт. Не там вставляет начало координат. Ну и плюс ко всему (поднимаю старый вопрос, на который ответ не получил), после сохранения с аудитом старые неинициализированные листы вновь появляються, хотя после ЛФМа они прячутся.
Ну и вдобавку. Можно сделать новые ВЭ заблокированными. А то мало ли
Вложения
Тип файла: dwg
DWG 2007
1.dwg (112.0 Кб, 3982 просмотров)

Последний раз редактировалось Вовочка, 03.12.2012 в 14:57. Причина: Идея блокирования.
Вовочка вне форума  
 
Непрочитано 03.12.2012, 16:35
#74
zvyagaaa


 
Регистрация: 11.08.2011
Сообщений: 41


http://youtu.be/4quyUPaFh9E
вот так делает плагин, не понятно почему, но нормально отображается только последний лист. Все остальные приходится вот таким способом регенерировать. Что это? Косяк акада? Но у меня и дома и на работе одинково отрабатаывает. Причем, на печать в пдф нормально выводится, а не отображается.
zvyagaaa вне форума  
 
Автор темы   Непрочитано 03.12.2012, 19:29
#75
bargool


 
Регистрация: 16.08.2006
Санкт-Петербург
Сообщений: 508
<phrase 1=


Цитата:
Сообщение от Вовочка Посмотреть сообщение
Ну и плюс ко всему (поднимаю старый вопрос, на который ответ не получил), после сохранения с аудитом старые неинициализированные листы вновь появляються, хотя после ЛФМа они прячутся.
Нашёл ошибку - исправил
Цитата:
Сообщение от Вовочка Посмотреть сообщение
Можно сделать новые ВЭ заблокированными
Можно, сделаю
Цитата:
Сообщение от Вовочка Посмотреть сообщение
Только А4 горизонт
Какое значение стоит в ReferenceDimension в файле lfmsettings.xml рядом с dll-кой?
Цитата:
Сообщение от Вовочка Посмотреть сообщение
Не там вставляет начало координат
Это, походу, зависит от каких-то предыдущих настроек. Пожалуй, самое корректное будет - центрировать изображение на листе (включать соответствующую галку) - сделаю

zvyagaaa, судя по всему, регенерится только последний лист. Почему так стало в 2012 не знаю, надо будет посмотреть (мне сейчас доступен только 2010 - там всё в порядке). _regenall должен помочь как временное решение. И ещё - опять не вижу "только A4h"
bargool вне форума  
 
Непрочитано 03.12.2012, 19:35
#76
zvyagaaa


 
Регистрация: 11.08.2011
Сообщений: 41


в видео я использовал предыдущую версию библиотеки. Т.к. с новой вообще не возможно пользоваться
Цитата:
Какое значение стоит в ReferenceDimension в файле lfmsettings.xml рядом с dll-кой?
я начисто ставил утилиту, т.е. не сохранялось от старых никаких файлов - была такая петрушка. Могу видео снять с новой либой, только уже из дома.
_regenall не помогает и еще, скажите, какую версию библиотеки запускать-то? Работают и для 2010 64х и 2012 без битности.

Последний раз редактировалось zvyagaaa, 03.12.2012 в 19:56.
zvyagaaa вне форума  
 
Непрочитано 04.12.2012, 11:29
#77
Вовочка

пищевая технология
 
Регистрация: 02.06.2009
Киев
Сообщений: 283
<phrase 1=


ReferenceDimension - отсутствует.
Приведу полный контент файла lfmsettings.xml
<?xml version="1.0"?>
<Configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Prefix />
<Suffix />
<Precision>10</Precision>
<DeleteNonInitializedLayouts>false</DeleteNonInitializedLayouts>
</Configuration>
Вовочка вне форума  
 
Непрочитано 05.12.2012, 13:57
#78
Вовочка

пищевая технология
 
Регистрация: 02.06.2009
Киев
Сообщений: 283
<phrase 1=


Возникла идея повышения удобства програмкой.
Иногда нужно собирать комплект на публикацию из нескольких чертежей. К примеру первый файл - листы 1-7, второй - 8-15. Во втором файле я задаю начало нумерации 8 (логично) и выделяю чертежи. В командной строке мне соответсвенно пишет выделен 1 лист (восьмой), 2 лист (девятый)... А можно ли что бы писало выделен 8 лист (восьмой), 9 лист (девятый). Надеюсь, что изъяснился ясно.
Вовочка вне форума  
 
Непрочитано 05.12.2012, 16:29
#79
zvyagaaa


 
Регистрация: 11.08.2011
Сообщений: 41


Вовочка
тут бы заявленного функционала добиться - была бы просто конфетка
bargool
когда заработает полноценно утилита - с меня пиво (или денежный эквивалент)
(оффтоп)
сам немного программировал и выкладывал на паблик результаты труда - понимаю, насколько это сложное и неблагодарное занятие, а заодно и сколько времени отнимает.
zvyagaaa вне форума  
 
Непрочитано 05.12.2012, 17:46
#80
Вовочка

пищевая технология
 
Регистрация: 02.06.2009
Киев
Сообщений: 283
<phrase 1=


zvyagaaa, присоединяюсь (по поводу пива)
Вовочка вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Готовые программы > C# .net Создание Layout для чертежей, оформленных в модели

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как вывести в layout только часть модели? temoha2006 AutoCAD 12 18.08.2008 17:19
Помогите завершить создание 3М модели!? Jerald AutoCAD 8 27.04.2008 23:09
Автоматической создание Layout serg01 AutoCAD 3 16.08.2007 14:09
как начертить в масштабе не деля на калькуляторе? djon AutoCAD 168 29.05.2007 10:13
Подготовка рабочих чертежей по 3D модели constructorl AutoCAD 21 07.02.2007 19:50