Сообщество программистов Autodesk в СНГ

ADN Club => Inventor API => Тема начата: filat от 06-04-2015, 07:37:16

Название: Реализация RectangularPatternFeatures.Add
Отправлено: filat от 06-04-2015, 07:37:16
Мне в детали нужно сделать массив пробивки, но в описании слишком много параметров и нет примера реализации...
Использую следующий код:
...
Dim oEdge As Edge
Dim oPunchTool As PunchToolFeature
Dim oSMFeatures As SheetMetalFeatures
Set oSMFeatures = oPartCompDef.Features
...
Dim oRectan As RectangularPatternFeature
Set oRectan = oSMFeatures.RectangularPatternFeatures.Add(oPunchTool, oEdge, True, 2, 3)
Достаточно ли параметров я указал и можно ли использовать, в качестве направления ребро от Face?
Название: Re: Реализация RectangularPatternFeatures.Add
Отправлено: Алексей Романов от 09-04-2015, 12:14:44
Достаточно ли параметров я указал и можно ли использовать, в качестве направления ребро от Face?
Достаточно, можно использовать, НО в качестве первого параметра нужно использовать ObjectCollection...
Название: Re: Реализация RectangularPatternFeatures.Add
Отправлено: filat от 10-04-2015, 11:05:33
Я добавил выштамповку в ObjectCollection - проверил, что добавление выполняется:
Dim oRectan As RectangularPatternFeature
Dim oObCol As ObjectCollection
Set oObCol = ThisApplication.TransientObjects.CreateObjectCollection
oObCol.Add oPunchTool
Set oRectan = oSMFeatures.RectangularPatternFeatures.Add(oObCol, oEdge, True, 2, 3)
Но массив все равно не создается, и ошибок не выдает
Название: Re: Реализация RectangularPatternFeatures.Add
Отправлено: filat от 15-04-2015, 10:31:33
Нашел! После выполнения строки создания пробивки:
Set oPunchTool = oSMFeatures.PunchToolFeatures.Add(oPoints, oiFeatureDef, ugol)Стераются значения переменной oEdge (см. скин)
(https://adn-cis.org/forum/proxy.php?request=http%3A%2F%2Fib4.keep4u.ru%2Fs%2F2015%2F04%2F15%2Fd4%2Fd41211bd5efda6f51f2215be6de65aba.jpg&hash=f6f4931d786aba7e3b35a2f858c22a91) (http://keep4u.ru/full/d41211bd5efda6f51f2215be6de65aba.html)
Название: Re: Реализация RectangularPatternFeatures.Add
Отправлено: filat от 15-04-2015, 12:54:49
Может ли переменная "сбрасываться" из-за увеличения коллекции поверхностей, в следствии выполнения пробивки?
Название: Re: Реализация RectangularPatternFeatures.Add
Отправлено: Алексей Романов от 15-04-2015, 18:18:47
Но массив все равно не создается, и ошибок не выдает
filat!Я взял пример из АПИ, добавил твои 5 строк, вроде все работает:
Код - Visual Basic [Выбрать]
  1. Public Sub PlacePunchFeature()
  2.     ' Get the active sheet metal document and component
  3.    ' definition of the active document.
  4.    On Error Resume Next
  5.     Dim oPartDoc As PartDocument
  6.     Set oPartDoc = ThisApplication.ActiveDocument
  7.     If Err Then
  8.         MsgBox "A part must be active."
  9.         Exit Sub
  10.     End If
  11.     Dim oSMDef As SheetMetalComponentDefinition
  12.     Set oSMDef = oPartDoc.ComponentDefinition
  13.  
  14.     ' Get the selected face that will be used for the creation
  15.    ' of the sketch that will contain the sketch points.
  16.    Dim oFace As Face
  17.     Set oFace = oPartDoc.SelectSet.Item(1)
  18.     If Err Then
  19.         MsgBox "A planar face must be selected."
  20.         Exit Sub
  21.     End If
  22.     On Error GoTo 0
  23.    
  24.     Dim oEdge As Edge
  25.     Set oEdge = oFace.Edges.Item(1)
  26.    
  27. '    If oFace.SurfaceType = kPlaneSurface Then
  28. '        MsgBox "A planar face must be selected."
  29. '        Exit Sub
  30. '    End If
  31.  
  32.     ' Create a sketch on the selected face.
  33.    Dim oSketch As PlanarSketch
  34.     Set oSketch = oSMDef.Sketches.Add(oFace)
  35.  
  36.     ' Create some points on the sketch.  The model will need to
  37.    ' be of a size that these points lie on the model.
  38.    Dim oPoints As ObjectCollection
  39.     Set oPoints = ThisApplication.TransientObjects.CreateObjectCollection
  40.    
  41.     Dim oTG As TransientGeometry
  42.     Set oTG = ThisApplication.TransientGeometry
  43.  
  44.     Dim oPoint As SketchPoint
  45.     Set oPoint = oSketch.SketchPoints.Add(oTG.CreatePoint2d(-2, -2), True)
  46.     Call oPoints.Add(oPoint)
  47.  
  48.     Dim oSMFeatures As SheetMetalFeatures
  49.     Set oSMFeatures = oSMDef.Features
  50.  
  51.     ' Create an iFeatureDefinition object for a punch tool.
  52.    Dim oiFeatureDef As iFeatureDefinition
  53.     Set oiFeatureDef = oSMFeatures.PunchToolFeatures.CreateiFeatureDefinition( _
  54.         "C:\Users\Public\Documents\Autodesk\Inventor 2015\Catalog\Punches\keyhole.ide")
  55.  
  56.     ' Set the input.
  57.    Dim oInput As iFeatureInput
  58.     For Each oInput In oiFeatureDef.iFeatureInputs
  59.         Dim oParamInput As iFeatureParameterInput
  60.         Select Case oInput.Name
  61.             Case "Length"
  62.                 Set oParamInput = oInput
  63.                 oParamInput.Expression = "1 in"
  64.             Case "Hole_Diameter"
  65.                 Set oParamInput = oInput
  66.                 oParamInput.Expression = "0.5 in"
  67.             Case "Slot_Width"
  68.                 Set oParamInput = oInput
  69.                 oParamInput.Expression = "0.3875 in"
  70.             Case "Fillet"
  71.                 Set oParamInput = oInput
  72.                 oParamInput.Expression = "0.0625 in"
  73.             Case "Thickness"
  74.                 Set oParamInput = oInput
  75.                 oParamInput.Expression = "0.125 in"
  76.         End Select
  77.     Next
  78.  
  79.     Dim oPunchTool As PunchToolFeature
  80.     Set oPunchTool = oSMFeatures.PunchToolFeatures.Add(oPoints, oiFeatureDef, 0#)
  81.    
  82.     Dim oObCol As ObjectCollection
  83.     Set oObCol = ThisApplication.TransientObjects.CreateObjectCollection
  84.     Call oObCol.Add(oPunchTool)
  85.    
  86.     Dim oRectan As RectangularPatternFeature
  87.     Set oRectan = oSMFeatures.RectangularPatternFeatures.Add(oObCol, oEdge, True, 2, 3)
  88.  
  89. End Sub
Название: Re: Реализация RectangularPatternFeatures.Add
Отправлено: filat от 16-04-2015, 08:03:00
Да, приведенный пример отлично работает!
Но как мне выяснить почему в моем коде после пробивки убиваются переменные Edge и Face?
Ведь до выполнения пробивки они полноценно существуют:
(https://adn-cis.org/forum/proxy.php?request=http%3A%2F%2Fib4.keep4u.ru%2Fs%2F2015%2F04%2F16%2Fe2%2Fe2406ee71cd9e21ecae25a2bb9e21ac9.jpg&hash=369dfdbbeb4b59e39fec181d11f69729) (http://keep4u.ru/full/e2406ee71cd9e21ecae25a2bb9e21ac9.html)
Название: Re: Реализация RectangularPatternFeatures.Add
Отправлено: Алексей Романов от 16-04-2015, 13:25:44
Но как мне выяснить почему в моем коде после пробивки убиваются переменные Edge и Face?
Может просто объекты изменяются? Там геометрия, свойства... Может переменные нужно обновлять?
Название: Re: Реализация RectangularPatternFeatures.Add
Отправлено: filat от 22-04-2015, 07:51:29
Может просто объекты изменяются? Там геометрия, свойства... Может переменные нужно обновлять?
А что означает обновлять? После пробивки поновой получать Edge из ComponentDefinition? Или для обновления переменной есть какая-то другая процедура?
Название: Re: Реализация RectangularPatternFeatures.Add
Отправлено: filat от 24-04-2015, 13:55:37
Разобрался! В начале кода была строка  Set sbs = oDoc.ComponentDefinition.SurfaceBodies  - и, почему-то именно она и приводила к убиванию переменных... Переместив ее в конец кода все заработало ногрмально :)
Название: Re: Реализация RectangularPatternFeatures.Add
Отправлено: filat от 24-04-2015, 14:13:10
Но следом за решением предыдущей задачи, появилась следующая: как правильно формулировать команду для создания двух мерного массива?
Так может быть правильно:
Set oRectan = oSMFeatures.RectangularPatternFeatures.Add(oObCol, oEdge, True, 2, 3,,,oEdge, True, 2, 1)Если в качестве тогоже направления использовать тоже ребро, но с другим шагом...
Название: Re: Реализация RectangularPatternFeatures.Add
Отправлено: filat от 27-04-2015, 09:30:24
Да. я подтверждаю, что данная форма является достаточной!
И мой код полностью работает!
(https://adn-cis.org/forum/proxy.php?request=http%3A%2F%2Fib4.keep4u.ru%2Fs%2F2015%2F04%2F27%2Fb7%2Fb7410690477d8b526c39de9bf449956f.jpg&hash=023091877ac5e18fbef28f16573bb427) (http://keep4u.ru/full/b7410690477d8b526c39de9bf449956f.html)