ADN Club > Inventor API
Запись в фиелды
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 у тебя срабатывает по исключению?
Навигация
Перейти к полной версии