Страница 1 из 1
Умеет ли CATIA, через VBA, работать с текстовыми файлами?

Добавлено:
20 апр 2012 00:40
likemilk
Умеет ли CATIA, через VBA, работать с текстовыми файлами?
Команда Open почему то не срабатывает.
И можно ли обращаться к таблице базы данных?
Re: Умеет ли CATIA, через VBA, работать с текстовыми файлами

Добавлено:
20 апр 2012 13:31
file
Сам по себе VBA имеет инструменты для работы с текстовыми файлами. Например:
- Код: Выделить всё
Sub Test()
Open "c:\file.txt" For Output As #1
Print #1, "Этот текст будет записан в текстовый файл"
Close #1
Open "c:\file.txt" For Input As #1
Dim s As String
Input #1, s
MsgBox s
Close #1
End Sub
А что касается CATIA, то все зависит от конкретной решаемой задачи

Re: Умеет ли CATIA, через VBA, работать с текстовыми файлами

Добавлено:
20 апр 2012 15:11
Virty
Здравствуйте, коллеги.
Работу с текстовыми файлами обсуждали с уважаемым ShaytanTruba в конце 2009 года.
Возможно, он добавит свои замечания.
Итак, CATScript может читать и записывать внешние данные, по этому вопросу есть материал в разделе справки "Infrastructure - Accessing Files and Folders".
Данные могут находиться как в произвольной папке, так и в структуре каталогов CATIA - доступ к ним через "CATIA.SystemService.Environ", например: CATIA.SystemService.Environ("CATTemp") - временная папка.
Полагаю, что структура каталогов CATIA - это лучший вариант в случае коллективной работы.
Самый интересный вопрос - это структура данных.
Для текстового файла условия могут быть такими:
а) кодировка - ANSI, с юникодом могут быть сюрпризы, требуется дополнительное тестирование;
б) каждая переменная пишется с новой строки - для точного чтения с помощью "FileStream.ReadLine";
в) запись в строке имеет вид [имя_переменной] = [значение] - для последующего размещения в двухмерном массиве данных.
В моём примере данные читаются из файла в двухмерный массив.
Далее, зная имя переменной, можно отыскать её значение с помощью метода SearchDataByName("VariableName") и вывести его в окне сообщения или присвоить нужному текстовому полю.
Re: Умеет ли CATIA, через VBA, работать с текстовыми файлами

Добавлено:
20 апр 2012 16:02
Wireless_Fidelity
Здравствуйте.
Automation предоставляет CATscript'ам класс для работы с файлами CATIA.FileSystem. По функционалу он похож на класс FileSystemObject в VBA. Если же хочется иметь ровно тот же функционал, что и в VBA, то объект соответствующего класса можно получить через CreateObject("Scripting.FileSystemObject").
Re: Умеет ли CATIA, через VBA, работать с текстовыми файлами

Добавлено:
20 апр 2012 23:20
likemilk
file писал(а):Сам по себе VBA имеет инструменты для работы с текстовыми файлами. Например:
- Код: Выделить всё
Sub Test()
Open "c:\file.txt" For Output As #1
Print #1, "Этот текст будет записан в текстовый файл"
Close #1
Open "c:\file.txt" For Input As #1
Dim s As String
Input #1, s
MsgBox s
Close #1
End Sub
А что касается CATIA, то все зависит от конкретной решаемой задачи

Этот пример я тоже нашел

в экселе всё работает а вот в кати не хочет

Задача: пытаюсь средствами VBA организовать подобие PDM системы. Пока нахожусь на этапе разработки алгоритмов обработки данных. Уже имеется некое количество макросов, для работы которых требуется получать вводные данные, пока из таблицы (экселевской), методом Copy/Paste. Давно хочу автоматизировать данный этап. Из экселя выгрузить данные просто, а вот в кати их загрузить не получается.
Дальше планирую перевести на уровень обращения к общей базе данных. Но это произойдет еще не скоро... процесс написания логики построения SQL-запросов не быстрый. Потому, пока только интересуюсь сможет ли кати обращаться к БД?
Re: Умеет ли CATIA, через VBA, работать с текстовыми файлами

Добавлено:
20 апр 2012 23:45
file
VBA в CATIA ничем не отличается от VBA любого другого Windows-приложения, поэтому все работает. Проверено

Re: Умеет ли CATIA, через VBA, работать с текстовыми файлами

Добавлено:
21 апр 2012 00:08
zerganalizer
И что в такой PDM хранить можно будет? Читать кастомные данные и облака точек вполне можно, как и писать результаты, но чтоб PDM...
Re: Умеет ли CATIA, через VBA, работать с текстовыми файлами

Добавлено:
21 апр 2012 00:18
Wireless_Fidelity
На COE, да и просто в интернете достаточно много примеров передачи данных в CATIA из Excel и наоборот.
PDM-систему на макросах не построишь хотя бы потому, что она будет завязана на необходимости эти макросы запускать, автоматический запуск возможен только через реакции, которые еще нужно подключить к каждому документу. Иными словами, на выходе будет хромоножка на костылях, падающая от каждого неверного шага, а всё из-за низкого уровня интеграции. Конечно, и ей можно пользоваться, но зачем тогда в качестве САПРа брать такую сложную систему как CATIA... Это как пальба из пушки по воробьям одновременно с изобретением велосипеда, потому как полноценная БД у пятой кати уже есть, называется Smarteam.
Лучше скажите, что хотите в итоге получить, а мы подскажем, как это проще реализовать

Re: Умеет ли CATIA, через VBA, работать с текстовыми файлами

Добавлено:
21 апр 2012 23:37
zerganalizer
Я не представляю - как катийные данные можно выгрузить в чужую базу данных кроме как файлами, в чем нет смысла, ибо человек явно хочет иметь возможность подгрузки и обновления данных, записанных в нейтральном текстовом формате, вроде моей UDF, ассоциативной массиву точек из внешнего файла. Мне почему-то кажется, что речь скорее о создании нейтрального формата из обычной базы, из файлов которого катя могла бы автоматом генерировать некую геометрию, возможно, из Бентли или Интерграфа. Я сильно ошибся?
Re: Умеет ли CATIA, через VBA, работать с текстовыми файлами

Добавлено:
22 апр 2012 17:20
likemilk
Задача моего приложения реализованного в виде набора макросов очень простая и очень нужная. Мне нужна база данных хранящая инфу о взаимосвязях между большим количеством документов (пока она реализована в экселе). Основная задача приложения, это помощь в управлении с большим объемом данных (речь про множество версий документов появляющихся в процессе проектирования). Задачи такие как выпуск ревизий документов или целых проектов, экспорт данных в иные форматы для передачи заказчику и генерация спецификаций или списков, например литых деталей для запуска в производство. Сам процесс моделирования полностью задача пользователя. Нет такой задачи как получать геометрию деталей при помощи макросов. Как я уже сказал, передача данных через текстовый формат не конечная цель, а всего лишь шаг на пути создания пригодного приложения. Сразу такую сложную систему не построишь. вот я и пытаюсь по чуть чуть. Сперва занимался проектированием, потом записал макрос для экспорта файлов, сейчас уже оброс кучей макросов помогающих избегать рутинной работы. Задача может и амбициозная но я вижу что её можно реализовать при помощи VBA. Ведь любую готовую PDM-систему так или иначе придется настраивать под конкретные нужды. Я понимаю что когда объем данных превысит определённый лимит, подобное приложение в конечном итоге станет не способным его обрабатывать. И после этого уже придется заниматься серьезным программированием. Но это случится еще не скоро, а когда случится уже будет отработана логика, которую нужно будет повторить, а не придумывать заново.
Если знаете ресурсы где можно посмотреть примеры программирования VBA для CATIA, поделитесь ссылкой. Заранее благодарен.
И если есть ресурс где можно найти документацию с описанием программирования на VBA для CATIA, также буду благодарен

До сих пор я программировал опираясь только на запись макросов и уроки по VBA для эксель. Но к сожалению этого мало. И к сожалению не все действия CATIA записывает в макрос, некоторые пропускает, например такие как изменение свойств (Properties) некоторых объектов.
Re: Умеет ли CATIA, через VBA, работать с текстовыми файлами

Добавлено:
22 апр 2012 17:30
file
Наиболее полное описание объектной модели CATIA V5 изложено в intel_a\code\bin\V5Automation.chm. Но внятных примеров там мало. Поэтому приходится додумывать какую функцию применить, чтобы получить необходимый результат.
Re: Умеет ли CATIA, через VBA, работать с текстовыми файлами

Добавлено:
22 апр 2012 21:57
likemilk
file писал(а):Наиболее полное описание объектной модели CATIA V5 изложено в intel_a\code\bin\V5Automation.chm. Но внятных примеров там мало. Поэтому приходится додумывать какую функцию применить, чтобы получить необходимый результат.
Очень признателен. Буду разбираться.
Re: Умеет ли CATIA, через VBA, работать с текстовыми файлами

Добавлено:
26 апр 2012 21:21
likemilk
Не понимаю почему, но команда:
- Код: Выделить всё
Open "file.txt" For Input As #1
не работает (выдает ошибку) если она используется в скриптах (файлах вида *.catvbs), в проектах же (*.catvba) все работает без проблем.
Можно ли как то наладить её использование именно в скриптах (*.catvbs)? Может подключить какую библиотеку нужно чтоб заработало?
И еще заметил одну особенность скриптов (*.catvbs) в отличие от проектов (*.catvba) и скриптов (*.CATScript). Если не ошибаюсь, в них можно записать только одну процедуру(Sub) и нельзя использовать дополнительные функции(Function). Так ли это? Или есть быть может есть особый синтаксис или опять же библиотек не хватает?
Тогда в чём разница между *.catvbs и *.CATScript ?
Re: Умеет ли CATIA, через VBA, работать с текстовыми файлами

Добавлено:
27 апр 2012 04:33
Wireless_Fidelity
CATScript это VBScript с подключенными библиотеками Automation.
Зачем Вам нужен именно Open? Для работы с текстовыми файлами лучше подходит FileSystemObbject и получаемые через него объекты класса File.
Re: Умеет ли CATIA, через VBA, работать с текстовыми файлами

Добавлено:
27 апр 2012 16:21
likemilk
Open - по тому, что пока только с ним разобрался. Не сомневаюсь что FileSystemObbject представляет больше возможностей но под рукой нет примера как им пользоваться.
Re: Умеет ли CATIA, через VBA, работать с текстовыми файлами

Добавлено:
27 апр 2012 17:25
Wireless_Fidelity
В интернете их тысячи. Ни за что не поверю, что первая страница выдачи гугла не содержит подробного примера. Даже если искать с опечаткой (две bb в слове Object), всё равно примеров масса.
Re: Умеет ли CATIA, через VBA, работать с текстовыми файлами

Добавлено:
23 май 2012 23:36
likemilk
Необходимость в использовании Open отпала, после того как освоил адресацию к CATIA напрямую из Excel.
FileSystemObbject - примеры нашлись. Надеюсь что получится использовать его в макросе для резервного копирования рабочих файлов.