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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > .NET > VB.Net Кто разобрался с подшивками AutoCAD, помогите экспортировать данные из подшивки!

VB.Net Кто разобрался с подшивками AutoCAD, помогите экспортировать данные из подшивки!

Ответ
Поиск в этой теме
Непрочитано 26.05.2014, 00:58 #1
VB.Net Кто разобрался с подшивками AutoCAD, помогите экспортировать данные из подшивки!
Andryleon
 
Регистрация: 22.08.2012
Сообщений: 28

Добрый день, кто разобрался в VB.Net подшивки помогите.
Как получить иерархию каталога подшивки?
есть заготовка проги:

Код:
[Выделить все]
      Dim sheetSetManager As IAcSmSheetSetMgr
        sheetSetManager = New AcSmSheetSetMgr
        ' Open a Sheet Set file
        Dim sheetSetDatabase As AcSmDatabase
        sheetSetDatabase = sheetSetManager.OpenDatabase("g:\Dropbox\ООО Гринн 98052.dst", True)
        Dim enumerator As IAcSmEnumPersist
        enumerator = sheetSetDatabase.GetEnumerator()
        Dim item As IAcSmPersist
        item = enumerator.Next()
        LockDatabase(sheetSetDatabase, True)
        Dim txt As String = "Анализ подшивки"

        Do While Not item Is Nothing
            Dim sheet As AcSmSheet = Nothing
            Dim subset As AcSmSubset = Nothing
             If item.GetTypeName() = "AcSmSheet" Then
                sheet = item
                txt = "Лист:" & vbCrLf
                txt = txt & sheet.GetName.ToString & vbCrLf
            End If
            If item.GetTypeName() = "AcSmSubset" Then
                subset = item
                txt = txt & vbCrLf & vbCrLf & "Папка:" & vbCrLf
                txt = txt & subset.GetName.ToString & vbCrLf
                Loop
             End If
             item = enumerator.Next()
        Loop
Эта прога перебирает все элементы подшивки ( листы, папки)... но вот глупый вопрос...

КАК УЗНАТЬ КАКОЙ ЛИСТ ОТНОСИТСЯ К КАКОЙ ПАПКЕ????
Просмотров: 10879
 
Непрочитано 26.05.2014, 22:37
#2
Александр Ривилис

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


Подшивки в основном прошли мимо меня. Но зато с ними разбирался Андрей Бушман. Спроси у него на форуме Сообщества программистов Autodesk в СНГ
Александр Ривилис вне форума  
 
Непрочитано 27.05.2014, 01:44
#3
Сергей812


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


Один из вариантов ( решение в лоб, как говориться):
1. Подшивка лежит в корневой папке проекта (предполагаем, что пользователей научили не копировать бездумно файлы подшивки куда попало). Тогда методом AcSmDatabase.GetFileName() получаем имя файла самой подшивки. Оттуда легко получить имя корневой папки проекта.
2. Пробегаемся по подшивке, находим листы (AcSmSheet, не забываем обрабатывать субнаборы вложенных листов AcSmSubset). Далее методом AcSmSheet.GetLayout().GetFileName() получаете имя *.dwg файла, в котором содержится Layout данного листа подшивки. Из полученного имени *.dwg получаем путь, "вычитаете" корневую папку проекта и получаете имя вложенной папки, в которой находиться файл *.dwg с данным листом.

P.S. Что-то меня терзают смутные сомнения, что

Цитата:
Сообщение от Andryleon Посмотреть сообщение
Эта прога перебирает все элементы подшивки ( листы, папки)...
поскольку не вижу нормальной обработки AcSmSubset. А точнее - вообще не вижу обработки. Получили имя субнабора листов - а листы кто будет в субнаборе обрабатывать? А если вложенные AcSmSubset? И что за конструкции:

Цитата:
Сообщение от Andryleon Посмотреть сообщение
sheet.GetName.ToString
разве метод GetName не возвращает строку сразу? И огульно блокировать БД подшивки, даже не проверив ее текущее состояние блокировки - тоже не очень хорошо. И зачем блокировать - собираетесь что-то модифицировать в БД подшивки?
Сергей812 вне форума  
 
Автор темы   Непрочитано 05.06.2014, 21:09
#4
Andryleon


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


Спасибо за ответ, Сергей812
Цитата:
Сообщение от Сергей812 Посмотреть сообщение
поскольку не вижу нормальной обработки AcSmSubset. А точнее - вообще не вижу обработки. Получили имя субнабора листов - а листы кто будет в субнаборе обрабатывать?
катали обрабатываю... все нормально...
Цитата:
Сообщение от Сергей812 Посмотреть сообщение
разве метод GetName не возвращает строку сразу?
честно говоря еще не разобрался в какой тип переменной выдает значения при Get... потому везде и перевожу, чтоб небыло ошибок...
Цитата:
Сообщение от Сергей812 Посмотреть сообщение
И зачем блокировать - собираетесь что-то модифицировать в БД подшивки?
Да, собираюсь ее изменять... Делать резервные копии альбомов, копировать альбомы в другую подшивку и всякие другие мелочи...
Andryleon вне форума  
 
Непрочитано 05.06.2014, 23:52
#5
Сергей812


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


Цитата:
Сообщение от Andryleon Посмотреть сообщение
копировать альбомы в другую подшивку и всякие другие мелочи...
Ну вот, с трудом отучаешь людей копировать подшивки с других проектов, учишь создавать по шаблону новую подшивку для каждого раздела - и тут же хотят реализовать эти же грабли программно, насколько понимаю)
Есть же методы создания подшивки по шаблону AcSmSheetSetMgr.CreateDatabase, добавления листов addSheet и импортирования ImportSheet, создания субнабора CreateSubset для последующего заполнения листами и т.д.
Да и насколько понимаю, методов работы с отображаемым в менеджере подшивок содержимым подшивки так и не появилось - т.е. в какой последовательности импортируете/вставляете листы в подшивку и субнаборы - так и будет отображаться. Т.е лучше сначала сформировать данные для заполнения подшивки вне ее - и потом сразу залить уже сформированную структуру в созданную по шаблону новую подшивку.

Последний раз редактировалось Сергей812, 06.06.2014 в 23:06.
Сергей812 вне форума  
 
Автор темы   Непрочитано 12.06.2014, 11:28
#6
Andryleon


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


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
Ну вот, с трудом отучаешь людей копировать подшивки с других проектов, учишь создавать по шаблону новую подшивку для каждого раздела - и тут же хотят реализовать эти же грабли программно, насколько понимаю)
Та нет, тут в другом дело, я не хочу копировать подшивку.... тут другая задача стоит...
Например :
Есть подшивка с большим количеством альбомов по одному объекту, и нужно определенные листы (альбомы) скопировать в другую существующую подшивку по другому объекту... Чтоб заполнились штампы в чертежах после импорта в новую подшивку... Сейчас это делается так - скопировать все файлы в новое место, переподшить все листы, перенумеровать, переназвать листы... когда это 5 листов - все ок.... а когда 100 - тогда пол дня работы, с учетом работы сервера и сети...
Либо, например, нужно СРОЧНО отправить определенные чертежи в DWG. чтоб не искать их по серверу, а просто отметил какие листы нужны в dwg и они сформировались в определенной папке... гдето так....
Andryleon вне форума  
 
Непрочитано 12.06.2014, 11:51
#7
Сергей812


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


Понятно. Т.е. простенькая система документооборота на основе подшивки. Тогда, думаю, вам поможет в какой то мере статья от Kean.
Сергей812 вне форума  
 
Автор темы   Непрочитано 12.06.2014, 13:00
#8
Andryleon


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


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
Понятно. Т.е. простенькая система документооборота на основе подшивки. Тогда, думаю, вам поможет в какой то мере статья от Kean.
да, небольшой документооборот, а также очень быстрый выпуск одинаковых объектов )) скопировал комплект - все поля подшились, штампы, инвентарные... остается только общие данные чуть подправить и на выпуск.
В принципе по такому пути и иду... но только вот у них красивые картинки, а когда реально прорабатываешь - не все так красиво.
Andryleon вне форума  
 
Непрочитано 12.06.2014, 13:24
#9
Сергей812


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


Хотите "красивостей" - делайте интерфейс на WPF и наймите дизайнера)
Сергей812 вне форума  
 
Автор темы   Непрочитано 12.06.2014, 14:23
#10
Andryleon


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


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
Хотите "красивостей" - делайте интерфейс на WPF и наймите дизайнера)
Интерфейс уже есть) А дизайн это не самое важное для работы в своем кругу )
Изображения
Тип файла: jpg Пример программы копирования листов подшивки.jpg (304.2 Кб, 507 просмотров)
Andryleon вне форума  
 
Непрочитано 12.06.2014, 14:43
#11
Сергей812


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


Всю текстовую часть и переписку тоже в dwg переводите, судя по скриншоту?
Сергей812 вне форума  
 
Автор темы   Непрочитано 12.06.2014, 14:48
#12
Andryleon


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


Та нет, просто некоторые эскизы, которые должны быть учтены при дальнейшем проектировании подшиваем...
а справа текстовое окно, для проверки ошибок выдается...
Andryleon вне форума  
 
Непрочитано 12.06.2014, 15:28
#13
Сергей812


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


У меня были мысли о "расширенной" подшивке, которая интегрирует в одно целое word, dwg и pdf - чтобы сами вставлялись шифры, фамилии и сканы подписи в штампы word и dwg, список чертежей из подшивки, список нормативки и т.д. В принципе, через Interop.Word можно делать фактически все, что и во встроенном в офис VBA. Но поскольку задача весьма трудоемкая, то было сделана полностью лишь первая часть - шаблоны dwg и word с полями. Тяжело объяснять необходимость потратить энное время/средств на организацию работы сейчас и получить эффект экономии и отдачу средств только через полгода с менеджерами, которые своими руками ни одного проекта не выпустили нормального)
Сергей812 вне форума  
 
Автор темы   Непрочитано 12.06.2014, 15:49
#14
Andryleon


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


Аналогично. Потому и решаю пока мелкие задачи. Которые ЯВНО видно... так как переподшить комплект из 90 листов - нужно гдето пол дня... а так 5 мин...
А Твою задачу я б вообще не завязывал на подшивки, скорей всего. А просто написал бы утилиту учета... которая решала б эти вопросы. так как Функционал подшивки ограничен и Word и PDF туда не завяжешь... А так создать свою прогу, по аналогу с подшивки с возможностью работы с разными файлами - реально... но опять же... время / цена...
Andryleon вне форума  
 
Непрочитано 12.06.2014, 16:46
#15
Сергей812


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


Подшивка являлась бы одной из составляющих - для управления dwg контентом. А так фамилии те же из доп. полей подшивки выдернуть, вставить в таблицу штампа в колонтитуле word, попытаться найти в заданной папке файл "%фамилия%.bmp" (картинка с подписью) - если есть, вставить в соседнюю клетку штампа. Т.е. связка: синхронизирующая утилита + подшивка как хранилище информации. PDF-ки с ТЗ и т.д. можно даже и не включать. Это самый простой и дешевый вариант.

Можно немного извратиться и сделать общий файл (тот же xml) с указанием названия и адреса объекта, базовой части шифра + список: раздел/шифр раздела/исполнитель/проверяющий (выбирается все из выпадающих списков) и дополнительную программку с полями на форме для заполнения этого xml. И за правильность этой информации тогда будет отвечать руководитель проекта, и синхронизирующая утилита будет выдергивать по имени папки раздела проекта всю нужную инфу для заполнения подшивки и вордовских документов (кроме названий самих чертежей).
Сергей812 вне форума  
 
Автор темы   Непрочитано 12.06.2014, 16:59
#16
Andryleon


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


Все можно сделать, только осталось за мелочью - сесть и сделать... ничего нереального из того, что ты написал - нет
а про подпись - совет мой в автокаде лучше не картинка а блок - по крайней мере у нас так было сделано.
Andryleon вне форума  
 
Непрочитано 12.06.2014, 17:45
#17
Сергей812


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


В автокаде в штампе динамический блок у меня сделан: фамилии и подписи полилиниями - и завязано на ручку видимости на текущий момент. Картинки - это в word вставлять) Только пока так и не понял-можно ли картинку вставить в поле в word или только текст (чтобы не лазать по колонтитулам и таблицам в нем, а забил значения в пользовательские свойства документа и обновил поля в документе). Сейчас пока только шифры в свойствах и полях реализованы в шаблонах, а также дата выпуска и стартовый номер сквозной нумерации.

А вставка шифра в пользовательское поле word, обновление полей, вставка картинок и текста непосредственно в таблицы в колонтитулы уже было опробовано на VBA в свободное от проектирование время. Думаю, что перенести на Interop.Word - это больше вопрос времени и необходимости, для Excel уже был опыт практической реализации. Так что осталось опробовать работу с пользовательскими полями в подшивке (пока как то руки не дошли до них - только со стандартными) - и минимальный функционал для реализации расширенной подшивки в наличии.. только вышестоящему начальству это неинтересно - ему бы купить оборудование на монтаж подешевле и впарить заказчику с наценкой.. а заниматься организацией проектного направления или хотя бы выделять время и средства на это - это баловство А заказчики все "борзеют" по срокам исполнения, объемам работ - но пока проектный отдел еще успевает выпускать проекты хотя бы с вменяемыми опозданиями по срокам - просто бесполезно пытаться достучаться до "мозга" руководства с подобными вещами)

----- добавлено через ~1 ч. -----
Файл AU09_SpeakerHandout_CP318-4.docx в Google поищете - попадание в яблочко по вашей теме, по моемому)
Сергей812 вне форума  
 
Автор темы   Непрочитано 16.06.2014, 16:21
#18
Andryleon


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


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
А заказчики все "борзеют" по срокам исполнения, объемам работ - но пока проектный отдел еще успевает выпускать проекты хотя бы с вменяемыми опозданиями по срокам - просто бесполезно пытаться достучаться до "мозга" руководства с подобными вещами)
Достучаться лишь можно тогда, когда сорвешь пару крупных объектов... и потом начнут задумываться "Почему же так..."
Andryleon вне форума  
 
Непрочитано 16.06.2014, 17:32
#19
Erbol2014

ТОО
 
Регистрация: 22.05.2014
Аршалы
Сообщений: 52


Offtop:
Цитата:
Сообщение от Andryleon Посмотреть сообщение
и потом начнут задумываться "Почему же так..."
Не начнут, просто найдут крайнего и всё.
Erbol2014 вне форума  
 
Непрочитано 21.09.2014, 21:25
#20
Сергей812


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


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
Только пока так и не понял-можно ли картинку вставить в поле в word или только текст
Можно - поле IncludePicture в Word, в качестве имени файла можно подставить пользовательскую переменную и заполнением штампа рулить через свойства документа + обновление полей.
Сергей812 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > .NET > VB.Net Кто разобрался с подшивками AutoCAD, помогите экспортировать данные из подшивки!

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Почему подставляются данные из другой подшивки. eleron AutoCAD 7 22.09.2012 22:31
Информация по идентификационным кодам программ в сетевых лицензиях Autodesk KSI AutoCAD 1 14.09.2009 15:59