ADN Club > Inventor API

Запись в фиелды

(1/4) > >>

filat:
В чертеже есть коллекция фиелдов Dim sBoxs As Inventor.TextBoxes, в которой больше четырех десятков записей.
Как правильно сделать обращение для быстрой передачи данных?
Сейчас использую подход For Each  и сравнение имен - для такого количества получается долгий процесс! Есть способ его оптимизировать?

filat:
Т.е. выполнить прямое обращение к конкретному фиелду по Имени и выполнить запись.

mikazakov:

--- Цитата: filat от 08-01-2021, 10:50:17 ---для такого количества получается долгий процесс! Есть способ его оптимизировать?
--- Конец цитаты ---
А чё долго то? Заверни в транзакцию через чендж процессор. Ты Эддин написал? Эддин должен быстро работать.

filat:
Оно, конечно, все отновительно... Да, AddIn, идет несколько секунд...

--- Код - vb.net [Выбрать] ---Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click        Dim sSheet As Sheet        sSheet = dDoc.Sheets.Item(1)        Dim sBoxs As Inventor.TextBoxes        Dim sBox As Inventor.TextBox        sBoxs = sSheet.TitleBlock.Definition.Sketch.TextBoxes        For Each sBox In sBoxs ' заполнение строк окна формы            If sBox.Text = "OBOZ" Then                Call sSheet.TitleBlock.SetPromptResultText(sBox, tbOboz.Text)            ElseIf sBox.Text = "CHEC" Then                Call sSheet.TitleBlock.SetPromptResultText(sBox, tbChec.Text)            ElseIf sBox.Text = "NCON" Then                Call sSheet.TitleBlock.SetPromptResultText(sBox, tbNcon.Text)            ElseIf sBox.Text = "TCON" Then                Call sSheet.TitleBlock.SetPromptResultText(sBox, tbTcon.Text)                'ElseIf sBox.Text = "Number of sheets" Then                '    Call sSheet.TitleBlock.SetPromptResultText(sBox, tbPags.Text)            ElseIf sBox.Text = "IZME" Then                Call sSheet.TitleBlock.SetPromptResultText(sBox, tbIzme.Text)            ElseIf sBox.Text = "DESI" Then                Call sSheet.TitleBlock.SetPromptResultText(sBox, tbDesi.Text)            ElseIf sBox.Text = "APPR" Then                Call sSheet.TitleBlock.SetPromptResultText(sBox, tbAppr.Text)            ElseIf sBox.Text = "APPD" Then                Call sSheet.TitleBlock.SetPromptResultText(sBox, tbAppd.Text)            ElseIf sBox.Text = "NCOD" Then                Call sSheet.TitleBlock.SetPromptResultText(sBox, tbNcod.Text)            ElseIf sBox.Text = "ADDF" Then                Call sSheet.TitleBlock.SetPromptResultText(sBox, tbAddf.Text)            ElseIf sBox.Text = "CHED" Then                Call sSheet.TitleBlock.SetPromptResultText(sBox, tbChed.Text)            ElseIf sBox.Text = "TCOD" Then                Call sSheet.TitleBlock.SetPromptResultText(sBox, tbTcod.Text)            ElseIf sBox.Text = "DESD" Then                Call sSheet.TitleBlock.SetPromptResultText(sBox, tbDesd.Text)            ElseIf sBox.Text = "ADDB" Then                Call sSheet.TitleBlock.SetPromptResultText(sBox, tbAddb.Text)            ElseIf sBox.Text = "ADDD" Then                Call sSheet.TitleBlock.SetPromptResultText(sBox, tbAddd.Text)            ElseIf sBox.Text = "NDOC" Then                Call sSheet.TitleBlock.SetPromptResultText(sBox, tbNdoc.Text)            ElseIf sBox.Text = "IZMD" Then                Call sSheet.TitleBlock.SetPromptResultText(sBox, tbIzmd.Text)            ElseIf sBox.Text = "SCAL" Then                Call sSheet.TitleBlock.SetPromptResultText(sBox, tbScal.Text)            ElseIf sBox.Text = "MASS" Then                Call sSheet.TitleBlock.SetPromptResultText(sBox, tbMass.Text)            ElseIf sBox.Text = "LITE" Then                Call sSheet.TitleBlock.SetPromptResultText(sBox, tbLite.Text)            ElseIf sBox.Text = "INDE" Then                'Call sSheet.TitleBlock.SetPromptResultText(sBox, tbInde.Text)            ElseIf sBox.Text = "L2" Then                Call sSheet.TitleBlock.SetPromptResultText(sBox, tbL2.Text)            ElseIf sBox.Text = "PERV" Then                Call sSheet.TitleBlock.SetPromptResultText(sBox, tbPerv.Text)            ElseIf sBox.Text = "ALIT" Then                Call sSheet.TitleBlock.SetPromptResultText(sBox, tbAlit.Text)            ElseIf sBox.Text = "ADOC" Then                Call sSheet.TitleBlock.SetPromptResultText(sBox, tbAdoc.Text)            ElseIf sBox.Text = "L3" Then                Call sSheet.TitleBlock.SetPromptResultText(sBox, tbL3.Text)            ElseIf sBox.Text = "TDOC" Then                Call sSheet.TitleBlock.SetPromptResultText(sBox, tbTdoc.Text)            ElseIf sBox.Text = "NAIM1" Then                Call sSheet.TitleBlock.SetPromptResultText(sBox, tbNaim.Lines(0))            ElseIf sBox.Text = "NAIM2" Then                Try                    Call sSheet.TitleBlock.SetPromptResultText(sBox, tbNaim.Lines(1))                Catch ex As Exception                End Try            ElseIf sBox.Text = "NAIM3" Then                Try                    Call sSheet.TitleBlock.SetPromptResultText(sBox, tbNaim.Lines(2))                Catch ex As Exception                End Try            ElseIf sBox.Text = "MATE1" Then                Call sSheet.TitleBlock.SetPromptResultText(sBox, tbMate.Lines(0))            ElseIf sBox.Text = "MATE2" Then                Try                    Call sSheet.TitleBlock.SetPromptResultText(sBox, tbMate.Lines(1))                Catch ex As Exception                End Try            ElseIf sBox.Text = "MATE3" Then                Try                    Call sSheet.TitleBlock.SetPromptResultText(sBox, tbMate.Lines(2))                Catch ex As Exception                End Try            ElseIf sBox.Text = "FIRM1" Then                Call sSheet.TitleBlock.SetPromptResultText(sBox, tbFirm.Lines(0))            ElseIf sBox.Text = "FIRM2" Then                Try                    Call sSheet.TitleBlock.SetPromptResultText(sBox, tbFirm.Lines(1))                Catch ex As Exception                End Try            ElseIf sBox.Text = "FIRM3" Then                Try                    Call sSheet.TitleBlock.SetPromptResultText(sBox, tbFirm.Lines(2))                Catch ex As Exception                End Try            ElseIf sBox.Text = "ICUS" Then                Call sSheet.TitleBlock.SetPromptResultText(sBox, tbIcus.Text)            ElseIf sBox.Text = "SPAR" Then                Call sSheet.TitleBlock.SetPromptResultText(sBox, tbSpra.Text)            ElseIf sBox.Text = "INPO" Then                Call sSheet.TitleBlock.SetPromptResultText(sBox, tbInpo.Text)            ElseIf sBox.Text = "INPD" Then                Call sSheet.TitleBlock.SetPromptResultText(sBox, tbInpd.Text)            ElseIf sBox.Text = "INVZ" Then                Call sSheet.TitleBlock.SetPromptResultText(sBox, tbInvz.Text)            ElseIf sBox.Text = "INDU" Then                Call sSheet.TitleBlock.SetPromptResultText(sBox, tbIndu.Text)            ElseIf sBox.Text = "INDD" Then                Call sSheet.TitleBlock.SetPromptResultText(sBox, tbIndd.Text)            ElseIf sBox.Text = "IZML" Then                Call sSheet.TitleBlock.SetPromptResultText(sBox, tbIzml.Text)                'ElseIf sBox.Text = "PAGE" Then                '    Call sSheet.TitleBlock.SetPromptResultText(sBox, tbMate1_.Text)            End If        Next        Try            GTNTitle1.End()        Catch ex As Exception        End Try        Me.Close()    End Sub

mikazakov:

--- Цитата: filat от 08-01-2021, 11:34:04 ---Try
            GTNTitle1.End()
        Catch ex As Exception
        End Try
--- Конец цитаты ---
Что вообще такое? Ты транзакцию здесь завершаешь? А как транзакцию объявлял?

По поводу вот этого:

--- Цитата: filat от 08-01-2021, 11:34:04 ---Try
                    Call sSheet.TitleBlock.SetPromptResultText(sBox, tbNaim.Lines(1))
                Catch ex As Exception
                End Try
--- Конец цитаты ---
Сколько Try-Catch у тебя срабатывает по исключению?

Навигация

[0] Главная страница сообщений

[#] Следующая страница

Перейти к полной версии