Вопрос к знатокам iLogic

Страницы: Пред. 1 ... 40 41 42 43 44
RSS
Вопрос к знатокам iLogic, Размеры детали.
Возможно кому нибудь понадобится:
Sub Main Сравнение габарита развёртки, расчет нормы расхода на деталь, расчёт кол. гибов, расчёт длины реза ()
'Проверка наличия развёртки
  If ThisDoc.Document.ComponentDefinition.HasFlatPattern = True Then
     Сравнение
  Else
     If MessageBox.Show("В модели нет развертки. Создать?  ", "Сравнение габарита развёртки", _
              MessageBoxButtons.YesNo) = DialogResult.Yes Then
        Try
           ThisDoc.Document.ComponentDefinition.Unfold
           ThisDoc.Document.ComponentDefinition.FlatPattern.ExitEdit
           Сравнение
        Catch ex As Exception
               MessageBox.Show(ex.Message, "Ошибка создания развертки!")
        End Try
     End If  
  End If
End Sub
Sub Сравнение 'Сравнение габаритов развертки
Dim L As Integer = (5 + SheetMetal.FlatExtentsLength) 'Длина развёртки с припуском 5 мм на обработку
Dim H As Integer = (5 + SheetMetal.FlatExtentsWidth) 'Ширина развёртки с припуском 5 мм на обработку

If L>=H Then
If L >=2500 Or H >=1250  Then
MessageBox.Show("Габариты развёртки превышают габариты листа 1250х2500 мм", "Внимание")

Else
Расчёт
End If
End If
If L<H Then
If H >=2500 Or L >=1250  Then
MessageBox.Show("Габариты развёртки превышают габариты листа 1250х2500 мм", "Внимание")

Else
Расчёт
End If
End If
End Sub
Sub Расчёт 'Расчёт нормы

Dim A As Integer = 2500 'Длина листа в мм
Dim B As Integer = 1250 'Ширина листа в мм
Dim L As Integer = (5 + SheetMetal.FlatExtentsLength) 'Длина развёртки с припуском 5 мм на обработку
Dim H As Integer = (5 + SheetMetal.FlatExtentsWidth) 'Ширина развёртки с припуском 5 мм на обработку
materialDensity = ThisDoc.Document.ComponentDefinition.Material.Density ' Плотность в г/куб.см
Толщина = Parameter("Толщина") ' Толщина в мм
Dim e As Integer 'Количество деталей по длине листа
Dim n As Integer 'Количество деталей по ширине листа
Dim d As Integer 'Количество деталей на листе
Dim k As Integer 'Количество деталей на остатке по длине листа
Dim c As Integer 'Количество деталей на остатке по ширине листа
Dim z As Integer 'Количество деталей на листе при горизонтальной раскладке
Dim e1 As Integer 'Количество деталей по длине листа
Dim n1 As Integer 'Количество деталей по ширине листа
Dim k1 As Integer 'Количество деталей на остатке по длине листа
Dim c1 As Integer 'Количество деталей на остатке по ширине листа
Dim z1 As Integer 'Количество деталей на листе при вертикальной раскладке

'Длина детали по длине листа
e = Floor(A/L)
n = Floor(B/H)
k = Floor((A-L*e)/H)
c = Floor(B/L)
z = e*n+k*c
'Длина детали по ширине листа
e1 = Floor(A/H)
n1 = Floor(B/L)
k1 = Floor(A/L)
c1 = Floor((B-n1*L)/H)
z1 = e1*n1+k1*c1

If z>z1 Then
d = z
Else d = z1
End If

Норма = Round(((A*B*Толщина*materialDensity*0.001)/d)*0.001,3) ' Норма расхода в кг.

iProperties.Value("Custom", "Норма_расхода") = Норма
'iProperties.Value("Custom", "Количество_деталей") = d
'iProperties.Value("Custom", "Длина разв.") = SheetMetal.FlatExtentsLength
'iProperties.Value("Custom", "Ширина разв.") = SheetMetal.FlatExtentsWidth
Количество_гибов 'Запуск расчёта количества гибов
End Sub
Sub Количество_гибов()

Dim partDoc As PartDocument
Dim compDef As SheetMetalComponentDefinition
Dim fPattern As FlatPattern
Dim bendRes As FlatBendResults
Dim TransGeo As TransientGeometry
Dim edg1, edg2 As Edge
Dim ln1, ln2 As Line

partDoc = ThisApplication.ActiveDocument
TransGeo = ThisApplication.TransientGeometry
compDef = partDoc.ComponentDefinition

fPattern = compDef.FlatPattern

bendRes = fPattern.FlatBendResults

Dim myBends(0 To bendRes.Count, 2)
For i = 1 To bendRes.Count
For j = 1 To 2
If j = 1 Then
myBends(i, j) = i
Else
myBends(i, j) = 1
End If
Next j
Next i

k = 0
mycount = bendRes.Count / 2

For i = 1 To bendRes.Count
If bendRes(i).IsOnBottomFace Then
edg1 = bendRes(i).Edge
ls1 = edg1.Geometry
ln1 = TransGeo.CreateLine(ls1.StartPoint, ls1.Direction.AsVector)
For j = i + 1 To bendRes.Count
If myBends(j, 2) = 1 Then
If bendRes(j).IsOnBottomFace Then
edg2 = bendRes(j).Edge
ls2 = edg2.Geometry
If ln1.IsColinearTo(ls2, 0) Then
myBends(i, 2) = 0
k = k + 1
Exit For
End If
End If
End If
Next j
End If
Next i

'MessageBox.Show("Количество гибов: " & mycount - k & " шт.", "Количество гибов")
iProperties.Value("Custom", "Кол.гибов") = mycount - k
Длина_реза 'Запуск расчёта длины реза
End Sub
Sub Длина_реза()
  oFace = ThisDoc.Document.ComponentDefinition.FlatPattern.TopFace
  TotalLength = 0
  For Each oLoop In oFace.EdgeLoops
     For Each oCurve In oLoop.EdgeUses
        oCurveEval = oCurve.Evaluator
        Dim MinParam, MaxParam, Length As Double
        oCurveEval.GetParamExtents(MinParam, MaxParam)
        oCurveEval.GetLengthAtParam(MinParam, MaxParam, Length)
        TotalLength = TotalLength + Length
     Next
  Next
  iProperties.Value("Custom", "Длина_реза") = Round(TotalLength / 100, 3) 'Единица измерения метр.
  'MessageBox.Show("Длина реза = " & ThisApplication.UnitsOfMeasure.GetStringFromValue(TotalLength, _
  'UnitsTypeEnum.kMeterLengthUnits), "Длина реза")
End Sub
в vba, запущенного из инвентора, создал форму со списком покрытий (связать с txt файлом не получилось). Форма работает и выводит сообщение о выбранном покрытии, но никак не найду решение для записи выбранного покрытия в свойства детали/сборки инвентора (iProperties.Value("Custom", "Покрытие") = ). Подскажите пожалуйста в каком направлении копать или предложите вариант решения.
'Option Explicit

Private Sub CommandButton1_Click()
If ListBox1.Value <> "" Then MsgBox "назначено покрытие " & ListBox1.Value
Unload Me
End Sub

Private Sub UserForm_Initialize()
   With ListBox1
       .AddItem "Порошок"
       .AddItem "Эмаль"
       .AddItem "Олово"
       .AddItem "Цинк"
   End With
End Sub
Снимок.PNG (7.68 КБ)
Постепенно разбираюсь
в vba, запущенного из инвентора, создал форму со списком покрытий (связать с txt файлом не получилось). Форма работает и выводит сообщение о выбранном покрытии, записывает в свойства детали/сборки инвентора (iProperties.Value("Custom", "Покрытие") = ). Подскажите пожалуйста каким образом заполнять combobox из txt файла.

Module1:
Sub Pokritie()
UserForm1.Show
End Sub

UserForm1:
Private Sub UserForm_Initialize()
   With ComboBox1
       .AddItem " "
       .AddItem "Ц6.хр.бцв."
       .AddItem "Хим.Пас"
       .AddItem "Ср12"
       .AddItem "О9"
       .AddItem "Краска порошковая RAL 7035 (светло-серая) эпоксиполиэфирная, текстурированная, полуглянцевая"
       .AddItem "Краска порошковая RAL 1003 (cигнальный желтый) эпоксиполиэфирная, текстурированная, полуглянцевая"
       .AddItem "Краска порошковая RAL 7015 (cланцево-серый) эпоксиполиэфирная, текстурированная, полуглянцевая"
   End With
End Sub

Sub CommandButton1_Click()

' Получить активный документ.
Dim invDoc As Document
Set invDoc = ThisApplication.ActiveDocument
' Получить определённый пользователем (настраиваемый) набор свойств.
Dim invCustomPropertySet As Inventor.PropertySet
Set invCustomPropertySet = invDoc.PropertySets.Item( _
"Inventor User Defined Properties")

For Each invCustomProperty In invCustomPropertySet
If invCustomProperty.Name = "Покрытие" Then
invCustomProperty.Delete
End If
Next

' Объявление переменных которые будут содержать значения.
Dim Покрытие As String

' Установка значений для переменных.
Покрытие = ComboBox1.Value

' Создание свойства.
Dim invProperty As Inventor.Property
Set invProperty = invCustomPropertySet.Add(Покрытие, "Покрытие")

'MsgBox "Назначено покрытие " & Покрытие 'Сообщение о выбранном покрытии.

Unload Me
End Sub
Здравствуйте! Изменилось название фирмы, куча чертежей, нужно заменить в основной надписи, шаблон поменял, но как сделать чтобы изменить в уже оформленных разом?
Спасибо!
Изменено: Usmon Hodjaev - 01.09.2020 15:00:19
День добрый. Существует сборка. В эту сборку вставлена деталь, с правилом iLogic. Как запустить выполнение этого правило из сборки?
Цитата
Владимир Моцный пишет:

День добрый. Существует сборка. В эту сборку вставлена деталь, с правилом iLogic. Как запустить выполнение этого правило из сборки?
Код
iLogicVb.RunRule("Панель.ipt", "Eng/Rus")

Код
iLogicVb.RunRule("Наименование детали", "Имя правила в детали")

В конце не забыть обновление сборки
Код
iLogicVb.UpdateWhenDone = True
Спасибо огромное. Сработало!
Изменено: Владимир Моцный - 08.09.2020 11:20:29
Приветствую вас, форумчане!
Есть вопрос - как правильно написать правило последовательного запуска форм (формы выполнены глобальные). Желательно и правило внешнее - для исправления старых файлов.
Доброго времени суток!
можно ли при запуске внешнего правила в детали создавалось внутреннее правило и тут же запускалось?
ни кого то тут нет уже ... видать все уже умеют  :(
Цитата
Faliant_tomas пишет:

Доброго времени суток!
можно ли при запуске внешнего правила в детали создавалось внутреннее правило и тут же запускалось?

Мне такая возможность не известна, а что мешает исполнить внешнее правило в детали?
Добрый день!

Сделал файл чертежа с набором листов.
Листы в файле настроил как шаблоны и мне необходимы для
определенного проекта только избранные.

Не могу найти как кодом ilogic в данном файле
удалить определенные листы ....  :evil:

Какая команда может удалить лист в файле чертежа?
Изменено: SCAD - 04.02.2021 00:03:01
Страницы: Пред. 1 ... 40 41 42 43 44
Читают тему (гостей: 7, пользователей: 0, из них скрытых: 0)