| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
| |
| 3DEXPERIENCE Conference, eine Veranstaltung am 16.10.2024
|
Autor
|
Thema: Makro für Oberflächenbeschaffenheit und Bearbeitungsangaben (4482 mal gelesen)
|
adialtstaetta Mitglied Konstrukteur
Beiträge: 7 Registriert: 23.10.2006
|
erstellt am: 23. Okt. 2006 15:35 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen Hab ein Problem mit meinem beigefühgten Makro. Ich habe keine Ahnung was falsch ist Bin "Makroneuling" und hoffe jemand kann es mir verbessern. Wenn ich das Makro starte hängt mein SWX.
------------------ es gibt nichts was nicht irgend jemand lösen kann 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. Okt. 2006 16:01 <-- editieren / zitieren --> Unities abgeben: Nur für adialtstaetta
Du bleibst in jeder Deiner Loop-Schleifen hängen, wenn die Blöcke nicht gefunden werden. Hab Dir Dein Makro mal so geändert, daß es nach 100 Schleifen aussteigt (mit Meldungsfenster). Am Ende erzeugt es ja Deine Blöcke oben rechts in der Zeichnung... ------------------ Lutz Federbusch Mein Gästebuch Der Mensch, Herr oder Sklave der Technik? [Diese Nachricht wurde von Lutz Federbusch am 23. Okt. 2006 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tbd Mitglied Teamleiter
Beiträge: 825 Registriert: 26.01.2006 Dell Percision T5400 Intel(R) Xeon(R) CPU X5460 @ 3.16GHz 3,25 GB RAM Nvidia Quadro FX 4600 ----- Win XP Prof SP 3 SW 2008 SP 5.0 PARTsolutions 8.1.08 Cideon SAP PLM 5.103.5.17 Visual Studio 2008
|
erstellt am: 23. Okt. 2006 16:01 <-- editieren / zitieren --> Unities abgeben: Nur für adialtstaetta
Hallo, ich persönlich habe keinen großen Fehler in diesem Macro gefunden. Ich habe nur in die Do-While Schleifen eine Abbruchbedingung eingefügt. Denn wenn in der Zeichnung noch keine Blöcke vorhanden waren, läuft das Makro in diesen Schleifen endlos. Ich habe auch die deklaration verbessert. swapp as sldworks.sldworks Ich habe einen Komentar eingefügt, wo ich etwas verändert habe. Ich hoffe das klappt jetzt, wenn nicht nochnmal mit dem genauen Problem melden.
------------------ Mfg Daniel Es gibt nur drei Möglichkeiten: Sieg, Unentschieden oder Niederlage ---------------------------------------------- Effektive Produktivitätswerkzeuge in der Konstruktion und Zeichnungserstellung. Automatisiert komplette Baugruppen, Teile und Zeichnungen nach Kundenvorgaben.
SolidWorks API Programmierung; Tools und Addin's für SolidWorks | kontakt@schuler-da.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
adialtstaetta Mitglied Konstrukteur
Beiträge: 7 Registriert: 23.10.2006
|
erstellt am: 23. Okt. 2006 16:04 <-- editieren / zitieren --> Unities abgeben:
|
adialtstaetta Mitglied Konstrukteur
Beiträge: 7 Registriert: 23.10.2006
|
erstellt am: 23. Okt. 2006 16:17 <-- editieren / zitieren --> Unities abgeben:
|
adialtstaetta Mitglied Konstrukteur
Beiträge: 7 Registriert: 23.10.2006
|
erstellt am: 23. Okt. 2006 16:22 <-- editieren / zitieren --> Unities abgeben:
Hallo Hab mich zu früh gefreut Es funktioniert bei allen Formaten ausser bei meinem A4 Querformat. Da hab ich oben noch einen Text. Die Position des Blockes sollte also tiefer sein. Wenn ich jetzt den Basispunkt bei den Blöcken ändere, ist die Angabe bei den Formaten A0, A1, A2, usw zu tief. Wie kann man das Lösen? ------------------ es gibt nichts was nicht irgend jemand lösen kann Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tbd Mitglied Teamleiter
Beiträge: 825 Registriert: 26.01.2006 Dell Percision T5400 Intel(R) Xeon(R) CPU X5460 @ 3.16GHz 3,25 GB RAM Nvidia Quadro FX 4600 ----- Win XP Prof SP 3 SW 2008 SP 5.0 PARTsolutions 8.1.08 Cideon SAP PLM 5.103.5.17 Visual Studio 2008
|
erstellt am: 23. Okt. 2006 16:33 <-- editieren / zitieren --> Unities abgeben: Nur für adialtstaetta
Fange dieses Format doch einfach durch eine Abfrage ab. Code:
Dim oSwSheet As SldWorks.Sheet Dim eBlattgroesse As SwConst.swDwgPaperSizes_e 'Sheet Objekt belegen oSwSheet = CType(oSwDrawing.GetCurrentSheet, SldWorks.Sheet) 'Blattgröße ermitteln vBlattInfo = oSwSheet.GetProperties dBlattInfoArray = CType(vBlattInfo, Double()) eBlattgroesse = CType(dBlattInfoArray(0), SwConst.swDwgPaperSizes_e)if eBlattgroesse = SwConst.swDwgPaperSizes_e.swDwgPaperA4size then 'Diese Größe anders behandeln else 'Die anderen Größen normal behandeln end if
Ist zwar jetzt vb.net Code, aber ich hoffe das dir klar wird was ich meine.
------------------ Mfg Daniel Es gibt nur drei Möglichkeiten: Sieg, Unentschieden oder Niederlage ---------------------------------------------- Effektive Produktivitätswerkzeuge in der Konstruktion und Zeichnungserstellung. Automatisiert komplette Baugruppen, Teile und Zeichnungen nach Kundenvorgaben.
SolidWorks API Programmierung; Tools und Addin's für SolidWorks | kontakt@schuler-da.de 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. Okt. 2006 16:35 <-- editieren / zitieren --> Unities abgeben: Nur für adialtstaetta
|
adialtstaetta Mitglied Konstrukteur
Beiträge: 7 Registriert: 23.10.2006
|
erstellt am: 12. Dez. 2006 16:05 <-- editieren / zitieren --> Unities abgeben:
Hallo Ist Zwar schon länger her aber hab noch eine Frage zu diesem Makro. Ich arbeite auf SWX 2007 SP 2.0. gab es da eine Änderung der Begriffe? Das Makro funktioniert nicht mehr. ------------------ es gibt nichts was nicht irgendjemand lösen kann Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tbd Mitglied Teamleiter
Beiträge: 825 Registriert: 26.01.2006 Dell Percision T5400 Intel(R) Xeon(R) CPU X5460 @ 3.16GHz 3,25 GB RAM Nvidia Quadro FX 4600 ----- Win XP Prof SP 3 SW 2008 SP 5.0 PARTsolutions 8.1.08 Cideon SAP PLM 5.103.5.17 Visual Studio 2008
|
erstellt am: 12. Dez. 2006 17:03 <-- editieren / zitieren --> Unities abgeben: Nur für adialtstaetta
Hallo Adi, habe das Makro, welches ich dir verbessert habe getestet. Auf SW 2007 SP0.0 läuft es fehlerfrei. Leider bin ich für Testzwecke vor kurzem wieder zu SP0.0 zurück und kann somit SP2.0 nicht ausprobieren. Könntest du evtl. genau beschreiben bei welcher Codezeile etwas nicht funktioniert, bzw. was für eine Fehlermeldung erzeugt wird? Dann kann man besser abschätzen woran es liegt! ------------------ Mfg Daniel Brauchen Sie Hilfe, sind Sie in Not? Wir retten Sie mit unserem Code! ---------------------------------------------- SolidWorks API-Programmierung | Es gibt neue Freeware Tools und Addins
SolidWorks API Programmierung; Schuler Design Automation GmbH | kontakt@schuler-da.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
adialtstaetta Mitglied Konstrukteur
Beiträge: 7 Registriert: 23.10.2006
|
erstellt am: 12. Dez. 2006 17:13 <-- editieren / zitieren --> Unities abgeben:
hallo Ja ich weiss. Es funtionierte auch bei 1.0 noch. lad SP 2.1 herunter viellicht funktioniert es da wieder. ansonsten schreib ich morgen die genaue Fehlermeldung. besten dank für die schnelle Antwort und einen schönen Abend ------------------ es gibt nichts was nicht irgendjemand lösen kann Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
adialtstaetta Mitglied Konstrukteur
Beiträge: 7 Registriert: 23.10.2006
|
erstellt am: 12. Dez. 2006 17:37 <-- editieren / zitieren --> Unities abgeben:
Hallo Die Fehlermeldungen erscheinen auch bei 2.1. Anbei die Bilder dazu. Hab bei solidsolutions angefragt und die gaben mir dieses Beispiel. Ich hab das Alte gelöscht und das neue eingefügt und an meinen Namen und Pfad angepasst. leider ging danach gar nichts mer. ' Define an insertion point nPt(0) = 0.1 nPt(1) = 0.1 nPt(2) = 0# vPt = nPt Set swMathPoint = swMathUtil.CreatePoint(vPt) ' blockname1 = "C:\customer\rotorcraft\Beschriftung oben rechts.SLDBLK" Set swSketchBlockDef = Drawing.SketchManager.MakeSketchBlockFromFile(swMathPoint, blockname1, False, 0, 0) ' ' alt 'Drawing.InsertBlock "C:\customer\rotorcraft\Beschriftung oben rechts.SLDBLK", 0, 0, 0, 1 ' ------------------ es gibt nichts was nicht irgendjemand lösen kann Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tbd Mitglied Teamleiter
Beiträge: 825 Registriert: 26.01.2006 Dell Percision T5400 Intel(R) Xeon(R) CPU X5460 @ 3.16GHz 3,25 GB RAM Nvidia Quadro FX 4600 ----- Win XP Prof SP 3 SW 2008 SP 5.0 PARTsolutions 8.1.08 Cideon SAP PLM 5.103.5.17 Visual Studio 2008
|
erstellt am: 12. Dez. 2006 18:18 <-- editieren / zitieren --> Unities abgeben: Nur für adialtstaetta
Hallo Adi, es ist schon richtig, dass der Befehl Drawing.InsertBlock veraltet ist. Jedoch frage ich mich nach dem Sinn dieser beiden Codezeilen. Du möchtest doch am Anfang des Makros nur die evtl. bestehenden Blöcke löschen. Dafür hast du aber die beiden unschönen Schleifen wenige Zeilen unterhalb. Wenn ich das Makro bei mir laufen lasse, ist das Objekt, auf welches ich eigentlich durch diesen Befehl (Drawing.InsertBlock) einen Verweis erzeuge, sowieso Nothing. Das liegt einfach an der Pfadangabe. Da du die neuen Blöcke aber erst zum Schluss mit den Zeilen: Code:
'Bearbeitungs-Block eingügen If mKlammer Then Drawing.InsertBlock "Beschriftung oben rechts.SLDBLK", X0, Y0, 0, 1 'Drawing.InsertBlock "I:\BMK\Alg\WiederholteileSoildWorks\Makros\Bearbeitung\Beschriftung oben rechts.SLDBLK", X0, Y0, 0, 1 ElseIf oKlammer Then 'Bearbeitungs-Block eingügen Drawing.InsertBlock "Beschriftung2 oben rechts.SLDBLK", X0, Y0, 0, 1 'Drawing.InsertBlock "I:\BMK\Alg\WiederholteileSoildWorks\Makros\Bearbeitung\Beschriftung2 oben rechts.SLDBLK", X0, Y0, 0, 1 End If
in die Zeichnung eingefügt, sind die beiden ersten Zeilen einfach unnötig! Ich möchte ja nicht unhöflich wirken, aber ich würde dir sehr empfehlen dieses Makro von seinen sehr unsauber programmierten Altlasten zu befreien und es neu aufzusetzen. Entweder musst du dir dafür Zeit nehmen oder du lässt es machen. Es sind in diesem Makro ein Paar sehr merkwürdige und unnütze Zeilen vorhanden, was eine Fehlersuche sehr erschwert. Wenn du das nicht machen möchtest kannst du das Makro mal ohne diese (meiner Meinung nach nicht benötigten) Zeilen ausprobieren und deine Pfadangaben für die Blöcke überprüfen.
------------------ Mfg Daniel Brauchen Sie Hilfe, sind Sie in Not? Wir retten Sie mit unserem Code! ---------------------------------------------- SolidWorks API-Programmierung | Es gibt neue Freeware Tools und Addins
SolidWorks API Programmierung; Schuler Design Automation GmbH | kontakt@schuler-da.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
GrafZahl81 Mitglied Konstrukteur
Beiträge: 50 Registriert: 12.09.2011
|
erstellt am: 17. Jan. 2012 10:23 <-- editieren / zitieren --> Unities abgeben: Nur für adialtstaetta
ACHTUNG! Sie antworten auf einen Beitrag der älter als 1 Jahr ist! Hallo, habe das Makro gerade getestet und findes es echt toll nur leider kommt bei mir der selbe Fehler. Klar habe ich den Pfad im Makro geändert aber der Fehler tritt dennoch auf. Mit der Letzten Antwort auf diesem Post kann ich leider auh nicht all zu viel anfangen, schließlich bin ich nicht der Experte was Makros betrifft. Vielleicht kann mir hierbei jemand einen Rat geben bzw. sagen wo der Fehler liegt (SW2012). mfg Stefan
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |