Pagina 1 di 2 12 UltimaUltima
Risultati da 1 a 10 di 15
  1. #1
    Utente Junior
    Iscritto dal
    2013
    Messaggi
    23
    Professione
    libero professionista
    Regione
    Trento
    Software
    inventor 2011,2013, autocad

    Predefinito creazione automatica membri ipart ed esportazione step

    Salve,
    Ho realizzato delle parti ipart da cui genererò qualche migliaio di componenti ognuna.
    Questo non é un problema, già fatto ,il problema é che dovrei realizzare lo step di ognuna per poterlo condividere con altri modellatori cad.
    Attualmente metto tutte le parti generate in un assieme e a fatica mi sono costruito una regola ilogic che mi converte tutti i componenti di questo assieme in formato step.
    Chiedo cortesemente se qualcuno é in grado di scrivere una regola che mi generi tutti i membri dell'ipart e che poi in automatico esporti in step ognuna di questi membri generati.
    Io sono poco ferrato di vb e non ci riesco.
    Mi fareste un gran piacere.
    Grazie mille in anticipo

  2. #2
    Utente Standard L'avatar di Catafratto
    Iscritto dal
    2011
    Messaggi
    809
    Professione
    Disegnatore/progettista
    Regione
    Veneto
    Software
    Inventor 2016

    Predefinito

    Sei fortunato perchè uno degli esempi nella guida alla programmazione fa quello che chiedi
    (Help ina alto a dx > Risorse della community > Guida alla programmazione > Indice, cerca iPart > iPartFactory Object, in fondo alla pagina i link agli esempi.
    Se hai già rudimenti iLogic non dovresti aver problemi

    Codice:
    Public Sub AddiPartOccurrence()
        ' Open the factory document invisible.
        Dim oFactoryDoc As PartDocument
        Set oFactoryDoc = ThisApplication.Documents.Open("C:\temp\iPartFactory.ipt", False)
    
        ' Set a reference to the component definition.
        Dim oCompDef As PartComponentDefinition
        Set oCompDef = oFactoryDoc.ComponentDefinition
    
        ' Make sure we have an iPart factory.
        If oCompDef.IsiPartFactory = False Then
            MsgBox "Chosen document is not a factory.", vbExclamation
            Exit Sub
        End If
    
        ' Set a reference to the factory.
        Dim oiPartFactory As iPartFactory
        Set oiPartFactory = oCompDef.iPartFactory
    
        ' Get the number of rows in the factory.
        Dim iNumRows As Integer
        iNumRows = oiPartFactory.TableRows.Count
    
        ' Create a new assembly document
        Dim oDoc As AssemblyDocument
        Set oDoc = ThisApplication.Documents.Add(kAssemblyDocumentObject, , True)
    
        Dim oOccs As ComponentOccurrences
        Set oOccs = oDoc.ComponentDefinition.Occurrences
    
        Dim oPos As Matrix
        Set oPos = ThisApplication.TransientGeometry.CreateMatrix
    
        Dim oStep As Double
        oStep = 0#
        Dim iRow As Long
    
        ' Add an occurrence for each member in the factory.
        For iRow = 1 To iNumRows
    
            oStep = oStep + 10
    
            ' Add a translation along X axis
            oPos.SetTranslation ThisApplication.TransientGeometry.CreateVector(oStep, oStep, 0)
    
            Dim oOcc As ComponentOccurrence
            Set oOcc = oOccs.AddiPartMember("C:\temp\iPartFactory.ipt ", oPos, iRow)
        Next
    End Sub
    O meglio, non fa esattamente quello che vorresti ma con la tua regola già fatta sei a posto... questo programma mette in un nuovo assieme tutti gli elementi di una iPart
    Spesso astuzia ed intelligenza sono molto più efficaci dell'ottusa forza bruta: ma non ho proprio tempo di cercare qualcun alltro...

  3. #3
    Utente Junior
    Iscritto dal
    2013
    Messaggi
    23
    Professione
    libero professionista
    Regione
    Trento
    Software
    inventor 2011,2013, autocad

    Predefinito

    Grandissimo! Grazie mille! In realtà sono ancora molto neanderthal con ilogic e uso questa regola per esportare tutte le parti di un assieme in iges ,l'ho trovata su un forum che non mi ricordo al momento,ma funziona alla perfezione

    'Define the open document
    Dim openDoc As Document
    openDoc = ThisDoc.Document

    'define folder to create files in
    oFolder = "C:\Temp\IGS Files"

    'Check for the destination folder and create it if it does not exist
    If Not System.IO.Directory.Exists(oFolder) Then
    System.IO.Directory.CreateDirectory(oFolder)
    End If

    'Look at all of the files referenced in the open document
    Dim docFile As Document
    For Each docFile In openDoc.AllReferencedDocuments
    'format file name
    Dim FNamePos As Long
    'postion of last back slash
    FNamePos = InStrRev(docFile.FullFileName, "\", -1)
    Dim docFName As String
    'file name with extension
    docFName = Right(docFile.FullFileName, Len(docFile.FullFileName) - FNamePos)
    'file name without extension
    shortname = Left(docFName, Len(docFName) -4)

    ' Get the IGES translator Add-In.
    Dim oIGESTranslator As TranslatorAddIn
    oIGESTranslator = ThisApplication.ApplicationAddIns.ItemById _
    ("{90AF7F44-0C01-11D5-8E83-0010B541CD80}")
    Dim oContext As TranslationContext
    oContext = ThisApplication.TransientObjects.CreateTranslation Context
    Dim oOptions As NameValueMap
    oOptions = ThisApplication.TransientObjects.CreateNameValueMa p
    If oIGESTranslator.HasSaveCopyAsOptions(docFile, oContext, oOptions) Then
    ' Set geometry type for wireframe.
    ' 0 = Surfaces, 1 = Solids, 2 = Wireframe
    'oOptions.Value("GeometryType") = 1
    ' To set other translator values:
    ' oOptions.Value("SolidFaceType") = n
    ' 0 = NURBS, 1 = Analytic
    ' oOptions.Value("SurfaceType") = n
    ' 0 = 143(Bounded), 1 = 144(Trimmed)
    oContext.Type = IOMechanismEnum.kFileBrowseIOMechanism
    Dim oData As DataMedium
    oData = ThisApplication.TransientObjects.CreateDataMedium
    'set file path for IGS file
    oData.FileName = oFolder & "\" & shortname & ".igs"
    oIGESTranslator.SaveCopyAs(docFile, oContext, oOptions, oData)
    End If
    Next


    Secondo te basta che lo ce la aggiungo sotto nella stessa regola che hai postato tu per fare quello che chiedo? Al momento mi esporta in iges, ma se volessi esportare in step come potrei fare?Non mi piace molto iges perché sono files più pesanti di quelli in formato step. Ti ringrazio ancora

  4. #4
    Utente Standard L'avatar di Catafratto
    Iscritto dal
    2011
    Messaggi
    809
    Professione
    Disegnatore/progettista
    Regione
    Veneto
    Software
    Inventor 2016

    Predefinito

    Unito in fretta un paio di esempi, mi pare funzioni...

    Codice:
     
    Public Sub AddiPartOccurrence()
        ' Open the factory document invisible.
        Dim oFactoryDoc As PartDocument
        Set oFactoryDoc = ThisApplication.Documents.Open("W:\Commesse\AIA\15030_Modifica zona lavatrici\Assieme2.C02.ipt", False)
    
        ' Set a reference to the component definition.
        Dim oCompDef As PartComponentDefinition
        Set oCompDef = oFactoryDoc.ComponentDefinition
    
        ' Make sure we have an iPart factory.
        If oCompDef.IsiPartFactory = False Then
            MsgBox "Chosen document is not a factory.", vbExclamation
            Exit Sub
        End If
    
        ' Set a reference to the factory.
        Dim oiPartFactory As iPartFactory
        Set oiPartFactory = oCompDef.iPartFactory
    
        ' Get the number of rows in the factory.
        Dim iNumRows As Integer
        iNumRows = oiPartFactory.TableRows.Count
    
        ' Create a new assembly document
        Dim oDoc As AssemblyDocument
        Set oDoc = ThisApplication.Documents.Add(kAssemblyDocumentObject, , True)
    
        Dim oOccs As ComponentOccurrences
        Set oOccs = oDoc.ComponentDefinition.Occurrences
    
        Dim oPos As Matrix
        Set oPos = ThisApplication.TransientGeometry.CreateMatrix
    
        Dim oStep As Double
        oStep = 0#
        Dim iRow As Long
    
        ' Add an occurrence for each member in the factory.
        For iRow = 1 To iNumRows
    
            oStep = oStep + 10
    
            ' Add a translation along X axis
            oPos.SetTranslation ThisApplication.TransientGeometry.CreateVector(oStep, oStep, 0)
    
            Dim oOcc As ComponentOccurrence
            Set oOcc = oOccs.AddiPartMember("W:\Commesse\AIA\15030_Modifica zona lavatrici\Assieme2.C02.ipt", oPos, iRow)
            
        Next
        
        oDoc.Save
        
        Dim oRefDoc As Document
        For Each oRefDoc In oDoc.ReferencedDocuments
           Call ExportToSTEP(oRefDoc)
        Next
            
        
    End Sub
    
    Public Sub ExportToSTEP(oDoc As Document)
        
        Dim exportPath As String
        exportPath = "C:\STP\"
    
        ' Get the STEP translator Add-In.
        Dim oSTEPTranslator As TranslatorAddIn
        Set oSTEPTranslator = ThisApplication.ApplicationAddIns.ItemById("{90AF7F40-0C01-11D5-8E83-0010B541CD80}")
    
        If oSTEPTranslator Is Nothing Then
            MsgBox "Could not access STEP translator."
            Exit Sub
        End If
    
        Dim oContext As TranslationContext
        Set oContext = ThisApplication.TransientObjects.CreateTranslationContext
        Dim oOptions As NameValueMap
        Set oOptions = ThisApplication.TransientObjects.CreateNameValueMap
        If oSTEPTranslator.HasSaveCopyAsOptions(ThisApplication.ActiveDocument, oContext, oOptions) Then
            ' Set application protocol.
            ' 2 = AP 203 - Configuration Controlled Design
            ' 3 = AP 214 - Automotive Design
            oOptions.Value("ApplicationProtocolType") = 3
    
            ' Other options...
            'oOptions.Value("Author") = ""
            'oOptions.Value("Authorization") = ""
            'oOptions.Value("Description") = ""
            'oOptions.Value("Organization") = ""
    
            oContext.Type = kFileBrowseIOMechanism
    
            Dim oData As DataMedium
            Set oData = ThisApplication.TransientObjects.CreateDataMedium
            
    
            'format file name
            Dim FNamePos As Long
            'postion of last back slash
            FNamePos = InStrRev(oDoc.FullFileName, "\", -1)
            Dim docFName As String
            'file name with extension
            docFName = Strings.Right(oDoc.FullFileName, Len(oDoc.FullFileName) - FNamePos)
            'file name without extension
            Dim shortName As String
            shortName = Strings.Left(docFName, Len(docFName) - 4)
    
            oData.filename = exportPath & shortName & ".stp"
    
            Call oSTEPTranslator.SaveCopyAs(oDoc, oContext, oOptions, oData)
        End If
    End Sub
    Spesso astuzia ed intelligenza sono molto più efficaci dell'ottusa forza bruta: ma non ho proprio tempo di cercare qualcun alltro...

  5. #5
    Utente Junior
    Iscritto dal
    2013
    Messaggi
    23
    Professione
    libero professionista
    Regione
    Trento
    Software
    inventor 2011,2013, autocad

    Predefinito

    Grazie mille,gentilissimo,appena sono in ufficio lo provo e poi ti faccio sapere. Grazie mille ancora per l'aiuto

  6. #6
    Utente Junior
    Iscritto dal
    2013
    Messaggi
    23
    Professione
    libero professionista
    Regione
    Trento
    Software
    inventor 2011,2013, autocad

    Predefinito

    Buongiorno,l'ho provata,ma prima inventor mi ha dato un messaggio che tutte le istruzioni sub e function devono essere posizionati dopo sub main(), allora l'ho rinominata sub main.
    Quando l'ho riavviata inventor mi ha dato il messaggio che le istruzioni let e set non sono più supportate.... Boh! Dove sb Sbaglio? Io creo la regola dal menu ilogic di inventor e poi la faccio partire,devo farla girare in qualche altro modo?

  7. #7
    Utente Standard L'avatar di Catafratto
    Iscritto dal
    2011
    Messaggi
    809
    Professione
    Disegnatore/progettista
    Regione
    Veneto
    Software
    Inventor 2016

    Predefinito

    Non era una regola iLogic ma un programma VBA (che è compatibile con iLogic); dai messaggi che hai penso tu possa semplicemente provare a rimuovere le istruzione set (sono prima di assegnazioni di variabili, tipo "set oPippo = ...")
    Spesso astuzia ed intelligenza sono molto più efficaci dell'ottusa forza bruta: ma non ho proprio tempo di cercare qualcun alltro...

  8. #8
    Utente Junior
    Iscritto dal
    2013
    Messaggi
    23
    Professione
    libero professionista
    Regione
    Trento
    Software
    inventor 2011,2013, autocad

    Predefinito

    Grazie mille, ma sono riuscito a farla girare usando l'editor integrato in inventor. Va come una scheggia. Grazie ancora

  9. #9
    Utente Standard
    Iscritto dal
    2015
    Messaggi
    344
    Professione
    Disegnatore
    Regione
    Piemonte
    Software
    Inventor

    Predefinito

    Vi faccio i complimenti per l'utilizzo della programmazione. Comunque sotto gli Strumenti di Inventor (dal menu start) c'è Programmazione operazioni.
    Tra le operazioni pianificate puoi usare "Converti file", poi selezioni gli ipt di partenza e come file di arrivo lo step. Poi dai il via e fa tutto lui.
    Ciao

  10. #10
    Utente Junior
    Iscritto dal
    2013
    Messaggi
    23
    Professione
    libero professionista
    Regione
    Trento
    Software
    inventor 2011,2013, autocad

    Predefinito

    Ciao, il problema é che l' ipt é uno solo, ma i membri di tale ipt sono migliaia, essendo un ipart. Convertendo quel file lì non me ne faccio niente, é tutti i suoi membri che bisogna generare e convertire contemporaneamente. la macro pubblicata sopra fa proprio quello


  • Pagina 1 di 2 12 UltimaUltima

    Discussioni Simili

    1. Esportazione in step 214 con VISI
      Di mar_cel_lo nel forum VISI-series
      Risposte: 4
      Ultimo Messaggio: 12-11-2013, 14: 30
    2. Rendere automatica la data di creazione.
      Di Simo91 nel forum Solidworks
      Risposte: 3
      Ultimo Messaggio: 27-02-2012, 11: 06
    3. Esportazione step e memoria
      Di cacciatorino nel forum Solidworks
      Risposte: 5
      Ultimo Messaggio: 06-12-2010, 18: 54
    4. Esportazione automatica progetto
      Di CyCop nel forum Solidworks
      Risposte: 7
      Ultimo Messaggio: 15-10-2008, 09: 47
    5. Creazione automatica degli assi
      Di anderbolo nel forum AutoCAD
      Risposte: 3
      Ultimo Messaggio: 21-01-2008, 16: 42

    Tag per Questa Discussione

    Segnalibri

    Segnalibri

    Permessi di Scrittura

    • Tu non puoi inviare nuove discussioni
    • Tu non puoi inviare risposte
    • Tu non puoi inviare allegati
    • Tu non puoi modificare i tuoi messaggi
    •  





    CAD3D.it - la community dei progettisti