Алексей Романов (Все сообщения пользователя)

Выбрать дату в календареВыбрать дату в календаре

Страницы: Пред. 1 2 3 4 5 6 7 8 9 10 11 ... 117 След.
Вопрос к знатокам iLogic, Размеры детали.
[QUOTE]n0b0dy пишет:
Потом на чертеже сборки хочу чтобы в спецификацию, в отдельный столбец, подтягивались данные артикулов деталей.[/QUOTE]Вы работаете с обыкновенной таблицей, туда свойства подтягивать не получится, в таблицу можно подтянуть свойства только в параметрических деталях...[QUOTE]n0b0dy пишет:
Как-то можно это реализовать?[/QUOTE]Это можно реализовать только в родной специи инвентора...
Вопрос к знатокам iLogic, Размеры детали.
[QUOTE]Алексей Семёнов пишет:
Как с помощью iLogic в сборке сделать поиск детали по имени в броузере.[/QUOTE]Попробуй такой вариант:[CODE]oTopNode = ThisDoc.Document.BrowserPanes.ActivePane.TopNode
For Each oNode In oTopNode.BrowserNodes
   If InStr(oNode.FullPath, "Деталь1:1") > 0 Then
myName = oNode.FullPath
Exit For
   End If
Next
If InStr(myName, "Деталь1:1") > 0 Then
MessageBox.Show("Деталь найдена!", "Title")
Else
MessageBox.Show("Деталь не найдена!", "Title")
End If[/CODE]
Вопрос к знатокам iLogic, Размеры детали.
[QUOTE]n0b0dy пишет:
А подскажите как форматы деталей автоматом присваивать при создании?[/QUOTE]О какой специи идет речь, Пояснение (ЕСКД)?Там обычная таблица, заполняется программно, я не знаю, как она работает...(
Вопрос к знатокам iLogic, Размеры детали.
[QUOTE]n0b0dy пишет:
Если я правильно понял, то: [/QUOTE]Я рад, что Вы не только правильно поняли, НО и правильно сделали)
Я также использую подобное для заполнения поле Формат в специи сборки на чертеже, для сборок эта значение постоянное (А4) и оно прописано в свойствах шаблона сборки, для деталей это свойство заполняется при создании чертежа (вручную или автоматом)...
Вопрос к знатокам iLogic, Размеры детали.
[QUOTE]n0b0dy пишет:
Спасибо, этот вариант знаю, но лишний шаблон ни к чему.[/QUOTE]Так же, как и лишние правила. В шаблоне сборки любое свободное свойство заполняете нужным значением, в шаблоне чертежа создаете текстовое поле со ссылкой на это свойство. Все...
В чертежах сборок там будет нужное значение, в чертежах деталей там ничего не отобразится.
Имя для параметрической детали
[QUOTE]Алексей Семёнов пишет:
Тогда можно будет использовать любые файлы, а то при этом макросе жестко задано имя сохраняемого файла [/QUOTE]Алексей, этот макрос вроде рыбы, его всегда можно (и нужно) подстроить под свои задачи...[QUOTE]Алексей Семёнов пишет:
Есть ли возможность от туда выдергивать эти данные.[/QUOTE]Когда открыта параметрическая деталь, есть возможность работать с таблицей, получать данные и даже править ее. Здесь уже было, посмотрю как это делается...[QUOTE]Алексей Семёнов пишет:
Можно ли для данного макроса на ленте создать кнопку для запуска,[/QUOTE]Конечно можно и даже свою картинку нарисовать))) Здесь было, поищу.
Модули нужно создавать в головном проекте (когда все документы закрыты, он там будет один), тогда макросы будут работать с любым документом...
Имя для параметрической детали
[QUOTE]Алексей Семёнов пишет:
Код срабатывает только при сохраненной сборке. Если сборка создана и не сохранена, то файл не вставляется и не сохраняется.[/QUOTE]Так и есть через АПИ, а я чет выбросил эту проверку, сейчас добавил. Чтобы не разбираться с кодом привожу его полностью, хотя там добавлено не много:[CODE]Option Explicit

Public oPdoc As ComponentOccurrence
Public partFlag As Boolean
Public myPart As MovePart

Public Sub AddiPartOccurrence()
   If ThisApplication.ActiveDocument.DocumentType <> kAssemblyDocumentObject Then
       MsgBox "Макрос работает только в сборках!", , "Вставка iPart"
       Exit Sub
   End If
   If ThisApplication.ActiveDocument.FullDocumentName = "" Then
       MsgBox "Чтобы вставить деталь, текущую сборку неоходимо сохранить!", , "Вставка iPart"
       Exit Sub
   End If
   
   ' Выбор файла параметрического элемента
   Dim oFileDlg As FileDialog
   Dim sFilename As String
   Call ThisApplication.CreateFileDialog(oFileDlg)
   oFileDlg.filter = "Inventor Files (*.ipt)|*.ipt"
   oFileDlg.FilterIndex = 1
   oFileDlg.MultiSelectEnabled = False
   oFileDlg.DialogTitle = "Вставка iPart"
   oFileDlg.InitialDirectory = ThisApplication.FileLocations.Workspace
   oFileDlg.CancelError = True
   On Error Resume Next
   oFileDlg.ShowOpen
   If Err Then
       Err.Clear
       On Error GoTo 0
   ElseIf oFileDlg.FileName <> "" Then
       sFilename = oFileDlg.FileName
   End If
   Set oFileDlg = Nothing
   If sFilename = "" Then Exit Sub
   
   ' открываем документ в скрытом режиме
   Dim oFactoryDoc As PartDocument
   Set oFactoryDoc = ThisApplication.Documents.Open(sFilename, False)

   ' получаем данные на модель.
   Dim oCompDef As PartComponentDefinition
   Set oCompDef = oFactoryDoc.ComponentDefinition

   ' проверяем что это параметрическая модель
   If oCompDef.IsiPartFactory = False Then
       MsgBox "Выбранный документ не параметрическая деталь.", vbExclamation
       oFactoryDoc.Close
       Exit Sub
   End If
   ' запрашиваем величину элемента
   Dim G_L As Double
   G_L = InputBox("Длина элемента(1-10000):", "Вставка iPart", 500)
   ' ограничения на параметры ввода
   If G_L < 1 Or G_L > 10000 Then Exit Sub
   ' подключаемся к активной сборке
   Dim asmDoc As AssemblyDocument
   Set asmDoc = ThisApplication.ActiveDocument
   
   Dim asmDef As AssemblyComponentDefinition
   Set asmDef = asmDoc.ComponentDefinition
   
   Dim oInstr As Long
   oInstr = InStrRev(asmDoc.FullFileName, "\")
   Dim myFileName As String
   ' путь к папке сборки
   myFileName = Left(asmDoc.FullFileName, oInstr)
   ' здесь добавляете имя файла
   myFileName = myFileName & "Кабель канал 25х40 перф.(L=" & CStr(G_L) & ")" & ".ipt"
   
  ' подключаемся к параметрической детали.
   Dim oPartFactory As iPartFactory
   Set oPartFactory = oCompDef.iPartFactory
   
   ' готовим данные для вставки детали (длина)
   Dim myInput(0) As String
   myInput(0) = G_L
   
   ' создаем файл для вставки в сборку
   Dim myiPart As iPartMember
   Set myiPart = oPartFactory.CreateCustomMember(myFileName, 1, myInput)
       
   ' Вставляем деталь в начало координат сборки.
   Dim transMatrix As Matrix
   Set transMatrix = ThisApplication.TransientGeometry.CreateMatrix
   
   Set oPdoc = asmDef.Occurrences.Add(myFileName, transMatrix)
       
   partFlag = True
   ' загружаем модуль отслеживания курсора мыши
   Set myPart = New MovePart
   ' ждем, когда пользователь определит положение детали
   Do While partFlag = True
       DoEvents
   Loop
   ' выгружаем модуль отслеживания
   Set myPart = Nothing
   
End Sub
[/CODE]Для отслеживания курсора мыши в папке Class Modules нужно вставить новый модуль, обозвать его MovePart и вставить этот код:[CODE]Option Explicit

Private WithEvents oInteraction As InteractionEvents
Private WithEvents omouseEvent As MouseEvents
Private oTransform As Matrix

Private Sub Class_Initialize()

Set oTransform = ThisApplication.TransientGeometry.CreateMatrix
Set oInteraction = ThisApplication.CommandManager.CreateInteractionEvents
Set omouseEvent = oInteraction.MouseEvents
omouseEvent.MouseMoveEnabled = True
oInteraction.Start

End Sub

Private Sub Class_Terminate()
On Error Resume Next
If Not oInteraction Is Nothing Then
   oInteraction.Stop
   Set omouseEvent = Nothing
   Set oPdoc = Nothing
   partFlag = False
End If

End Sub

Private Sub omouseEvent_OnMouseClick(ByVal Button As MouseButtonEnum, ByVal ShiftKeys As ShiftStateEnum, _
       ByVal ModelPosition As Point, ByVal ViewPosition As Point2d, ByVal View As View)

If Not oInteraction Is Nothing Then
   oInteraction.Stop
   Set omouseEvent = Nothing
   Set oInteraction = Nothing
   Set oPdoc = Nothing
   partFlag = False
End If

End Sub

Private Sub omouseEvent_OnMouseMove(ByVal Button As MouseButtonEnum, ByVal ShiftKeys As ShiftStateEnum, _
       ByVal ModelPosition As Point, ByVal ViewPosition As Point2d, ByVal View As View)

Call oTransform.SetTranslation(ThisApplication.TransientGeometry.CreateVector(ModelPosition.x, _
       ModelPosition.y, ModelPosition.Z))
   oPdoc.Transformation = oTransform
   View.Update

End Sub
[/CODE]Там если где пробелы лишние, нужно убрать (строка красным выделяется)...
Изменено: Алексей Романов - 10.07.2017 09:33:03
Имя для параметрической детали
[QUOTE]Алексей Семёнов пишет:
Публиковать деталь не планирую.[/QUOTE]Тезка привет! А оно похоже и не потребуется! Совсем упустил из виду, что кастом детали параметрических деталей можно создавать через АПИ. Вот пример кода на ВБА (похоже он подойдет и Владимиру):[CODE]Option Explicit

Public Sub AddiPartOccurrence()
   If ThisApplication.ActiveDocument.DocumentType <> kAssemblyDocumentObject Then
       MsgBox "Макрос работает только в сборках!", , "Вставка iPart"
       Exit Sub
   End If
   ' Выбор файла параметрического элемента
   Dim oFileDlg As FileDialog
   Dim sFilename As String
   Call ThisApplication.CreateFileDialog(oFileDlg)
   oFileDlg.filter = "Inventor Files (*.ipt)|*.ipt"
   oFileDlg.FilterIndex = 1
   oFileDlg.MultiSelectEnabled = False
   oFileDlg.DialogTitle = "Ins ert iPart Occurrence"
   oFileDlg.InitialDirectory = ThisApplication.FileLocations.Workspace
   oFileDlg.CancelError = True
   On Error Resume Next
   oFileDlg.ShowOpen
   If Err Then
       Err.Clear
       On Error GoTo 0
   ElseIf oFileDlg.FileName <> "" Then
       sFilename = oFileDlg.FileName
   End If
   Set oFileDlg = Nothing
   If sFilename = "" Then Exit Sub
   
   ' открываем документ в скрытом режиме
   Dim oFactoryDoc As PartDocument
   Set oFactoryDoc = ThisApplication.Documents.Open(sFilename, False)

   ' получаем данные на модель.
   Dim oCompDef As PartComponentDefinition
   Set oCompDef = oFactoryDoc.ComponentDefinition

   ' проверяем что это параметрическая модель
   If oCompDef.IsiPartFactory = False Then
       MsgBox "Выбранный документ не параметрическая деталь.", vbExclamation
       oFactoryDoc.Close
       Exit Sub
   End If
   ' запрашиваем величину элемента
   Dim G_L As Double
   G_L = InputBox("Длина элемента(1-10000):", "Вставка iPart", 500)
   ' ограничения на параметры ввода
   If G_L < 1 Or G_L > 10000 Then Exit Sub
   ' подключаемся к активной сборке
   Dim asmDoc As AssemblyDocument
   Set asmDoc = ThisApplication.ActiveDocument
   
   Dim asmDef As AssemblyComponentDefinition
   Set asmDef = asmDoc.ComponentDefinition
   
   Dim oInstr As Long
   oInstr = InStrRev(asmDoc.FullFileName, "\")
   Dim myFileName As String
   ' путь к папке сборки
   myFileName = Left(asmDoc.FullFileName, oInstr)
   ' здесь добавляете имя файла
   myFileName = myFileName & "Кабель канал 25х40 перф.(L=" & CStr(G_L) & ")" & ".ipt"
   
  ' подключаемся к параметрической детали.
   Dim oPartFactory As iPartFactory
   Set oPartFactory = oCompDef.iPartFactory
   
   ' готовим данные для вставки детали (длина)
   Dim myInput(0) As String
   myInput(0) = G_L
   
   ' создаем файл для вставки в сборку
   Dim myiPart As iPartMember
   Set myiPart = oPartFactory.CreateCustomMember(myFileName, 1, myInput)
       
   ' Вставляем деталь в начало координат сборки.
   Dim transMatrix As Matrix
   Set transMatrix = ThisApplication.TransientGeometry.CreateMatrix
   Dim Occ As ComponentOccurrence
   Se t Occ = asmDef.Occurrences.Add(myFileName, transMatrix)

End Sub
[/CODE]Если интересно, могу подогнать костыль, который вставляет деталь в положение курсора мыши...)))
Изменено: Алексей Романов - 08.07.2017 13:09:34
Имя для параметрической детали
[QUOTE]Владимир - пишет:
А я все ответа жду )[/QUOTE]Можно через макрос...) Опубликуй свою деталь в СС и попробуй этот макрос. Он вставляет уголок 20х20х3 нужной длины в начало координат сборки. Переделай на свое семейство. Если файл уже существует, он вставляет его, новый не создает.
Можно приделать костыль и вставлять деталь указанием мыши на экране...
[CODE]Public Sub PlaceFromContentCenter()
   If ThisApplication.ActiveDocument.DocumentType <> kAssemblyDocumentObject Then
       Exit Sub
   End If
   Dim G_L As Double
   G_L = InputBox("Длина элемента(1-10000):", "Вставка уголка", 500)
   
   If G_L < 1 Or G_L > 10000 Then Exit Sub
   
   Dim asmDoc As AssemblyDocument
   Set asmDoc = ThisApplication.ActiveDocument
   
   Dim asmDef As AssemblyComponentDefinition
   Set asmDef = asmDoc.ComponentDefinition
   
   ' Get the node in the content browser based on the names of the nodes in the hierarchy.
   Dim anglesNode As ContentTreeViewNode
   Set anglesNode = ThisApplication.ContentCenter.TreeViewTopNode.ChildNodes.Item("Профили фасонные").ChildNodes.Item("Уголки")
   
   ' Find a specific family.  In this case it's using the display name, but any family
   ' characteristic could be searched for.
   Dim family As ContentFamily
   Dim checkFamily As ContentFamily
   For Each checkFamily In anglesNode.Families
       If checkFamily.DisplayName = "ГОСТ 8509-93" Then
           Set family = checkFamily
           Exit For
       End If
   Next
   
   Dim i As Integer
   If Not family Is Nothing Then
       Dim row As ContentTableRow
       Set row = family.TableRows(1)
       ' Create the member (part file) from the table.
       Dim failureReason As MemberManagerErrorsEnum
       Dim failureMessage As String
       Dim memberFilename As String
       Dim oInstr As Long
       oInstr = InStrRev(asmDoc.FullFileName, "\")
       Dim myFileName As String
       myFileName = Left(asmDoc.FullFileName, oInstr) & CStr(G_L) & ".ipt"
       
       Dim oInput As NameValueMap
       Set oInput = ThisApplication.TransientObjects.CreateNameValueMap
       oInput.Add "SIZE_SEL", "20"
       oInput.Add "PartT", 3
       oInput.Add "B_L", G_L
       
       On Error Resume Next
       
       memberFilename = family.CreateMember(row, failureReason, failureMessage, kUseDefaultRefreshSetting, True, myFileName, oInput)
       
       If memberFilename = "" Then
           memberFilename = failureMessage
       End If
       
       ' Place the part into the assembly.
       Dim transMatrix As Matrix
       Set transMatrix = ThisApplication.TransientGeometry.CreateMatrix
       Dim Occ As ComponentOccurrence
       Set Occ = asmDef.Occurrences.Add(memberFilename, transMatrix)
           
   End If
End Sub

[/CODE]
Поле "Первичное применение" в чертеже и спецификации АИП, Как это должно работать?
Если честно, не совсем понятно без скринов... А что заставляет работать с упрощенными изображениями? Выноску в нужном масштабе нельзя сделать?
Поле "Первичное применение" в чертеже и спецификации АИП, Как это должно работать?
[QUOTE]Prot пишет:
Все понял. Дождусь ваших обновлений.[/QUOTE]Добрый день! Возникли проблемы с большой красной кнопкой (у меня 80% специй одно страничные) все работает ОК! НО есть остальные 20%... После выходных добью этот вопрос (но не на 100%, типа вета версии...)
Скорее всего это будет отдельная тема...)))
Поле "Первичное применение" в чертеже и спецификации АИП, Как это должно работать?
Добрый день.
по п.2 экспортировать в xml не нужно. Обычный.iam - это шаблон, там настроена специя и свойства.
по п.3. Нужно открыть редактор ВБА, там Файл -> Открывается проект и выбрать файл Sample.ivb. Оттуда перетащить модули и формы в свой проект Default.ivb, тогда появятся макросы.
Все примеры файлов - это шаблоны с настроенными свойствами, поэтому пустые.
Нужно открыть шаблон специи и сохранить оттуда специю в библиотеку стилей, чтобы потом ей пользоваться...
Через пару дней подготовлю обновленную версию макроса и пример чертежа со специей...
Изменено: Алексей Романов - 26.06.2017 12:18:15
Поле "Первичное применение" в чертеже и спецификации АИП, Как это должно работать?
[QUOTE]Prot пишет:
Ага, приходится генерить, "прикручивать" к листу чертежа не разрешают. Других способов не знаю.[/QUOTE]А, понятно... Я в чертеже сборки вставляю специю за пределами рамки, чтобы отслеживать проставленные позиции, в чертеже специи, наоборот, вид сборки за пределами рамки (хотя можно обойтись и без него), а специя на чертеже. [URL=https://yadi.sk/d/kTlr_xmG3JzGFG]Посмотри здесь[/URL], как это сделано у меня, может че пригодится...
Поле "Первичное применение" в чертеже и спецификации АИП, Как это должно работать?
[QUOTE]Prot пишет:
Потом жму на кнопочку (слева вверху) экспорт в xls. [/QUOTE]Дык я и спрашиваю, зачем в Ёксель то переводить? Ведь такая специя оторвана от реальной сборки. После каждого изменения по новой генерить?:(
Вы не поверите, но нам в свое время Ёксель к Инвентору не купили, сказали обойдетесь))))
Поле "Первичное применение" в чертеже и спецификации АИП, Как это должно работать?
[QUOTE]Prot пишет:
Поле есть, а данных в нем нет. Подскажите, пожалуйста, как данные из "вендора" уходили в соответствующее поле Exell шаблона.[/QUOTE]А что за шаблон в Ёкселе и зачем он нужен? Из Пояснение(ЕСКД)? Он заполняется программно этим костылем. Если вы добавили что то туда, то откуда костыль об этом узнает? Если сборка изменилась, то специя в Ёкселе автоматом обновляется?
Я не пользуюсь этим костылем, в АИ стандартными средствами можно создать специю по ЕСКД, я тут не раз размещал скрины примеров...
Поле "Первичное применение" в чертеже и спецификации АИП, Как это должно работать?
Попробуй такое правило на iLogic:[CODE]Public Sub Main()
   oDoc = ThisDoc.Document
   oPN = iProperties.Value("Project", "Part Number")

   oBOM = oDoc.ComponentDefinition.BOM
   oBOM.StructuredViewEnabled = True
   oBOM.StructuredViewFirstLevelOnly = False
   oBOMView = oBOM.BOMViews.Item(2)
   
   QueryBOMRowProperties(oBOMView.BOMRows, oPN)
End Sub

Private Sub QueryBOMRowProperties(oBOMRows As BOMRowsEnumerator, PtNumber As String)
   For Each oRow In oBOMRows
       If oRow.BOMStructure <> BOMStructureEnum.kPurchasedBOMStructure Then
           oCompDef = oRow.ComponentDefinitions.Item(1)
           If oCompDef.Type <> ObjectTypeEnum.kVirtualComponentDefinitionObject Then
sProp = oCompDef.Document.PropertySets("Design Tracking Properties").Item("Vendor")
               If sProp.Value = "" Then sProp.Value = PtNumber

               If oRow.ChildRows IsNot Nothing Then
                   oNum ber = oCompDef.Document.PropertySets.Item("Design Tracking Properties").Item("Part Number").Value
                   If oNumber <> "" Then
                       QueryBOMRowProperties(oRow.ChildRows, oNumber)
                   End If
               End If
           End If
       End If
   Next
End Sub[/CODE]В головной сборке (можно в любой) создаете правило и копируете этот код. Здесь использовано свойство Поставщик (Vendor), можно другое любое свободное. В чертеже нужно подредактировать эскизное обозначение ГОСТ - доп.графы 2. Для автомата это правило можно повесить на событие "Перед сохранением документа"
UPD. При копировании ошибка, не исправляется, в 9 строке снизу нужно убрать пробел в первом слове oNumber...(((
Изменено: Алексей Романов - 07.06.2017 13:09:14
Поле "Первичное применение" в чертеже и спецификации АИП, Как это должно работать?
[QUOTE]Prot пишет:
Если вы знаете, как это решить или обойти[/QUOTE]Я выше сказал, что стандартными средствами в АИ это вряд ли получится, НО есть средства адаптации. Вечером посмотрю, что можно сделать, у меня есть похожий макрос, он предназначен для открытия из среды деталей сборок, куда они входят...
Поле "Первичное применение" в чертеже и спецификации АИП, Как это должно работать?
Здесь фокус в том, что детали/подсборки не знают, куда они входят (я такого не нашел). Можно организовать в головной сборке правило на iLogic, которое при сохранении пробегает все подсборки/детали и создает нужное свойство, которое легко можно вытащить в чертеж.
Будет время, изображу, а может это уже где-то есть...
СЛЕЗЫ AUTODESK INVENTOR, Описание проблем, недоработок и что нужно сделать
[QUOTE]Сергей Шило пишет:
В который раз оформлял чертёж листовой детали и ругался на необходимость два раза выбирать её для создания чертёжного вида.[/QUOTE]Не совсем понял проблему. Открываю модель, потом создаю новый чертеж. При создании видов или развертки модель выбирается автоматом... Зачем доске еще что-то придумывать.))
Автоматическое преобразование спланов в отрезки, Способ безболезненного переноса объекта из CorelDRAW в Autodesk Inventor
Посмотрел файлы, там нет отрезков, только сплайны. Если Инвентор добавил управляющие точки, то это не страшно для сплайна, просто от точности апроксимации зависит. Сплайны в файлах dwg совмещенные до и после АИ совпадают идеально.
Для лазера не должно быть проблем...
Страницы: Пред. 1 2 3 4 5 6 7 8 9 10 11 ... 117 След.