Pagina 2 di 2 PrimaPrima 12
Risultati da 11 a 19 di 19

Discussione: API e Assemblaggio

  1. #11
    Utente Junior
    Iscritto dal
    2009
    Messaggi
    22
    Professione
    Studente ing meccanica
    Regione
    Lombardia
    Software
    Solid Edge, Rhinoceros

    Predefinito

    Ho provato anche cambiando i pezzi, si inchioda sempre sulla creazione del reference fra il pezzo ed il suo piano YZ, indipendentemente dal sistema di coordinate o dal pezzo che prendo.

    Quando lo fa per il primo dei pezzi funziona, con qualsiasi altro crasha, eppure con il piano XY non dà problemi ed i sistemi di coordinate sono stati costruiti allo stesso modo. Non capisco...

  2. #12
    Moderatore L'avatar di Be_on_edge
    Iscritto dal
    2007
    Messaggi
    2763
    Professione
    Progettazione
    Regione
    Emilia Romagna
    Software
    Solid Edge

    Predefinito

    In VB6 questo è come lo farei io, e funziona.

    Ciao

    Codice:
    Private Sub Assembla()
        
        Dim objApp As SolidEdgeFramework.Application
        Dim objAsm As SolidEdgeAssembly.AssemblyDocument
        
        Dim objOcc1 As SolidEdgeAssembly.Occurrence
        Dim objOcc2 As SolidEdgeAssembly.Occurrence
        
        Dim objOcc1CS As SolidEdgePart.CoordinateSystem
        Dim objOcc2CS As SolidEdgePart.CoordinateSystem
        
        Dim ObjOcc1XYPlane As SolidEdgeGeometry.Face
        Dim ObjOcc1YZPlane As SolidEdgeGeometry.Face
        Dim ObjOcc1ZXPlane As SolidEdgeGeometry.Face
        Dim ObjOcc2XYPlane As SolidEdgeGeometry.Face
        Dim ObjOcc2YZPlane As SolidEdgeGeometry.Face
        Dim ObjOcc2ZXPlane As SolidEdgeGeometry.Face
        
        Dim XYZPoints1(1 To 6) As Double
        Dim XYZPoints2(1 To 6) As Double
        
        Dim objOcc1Ref As SolidEdgeFramework.Reference
        Dim objOcc2Ref As SolidEdgeFramework.Reference
        
        Set objApp = GetObject(, "SolidEdge.Application")
        Set objAsm = objApp.ActiveDocument
        
        For Each Occurrence In objAsm.Occurrences
            
            If Occurrence.Index <> objAsm.Occurrences.Count Then
            
                Set objOcc1 = Occurrence
                Set objOcc2 = objAsm.Occurrences.Item(objOcc1.Index + 1)
                
                For i = objOcc2.Relations3d.Count To 1 Step -1
                    objOcc2.Relations3d(i).Delete
                Next i
                
                Set objOcc1CS = objOcc1.OccurrenceDocument.CoordinateSystems(2)
                Set objOcc2CS = objOcc2.OccurrenceDocument.CoordinateSystems(3)
                
                Call objOcc1CS.GetOrientation(XYZPoints1(1), XYZPoints1(2), XYZPoints1(3), XYZPoints1(4), XYZPoints1(5), XYZPoints1(6))
                Call objOcc2CS.GetOrientation(XYZPoints2(1), XYZPoints2(2), XYZPoints2(3), XYZPoints2(4), XYZPoints2(5), XYZPoints2(6))
                
                Set ObjOcc1XYPlane = objOcc1CS.Plane(seCoordSysXYPlane)
                Set ObjOcc1YZPlane = objOcc1CS.Plane(seCoordSysYZPlane)
                Set ObjOcc1ZXPlane = objOcc1CS.Plane(seCoordSysZXPlane)
                
                Set ObjOcc2XYPlane = objOcc2CS.Plane(seCoordSysXYPlane)
                Set ObjOcc2YZPlane = objOcc2CS.Plane(seCoordSysYZPlane)
                Set ObjOcc2ZXPlane = objOcc2CS.Plane(seCoordSysZXPlane)
                
                Set objOcc1Ref = objAsm.CreateReference(objOcc1, ObjOcc1XYPlane)
                Set objOcc2Ref = objAsm.CreateReference(objOcc2, ObjOcc2XYPlane)
                
                Call objAsm.Relations3d.AddPlanar(objOcc1Ref, objOcc2Ref, False, XYZPoints1, XYZPoints2)
                
                Set objOcc1Ref = objAsm.CreateReference(objOcc1, ObjOcc1YZPlane)
                Set objOcc2Ref = objAsm.CreateReference(objOcc2, ObjOcc2YZPlane)
                
                Call objAsm.Relations3d.AddPlanar(objOcc1Ref, objOcc2Ref, False, XYZPoints1, XYZPoints2)
                
                Set objOcc1Ref = objAsm.CreateReference(objOcc1, ObjOcc1ZXPlane)
                Set objOcc2Ref = objAsm.CreateReference(objOcc2, ObjOcc2ZXPlane)
                
                Call objAsm.Relations3d.AddPlanar(objOcc1Ref, objOcc2Ref, False, XYZPoints1, XYZPoints2)
                
            End If
            
        Next Occurrence
        
    End Sub
    Francesco
    Cintura nera di solid edge

  3. #13
    Utente Junior
    Iscritto dal
    2009
    Messaggi
    22
    Professione
    Studente ing meccanica
    Regione
    Lombardia
    Software
    Solid Edge, Rhinoceros

    Predefinito

    Ciao!

    Il tuo codice è praticamente come il mio, infatti anche il mio funziona con il primo assemblaggio.

    Sul secondo assemblaggio esegue l'AddPlanar sulla prima coppia di piani (QUALSIASI ESSA SIA: XY, YZ, ZX), poi quando creo di nuovo i reference per chiamare per la seconda volta l'AddPlanar crasha SEMPRE sulla creazione del reference. E crasha indipendentemente da quale piano usi!!

    Cioè se faccio prima l'XY e poi l'YZ:

    Codice:
      Set objOcc1Ref = objAsm.CreateReference(objOcc1, ObjOcc1XYPlane)
                Set objOcc2Ref = objAsm.CreateReference(objOcc2, ObjOcc2XYPlane)
                
                Call objAsm.Relations3d.AddPlanar(objOcc1Ref, objOcc2Ref, False, XYZPoints1, XYZPoints2)
                
                Set objOcc1Ref = objAsm.CreateReference(objOcc1, ObjOcc1YZPlane)
                Set objOcc2Ref = objAsm.CreateReference(objOcc2, ObjOcc2YZPlane)
                
                Call objAsm.Relations3d.AddPlanar(objOcc1Ref, objOcc2Ref, False, XYZPoints1, XYZPoints2)
    Fa l'XY ma crasha sull'YZ, cioè su "Set objOcc1Ref = objAsm.CreateReference(objOcc1, ObjOcc1YZPlane)"

    Mentre se scambio l'ordine facendo prima l'YZ e poi l'XY:

    Codice:
      Set objOcc1Ref = objAsm.CreateReference(objOcc1, ObjOcc1YZPlane)
                Set objOcc2Ref = objAsm.CreateReference(objOcc2, ObjOcc2YZPlane)
                
                Call objAsm.Relations3d.AddPlanar(objOcc1Ref, objOcc2Ref, False, XYZPoints1, XYZPoints2)
                
                Set objOcc1Ref = objAsm.CreateReference(objOcc1, ObjOcc1XYPlane)
                Set objOcc2Ref = objAsm.CreateReference(objOcc2, ObjOcc2XYPlane)
                
                Call objAsm.Relations3d.AddPlanar(objOcc1Ref, objOcc2Ref, False, XYZPoints1, XYZPoints2)
    Fa l'YZ ma crasha sull'XY, "Set objOcc1Ref = objAsm.CreateReference(objOcc1, ObjOcc1XYPlane)"

    Praticamente crasha sempre sul secondo reference, mentre il primo riesce sempre a crearlo, indipendentemente da quali piani io usi! Ho provato pure con ZX, stesso discorso.

    Non capisco che senso abbia... come mai sempre sul secondo?

  4. #14
    Moderatore L'avatar di Be_on_edge
    Iscritto dal
    2007
    Messaggi
    2763
    Professione
    Progettazione
    Regione
    Emilia Romagna
    Software
    Solid Edge

    Predefinito

    Nel tuo codice scrivi:

    Codice:
    seRels3D.AddPlanar(seRefOcc1, seRefOcc2, false, ConstrainingPoint, ConstrainingPoint)
    In pratica utilizzi lo stesso punto (ConstrainingPoint) per l'orientamento e non credo che possa funzionare.
    Il due punti devono essere relativi alla due facce che gli dai come parametro.

    Nel mio codice infatti utilizzo XYZPoints1 e XYZPoints2

    Verifica
    Francesco
    Cintura nera di solid edge

  5. #15
    Utente Junior
    Iscritto dal
    2009
    Messaggi
    22
    Professione
    Studente ing meccanica
    Regione
    Lombardia
    Software
    Solid Edge, Rhinoceros

    Predefinito

    Ok ora lo sistemo, ma lui non crasha su AddPlanar ma su CreateReference, per cui non credo sia questo il motivo.

  6. #16
    Moderatore L'avatar di Be_on_edge
    Iscritto dal
    2007
    Messaggi
    2763
    Professione
    Progettazione
    Regione
    Emilia Romagna
    Software
    Solid Edge

    Predefinito

    Citazione Originariamente Scritto da Sbabba Visualizza Messaggio
    Ok ora lo sistemo, ma lui non crasha su AddPlanar ma su CreateReference, per cui non credo sia questo il motivo.
    Dando dei riferimenti sbagliati credo vengano create relazioni apparentemente valide che creano problemi poi a quelle successive.
    Hai verificato sul CAD le relazioni create in che stato sono ?

    Ciao
    Francesco
    Cintura nera di solid edge

  7. #17
    Utente Junior
    Iscritto dal
    2009
    Messaggi
    22
    Professione
    Studente ing meccanica
    Regione
    Lombardia
    Software
    Solid Edge, Rhinoceros

    Predefinito

    Grazie, hoo fatto come mi hai detto ma purtroppo trovo sempre lo stesso errore.

    Le relazioni dove le vedo? Da Spy non riesco a trovare la voce "reference".

    Scusa se ne approfitto, ma posso provare a passarti i 3 componenti che sto assemblando? Magari tu vedi l'errore dove io sto sbattendo la testa da 3 giorni...

    Il problema è quando crea il secondo reference fra il terzo sistema di coordinate del pezzo 2 (SC_Join_Upper) e il pezzo 2.

    Grazie mille, sei gentilissimo.
    File Allegati File Allegati

  8. #18
    Moderatore L'avatar di Be_on_edge
    Iscritto dal
    2007
    Messaggi
    2763
    Professione
    Progettazione
    Regione
    Emilia Romagna
    Software
    Solid Edge

    Predefinito

    Citazione Originariamente Scritto da Sbabba Visualizza Messaggio
    Grazie, hoo fatto come mi hai detto ma purtroppo trovo sempre lo stesso errore.

    Le relazioni dove le vedo? Da Spy non riesco a trovare la voce "reference".

    Scusa se ne approfitto, ma posso provare a passarti i 3 componenti che sto assemblando? Magari tu vedi l'errore dove io sto sbattendo la testa da 3 giorni...

    Il problema è quando crea il secondo reference fra il terzo sistema di coordinate del pezzo 2 (SC_Join_Upper) e il pezzo 2.

    Grazie mille, sei gentilissimo.
    Intendo guardare le relazioni tra i pezzi dentro al CAD non in programmazione.
    Comunque le relazioni le trovi dentro occurencedocument.relations3d

    Domani ci guardo adesso non ho VB

    Ciao

    P.S.: Che versione di Solid Edge utilizzi e con quale MP ? Magari è un baco che è stato poi risolto e ti basta un aggiornamento.
    Francesco
    Cintura nera di solid edge

  9. #19
    Utente Junior
    Iscritto dal
    2009
    Messaggi
    22
    Professione
    Studente ing meccanica
    Regione
    Lombardia
    Software
    Solid Edge, Rhinoceros

    Predefinito

    La versione è la ST5, l'MP non lo so perchè la mia è la versione accademica, però so che è la 105.00.00.102

    Ci ho pensato pure io, sto scaricando la ST6 e dopo la provo!


  • Pagina 2 di 2 PrimaPrima 12

    Discussioni Simili

    1. problema assemblaggio
      Di ironlomo nel forum Inventor
      Risposte: 5
      Ultimo Messaggio: 03-08-2012, 19: 56
    2. Assemblaggio di Più Assiemi
      Di Liotro nel forum Solid Edge
      Risposte: 0
      Ultimo Messaggio: 23-03-2010, 10: 06
    3. Assemblaggio Fascetta
      Di Bay nel forum Creo Parametric - Assemblaggio
      Risposte: 0
      Ultimo Messaggio: 10-11-2009, 14: 16
    4. assemblaggio stampo!!!
      Di monster nel forum Cimatron E
      Risposte: 2
      Ultimo Messaggio: 31-08-2009, 14: 37
    5. Aiuto assemblaggio
      Di alessocci nel forum Creo Parametric - Assemblaggio
      Risposte: 4
      Ultimo Messaggio: 14-01-2008, 12: 58

    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