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

Вернуться   Форум 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
Просмотров: 3797
Размер:	28.7 Кб
ID:	80355  

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


Последний раз редактировалось bargool, 24.11.2022 в 11:45. Причина: добавил ссылки на свежие сборки
Просмотров: 330882
 
Непрочитано 08.11.2023, 16:44
#641
Archeo

архитектор
 
Регистрация: 02.04.2006
Беларусь
Сообщений: 349


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
этот флаг должен в коде команды сопровождаться вызовом метода SelectImplied() акадовского класса Editor
Offtop: С каждым словом всё глубже погружаюсь в пучину своего невежества)
Archeo вне форума  
 
Непрочитано 08.11.2023, 18:49
#642
doctorraz

электрик
 
Регистрация: 19.02.2010
Волгоград
Сообщений: 2,338
Отправить сообщение для doctorraz с помощью Skype™


Стимул двигаться дальше
__________________
Мастерская СПДС
doctorraz вне форума  
 
Непрочитано 08.11.2023, 21:18
#643
Archeo

архитектор
 
Регистрация: 02.04.2006
Беларусь
Сообщений: 349


Цитата:
Сообщение от doctorraz Посмотреть сообщение
Стимул двигаться дальше
Стимул-то да, но освоить C# или ещё что... По-моему, у меня мозг под это не заточен(
В любом случае, всем спасибо за помощь!
Archeo вне форума  
 
Непрочитано 08.11.2023, 21:34
#644
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,266


Offtop:
Цитата:
Сообщение от Archeo Посмотреть сообщение
По-моему, у меня мозг под это не заточен(
ерунда.. проектировщик с работающей головой может освоить любой язык программирования на начальном уровне. Вопрос в том, нужно ли потратить энное количество человекочасов - чтобы в итоге исправлять чужую рукожопость и лень. Ведь научиться пользоваться сразу листами и шаблонами по факту чисто административный вопрос - кто не хочет, того заставить работать в одном стиле со всеми.
Сергей812 вне форума  
 
Непрочитано 08.11.2023, 21:54
#645
doctorraz

электрик
 
Регистрация: 19.02.2010
Волгоград
Сообщений: 2,338
Отправить сообщение для doctorraz с помощью Skype™


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
научиться пользоваться сразу листами и шаблонами по факту чисто административный вопрос
Offtop: Листы не спасут если надо вывести на другой машине где этих плотеров нет(((
__________________
Мастерская СПДС
doctorraz вне форума  
 
Непрочитано 09.11.2023, 00:43
#646
Archeo

архитектор
 
Регистрация: 02.04.2006
Беларусь
Сообщений: 349


Цитата:
Сообщение от doctorraz Посмотреть сообщение
вывести на другой машине
Offtop: Подшивки? Ну или в тот же ПДФ, а потом куда угодно...

----- добавлено через ~2 мин. -----
Цитата:
Сообщение от Сергей812 Посмотреть сообщение
заставить работать в одном стиле со всеми
Offtop: Могут ведь и наоборот - заставить отказаться от листов, потому что нечего быть умнее других)
Archeo вне форума  
 
Непрочитано 17.11.2023, 13:01
#647
[igrik]

Инженер-конструктор
 
Регистрация: 04.06.2014
Крым
Сообщений: 15


Цитата:
Сообщение от Archeo Посмотреть сообщение
Спасибо! Не гарантирую, что сегодня успею, но на днях - точно.
А в чём отличие от версии 2013? Кроме собственно версии) То есть я как пользователь замечу что-то или нет?

Если бы кто-нибудь объяснил доступным языком, как это сделать... Ну вижу я страницу с исходниками - и чо? Мне сразу плакать хочется)))
А так бы я, конечно, попробовал разобраться, куда подевался запрос на указание вхождения блока рамки.
Попробуйте плагин (мной чуть доработанный и модифицированный) на версию 2019 Автокада. (ссылка на данный пост в этой теме)
Возможно этой проблемы в нём нет. Там же и добавлено название блока-рамки, а так же сделано автоматическое нахождение и сортировка всех блоков по тегу в блоке.
Для ознакомления есть видеоинструкция, и весь исходный код на гите, который компилируется под версии 2016 и/или 2019 автокада. Возможно и под другие компилируется, но я не проверял.

В дополнение, в версиях 2015 и 2016 есть одна проблема при создании набора листов. Проблема в самом автокаде. В версиях ниже 2015 и выше 2016 такой проблемы нет.
https://github.com/igrikRS/AutoCAD-P...Creator.cs#L67





Раз уж я вернулся к данной теме...
doctorraz, у меня к вам вопрос. Подскажите пожалуйста как мне сделать выборку из форматок СПДС GraphiCS:
1) получить список всех форматок
2) достучаться до номера листа в каждой из форматок.
Я давно хотел сделать алгоритм, который у меня реализован в блоках, т.е. автоматически найти все форматки, отсортировать их в порядке возрастания по номеру листа и создать из этого набора листы

Последний раз редактировалось [igrik], 17.11.2023 в 21:01.
[igrik] вне форума  
 
Непрочитано 17.11.2023, 13:37
#648
doctorraz

электрик
 
Регистрация: 19.02.2010
Волгоград
Сообщений: 2,338
Отправить сообщение для doctorraz с помощью Skype™


Цитата:
Сообщение от [igrik] Посмотреть сообщение
получить список всех форматок
в общем случае проходишь в цикле по всем пространствам и проверяешь на соответствие

Код:
[Выделить все]
 
 if (ObjectId brId.ObjectClass.Name == "mcsDbObjectFormat")
{
//если это форматка по objID получаешь ID мультикад
            McObjectId mcsId = Multicad.McObjectId.FromOldIdPtr(objID.OldIdPtr);
//!формат
            McFormat _mcFormat = mcsId.GetObject()?.Cast<McFormat>();
            
            McPropertySource mcPropertySource = mcsId.GetObject()?.Cast<McPropertySource>();
 //!коллекция свойств
            McProperties _mcProperties = mcPropertySource.ObjectProperties;
            
           sDrawingName_ = (string)_mcProperties.GetValueEx("DrawingName", "");
//-------------------------
           int iSheet = _mcFormat.Sheet;
           string sSheet =_mcFormat.SheetEx
} 
 
в отладчике посмотришь, какие свойства доступны
ну и советую скачать nanoCAD SDK, по мультикад там кое что есть в справке, да и классы многие описаны.
PS мультикад так потому и называется, что работает с разными кадами))
__________________
Мастерская СПДС

Последний раз редактировалось doctorraz, 17.11.2023 в 13:43.
doctorraz вне форума  
 
Непрочитано 17.11.2023, 15:15
#649
[igrik]

Инженер-конструктор
 
Регистрация: 04.06.2014
Крым
Сообщений: 15


doctorraz, спасибо за инфу. Будем пробовать
[igrik] вне форума  
 
Непрочитано 18.11.2023, 23:13
#650
Archeo

архитектор
 
Регистрация: 02.04.2006
Беларусь
Сообщений: 349


Цитата:
Сообщение от [igrik] Посмотреть сообщение
в доступе есть 2016 и 2019 версии автокада
Спасибо... а у меня - нет и не предвидится)))
Цитата:
Сообщение от [igrik] Посмотреть сообщение
- после того как плагин найдёт все вхождения блоков, он сортирует их по номеру листа (атрибуту)
- потом этот номер назначается как "имя листа"
Это интересно. А предварительный выбор есть? В модели-то у большинства пользователей чего только нет... Нужна возможность выбора любого участка пространства модели.
Цитата:
Сообщение от [igrik] Посмотреть сообщение
- в окне настроек указываем название блока
Неудобно, я уже писал об этом. В чужих файлах постоянно встречается солянка из однотипных блоков с разными именами. Никто не станет заморачиваться и писать эти имена вручную. Нужен выбор мышкой.
Цитата:
Сообщение от [igrik] Посмотреть сообщение
сортировка всех блоков по тегу в блоке
То же самое. Названия тегов могут быть какими угодно.
Цитата:
Сообщение от [igrik] Посмотреть сообщение
Масштаб берётся автоматически из объекта
Цитата:
Сообщение от [igrik] Посмотреть сообщение
если у вас форматы имеют разный масштаб
То есть если один блок был создан в миллиметрах и увеличен в 100 раз, а другой изначально был создан увеличенным в те же 100 раз, результат будет одинаковым? См. моё сообщение #634.
Archeo вне форума  
Ответ
Вернуться   Форум 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