| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
| |
| Zerspanungstreff mit SolidCAM bei der Hoffmann GmbH in Achim/Bremen, eine Veranstaltung am 14.11.2024
|
Autor
|
Thema: VBA - Block löschen (4205 mal gelesen)
|
Bigles Mitglied Student, Technischer Zeichner
Beiträge: 26 Registriert: 09.03.2012 Solidworks 2012 Windows 7
|
erstellt am: 27. Apr. 2012 13:11 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen!! Ich versuche gerade per VBA einen Block(ist das auch das Deutsche Wort?) von meiner Zeichnung zu löschen. Wenn ich das per Makrorecorder aufnehme sieht das so aus: boolstatus = Part.Extension.SelectByID2("Werkstückkante außen DIN 6784-(-0, 5-0, 2)-1", "SUBSKETCHINST", 0.3460876115816, 0.08213916943522, 0, False, 0, Nothing, 0) Part.EditDelete Komischerweise passiert nichts wenn ich das Makro ausführe. Ausserdem möchte ich das sowieso Koordinaten unabhängig machen. Hat jemand Erfahrung mit dem, oder kann mir sonst jemand helfen? Liebe Grüsse -habe SW2011 -Windows 7, 64bit
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Winni-two Mitglied Ing. Maschb.
Beiträge: 154 Registriert: 12.03.2010 SW 2021 SP5 Intel Xenon W2135 @3.7GHz Win 10 64 bit Graka: Nvidia Quadro P4000 32 GB Ram
|
erstellt am: 27. Apr. 2012 17:24 <-- editieren / zitieren --> Unities abgeben: Nur für Bigles
|
Bigles Mitglied Student, Technischer Zeichner
Beiträge: 26 Registriert: 09.03.2012 Solidworks 2012 Windows 7
|
erstellt am: 27. Apr. 2012 19:41 <-- editieren / zitieren --> Unities abgeben:
|
Bigles Mitglied Student, Technischer Zeichner
Beiträge: 26 Registriert: 09.03.2012 Solidworks 2012 Windows 7
|
erstellt am: 03. Mai. 2012 21:05 <-- editieren / zitieren --> Unities abgeben:
|
HenryV Mitglied Konstrukteur, Engineering
Beiträge: 817 Registriert: 18.05.2005 SolidWorks 2022 x64 SP5.0 Dell Precision 5820 Intel Xeon W-2125 4x4GHz NVIDIA Quadro P2000 5GB 32GB RAM 2x Dell U2412M, 24" TFT Windows 10 Enterprise x64 22H2 Microsoft 365 E5 Microsoft Visual Studio Enterprise 2022
|
erstellt am: 04. Mai. 2012 12:11 <-- editieren / zitieren --> Unities abgeben: Nur für Bigles
Hallo Bigles Das Problem ist, dass der Block mit jedem neuen Einfügen einen anderen Namen erhällt. Deshalb würde ich soetwas vorschlagen. Loop durch alle Blöcke im Featurebaum unter Blöcke,Namen abgleichen, Block Selektieren und Löschen... Code: Dim swApp As SldWorks.SldWorks Dim swDoc As SldWorks.ModelDoc2 Dim swFeat As SldWorks.Feature Dim swSketchMgr As SldWorks.SketchManager Dim swSketchBlockDef As SldWorks.SketchBlockDefinition Dim vSketchBlockDefs As Variant Dim vSketchBlockDef As Variant Dim retval As VariantSub main() Dim NameDesBlockes As String NameDesBlockes = "Werkstüchkante außen DIN 6784-(-0,5-0,2)" Set swApp = Application.SldWorks Set swDoc = swApp.ActiveDoc Set swSketchMgr = swDoc.SketchManager vSketchBlockDefs = swSketchMgr.GetSketchBlockDefinitions For Each vSketchBlockDef In vSketchBlockDefs Set swSketchBlockDef = vSketchBlockDef Set swFeat = swSketchBlockDef.GetFeature If InStr(swFeat.Name, NameDesBlockes) > 0 Then retval = swFeat.Select2(False, -1) retval = swDoc.DeleteSelection(False) End If Next End Sub
Gruss Andreas ------------------ 21 ist nur die halbe Antwort. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bigles Mitglied Student, Technischer Zeichner
Beiträge: 26 Registriert: 09.03.2012 Solidworks 2012 Windows 7
|
erstellt am: 04. Mai. 2012 14:56 <-- editieren / zitieren --> Unities abgeben:
Ahh, vielen vielen Dank!!! Jetzt funktioniert es endlich!!! Hatte allerdings noch einen kleinen Fehler. Mit ein bisschen ausprobieren war das aber schnell behoben. Der funktionierende Code wäre: Dim swApp As SldWorks.SldWorks Dim swDoc As SldWorks.ModelDoc2 Dim swFeat As SldWorks.Feature Dim swSketchMgr As SldWorks.SketchManager Dim swSketchBlockDef As SldWorks.SketchBlockDefinition Dim vSketchBlockDefs As Variant Dim vSketchBlockDef As Variant Dim retval As Variant Sub main() Dim NameDesBlockes As String NameDesBlockes = "Werkstüchkante außen DIN 6784" Set swApp = Application.SldWorks Set swDoc = swApp.ActiveDoc Set swSketchMgr = swDoc.SketchManager vSketchBlockDefs = swSketchMgr.GetSketchBlockDefinitions For Each vSketchBlockDef In vSketchBlockDefs Set swSketchBlockDef = vSketchBlockDef Set swFeat = swSketchBlockDef.GetFeature If InStr(swSketchBlockDef.FileName, NameDesBlockes) > 0 Then retval = swFeat.Select2(False, -1) retval = swDoc.DeleteSelection(False) End If Next End Sub lg Bigles Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KMassler Ehrenmitglied V.I.P. h.c. CAD Admin + Mädchen für Alles...
Beiträge: 2675 Registriert: 06.11.2000 SolidWorks Start 1999 ** CSWP 01/2008 ** ------------------ Zuletzt beruflich: - SWX2020 SP5; - SAP/PLM+ECTR; - DriveWorks Pro; - Programmierung: VBA, aktuell Visual Studio 2022/VB.Net ------------------ ab 2024 (privat): Onshape und anderes
|
erstellt am: 05. Okt. 2015 13:36 <-- editieren / zitieren --> Unities abgeben: Nur für Bigles
ACHTUNG! Sie antworten auf einen Beitrag der älter als 1 Jahr ist!
Zitat: Original erstellt von HenryV: ...
Code: ... Set swFeat = swSketchBlockDef.GetFeature If InStr(swFeat.Name, NameDesBlockes) > 0 Then retval = swFeat.Select2(False, -1) retval = swDoc.DeleteSelection(False) End If ...
Gruss Andreas
Vielen Dank Andreas, du hast mir wie immer sehr geholfen ------------------ Klaus www.al-ko.com | mein Gästebuch Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Christian_W Ehrenmitglied V.I.P. h.c. Konstrukteur (Dipl-Ing)
Beiträge: 3256 Registriert: 04.04.2001 CSWP 12/2015<P>SWX2021sp5 Win10/11 (SWX2016, SWX2012) proAlpha6.2e00/calinkV9 (Tactonworks) (Medusa7, NesCAD2010, solidEdge19)
|
erstellt am: 06. Okt. 2015 09:55 <-- editieren / zitieren --> Unities abgeben: Nur für Bigles
|
KMassler Ehrenmitglied V.I.P. h.c. CAD Admin + Mädchen für Alles...
Beiträge: 2675 Registriert: 06.11.2000 SolidWorks Start 1999 ** CSWP 01/2008 ** ------------------ Zuletzt beruflich: - SWX2020 SP5; - SAP/PLM+ECTR; - DriveWorks Pro; - Programmierung: VBA, aktuell Visual Studio 2022/VB.Net ------------------ ab 2024 (privat): Onshape und anderes
|
erstellt am: 06. Okt. 2015 12:02 <-- editieren / zitieren --> Unities abgeben: Nur für Bigles
Zitat: Original erstellt von Christian_W: Hallo Klaus,wobei die Änderung beim Vergleich auf swSketchBlockDef.[b]FileName, NameDesBlockes auch die umbenannten Exemplare "Block-1", "Block-2" etc erwischt ... Gruß, Christian[/B]
Das brauche ich jetzt nicht unbedingt, aber zur Sicherheit werd ich's mal damit versuchen, danke dir für den Hinweis! ------------------ Klaus www.al-ko.com | mein Gästebuch Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Christian_W Ehrenmitglied V.I.P. h.c. Konstrukteur (Dipl-Ing)
Beiträge: 3256 Registriert: 04.04.2001 CSWP 12/2015<P>SWX2021sp5 Win10/11 (SWX2016, SWX2012) proAlpha6.2e00/calinkV9 (Tactonworks) (Medusa7, NesCAD2010, solidEdge19)
|
erstellt am: 06. Okt. 2015 13:14 <-- editieren / zitieren --> Unities abgeben: Nur für Bigles
Taucht bei uns immer mal auf, wenn jemand das Zeichnungsformat ändert und die Frage nach dem umbenennen der vorhandenen Blöcke falsch beantwortet und dann wird es durchgeschleppt ... Gruß, Christian Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Nobody1976 Mitglied
Beiträge: 46 Registriert: 20.05.2014 SWX 2022 SP5.0
|
erstellt am: 18. Jun. 2020 08:41 <-- editieren / zitieren --> Unities abgeben: Nur für Bigles
|
HenryV Mitglied Konstrukteur, Engineering
Beiträge: 817 Registriert: 18.05.2005 SolidWorks 2022 x64 SP5.0 Dell Precision 5820 Intel Xeon W-2125 4x4GHz NVIDIA Quadro P2000 5GB 32GB RAM 2x Dell U2412M, 24" TFT Windows 10 Enterprise x64 22H2 Microsoft 365 E5 Microsoft Visual Studio Enterprise 2022
|
erstellt am: 18. Jun. 2020 09:15 <-- editieren / zitieren --> Unities abgeben: Nur für Bigles
Hallo Udo Code: Option ExplicitDim swApp As SldWorks.SldWorks Dim swDoc As SldWorks.ModelDoc2 Dim swSketchMgr As SldWorks.SketchManager Dim swFeat As SldWorks.Feature Dim swSketchBlockDef As SldWorks.SketchBlockDefinition Dim vSketchBlockDefs As Variant Dim vSketchBlockDef As Variant Dim retval As Variant Sub main() Set swApp = Application.SldWorks Set swDoc = swApp.ActiveDoc Set swSketchMgr = swDoc.SketchManager vSketchBlockDefs = swSketchMgr.GetSketchBlockDefinitions If Not IsEmpty(vSketchBlockDefs) Then For Each vSketchBlockDef In vSketchBlockDefs Set swSketchBlockDef = vSketchBlockDef 'Debug.Print "Anzahl der Blockinstanzen: " & swSketchBlockDef.GetInstanceCount Set swFeat = swSketchBlockDef.GetFeature If swSketchBlockDef.GetInstanceCount = 0 Then retval = swFeat.Select2(False, -1) retval = swDoc.DeleteSelection(False) 'Debug.Print swFeat.Name & " wurde gelöscht" Else 'Debug.Print swFeat.Name & " wird nicht gelöscht" End If Next End If End Sub
Gruss Andreas ------------------ 21 ist nur die halbe Antwort. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Christian_W Ehrenmitglied V.I.P. h.c. Konstrukteur (Dipl-Ing)
Beiträge: 3256 Registriert: 04.04.2001 CSWP 12/2015<P>SWX2021sp5 Win10/11 (SWX2016, SWX2012) proAlpha6.2e00/calinkV9 (Tactonworks) (Medusa7, NesCAD2010, solidEdge19)
|
erstellt am: 18. Jun. 2020 09:31 <-- editieren / zitieren --> Unities abgeben: Nur für Bigles
|
Nobody1976 Mitglied
Beiträge: 46 Registriert: 20.05.2014 SWX 2022 SP5.0
|
erstellt am: 18. Jun. 2020 10:10 <-- editieren / zitieren --> Unities abgeben: Nur für Bigles
|
wadim.m Mitglied Technischer Produktdesigner
Beiträge: 23 Registriert: 23.01.2023 Windows 11 // Solidworks 2022 SP05
|
erstellt am: 09. Feb. 2023 08:00 <-- editieren / zitieren --> Unities abgeben: Nur für Bigles
Hallo zusammen, kann man das gleiche auch in einer Baugruppe? Ich habe eine Skizze als Block und den möchte ich mit einem Makro auflösen. siehe auch das Bild. Die Skizze habe ich auch über ein Makro eingefügt nur löst er mir diese leider nicht auf. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |