| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS | | | | Technische Kommunikation mit der 3DEXPERIENCE Plattform |
Autor
|
Thema: Benötige Bitte hilfe bei einem Makro (1700 mal gelesen)
|
Delta1988 Mitglied Konstrukteur
Beiträge: 64 Registriert: 15.06.2012 SolidWorks 2017
|
erstellt am: 18. Jul. 2012 16:43 <-- editieren / zitieren --> Unities abgeben:
Hallo Gemeinde ich bin wie schon mal gesagt noch unerfahren bei VB. ich habe jetzt mit hilfe der SolidWorks funktion Makro aufzeichen in Makro aufgezeichnet. und zwar soll es eine Stückliste der bestehenden Baugruppe einfügen. Das Makro sieht so aus: Dim swApp As Object
Dim Part As Object Dim boolstatus As Boolean Dim longstatus As Long, longwarnings As Long Sub main() Set swApp = _ Application.SldWorks Set Part = swApp.ActiveDoc boolstatus = Part.Extension.SelectByID2("20120117_S010_Versuch.SLDASM", "COMPONENT", 0, 0, 0, False, 0, Nothing, 0) Part.ClearSelection2 True Dim swBOMTable As Object Set swBOMTable = Part.Extension.InsertBomTable("X:\Solidworks\Stücklistenvorlage\Stücklistenvorlage 2011\Stückliste.sldbomtbt", 1290, 354, swBomType_e.swBomType_TopLevelOnly, "") End Sub Wenn man das Makro jetzt Startet wird nur der Schriftkopf der Stückliste eingefügt ohne Inhalt! Kann mir da jemand weiterhelfen??? bin etwas überfordert!! Danke schon im voraus!! Mfg Delta Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
nahe Ehrenmitglied
Beiträge: 1747 Registriert: 18.01.2001 arbeite mit: Dell Precision 7750 i7 2,6 GHz 6 Kerne 32GB RAM 512GB SSD NVIDIA Quadro RTX 4000 ------------------------ SWX-2020 SP5.0 EPDM ---------------- Windows 10 ---------------- VB.net VB VBA ein wenig Swift am Mac
|
erstellt am: 19. Jul. 2012 10:25 <-- editieren / zitieren --> Unities abgeben: Nur für Delta1988
Hallo Delta hast Du Dir schon das Beispiel in der Online-Hilfe angesehen? Du findest das unter dem Suchbegriff "Insert and Show BOM Table and BOM Balloon Example (VBA)" Als Gedankenanstoss: wenn Du die Stückliste manuell einfügst muss auch zuerst eine Ansicht ausgewählt sein. Das fehlt meiner Meinung nach in Deinem Makro.
------------------ Grüße Heinz Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MWN Mitglied Dipl.-Ing.
Beiträge: 492 Registriert: 14.02.2007
|
erstellt am: 19. Jul. 2012 18:21 <-- editieren / zitieren --> Unities abgeben: Nur für Delta1988
Das ist in seinem Makro schon enthalten: Code: boolstatus = Part.Extension.SelectByID2("20120117_S010_Versuch.SLDASM", "COMPONENT", 0, 0, 0, False, 0, Nothing, 0)
Das Problem wird vielmehr sein, dass das Makro in einer anderen Baugruppe ausgeführt wird, als bei: Zitat: 20120117_S010_Versuch.SLDASM
Da der Select dann fehlschlägt, wird auch keine BOM eingefügt. Was mich nur wundert, dass da keine Fehlermeldung kommt. Für dich @Delta heißt das, dass du dir einen Baugruppenselect per VBA schreiben musst, der obig zitierten Baugruppennamen durch einen gültigen ersetzt. Alternativ kannst du dir auch eine Textbox vorschalten (ich weiß, ist keine schicke Lösung), in der du den Namen einträgst. Probier mal folgendes: Code:
... Set swApp = _ Application.SldWorks Dim strSelectName As String strSelectName = InputBox("Bitte einen gültigen Selectnamen eintragen") Set Part = swApp.ActiveDoc boolstatus = Part.Extension.SelectByID2(strSelectName, "COMPONENT", 0, 0, 0, False, 0, Nothing, 0) Part.ClearSelection2 True ...
GrüßeTobias Achso: Code ist ungetestet, mangels SWX ------------------ Besucht mich doch mal in meiner Tischlerei "...Kommunikation ist nur so gut wie ihr Ergebnis..." - frei nach Richard Bandler / John Grinder "...Wenn du das tust, was du schon immer tust, wirst du auch nur das erhalten, was du schon immer erhalten hast..." Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Carsten Heß Mitglied Diplom Ingenieur (Konstruktion)
Beiträge: 105 Registriert: 23.07.2004 Windows 7 64bit, 12270MB RAM, 3,2 P3 Xeon, Quadro 4000 SW 2014 64bit /SP4.0 MaxxDB SP3.04
|
erstellt am: 23. Jul. 2012 14:54 <-- editieren / zitieren --> Unities abgeben: Nur für Delta1988
Hallo Delta, ich habe den gleichen Weg wie du mal ausprobiert und das Einfügen einer Stückliste aufgezeichnet. Dein Makro ist schon korrekt. Allerdings solltest du mit swapp.GetActiveConfigurationName dir die aktive konfiguration holen und diese am ende von insertBOMTable mit angeben. Denn die Stückliste wird in die BG eingefügt aber es ist keine konfiguration ausgewählt. Dummerweise hat dies bei mir trotzdem nicht funktioniert. Eventuell ein Fehler in der API Habe dir unten mal meinen Code angehängt. Nach meiner Auffassung kannst Du dir das erste mit dem select ganz sparen da als nächstes bei dir die select Funktion wieder aufgehoben wird. Dies zeichnet SW nur auf, weil man selbst auf die BG geklickt hat. Vielleicht klappt es ja bei dir mit der Konfigurationsangabe. Dim swApp As Object
Dim Part As Object Dim boolstatus As Boolean Dim longstatus As Long, longwarnings As Long Sub main() Set swApp = Application.SldWorks Set Part = swApp.ActiveDoc dim conf as string dim filename as string filename = part.getpathname conf = swapp.GetActiveConfigurationName(filename) Dim swBOMTable As Object Set swBOMTable = Part.Extension.InsertBomTable("X:\Solidworks\Stücklistenvorlage\Stücklistenvorlage 2011\Stückliste.sldbomtbt", 1290, 354, swBomType_e.swBomType_TopLevelOnly, conf) End Sub Gruß Carsten Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Delta1988 Mitglied Konstrukteur
Beiträge: 64 Registriert: 15.06.2012 SolidWorks 2017
|
erstellt am: 26. Jul. 2012 12:36 <-- editieren / zitieren --> Unities abgeben:
|
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|