| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SolidEdge |
| |
| UNITEC wird offizieller Systemintegrator von AVEVA, eine Pressemitteilung
|
Autor
|
Thema: Datei in offene Assembly einfügen (3377 mal gelesen)
|
Heinrich78 Mitglied Maschinenbautechniker
Beiträge: 388 Registriert: 07.02.2001 Solid Edge 221.00.12.003 x64 Windows 7 64Bit
|
erstellt am: 19. Sep. 2011 15:02 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, da es für mein Problem siehe: http://ww3.cad.de/foren/ubb/Forum3/HTML/009414.shtml keine einfache Lösung gibt. Wollte ich per VBA Teile in eine Assembly kopieren. Dazu habe ich aus diversen Beispielen folgendes zusammengestellt: Dim objSEApp As SolidEdgeFramework.Application Dim objActiveDoc As Object Dim objASMDoc As SolidEdgeAssembly.AssemblyDocument Dim objPDoc As Object 'Ein Einzelteil Dim objWDoc As SolidEdgePart.WeldmentDocument 'Weldment Document Dim objWModel As SolidEdgePart.WeldmentModel 'Weldment Model Dim actRow As Integer 'Zähler für aktuelle Zeile Sub Stueckliste_lesen() Dim objOccs As SolidEdgeAssembly.Occurrences Dim objOcc As SolidEdgeAssembly.Occurrence Dim compRow As Integer 'Zähler für Zeilendurchlauf zum Vergleichen Dim fName As String 'Dateiname Dim Quantity As Integer 'Anzahl Dim objApplication As SolidEdgeFramework.Application '= Nothing Dim objDocuments As SolidEdgeFramework.Documents '= Nothing Dim objAssembly As SolidEdgeAssembly.AssemblyDocument '= Nothing Dim objAsmRefPlanes As SolidEdgeAssembly.AsmRefPlanes '= Nothing Dim objAsmRefPlane As SolidEdgeAssembly.AsmRefPlane '= Nothing Dim objPPlane As SolidEdgeAssembly.AsmRefPlane '= Nothing Dim objPart As SolidEdgePart.PartDocument '= Nothing Dim objRefPlanes As SolidEdgePart.RefPlanes '= Nothing Dim objRefPlane As SolidEdgePart.RefPlane '= Nothing Dim objOccurrences As SolidEdgeAssembly.Occurrences '= Nothing Dim objOccurrence As SolidEdgeAssembly.Occurrence '= Nothing 'Set objOccurence = Nothing 'Set objPart = Nothing actRow = 1 Set objSEApp = GetObject(, "SolidEdge.Application") 'Zugriff auf Solid Edge holen Set objActiveDoc = objSEApp.ActiveDocument 'Das Aktive Dokument ermitteln If objActiveDoc.Type = igAssemblyDocument Then 'Ist es ein Assembly? Set objASMDoc = objActiveDoc Set objOccs = objASMDoc.Occurrences 'Zugriff auf der Sammelobjekt alle Vorkommen 'Überschriften schreiben ' objPart = objDocuments.Add("H:\temp\a12\A12P1.par") ' Add a part document to the assembly objOccurrence = objOccurrence.AddByFilename("H:\temp\a12\A12P1.par") Set objOccs = Nothing Set objOcc = Nothing Else MsgBox "Kein Solid Edge Assembly aktiv", vbOKOnly, "Stücklisten erstellen" End If Set objSEApp = Nothing Set objActiveDoc = Nothing End Sub Leider bekomme ich an der Stelle: objOccurrence = objOccurrence.AddByFilename("H:\temp\a12\A12P1.par") eine Fehlermeldung: Objektvariable oder With-Blockvariable nicht festgelegt
Woran liegt das? Aus der Hilfe bin ich nicht schlau geworden. Lielleicht kann einer der Programmierer mir hier aushelfen? Gruß, Heinrich
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Markus Gras Moderator Solid Edge AE
Beiträge: 4690 Registriert: 20.07.2000 Kritik muß sachlich falsch und persönlich verletzend sein, damit sie wirkt.
|
erstellt am: 19. Sep. 2011 15:07 <-- editieren / zitieren --> Unities abgeben: Nur für Heinrich78
|
wksyspro Mitglied Dipl.-Ing.
Beiträge: 204 Registriert: 19.11.2004
|
erstellt am: 19. Sep. 2011 15:17 <-- editieren / zitieren --> Unities abgeben: Nur für Heinrich78
|
Heinrich78 Mitglied Maschinenbautechniker
Beiträge: 388 Registriert: 07.02.2001 Solid Edge 221.00.12.003 x64 Windows 7 64Bit
|
erstellt am: 19. Sep. 2011 15:33 <-- editieren / zitieren --> Unities abgeben:
Hallo Marcus, Hallo Wolfgang, danke für eure Beiträge. Leider bringt beides nichts. Habe auch die Variable Datei mit Dim Datei As String definiert. Aktuell sieht es so aus: fName = "H:\temp\a12\A12P1.par" objOccurrence = objOccurrences.AddByFilename(fName) Gleicher Fehler. Hat noch jemand eine Idee? Gruß, Heinrich
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
wksyspro Mitglied Dipl.-Ing.
Beiträge: 204 Registriert: 19.11.2004
|
erstellt am: 19. Sep. 2011 16:15 <-- editieren / zitieren --> Unities abgeben: Nur für Heinrich78
|
Heinrich78 Mitglied Maschinenbautechniker
Beiträge: 388 Registriert: 07.02.2001 Solid Edge 221.00.12.003 x64 Windows 7 64Bit
|
erstellt am: 19. Sep. 2011 16:37 <-- editieren / zitieren --> Unities abgeben:
Hallo Wolfgang, Danke für den Tipp. Leider der gleiche Fehler: Laufzeitfehler '91': Objektvariable oder With-Blockvariable nicht festgelegt Es muss etwas grundsätzliches sein. Hast du noch eine Idee, was ich falsch mache? Gruß, Heinrich
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
pablo Mitglied Techniker
Beiträge: 453 Registriert: 23.01.2002 Win10 Office 365 SE 2019
|
erstellt am: 19. Sep. 2011 17:29 <-- editieren / zitieren --> Unities abgeben: Nur für Heinrich78
Heinrich, Mit ..... Set objOccs = objASMDoc.Occurrences 'Zugriff auf der Sammelobjekt alle Vorkommen Set objOccurrence = objOccs.AddByFilename("H:\temp\a12\A12P1.par") sollte es funktionieren. Mit If objSEApp.ActiveDocument.Type = igAssemblyDocument Then Set objOccurrence = objSEApp.ActiveDocument.Occurrences.AddByFilename("H:\temp\a12\A12P1.par") End If ebenfalls. pablo
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Heinrich78 Mitglied Maschinenbautechniker
Beiträge: 388 Registriert: 07.02.2001 Solid Edge 221.00.12.003 x64 Windows 7 64Bit
|
erstellt am: 20. Sep. 2011 08:22 <-- editieren / zitieren --> Unities abgeben:
Hallo pablo, Mit
Zitat: Original erstellt von pablo: Heinrich,Mit ..... Set objOccs = objASMDoc.Occurrences 'Zugriff auf der Sammelobjekt alle Vorkommen Set objOccurrence = objOccs.AddByFilename("H:\temp\a12\A12P1.par") sollte es funktionieren.
hats geklappt. Super!!! Vielen Dank!!! Jetzt kann ich mich an die Listenauswahl usw. machen. Gibt es irgendwo ein Tutorial speziell für SE mit VBA? Ich habe zwar schon mit VBA und auch VB6 programmiert ist aber schon lange her. Gruß, Heirnich
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |