| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
| |
| FMB |
Autor
|
Thema: Block einfügen - Makro (3121 mal gelesen)
|
KonstruGra Mitglied Konstrukteur
Beiträge: 32 Registriert: 13.06.2008 Solid Works 2016 Premium AutoCAD Mechanical 2016
|
erstellt am: 23. Mrz. 2009 14:34 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen! Ich tu mich noch ein bisschen schwer mit dem Bearbeiten von Makros. Irgendwie will das nicht funktionieren. Ich habe nun über das Makrotool von SolidWorks ("Makro aufzeichnen") folgenden Arbeitsschritt ausgeführt: Einfügen eines Blocks: Makroaunfahme gestartet -> Einfügen -> Beschriftung -> Block -> Blockdatei ausgewählt -> OK -> Block in Zeichnung platziert -> OK -> Makroaufnahme angehalten Entstanden ist folgende Definition, wobei mir leider der Fett geschriebene Ausdruck (siehe unten) Probleme bereitet! Wie müsste der Ausdruck heissen? Oder was mache ich falsch? Gibt es irgendwo eine nette Einführung in das Makrowesen mit VBA in SolidWorks? ' ****************************************************************************** ' C:\DOKUME~1\mf\LOKALE~1\Temp\swx2996\Macro1.swb - macro recorded on 03/23/09 by mf ' ****************************************************************************** Dim swApp As Object Dim Part As Object Dim SelMgr As Object Dim boolstatus As Boolean Dim longstatus As Long, longwarnings As Long Dim Feature As Object Sub main()
Set swApp = Application.SldWorks Set Part = swApp.ActiveDoc Set SelMgr = Part.SelectionManager Dim newBlockDefinition As Object Set newBlockDefinition = Part.SketchManager.MakeSketchBlockFromFile(Nothing, "J:\mf\Lackierhinweis.SLDBLK", False, Nothing, 0.8, 0) swApp.ToolsMacroStop ' MACRO PLAYBACK OVER End Sub Freue mich auf eure Antworten.
Grüsse aus der Schweiz, Marc Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Lutz Federbusch Ehrenmitglied V.I.P. h.c. Dipl.-Ing. Maschinenbau
Beiträge: 3094 Registriert: 03.12.2001 alle SW seit 97+ AutoCAD2016-2022 ERP ProAlpha + CA-Link Intel Core i7-7820K 32GB Win10x64 Quadro K5000 SpacePilot
|
erstellt am: 23. Mrz. 2009 15:44 <-- editieren / zitieren --> Unities abgeben: Nur für KonstruGra
Block einfügen ging früher so: Dim swApp As Object Dim Part As Object Sub main() Set swApp = CreateObject("SldWorks.Application") Set Part = swApp.ActiveDoc Part.SelectByID "Blatt1", "SHEET", 0.2290294109447, 0.6704176104483, 0 Part.InsertCustomSymbol "V:\SW_Zeichnungsblöcke\Änderungsnummer skaliert0,8.SLDSYM" Part.ClearSelection End Sub ------------------ Lutz Federbusch Mein Gästebuch Der Mensch, Herr oder Sklave der Technik? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Baumjäger Mitglied CAD/PDM Administrator
Beiträge: 339 Registriert: 21.06.2006 SW2017 - S5.0 AutoCAD Mechanical 2018 Win10 Intel Xeon E3-1240 V2 3,4GHz 16GB RAM NVIDIA Quadro 4000
|
erstellt am: 23. Mrz. 2009 17:03 <-- editieren / zitieren --> Unities abgeben: Nur für KonstruGra
...und geht heute so (ähnlich): Private Sub cmdwriteProperties_Click() Dim swApp As Object Dim boolstatus As Boolean Dim part As Object Dim drawing As SldWorks.DrawingDoc Dim SketchManager As SldWorks.SketchManager Dim Block Dim newBlockInstance As Object Dim SelMgr As Object Dim XCord As Double 'X Koordinate für Einfügepunkt Dim YCord As Double 'Y Koordinate für Einfügepunkt Dim swMathUtil As SldWorks.MathUtility Dim swMathPoint As SldWorks.MathPoint Dim swBlockInstance As SldWorks.SketchBlockInstance Dim pt(2) As Double Dim newBlockDefinition As Object Set swApp = Application.SldWorks Set part = swApp.ActiveDoc Set SelMgr = part.SelectionManager 'Revisionsblock einfügen Set swMathUtil = swApp.GetMathUtility XCord = 0.148 YCord = 0.078 Set swMathPoint = swMathUtil.CreatePoint((pt)) Set newBlockDefinition = part.SketchManager.MakeSketchBlockFromFile(swMathPoint, "S:\Vorlagen\Bloecke\Bloecke-SW2008\revisionsblock.SLDBLK", False, 1, 0) pt(0) = XCord pt(1) = YCord pt(2) = 0 End Sub habe das einfach mal aus einem Makro von mir rauskopiert, muss also leider noch angepasst werden. Ich meine mich zu erinnern dass ich auch das Problem hatte dass Blöcke einfügen nicht einfach funktioniert hat und der Grund war das SolidWorks da irgendwas geändert hat und man das ganze deshalb anders machen muss. Hab aber leider grad keine Ahnung mehr was und wie deshalb hier einfach der Schnipsel zum anpassen, sollte eigentlich funktionieren.
viele Grüße Andy edit: jetzt wo ich nochmal genauer hinschaue, ich glaube die Koordinaten sind der Kanckpunkt an dem ganzen Ding. [Diese Nachricht wurde von Baumjäger am 23. Mrz. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KonstruGra Mitglied Konstrukteur
Beiträge: 32 Registriert: 13.06.2008 Solid Works 2016 Premium AutoCAD Mechanical 2016
|
erstellt am: 23. Mrz. 2009 17:09 <-- editieren / zitieren --> Unities abgeben:
Vielen Dank für deine Antwort. Leider, hat das Einfügen des Blockes so nicht funktioniert... irgendwie komm ich da einfach nicht weiter. Beim Ausführen des Makros kam weder ne Fehlermeldung noch tat sich irgendwas. Gibt es noch einen weiteren Weg? Freundliche Grüsse, Marc Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Lutz Federbusch Ehrenmitglied V.I.P. h.c. Dipl.-Ing. Maschinenbau
Beiträge: 3094 Registriert: 03.12.2001 alle SW seit 97+ AutoCAD2016-2022 ERP ProAlpha + CA-Link Intel Core i7-7820K 32GB Win10x64 Quadro K5000 SpacePilot
|
erstellt am: 23. Mrz. 2009 18:01 <-- editieren / zitieren --> Unities abgeben: Nur für KonstruGra
Bei mir läuft das jetzt unter SW2008 (nach der Baumjäger-Vorlage ): Sub Main() Dim swApp As Object Dim boolstatus As Boolean Dim part As Object Dim drawing As Object 'SldWorks.DrawingDoc Dim SketchManager As Object 'SldWorks.SketchManager Dim Block Dim newBlockInstance As Object Dim SelMgr As Object Dim XCord As Double 'X Koordinate für Einfügepunkt Dim YCord As Double 'Y Koordinate für Einfügepunkt Dim swMathUtil As Object 'SldWorks.MathUtility Dim swMathPoint As Object 'SldWorks.MathPoint Dim swBlockInstance As Object 'SldWorks.SketchBlockInstance Dim pt(2) As Double Dim newBlockDefinition As Object 'Set swApp = Application.SldWorks ' geht bei mir nicht; dafür nächste Zeile eingefügt Set swApp = CreateObject("SldWorks.Application") Set part = swApp.ActiveDoc Set SelMgr = part.SelectionManager 'Revisionsblock einfügen Set swMathUtil = swApp.GetMathUtility XCord = 0.148 YCord = 0.078 Set swMathPoint = swMathUtil.CreatePoint((pt)) Set newBlockDefinition = part.SketchManager.MakeSketchBlockFromFile(swMathPoint, "V:\SW_Zeichnungsblöcke\revisionsblock.SLDBLK", False, 1, 0) pt(0) = XCord pt(1) = YCord pt(2) = 0 End Sub ------------------ Lutz Federbusch Mein Gästebuch Der Mensch, Herr oder Sklave der Technik? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Baumjäger Mitglied CAD/PDM Administrator
Beiträge: 339 Registriert: 21.06.2006 SW2017 - S5.0 AutoCAD Mechanical 2018 Win10 Intel Xeon E3-1240 V2 3,4GHz 16GB RAM NVIDIA Quadro 4000
|
erstellt am: 24. Mrz. 2009 08:23 <-- editieren / zitieren --> Unities abgeben: Nur für KonstruGra
Das ist ja seltsam, wieso funzt das bei mir und bei euch nicht? Kann ich mir leider nicht erklären, wir scheinen ja die gleiche Solidworks Version zu haben. ..die unendlichen Weiten des Solid Wörks... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KonstruGra Mitglied Konstrukteur
Beiträge: 32 Registriert: 13.06.2008 Solid Works 2016 Premium AutoCAD Mechanical 2016
|
erstellt am: 24. Mrz. 2009 08:34 <-- editieren / zitieren --> Unities abgeben:
Super der Funktioniert! --> Die 10 Unities sind unterwegs So wies aussieht, verstehst du dich gut mit VBA-Makros... Vielleicht kannst du mir beim anderen Problem auch weiterhelfen: Bin momentan am Überarbeiten des Schriftkopfes im Zeichnungsbereich... Da hab ich ein Makro soweit abgeändert, dass wir unseren Schriftkopf ausfüllen können. Neu soll jetzt noch ein Lackierhinweis im Schriftkopf aufgenommen werden. Beim Ausfüllen wird je nach Teil der eine (odere mehrere) von vier Hinweisen angekreuzt. Leider bleibt bei erneutem Aufrufen des Schriftkopf-Makros das Häckchen nicht drin. Das neue Blattformat und das Makro befindet sich im Anhang, falls du mal gerne reinschauen möchtest. Grüsse, Marc Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Baumjäger Mitglied CAD/PDM Administrator
Beiträge: 339 Registriert: 21.06.2006 SW2017 - S5.0 AutoCAD Mechanical 2018 Win10 Intel Xeon E3-1240 V2 3,4GHz 16GB RAM NVIDIA Quadro 4000
|
erstellt am: 24. Mrz. 2009 11:37 <-- editieren / zitieren --> Unities abgeben: Nur für KonstruGra
Hallo, Leider steht in meinem Arbeitsvertrag dass ich meine vollständige Schaffenskraft nur meiner eigenen Firma zur Verfügung stellen darf, deshalb kann ich dein Makro leider nicht für dich schreiben. Aber ohne das Ding anzuschauen könnte ich mir vorstellen dass du erst mit einer Funktion "Formular_Initialize" (also beim Laden des Formulars) variable1 = part.GetCustomInfoValue("", "Name der Eigenschaft") 'auslesen einer Eigenschaft Textfeld.Text = variable1 'eintragen der Eigenschaft in ein textfeld deine Eigenschaften auslesen und diese ins Formular übertragen musst. Hoffe das ist halbwegs verständlich was ich damit meine und trifft dein Problem so halbwegs. viele Grüße Andy
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KonstruGra Mitglied Konstrukteur
Beiträge: 32 Registriert: 13.06.2008 Solid Works 2016 Premium AutoCAD Mechanical 2016
|
erstellt am: 24. Mrz. 2009 13:34 <-- editieren / zitieren --> Unities abgeben:
|