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

Вернуться   Форум 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. Причина: добавил ссылки на свежие сборки
Просмотров: 313774
 
Непрочитано 15.11.2016, 14:52
#501
Konst085

Инженер
 
Регистрация: 15.10.2015
СПБ
Сообщений: 86


Цитата:
Сообщение от skkkk Посмотреть сообщение
Из старого варианта первого поста:


То есть, вручную надо выставить поля в ноль в настройках принтера стандартным форматам (ISO A3 и т.д. - не "расширенным", не "без полей", а именно таким).
Отлично!
А как научить его распознавать не стандартные форматы?
Дополнительные форматы у меня все созданы, но упорно не применяются.
Konst085 вне форума  
 
Непрочитано 15.11.2016, 15:23
#502
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,653


Цитата:
Сообщение от Konst085 Посмотреть сообщение
НЕ стандартные распознаются корректно почти все
Цитата:
Сообщение от Konst085 Посмотреть сообщение
А как научить его распознавать не стандартные форматы?
Что я понял не так? В настройках принтера в разделе "Нестандартные форматы листа" создать нужное количество своих форматов и выставить им также поля в ноль. Туда я добавил все типа А2х3, А3х4 и т.д., и они распознаются корректно всегда, при условии, что задан правильный масштаб (референтный размер соответствует формату). А любые другие произвольные форматы тоже придется прежде добавить, затем они распознаются - только так. В случае с произвольным форматом, который используется только один раз, думаю, проще создать лист вручную.
skkkk вне форума  
 
Непрочитано 15.11.2016, 15:30
#503
baksconstructor


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


Konst085
Вложения
Тип файла: dwg
DWG 2010
New layout.dwg (139.7 Кб, 68 просмотров)
baksconstructor вне форума  
 
Непрочитано 15.11.2016, 15:45
#504
Konst085

Инженер
 
Регистрация: 15.10.2015
СПБ
Сообщений: 86


Цитата:
Сообщение от skkkk Посмотреть сообщение
"Нестандартные форматы листа"
Все было заведено.
А в вариантах где отображалось не верно нужно было поменять длину с шириной в настройках и все ок.

baksconstructor это результат программы реверс?
Konst085 вне форума  
 
Непрочитано 15.11.2016, 15:46
#505
baksconstructor


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


Цитата:
Сообщение от Konst085 Посмотреть сообщение
baksconstructor это результат программы реверс?

я все варианты пробую.
baksconstructor вне форума  
 
Автор темы   Непрочитано 16.11.2016, 10:07
#506
bargool


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


Цитата:
Сообщение от v.psk Посмотреть сообщение
Да... такая же проблема (писал где-то выше....) // что интересно область печати "встает на масто" просто при открытии и применении изменений в редакторе печати.
Это не это?
Цитата:
Известные проблемы:
Если настройки листа подразумевают область печати Extents, и стоит галка Fit to paper - возможно неправильное отображение области бумаги в пространстве листа. На печать не влияет
П.С.: Ребята, спасибо за помощь в объяснении вопросов
__________________
Алексей
bargool вне форума  
 
Непрочитано 16.11.2016, 21:18
#507
v.psk

конструктор
 
Регистрация: 14.08.2014
Псков
Сообщений: 7,097


Цитата:
Сообщение от bargool Посмотреть сообщение
Это не это?
Может быть... попробую по нужде развернуть форматы...если пройдет успешно, подкорректирую /дополню пост
v.psk вне форума  
 
Непрочитано 27.01.2017, 18:59
#508
VoVoRoNaLe

Конструктор
 
Регистрация: 29.10.2007
Сообщений: 157


Не запускает (((
Цитата:
Cannot load assembly. Error details: System.IO.FileLoadException: Could not load file or assembly 'file:///C:\LayoutsFromModel2016.dll' or one of its dependencies. Operation is not supported. (Exception from HRESULT: 0x80131515)
File name: 'file:///C:\LayoutsFromModel2016.dll' ---> System.NotSupportedException: An attempt was made to load an assembly from a network location which would have caused the assembly to be sandboxed in previous versions of the .NET Framework. This release of the .NET Framework does not enable CAS policy by default, so this load may be dangerous. If this load is not intended to sandbox the assembly, please enable the loadFromRemoteSources switch. See http://go.microsoft.com/fwlink/?LinkId=155569 for more information.
at System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
at System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
at System.Reflection.RuntimeAssembly.InternalLoadFrom(String assemblyFile, Evidence securityEvidence, Byte[] hashValue, AssemblyHashAlgorithm hashAlgorithm, Boolean forIntrospection, Boolean suppressSecurityChecks, StackCrawlMark& stackMark)
at System.Reflection.Assembly.LoadFrom(String assemblyFile)
at Autodesk.AutoCAD.Runtime.ExtensionLoader.Load(String fileName)
at loadmgd()
VoVoRoNaLe вне форума  
 
Непрочитано 27.01.2017, 19:30
#509
Сергей812


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


А кроме корня системного диска больше негде сборку расположить?)
Сергей812 вне форума  
 
Автор темы   Непрочитано 29.01.2017, 00:56
#510
bargool


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


Цитата:
Сообщение от VoVoRoNaLe Посмотреть сообщение
Не запускает (((
1. Надо поместить куда-нить за пределы корня диска
2. Правой кнопкой по dll-ке -> свойства, проверить, не стоит ли галка "заблокировано"

----- добавлено через ~2 мин. -----
О_о Теме уже скоро пять лет..
__________________
Алексей
bargool вне форума  
 
Непрочитано 20.02.2017, 23:41
#511
Enik

ГИП
 
Регистрация: 07.06.2015
Сообщений: 1,254


Цитата:
Сообщение от VoVoRoNaLe Посмотреть сообщение
Не запускает (((
Та же фигня. Танцы с бубном и манипуляции на уровне "домашний компьютерный мастер" не помогли.
Галку снимал. Пробовал кидать файл в windows/system32 и windows/syswow64, после чего в cmd вносить запись в реестр - тоже не хочет.
Win10 x64 acad2014 и 2017.
Enik вне форума  
 
Непрочитано 20.02.2017, 23:55
#512
Сергей812


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


Цитата:
Сообщение от Enik Посмотреть сообщение
Пробовал кидать файл в windows/system32 и windows/syswow64
зачем? Забудьте про системный диск, располагайте сборку на любом другом локальном диске компьютера.
Сергей812 вне форума  
 
Непрочитано 21.02.2017, 00:03
#513
Enik

ГИП
 
Регистрация: 07.06.2015
Сообщений: 1,254


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
зачем? Забудьте про системный диск, располагайте сборку на любом другом локальном диске компьютера.
Тоже пытался. Продублирую текст сообщения из командной строки автокад (у меня с переводом на русский)

Цитата:
Имя файла: 'file:///D:\Enik\Autocad\МОИ НАСТРОЙКИ\Программы\Создание видовых экранов\LayoutsFromModel\LayoutsFromModel2013.dll' ---> System.NotSupportedException: Предпринята попытка загрузить сборку из сетевого ресурса, что в предыдущих версиях .NET Framework могло привести к помещению сборки в "песочницу". Этот выпуск .NET Framework не включает политику CAS по умолчанию, поэтому данная загрузка может быть опасной. Если эта нагрузка не предназначена для изоляции сборки, включите переключатель loadFromRemoteSources. Дополнительные сведения см. на странице http://go.microsoft.com/fwlink/?LinkId=155569.
в System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
в System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
в System.Reflection.RuntimeAssembly.InternalLoadFrom(String assemblyFile, Evidence securityEvidence, Byte[] hashValue, AssemblyHashAlgorithm hashAlgorithm, Boolean forIntrospection, Boolean suppressSecurityChecks, StackCrawlMark& stackMark)
в System.Reflection.Assembly.LoadFrom(String assemblyFile)
в Autodesk.AutoCAD.Runtime.ExtensionLoader.Load(String fileName)
в loadmgd()
Сам для себя сделал вывод, что в последних .NET Framework отключена функция загрузки сторонних библиотек.
Enik вне форума  
 
Непрочитано 21.02.2017, 00:07
#514
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,405
Отправить сообщение для Александр Ривилис с помощью Skype™


Цитата:
Сообщение от Enik Посмотреть сообщение
Предпринята попытка загрузить сборку из сетевого ресурса,
Разблокируйте этот dll-файл: http://www.oszone.net/27842/Windows_10_unblock_file
Александр Ривилис вне форума  
 
Непрочитано 21.02.2017, 00:29
#515
Enik

ГИП
 
Регистрация: 07.06.2015
Сообщений: 1,254


Цитата:
Сообщение от Александр Ривилис Посмотреть сообщение
Разблокируйте этот dll-файл: http://www.oszone.net/27842/Windows_10_unblock_file
Спасибо! Да, теперь всё работает!
Enik вне форума  
 
Непрочитано 21.02.2017, 01:13
#516
Enik

ГИП
 
Регистрация: 07.06.2015
Сообщений: 1,254


Эмм... А как быть, если видовой экран на листе должен находиться в рамке со штампом? Если применительно к А4, то пространство печати должно быть 210х297, а сам видовой экран, к примеру, 185х232 (отступили слева 20, справа 5, сверху 5 и снизу 55+5). Можно ли как-то ввести эти допуски?

Поясню. К примеру, я делаю раскладку листов для трассы линейного объекта. Единицы чертежа в модели - метры, масштаб ВЭ - 1к1, масштаб на бумаге - 1:1000 (это для случая, описанного выше - лист А4, ВЭ 185х232 единицы). В пространстве модели создаю замкнутые контуры из полилиний, примыкающие один к другому (см. вложение). Размеры этих контуров соответствуют размерам видовых экранов на листах с учётом масштабирования. Раньше создавал один общий видовой экран в нужном масштабе, копировал на каждый лист и оставлял нужный фрагмент, устанавливая границы ВЭ по контуру из модели. И раз уж использовать для этого программу, то было бы неплохо, чтобы можно было в модели указать контур, а программа распознаёт и формирует мне лист с учётом отступов видового экрана от границ печати. Чтобы рамка там влезла, условные обозначения - вот это всё.

Или я зажрался?
Миниатюры
Нажмите на изображение для увеличения
Название: 2017-02-21_01-04-07.png
Просмотров: 108
Размер:	15.7 Кб
ID:	184016  

Последний раз редактировалось Enik, 21.02.2017 в 01:18.
Enik вне форума  
 
Непрочитано 21.02.2017, 07:46
#517
v.psk

конструктор
 
Регистрация: 14.08.2014
Псков
Сообщений: 7,097


Цитата:
Сообщение от Enik Посмотреть сообщение
я делаю раскладку листов для трассы линейного объекта.
Ужас какой-то. Хотя бы а3 делали бы, а еще лучше а3+.
Задачу решить можно блоком, в котором есть контур печати, с привязкой к этому контуру.
... хотя... я теперь понял в чем проблема...

Последний раз редактировалось v.psk, 21.02.2017 в 07:57.
v.psk вне форума  
 
Непрочитано 21.02.2017, 07:50
#518
baksconstructor


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


Цитата:
Сообщение от Enik Посмотреть сообщение
И раз уж использовать для этого программу, то было бы неплохо, чтобы можно было в модели указать контур, а программа распознаёт и формирует мне лист с учётом отступов видового экрана от границ печати. Чтобы рамка там влезла, условные обозначения - вот это всё.
БКК- большая красная кнопка, размер отступов какой, где, сколько ? и т.д.
baksconstructor вне форума  
 
Непрочитано 21.02.2017, 12:48
#519
Enik

ГИП
 
Регистрация: 07.06.2015
Сообщений: 1,254


Цитата:
Сообщение от v.psk Посмотреть сообщение
Ужас какой-то. Хотя бы а3 делали бы, а еще лучше а3+.
Это требование архитектуры для утверждаемой части раздела ППТиМ. И на картинке трасса - всего лишь 7 км. Страшно представить, как народ мучается с более протяжёнными линейными объектами...

Цитата:
Сообщение от v.psk Посмотреть сообщение
Задачу решить можно блоком, в котором есть контур печати, с привязкой к этому контуру.
Впервые слышу о таком. Где об этом можно почитать?

Цитата:
Сообщение от baksconstructor Посмотреть сообщение
БКК- большая красная кнопка, размер отступов какой, где, сколько ? и т.д.
Да тут алгоритм-то простой.
В настройках добавить пункт - отступы: слева, справа, сверху, снизу. Размерность этих отступов - единицы пространства листа (по-умолчанию - мм), умноженные на реферрентный размер/185 мм. Когда выделяешь рамкой контур ВЭ, эти значения должны добавляться к размерам области печати. Левый нижний угол области печати должен быть в точке с координатами 0,0. А левый нижний угол видового экрана должен быть смещён от 0,0 на величину отступов слева и снизу. Вроде так.

UPD. Или влоб вручную задавать для каждого листа 2 контура: область печати, исходя из которой выбирается формат, и внутри неё - очертания ВЭ. Но на мой взгляд, это сложнее. В настройках нужно будет добавить режимы: 1 - как оно сейчас есть, указание одного контура; 2 - выделение двух контуров, как я описал.

Последний раз редактировалось Enik, 21.02.2017 в 13:07.
Enik вне форума  
 
Автор темы   Непрочитано 21.02.2017, 14:10
2 | #520
bargool


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


Привет, к сожалению, разработку программы я давно забросил, у меня сейчас нет автокада в пределах досягаемости. Т.е. пересобрать под новую версию акада(если вдруг перестанет работать, хотя пока должно) я могу, но дорабатывать уже не буду.
Если кто-то захочет развивать дальше - я буду только рад, проконсультирую если что. Если в репе на гитхабе чего-то не хватает для сборки (где-то было сообщение на эту тему) - выложу.
__________________
Алексей
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