| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
| |
| SPINNER Hausausstellung |
Autor
|
Thema: Allgemeine Tabelle mit Makro einfügen (3134 mal gelesen)
|
Jaysan Mitglied Konstrukteur / CAD-Admin
Beiträge: 12 Registriert: 30.10.2014
|
erstellt am: 30. Okt. 2014 15:47 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, ich bin neu hier und möchte gleich vorausschicken, dass ich kaum bis keine Ahmung von Makros habe. Mein Problem ist ich möchte gerne eine Allgemeine Tabelle die ich vorher gespeichert habe über ein Makro einfügen. Vielen Dank schon einmal für die Hilfe.. Gruß Jay Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bk.sc Ehrenmitglied V.I.P. h.c. Konstrukteur Sondermaschinenbau
Beiträge: 2776 Registriert: 18.07.2012 -Solid Works 2019 SP5 -Pro Engineer WF 3
|
erstellt am: 03. Nov. 2014 06:18 <-- editieren / zitieren --> Unities abgeben: Nur für Jaysan
Hallo Jay, was für eine Tabelle (Allgemeine SWX Tabelle, Excel OLE Tabelle, Konfigurationstabelle, Versionstabelle...) möchtest du wohin einfügen (Modell, Zeichnung, Baugruppe) und warum reichen dir hier die Standard SWX Funktionen nicht aus? Gruß Bernd ------------------ --- Man muß nicht alles wissen, man muß nur wissen wo es steht --- Staatlich anerkannte Deutschniete Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jaysan Mitglied Konstrukteur / CAD-Admin
Beiträge: 12 Registriert: 30.10.2014
|
erstellt am: 10. Nov. 2014 07:29 <-- editieren / zitieren --> Unities abgeben:
Hallo Bernd es handelt sich um eine Allgemeine SWX Tabelle die ich einfügen möchte. Über Makro weil er über den Dateinamen auslesen soll, welche Tabelle einzufügen ist. Ich brauche dazu "nur" den Befehl eine Tabellenvorlage in eine Zeichnung einzufügen. Müsste ja dann an den vorgegeben Ankerpunkt sein? Gruß und Danke für die Rückmledung. Jay ------------------ - Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
StefanBerlitz Guter-Geist-Moderator IT Admin (CAx)
Beiträge: 8756 Registriert: 02.03.2000 SunZu sagt: Analysiere die Vorteile, die du aus meinem Ratschlag ziehst. Dann gliedere deine Kräfte entsprechend und mache dir außergewöhnliche Taktiken zunutze.
|
erstellt am: 10. Nov. 2014 08:21 <-- editieren / zitieren --> Unities abgeben: Nur für Jaysan
Hallo Jay, Zitat: Original erstellt von Jaysan: Ich brauche dazu "nur" den Befehl eine Tabellenvorlage in eine Zeichnung einzufügen.
Das sollte dann DrawingDoc::InsertTableAnnotation2 sein. Code: Sub main() Dim swApp As Object Dim DrawingDoc As Object Dim myTable As Object Set swApp = Application.SldWorks Set DrawingDoc = swApp.ActiveDoc Set myTable = DrawingDoc.InsertTableAnnotation2( _ True, _ 0.1, 0.1, _ 3, _ "c:\temp\macros\2x2.sldtbt", _ 0, 0) If myTable Is Nothing Then Debug.Print "Ups, konnter Tabelle nicht erzeugen" End If End Sub
Ciao, Stefan ------------------ Inoffizielle deutsche SolidWorks Hilfeseite http://solidworks.cad.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jaysan Mitglied Konstrukteur / CAD-Admin
Beiträge: 12 Registriert: 30.10.2014
|
erstellt am: 10. Nov. 2014 08:44 <-- editieren / zitieren --> Unities abgeben:
|
Jaysan Mitglied Konstrukteur / CAD-Admin
Beiträge: 12 Registriert: 30.10.2014 SolidWorks 2015 SP4.0 Windows 7 64bit DELL T1700
|
erstellt am: 27. Nov. 2014 08:30 <-- editieren / zitieren --> Unities abgeben:
Hallo nochmal... das makro funktioniert sehr gut bis jetzt. Es haben sich aber noch zwei weitere Fragen ergeben. 1. kann ich die eingefügte Tabelle über einen Befehl wieder löschen denn im Moment muss ich die Tabelle manuell löschen und es wäre schön wenn das über ein Button funktionieren würde. 2. kann ich der Tabelle einen Namen geben, dass sie im Verzeichnis rechts nicht als Allgemeine Tabelle 1,2,3... angezeigt wird. Vielen Dank schon einmal für die Hilfe Gruß Jay ------------------ - 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: 27. Nov. 2014 15:59 <-- editieren / zitieren --> Unities abgeben: Nur für Jaysan
Hallo 1.) am Besten Du gibst nach dem Erstellen Deiner Tabelle noch einen Namen mit myTable.Annotation.SetName("Tabelle-XY") wenn Du die Tabelle dann löschen möchtest suchst Du Dir einfach die Tabelle an Hand des Namens und löscht sie in dem Du sie auswählt und löscht. In der Art von swann.Select (False) swDraw.DeleteSelection (False) 2.) den Namen im Featuremanager kannst Du mit myTable.GeneralTableFeature.GetFeature.Name = "Tabelle-XY" vergeben ------------------ Grüße Heinz Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jaysan Mitglied Konstrukteur / CAD-Admin
Beiträge: 12 Registriert: 30.10.2014
|
erstellt am: 28. Nov. 2014 07:44 <-- editieren / zitieren --> Unities abgeben:
Hey Vielen Dank erst einmal für die schnelle Antwort. Ich muss aber gestehen ich kann nicht besonders viel damit anfangen da ich keine Ahnung habe wie ich das einfügen soll. Wäre für einen kurzen Code unheimlich dankbar. In dem Zug wollte ich auch noch nachfragen gibt es eine DEUTSCHE Seite mit der man sich die Basics beibringen kann. Hab nochmal den Code von oben aufgegriffen kann mir vllt jemand hier das einbauen wie ich das mit dem Namen machen und dann auch wie ich die Tabelle nach Namen auswähle und wieder lsöche. Vielen Dank Code: Sub main() Dim swApp As Object Dim DrawingDoc As Object Dim myTable As Object Set swApp = Application.SldWorks Set DrawingDoc = swApp.ActiveDoc Set myTable = DrawingDoc.InsertTableAnnotation2( _ True, _ 0.1, 0.1, _ 3, _ "c:\temp\macros\2x2.sldtbt", _ 0, 0) If myTable Is Nothing Then Debug.Print "Ups, konnter Tabelle nicht erzeugen" End If ????swann.Select (False) swDraw.DeleteSelection (False)???? End Sub ------------------ - Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
StefanBerlitz Guter-Geist-Moderator IT Admin (CAx)
Beiträge: 8756 Registriert: 02.03.2000 SunZu sagt: Analysiere die Vorteile, die du aus meinem Ratschlag ziehst. Dann gliedere deine Kräfte entsprechend und mache dir außergewöhnliche Taktiken zunutze.
|
erstellt am: 28. Nov. 2014 08:17 <-- editieren / zitieren --> Unities abgeben: Nur für Jaysan
Hallo Jay, Zitat: Original erstellt von Jaysan: In dem Zug wollte ich auch noch nachfragen gibt es eine DEUTSCHE Seite mit der man sich die Basics beibringen kann.
Da bin ich etwas verblüfft, dass du nichts findest, wenn du wirklich danach gesucht hast. Hier im Forum kannst du viele Beiträge finden, Stichworte wie Makro, API, Lernen, Einsteigen miteinander kombiniert bringen schnell Ergebnisse. Wie in den gelinkten Beiträgen auch geschrieben solltest du zunächst mal VB/VBA (oder VB.NET) in den Grundlagen lernen, sonst wird das nichts. Dazu gibt es Online-Kurse, Kurse an Volkshochschulen oder Bücher mit Lernvideos zum Selbststudium. Für die Grundlagen der AP Programmierung mit SolidWorks kannst du dann mal auf meiner API Hilfeseite vorbeischauen, da ist auch immer noch der hervorragende Grundlagenkurs von Daniel Bühling zu finden. Der hat auch unter http://www.mysldworks.de/ eine super Seite mit Snippets und Codebeispielen zu .NET mit SolidWorks in deutscher Sprache. Hier im Brett findest du auch hunderte an Beispielen, meist Hilfen und kleine Bruchstücke, selten mal ganze kommentierte Makros. Und das hat in der Regel einen Grund: Zitat: Original erstellt von Jaysan: Hab nochmal den Code von oben aufgegriffen kann mir vllt jemand hier das einbauen wie ich das mit dem Namen machen und dann auch wie ich die Tabelle nach Namen auswähle und wieder lsöche.
Fertige, kundenspezifische Arbeiten werden in der Regel in einer kommerziellen Umgebung gegen Bezahlung erstellt. Hier im Brett gibt es in der Regel Hilfe zur Selbsthilfe, aber da muss dann schon mehr kommen als "Ich kann das nicht, macht ihr mir mal". Du kannst dir dazu gerne mal meine Meinung in diesem Beitrag durchlesen (ggf. auch den ganzen Thread, da steckt auch noch ne Menge zum Lernen in Bezug auf API Programmierung drin, nicht nur dieses Metagesülze ). Ciao, Stefan ------------------ Inoffizielle deutsche SolidWorks Hilfeseite http://solidworks.cad.de 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: 28. Nov. 2014 08:58 <-- editieren / zitieren --> Unities abgeben: Nur für Jaysan
Hallo Jaysan nachdem ich Dir einen falschen Code gepostet habe es muss nämlich "myTable.GetAnnotation.SetName("Tabelle-XY")" und nicht "myTable.Annotation.SetName("Tabelle-XY")" heißen anbei zwei Makros die Dir helfen sollten Const Tab_name = "Tabelle-XY"
Sub insert_tab() Dim swApp As Object Dim swdraw As Object Dim swview As Object Dim swann As Object Dim myTable As Object Set swApp = Application.SldWorks Set swdraw = swApp.ActiveDoc Set swview = swdraw.GetFirstView Do While Not swview Is Nothing Set myTable = swview.GetFirstTableAnnotation Do While Not myTable Is Nothing Set swann = myTable.GetAnnotation If swann.GetName = Tab_name Then MsgBox "Tabelle " & Tab_name & " existiert bereits", vbOKOnly, "Meldung" Exit Sub End If Set myTable = myTable.GetNext Loop Set swview = swview.GetNextView Loop Set myTable = swdraw.InsertTableAnnotation2(True, 0.1, 0.1, 3, "", 2, 2) If myTable Is Nothing Then MsgBox "Konnte Tabelle " & Tab_name & " nicht erstellen", vbOKOnly, "Meldung" Else myTable.GetAnnotation.SetName(Tab_name) myTable.GeneralTableFeature.GetFeature.Name = Tab_name End If End Sub Sub del_tab() Dim swApp As Object Dim swdraw As Object Dim swview As Object Dim swann As Object Dim myTable As Object Set swApp = Application.SldWorks Set swdraw = swApp.ActiveDoc Set swview = swdraw.GetFirstView Do While Not swview Is Nothing Set myTable = swview.GetFirstTableAnnotation Do While Not myTable Is Nothing Set swann = myTable.GetAnnotation If swann.GetName = Tab_name Then swann.Select (False) swdraw.DeleteSelection (False) Exit Sub End If Set myTable = myTable.GetNext Loop Set swview = swview.GetNextView Loop MsgBox "Keine Tabelle mit dem Namen " & Tab_name & " gefunden", vbOKOnly, "Meldung" End Sub ------------------ Grüße Heinz [Diese Nachricht wurde von nahe am 28. Nov. 2014 editiert.] [Diese Nachricht wurde von nahe am 28. Nov. 2014 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jaysan Mitglied Konstrukteur / CAD-Admin
Beiträge: 12 Registriert: 30.10.2014
|
erstellt am: 28. Nov. 2014 10:14 <-- editieren / zitieren --> Unities abgeben:
|