Заполнение штампа чертежа (TITLE BLOCK)

Программирование для CATIA.

Заполнение штампа чертежа (TITLE BLOCK)

Сообщение trn09 » 28 апр 2015 13:43

Если в крадце, то:
Необходимо заполнить TITLE BLOCK (штамп) чертежа много-много раз, используя задание в виде EXCEL файла.
Как можно атоматизировать данный процесс? Может кто подскажет как написать макрос по заполнению штампа чертежа (фамилии, телефоны инженеров, даты) из соответствующих ячеек таблицы EXCEL?
trn09
Новичок
Новичок
 
Сообщения: 13
Зарегистрирован: 28 апр 2015 13:33

Re: Заполнение штампа чертежа (TITLE BLOCK)

Сообщение trn09 » 28 сен 2015 22:59

Люди помогите.
Возможно я не очень внятно описал проблему. Неужели никто не сможет даже подтолкнуть на мысль в нужном направлении....
На сколько я вижу, это не должно быть очень сложно, но уже пол-года бьюсь и не могу найти решения.
Через формулы можно форматировать практически все параметры штампа чертежа. Но как это сделать макросом?
Как изменить параметр "DrawingForm\SheetID1\RevBlock\Rev2Chg1ZD1Desc" на значение ячейки А1 открытого EXCEL файла?
trn09
Новичок
Новичок
 
Сообщения: 13
Зарегистрирован: 28 апр 2015 13:33

Re: Заполнение штампа чертежа (TITLE BLOCK)

Сообщение Dna » 29 сен 2015 12:43

Сам ленивый, но с тобой, дружище, не сравнюсь! :-D
За 5 месяцев так дело и не продвинулось?
Ну хоть бы местный поиск по форуму напряг по слову Excel. Уже можно много интересного найти.
Или ждем дядю с готовым решением? ;-)
Аватара пользователя
Dna
Новичок
Новичок
 
Сообщения: 2
Зарегистрирован: 29 сен 2015 12:22

Re: Заполнение штампа чертежа (TITLE BLOCK)

Сообщение trn09 » 29 сен 2015 16:08

Или хотя бы подскажите англоязычные форумы, где можно почитать про макросы для CATIA
trn09
Новичок
Новичок
 
Сообщения: 13
Зарегистрирован: 28 апр 2015 13:33

Re: Заполнение штампа чертежа (TITLE BLOCK)

Сообщение Dna » 30 сен 2015 21:50

Для начала здесь в форме поиска набери Excel. За иностранным к гуглю "Catia+VBA" и производные запросы :)
Готовое - за денюшку только

URL: http://www.youtube.com/watch?v=b1KNcumrXZA
Аватара пользователя
Dna
Новичок
Новичок
 
Сообщения: 2
Зарегистрирован: 29 сен 2015 12:22

Re: Заполнение штампа чертежа (TITLE BLOCK)

Сообщение Wireless_Fidelity » 01 окт 2015 09:36

Зравствуйте.

Как Вы создаете штамп?
Для редактирования параметров на чертеже можно использовать следующий код:

Код: Выделить всё
Sub CATMain()
  Dim doc as DrawingDocument
  Set doc = CATIA.ActiveDocument

  doc.Parameters.Item("Rev2Chg1ZD1Desc").ValuateFromString "Новый текст"
End Sub


Чтение из ячейки A1 первого листа книги Excel:
Код: Выделить всё
Sub Main()
  Dim oExcel As Object
  Set oExcel = CreateObject("Excel.Application")

  Dim wb As Object
  Set wb = oExcel.Workbooks.Open("C:\data.xls")

  MsgBox wb.Worksheets(1).Cells(1,1).Text

  oExcel.Quit
  Set oExcel = Nothing
End Sub
Аватара пользователя
Wireless_Fidelity
Активный участник
Активный участник
 
Сообщения: 394
Зарегистрирован: 10 апр 2010 00:11

Re: Заполнение штампа чертежа (TITLE BLOCK)

Сообщение trn09 » 01 окт 2015 21:19

Wireless_Fidelity писал(а):Зравствуйте.

Как Вы создаете штамп?

Я создаю штамп следующим образом: Edit->Sheet Background->Панель [Drawing]-> Frame and Title Block
И там уже в окошках вбиваю необходимые фамилии, телефоны и т.д.
Огромное спасибо за помощь.
Получилось открыть файл и вбить информацию из ячеек в нужные поля.
Это уже очень сильно облегчит жизнь.
Но не могли бы подсказать, как считать информацию из ячейки активного листа уже открытой книги?
trn09
Новичок
Новичок
 
Сообщения: 13
Зарегистрирован: 28 апр 2015 13:33

Re: Заполнение штампа чертежа (TITLE BLOCK)

Сообщение Wireless_Fidelity » 02 окт 2015 11:02

Информацию о программировании на VBA для Excel следует искать на профильных форумах, например, здесь.

Тем не менее, отвечу на вопрос:
Код: Выделить всё
Sub Main()
    Dim oExcel As Object
    Set oExcel = GetObject(, "Excel.Application")

   MsgBox oExcel.ActiveWorkbook.ActiveSheet.Cells(1,1).Text
End Sub


Если же требуется прочитать содержимое конкретной книги (в один момент у пользователя может быть открыто несколько книг Excel), а также известен полный путь к ней, то можно писать так:
Код: Выделить всё
Sub Main()
    Dim oWorkbook As Object
    Set oWorkbook = GetObject("C:\Temp\book.xls", "Excel.Application")

   MsgBox oWorkbook.ActiveSheet.Cells(1,1).Text
End Sub


В целом, правильнее не завязываться на текущую активную книгу, а принудительно читать книгу с определенным именем. Кроме того, обращение к ячейкам по их адресу чревато проблемами при изменении структуры книги Excel. Поэтому я рекомендую воспользоваться возможностью именования ячеек (когда диапазону ячеек в книге присваивается имя, которое становится псевдонимом этого диапазона) и в коде обращаться к ячейкам уже по имени.
Аватара пользователя
Wireless_Fidelity
Активный участник
Активный участник
 
Сообщения: 394
Зарегистрирован: 10 апр 2010 00:11

Re: Заполнение штампа чертежа (TITLE BLOCK)

Сообщение trn09 » 02 окт 2015 23:54

Wireless_Fidelity писал(а):

Большое спасибо за оказанную помощь!
Несколько месяцев я мечтал об этом. :dash2:
Указывать конкретную книгу было бы очень неудобно, т.к. работа от заказчика приходит всегда в разные папки (разные месяцы), разные названия и т.д.
С активной книгой всё прекрасно получилось.
Ещё раз большое спасибо.

Начал разбираться с заполнением REVBLOCKa. С ним вроде всё так же просто, но он сразу не обнавляется. Обновляется только после принудительного REDRAW_FORM.
Есть какая нибудь волшебная команда, что бы сделать REDRAW?
trn09
Новичок
Новичок
 
Сообщения: 13
Зарегистрирован: 28 апр 2015 13:33

Re: Заполнение штампа чертежа (TITLE BLOCK)

Сообщение Wireless_Fidelity » 04 окт 2015 03:17

Когда Вы строите рамку через меню CATIA, Вы фактически запускаете скрипт, в котором каждому действию (создание рамки, обновление, изменение) соответствует определенная функция. Подробнее об этом есть в руководстве CATIA. Но главное - это то, что скрипт может быть отредактирован под Ваши конкретные нужды. Поэтому я не могу, не видя сурипта, понять, как именно работает упомянутый REDRAW_FORM, и что вообще это такое.
Аватара пользователя
Wireless_Fidelity
Активный участник
Активный участник
 
Сообщения: 394
Зарегистрирован: 10 апр 2010 00:11

Re: Заполнение штампа чертежа (TITLE BLOCK)

Сообщение trn09 » 05 окт 2015 12:52

Так и не удалось выяснить какой скрипт запускает этот загадочный REDRAW.
Изображение
Попробовал воспользоваться "Macro -> Start Recording..."
В итоге он написал код на <10000 строк, запустить который он не может (Procedure too large)

Катийный хелп говорит, что вроде всё можно редактировать и менять, но разобраться на данный момент не получилось:
Spoiler :
About customizing frames and title blocks using macros
To customize frames and title blocks using macros, you must be familiar with Visual Basic. Refer to the Automation Documentation for more information.

Specifying the location of frame and title block macros
To know where frame and title block macros are located, go to Tools> Options> Mechanical Design> Drafting> Layout tab. The field available in the Background View section indicates the path to the directory containing these macros. You can add new macros in the specified directory, and/or you can change this location by editing the field.

Creating preview images
You can create a preview image of the frame and title block that will be displayed in the Manage Frame and Title Block dialog box. When saving this preview image this, make sure you do the following:

Save the preview image as a bitmap file (.bmp extension) bearing the same name as the macro. For example, if your macro is called CustomMacro.CATScript, then the preview image should be named CustomMacro.bmp.

Save the image in the directory which contains the macros. For example, if your macro CustomMacro.CATScript is located in the CustomMacros directory, then the preview image CustomMacro.bmp must also be located in the CustomMacros directory.

Modifying existing actions or adding new actions
Available actions for a given macro are listed in the Action list in the Manage Frame and Title Block dialog box. You may modify existing actions by modifying existing Sub procedures.

You can also add new actions by defining new Sub procedures. There are a couple of things you need to remember when doing this:

All Sub procedures must be prefixed using CATDrw_: for example, Sub CATDrw_CustomProcedure().

If no argument is associated to the procedure, for example: Sub CATDrw_CustomProcedure (): the sub procedure is called when the user selects the corresponding action.

If one argument of type CATIABase is associated to the procedure, for example: Sub CATDrw_CustomProcedure (CATIABase sheet): the argument is set to the current sheet.

Modifying the name of a style/action
In the Manage Frame and Title Block dialog box, the names displayed in the Style of title block and Action lists can be modified.

By default, the name of a style is the name of the corresponding CATScript file (without extension). By default, the names of the related actions are those written in the CATScript file (without the CATDrw prefix).

Example: in a CATScript file, a function called CATDrw_XXXX creates an action called XXXX in the Action list.

To create a customized name for a style or action, proceed as follow:

Edit the FrameAndTitleBlock.CATNls file located in the resources/msgcatalog folder.

Add one of these command lines:
For a style:
Drawing_Titleblock_StyleOfTitleBlock="Customized name";

For an action:
Drawing_Titleblock_StyleOfTitleBlock.CATDrw_NameOfAction="Customized name";


Если есть какие нибудь идеи, буду крайне признателен.
trn09
Новичок
Новичок
 
Сообщения: 13
Зарегистрирован: 28 апр 2015 13:33

Re: Заполнение штампа чертежа (TITLE BLOCK)

Сообщение VladimirK » 05 окт 2015 16:43

Здравствуйте!
Как уже написал Wireless_Fidelity, выбирая в этом окне стиль основной надписи (Style of Title Block) и необходимое действие (Action), Вы по сути запускаете на выполнение процедуру в скрипте CATIA.
В приведённом Вами тексте Help'а как раз и написано про вызов процедур из скрипта и возможность самостоятельного создания своих скриптов и процедур для действий.
Судя именно по Вашему скриншоту видно следующее:
на вашем компьютере в папке с установленной CATIA, например, в C:\Program Files\Dassault Systemes\B19\win_b64\VBScript\FrameTitleBlock\ должен быть скрипт с именем вроде Boeing_Drawing_Forms.CATScript. В этом скрипте должны быть процедуры, соответствующие названиям действий (Action), только с префиксами "CATDrw_".
Соответственно, искомая Вами процедура для действия Redraw_Form должна называться Sub CATDrw_Redraw_Form(...).
Точное имя скрипта и вызываемых методов посмотрите в файле <Путь установки CATIA>\resources\msgcatalog\FrameAndTitleBlock.CATNls.
Поищите этот скрипт в подпапке с установленной CATIA \VBScript\FrameTitleBlock\ и отредактируйте процедуру CATDrw_Redraw_Form под Ваши нужды.
VladimirK
Новичок
Новичок
 
Сообщения: 63
Зарегистрирован: 15 ноя 2011 21:44

Re: Заполнение штампа чертежа (TITLE BLOCK)

Сообщение Wireless_Fidelity » 05 окт 2015 20:00

VladimirK, спасибо за объяснения, я бы с телефона ни в жизни это не набрал :)
Аватара пользователя
Wireless_Fidelity
Активный участник
Активный участник
 
Сообщения: 394
Зарегистрирован: 10 апр 2010 00:11

Re: Заполнение штампа чертежа (TITLE BLOCK)

Сообщение trn09 » 07 окт 2015 12:27

VladimirK писал(а):Здравствуйте!
Как уже написал Wireless_Fidelity, выбирая в этом окне стиль основной надписи (Style of Title Block) и необходимое действие (Action), Вы по сути запускаете на выполнение процедуру в скрипте CATIA.
В приведённом Вами тексте Help'а как раз и написано про вызов процедур из скрипта и возможность самостоятельного создания своих скриптов и процедур для действий.
Судя именно по Вашему скриншоту видно следующее:
на вашем компьютере в папке с установленной CATIA, например, в C:\Program Files\Dassault Systemes\B19\win_b64\VBScript\FrameTitleBlock\ должен быть скрипт с именем вроде Boeing_Drawing_Forms.CATScript. В этом скрипте должны быть процедуры, соответствующие названиям действий (Action), только с префиксами "CATDrw_".
Соответственно, искомая Вами процедура для действия Redraw_Form должна называться Sub CATDrw_Redraw_Form(...).
Точное имя скрипта и вызываемых методов посмотрите в файле <Путь установки CATIA>\resources\msgcatalog\FrameAndTitleBlock.CATNls.
Поищите этот скрипт в подпапке с установленной CATIA \VBScript\FrameTitleBlock\ и отредактируйте процедуру CATDrw_Redraw_Form под Ваши нужды.


Спасибо большое за крайне подробный ответ.
Всё нашёл, со всем разобрался. =)
Теперь буду разбираться как эти скрипты работают и как их переделать под собственные нужды.
trn09
Новичок
Новичок
 
Сообщения: 13
Зарегистрирован: 28 апр 2015 13:33

Re: Заполнение штампа чертежа (TITLE BLOCK)

Сообщение VladimirK » 07 окт 2015 12:50

Здравствуйте,
trn09, Wireless_Fidelity, пожалуйста, рад был помочь.
VladimirK
Новичок
Новичок
 
Сообщения: 63
Зарегистрирован: 15 ноя 2011 21:44

Re: Заполнение штампа чертежа (TITLE BLOCK)

Сообщение trn09 » 20 окт 2015 10:29

Wireless_Fidelity писал(а):Зравствуйте.

Как Вы создаете штамп?
Для редактирования параметров на чертеже можно использовать следующий код:

Код: Выделить всё
Sub CATMain()
Dim doc as DrawingDocument
Set doc = CATIA.ActiveDocument

doc.Parameters.Item("Rev2Chg1ZD1Desc").ValuateFromString "Новый текст"
End Sub



Подскажите, а как можно создать этот параметр?
trn09
Новичок
Новичок
 
Сообщения: 13
Зарегистрирован: 28 апр 2015 13:33

Re: Заполнение штампа чертежа (TITLE BLOCK)

Сообщение Wireless_Fidelity » 21 окт 2015 09:52

Вручную параметры добавляются через команду "Параметры" (кнопка f(x))

Если программно, то в примере выше:
Код: Выделить всё
Dim param as StrParam
Set param = doc.Parameters.CreateString("Rev2Chg1ZD1Desc", "Новый текст")
Аватара пользователя
Wireless_Fidelity
Активный участник
Активный участник
 
Сообщения: 394
Зарегистрирован: 10 апр 2010 00:11

Re: Заполнение штампа чертежа (TITLE BLOCK)

Сообщение tikito » 23 май 2016 21:16

в момент когда я в чертеже выбираю не весь парт а какое-то боди или геомерический сет макро не тянет пропертис с парта. кода выбран весь парт всё олично. вот кусок кода в VB
Код: Выделить всё
'----FILLING PART PROPERTIES----
On Error Resume Next
Dim ProductDrawn
Set ProductDrawn = DrwSheet.Views.Item(3).GenerativeBehavior.Document

'----DRAWING NUMBER----
Dim DrwNo As String
DrwNo = ProductDrawn.ReferenceProduct.UserRefProperties.Item("DRAWING No.").ValueAsString

Set MyTextDrwNo = MyDrawingViews.ActiveView.Texts.Add("DRAWING No.", 246.5, 14)
MyTextDrwNo.Name = "TitleBlock_Text_Title_8"
MyTextDrwNo.SetFontSize 0, 0, 2
MyTextDrwNo.SetFontName 0, 0, "Century Gothic (TrueType)"
MyTextDrwNo.AnchorPosition = catTopLeft
DrwTexts.GetItem("TitleBlock_Text_Title_8").Text = ProductDrawn.ReferenceProduct.UserRefProperties.Item("DRAWING No.").ValueAsString
If (DrwNo <> "") Then
Else
Set MyTextDrwNo = Texts.GetItem("TitleBlock_Text_Title_8")
VariableDrw = InputBox("DRW. No. NOT FOUND! PLEASE ENTER DRAWING NUMBER" & Chr(13) & _
                     " " & Chr(13) & _
                    "GO BACK TO PART PROPERTIES, FILL DRAWING NUMBER AND UPDATE TITLE BLOCK", "DRAWING NUMBER WARRING", "ENTER DRAWING NUMBER")
MyTextDrwNo.Text = VariableDrw
End If

Dim ProductDrawn as Document или Object не влияет. как быть?
tikito
Новичок
Новичок
 
Сообщения: 9
Зарегистрирован: 09 авг 2014 11:31

Re: Заполнение штампа чертежа (TITLE BLOCK)

Сообщение Wireless_Fidelity » 23 май 2016 23:58

Какой еще геометрический сет в чертеже? Потрудитесь выражкться более внятно и связно.
Аватара пользователя
Wireless_Fidelity
Активный участник
Активный участник
 
Сообщения: 394
Зарегистрирован: 10 апр 2010 00:11

Re: Заполнение штампа чертежа (TITLE BLOCK)

Сообщение tikito » 28 май 2016 11:54

например если я в чертеже хочу показать тоько поверхность а не весь парт.
Вложения
tikito
Новичок
Новичок
 
Сообщения: 9
Зарегистрирован: 09 авг 2014 11:31


Вернуться в CAA-RADE

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3

cron