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

Вернуться   Форум 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. Причина: добавил ссылки на свежие сборки
Просмотров: 313766
 
Автор темы   Непрочитано 10.07.2014, 14:44
#361
bargool


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


Цитата:
Сообщение от zvyagaaa Посмотреть сообщение
переменная SECURELOAD была равна нулю
Опять же, secureload = 0 должен как раз тихо, без вопросов загрузить библиотеку. У нас как раз secureload в ноль выставлен.
Пожалуйста =)

По поводу автозагрузки:
Вариантов 3 (не считая использования автозагрузчика автокада - это решение всё-таки для использования программистом):
1. Прописать dll в реестр
2. Прописать netload в acad.lsp / acaddoc.lsp
3. Сделать cuix, в котором добавить лисп, делающий netload dll-ки (имхо, лучший вариант), заодно можно и кнопульки сделать (если кто сделал / сделает, прошу поделиться)

1 и 2 варианты подробно рассматривались Андреем здесь и здесь, соответственно
3 - это вариация 2го
__________________
Алексей

Последний раз редактировалось bargool, 10.07.2014 в 14:56. Причина: Написал про автозагрузку
bargool вне форума  
 
Непрочитано 27.08.2014, 11:39
#362
starr74


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


Автору РЕСПЕКТ. Начал пользоваться с месяц назад - Отлично. Решил внести свои 5 копеей в автозагрузку библиотеки DLL.
Создаем директорию C:\ACAD_DLL (можно любую папку на любом диске)
Заливаем в нее папки с программами (файлы DLL)
В корне созданной папки создаем текстовый файл, с расширением lsp, например, acad_2012.lsp (Создаем текстовый файл, потом меняем расширение на lsp)
Редактируем его, добавляя следующее содержание:
Код:
[Выделить все]
 (defun-q bxStartup()
  (c:AcadLayoutsCountLoad)
)
;;;Подгружаю .Net библиотеку...
(defun c:AcadLayoutsCountLoad()
 (setq echo (getvar "cmdecho"))
 (setvar "cmdecho" 0)
 (setq fd (getvar "filedia"))
 (setvar "filedia" 0)
 
 ;; Тут прописываем пути к файлам программ
 ;; Количество подключаемых программ не ограничено
 ;; главное перечислить все, которые Вам необходимы
 
 (command "_netload" "C:/ACAD_DLL/_VPort_pp/vport_pp_2012.dll ")
 
 
 (setvar "filedia" fd)
 (setvar "cmdecho" echo)
)
;;;Исключаю возможность перезаписи метода S::STARTUP...
(setq S::STARTUP (append S::STARTUP bxStartup))
Сохраняем файл
Командой _appload или ЗАГПРИЛ Открываем менеджер приложений
Добавляем созданный файлик acad_2012.lsp в автозагрузку
Перезагружаем автокад.
Пользуемся

Создание кнопки для команд bargLFM или bargLFBL
Адаптация-Новая команда (правой кнопкой мыши)
Имя - bargLFM (можно любое)
Макросы - ^C^CbargLFM
Выбрать подходящий рисунок, Применить
Пользуемся
starr74 вне форума  
 
Автор темы   Непрочитано 27.08.2014, 12:02
#363
bargool


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


starr74, спасибо, радует, когда наработки возвращаются в сообщество.
Цитата:
Сообщение от starr74 Посмотреть сообщение
Пользуемся
Вот и 4й вариант автозагрузки, вполне простой =)
__________________
Алексей
bargool вне форума  
 
Непрочитано 27.08.2014, 12:23
#364
dim5678


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


Во первых огромнейшее Вам спасибо за эту разработку, Вопрос к bargool -скажите, можно ли не убирать поля у форматов, уже год пользуюсь Вашим макросом, но при распечатывании нет рамок, иногда Заказчикам это не нравится, подскажите как решить проблему и можно ли прописать вписывание чертежа в макросе под рамки, очень нужно. Заранее спасибо.
dim5678 вне форума  
 
Автор темы   Непрочитано 27.08.2014, 13:00
#365
bargool


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


Цитата:
Сообщение от dim5678 Посмотреть сообщение
Во первых огромнейшее Вам спасибо за эту разработку, Вопрос к bargool -скажите, можно ли не убирать поля у форматов, уже год пользуюсь Вашим макросом, но при распечатывании нет рамок, иногда Заказчикам это не нравится, подскажите как решить проблему и можно ли прописать вписывание чертежа в макросе под рамки, очень нужно. Заранее спасибо.
Пожалуйста =)
Не очень понял про поля и рамки. Если посмотреть на стандартный вид рамок в автокаде (например - та хрень, что приложена в виде изображения к шапке темы), то внешняя линия - это должен быть как раз край листа. Или заказчики хотят видеть эти линии "унутре" листа? Понял
Т.е. не делать принудительно вьюпорт в размер формата, а вписывать в печатаемую область?
__________________
Алексей
bargool вне форума  
 
Непрочитано 27.08.2014, 13:05
#366
dim5678


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


Извините написал сумбурно. Проще говоря чтобы нормально читался ПДФ нам нужно выполнить настройки DWG to PDF удалив границы сделав их все 0. Далее при распечатке сам плоттер или принтер ещё режет часть рамки и мы получаем на выходе отсутствие как таковой рамки, уже в распечатанном виде. Можно ли не убирать границы до "0" в настройках DWG to PDF, и чтобы при формировании он весь был в пространстве листа ну проще сказать вписывался что ли, т.к если мы сделаем настройки по удалению границ, лист выступает за рамки. Наверное опять написал сумбурно))) Можно ли как-либо отредактировать макрос, чтобы он работал без урезания границ в DWG to PDF???
dim5678 вне форума  
 
Автор темы   Непрочитано 27.08.2014, 14:11
#367
bargool


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


По сути, это именно то, что я написал в прошлом сообщении. Я уже пробовал когда-то это реализовать, но почему-то отказался. Постараюсь посмотреть, в чём там дело.
Пока что я вижу 2 выхода:
1. При распечатке из pdf в настройках печати ридера (или чем печатаете), укажите в масштабировании "Shrink oversized pages" (не знаю, как это выглядит в русской версии), акробат ужмёт пдф-ку так, что бы она помещалась на листе принтера
2. В моей программе используйте шаблон, в шаблоне настройте области печати на "Extents"
Как-то так
__________________
Алексей
bargool вне форума  
 
Непрочитано 27.08.2014, 20:47
#368
maratovich


 
Регистрация: 12.07.2009
г. Самара
Сообщений: 2,481
Отправить сообщение для maratovich с помощью Skype™


dim5678
Кстати, не мешало бы приложить файл .dwg и принтскрин чего Вы хотите, это поможет понять что именно надо сделать.
__________________
Вопрос : Где находится Тургай ? Ответ : Между Парагваем и Уругваем.....
maratovich вне форума  
 
Непрочитано 02.09.2014, 08:06
#369
starr74


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


Подскажите как в настройках принтера DWG To PDF сделать чтобы автоматически Таблица стилей печати было МОНОХРОМ? Не охота на каждый лист заходить и руками выставлять вместо Acad. Можно конечно стиль Acad удалить и Monochrome сохранить как Acad, ну вдруг пригодиться цветная печать.

Последний раз редактировалось starr74, 02.09.2014 в 08:28.
starr74 вне форума  
 
Автор темы   Непрочитано 02.09.2014, 09:36
#370
bargool


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


starr74, ссылка на мой ответ ранее в теме.
__________________
Алексей
bargool вне форума  
 
Непрочитано 02.09.2014, 15:48
#371
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,588


Цитата:
Сообщение от bargool Посмотреть сообщение
Вот и 4й вариант автозагрузки, вполне простой =)
Это все тот же второй вариант, с точностью до запятой. Спертый мной у Андрея Бушмана (aka Hwd) по второй ссылке и допиленный под свои нужды.
Так что вариантов три: 1-реестр, 2- лисп, 3 - скопировать сформированный пакет. Остальное, вариации на тему. ИМХО
Boxa вне форума  
 
Непрочитано 02.09.2014, 17:08
#372
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,702
Отправить сообщение для Do$ с помощью Skype™


Цитата:
Сообщение от Boxa Посмотреть сообщение
Это все тот же второй вариант, с точностью до запятой. Спертый мной у Андрея Бушмана (aka Hwd) по второй ссылке и допиленный под свои нужды.
Так что вариантов три: 1-реестр, 2- лисп, 3 - скопировать сформированный пакет. Остальное, вариации на тему. ИМХО
1 - Реестр,
2 - NETLOAD из автозагружаемых LSP в разных вариантах(acad*.lsp, mnl-cui-cuix, StartApp...),
3 - Bundle-пакет
...
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Do$ вне форума  
 
Автор темы   Непрочитано 03.09.2014, 09:11
#373
bargool


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


Do$, вопрос обсуждался с точки зрения настройки автозагрузки пользователем. Bundle-пакет, ИМХО, это для программиста.
__________________
Алексей
bargool вне форума  
 
Непрочитано 03.09.2014, 09:33
#374
starr74


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


Все замечательно оказалось при создании листов как автоматом так и в ручную. В PDF все выглядит замечательно, а когда выводишь на печать форматы А3, А4 то печатаются и наружные рамки которые в PDF не видны. Это настройки принтера с которого печатаю на бумагу или надо принтер DO To PDF поднастроить? Где собака порылась?
starr74 вне форума  
 
Автор темы   Непрочитано 03.09.2014, 09:41
#375
bargool


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


starr74, посмотрите настройки масштабирования в диалоге печати в той программе, из которой печатаете пдф-ки. Скорее всего там стоит что-то типа "ужимать слишком большие листы". При этом программа (например, адоб ридер) ужимает не до реального размера листа, а до объявленных в принтере размеров печатаемой области (с учетом непечатаемых полей).
__________________
Алексей
bargool вне форума  
 
Непрочитано 10.11.2014, 18:16
#376
off

геодезист
 
Регистрация: 11.11.2006
Ростов-на-Дону
Сообщений: 95
<phrase 1= Отправить сообщение для off с помощью Skype™


Второй раз приступил к освоению данной программы. Столкнулся со следующими проблемами:
1. Блок рамки созданный с параметрами видимости обрабатывается некорректно - формат подбирается по максимальной рамке присутствующей в блоке. Где-то в теме это обсуждалось. Нужно вынести в шапку в "Известные проблемы"
Offtop: Благодаря этому разобрался с lookup и переделал блок рамки. Полезным оказалось видео №14 http://forum.dwg.ru/showthread.php?t=35047
2. Руководствуясь справкой из шапки и особенно фразой Ещё раз. В листы не заглядываем ВООБЩЕ долго мучился создав настройки параметров листов в Модели и получая в результате работы программы ошибку. После просмотра видео разобрался. Думаю что провокационную фразу лучше убрать из описания.

Что касается пожеланий и хотелок:
1. Очень бы хотелось чтобы с помощью программы обрабатывались блоки рамок, развернутые вокруг оси Z. Т.е. чтобы на листе создавался видовой экран с ПСК, повернутой на этот самый угол.
off вне форума  
 
Автор темы   Непрочитано 11.11.2014, 12:21
#377
bargool


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


Цитата:
Сообщение от off Посмотреть сообщение
Второй раз приступил к освоению данной программы. Столкнулся со следующими проблемами:
1. Блок рамки созданный с параметрами видимости обрабатывается некорректно - формат подбирается по максимальной рамке присутствующей в блоке. Где-то в теме это обсуждалось. Нужно вынести в шапку в "Известные проблемы"
Offtop: Благодаря этому разобрался с lookup и переделал блок рамки. Полезным оказалось видео №14 http://forum.dwg.ru/showthread.php?t=35047
2. Руководствуясь справкой из шапки и особенно фразой Ещё раз. В листы не заглядываем ВООБЩЕ долго мучился создав настройки параметров листов в Модели и получая в результате работы программы ошибку. После просмотра видео разобрался. Думаю что провокационную фразу лучше убрать из описания.

Что касается пожеланий и хотелок:
1. Очень бы хотелось чтобы с помощью программы обрабатывались блоки рамок, развернутые вокруг оси Z. Т.е. чтобы на листе создавался видовой экран с ПСК, повернутой на этот самый угол.
Спасибо за конструктив, хоть кто-то читает описание (и не только читает, но и пытается понять, что там понаписано)
Проблемы:
1. Размеры рамки определяются по габаритам всех объектов во вхождении блока. Согласен, возможно стоило бы исключить из обработки дин. параметры и атрибуты
Т.е. это скорее не "Известные проблемы", а особенности реализации блоков.
2. Нда, согласен - формулировка не слишком-то

По поводу пожелания и бага - занёс в трекер. Если доберусь - буду делать.
Описание в шапке подправил
__________________
Алексей
bargool вне форума  
 
Непрочитано 11.11.2014, 13:31
#378
DMSbrick


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


А как к 2015 докрутить? Если взять с 2013 длл то ошибки выдает.
Вложения
Тип файла: rar 1.rar (2.0 Кб, 42 просмотров)

Последний раз редактировалось DMSbrick, 11.11.2014 в 15:29.
DMSbrick вне форума  
 
Непрочитано 11.11.2014, 16:30
#379
off

геодезист
 
Регистрация: 11.11.2006
Ростов-на-Дону
Сообщений: 95
<phrase 1= Отправить сообщение для off с помощью Skype™


Вам спасибо, Алексей. Кроме удобства от пользования программой решил еще одну старинную проблему, связанную с печатью. По старинке оставлял 40мм в настройках длины бумаги (это пошло еще с HP510) - а сейчас выставил в настройках печать без полей и плоттер стал печатать оставляя лишь около 5мм после чертежа.

Хотелось бы подробнее узнать про алгоритм действия На основе масштаба и списка форматов определяет наиболее подходящий. Пытаюсь заставить программу создавать мне листы для печати на реальном плоттере. У меня есть пара pc3+pmp с настроенными форматами, есть файл шаблона. Программа работает и создает листы, но выбирает не те форматы, которые мне нужны. (с А2х3 и А2х4 только попадание).
Форматы выбираются не те потому что длина формата в настройке задана по ГОСТу, а высота у всех одинаковая - 609 (на ширину бумаги плоттера). Т.е. мне нужно чтобы формат выбирался только по его длине.
off вне форума  
 
Автор темы   Непрочитано 12.11.2014, 10:33
#380
bargool


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


Цитата:
Сообщение от DMSbrick Посмотреть сообщение
А как к 2015 докрутить? Если взять с 2013 длл то ошибки выдает.
Да, сборка для 2013 на 2015 не пойдёт. Надо дорабатывать. Как сделаю - напишу обновление в теме.
Цитата:
Сообщение от off Посмотреть сообщение
Хотелось бы подробнее узнать про алгоритм действия На основе масштаба и списка форматов определяет наиболее подходящий
Всё просто (насколько я разобрался в той фигне, что когда-то понаписал )
1. Из файла шаблона из именованных настроек печати (для пространства листа) берём эти самые настройки
2. Отсекаем всё, что меньше размера рамки по высоте (с учётом масштаба) за вычетом "точности"
3. Тоже самое, но по ширине.
На данном этапе у нас остались только форматы, которые шире и выше рамки (с поправкой на точность)
4. Из оставшихся ищем минимальный по высоте
5. Если форматов минимальных по высоте несколько - будем выбирать меньший по ширине.

Т.е., если у вас рамка, скажем, 594х1261, и установлена точность (в конфиге программы) 10мм (а вдруг?), и, скажем есть 2 формата 594х1261 и 590х2000 - программа выберет второй.
Дело в том, что при выборе формата для меня имела значение именно высота листа. И да, рамки чертежей, которые мне попадались могли быть именно 600х1261, а следующая 594х1261 (см. "старый текст поста" в заглавном сообщении) - по-этому и ввёл понятие "точность"

В процессе разбора нашёл потенциальную ошибку в алгоритме..
__________________
Алексей

Последний раз редактировалось bargool, 12.11.2014 в 15:32.
bargool вне форума  
Ответ
Вернуться   Форум 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