| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
| |
 | Rohrleitungen in Maschinen und Anlagen mit Smap3D Plant Design & SOLIDWORKS, ein Webinar am 23.05.2025
|
Autor
|
Thema: Gleichungen Löschen VBA SW16 (1012 / mal gelesen)
|
Sc1ssoR Mitglied Student

 Beiträge: 26 Registriert: 11.04.2017 SolidWorks 16 VBA
|
erstellt am: 28. Apr. 2017 13:56 <-- editieren / zitieren --> Unities abgeben:         
Hi Leute, ich arbeite zurzeit an einer Parametrisierung von einer Ventilbauteilvorlage, diese ist zum großteil fertig allerdings fehlt mir noch zum Abschluß das löschen von Gleichungen im Gleichungsmanager etc. Hier sind meine Probleme aufgelistet für die ich keinen funktionierenden Befehl finden kann: -meine Excel Datei nicht schreibgeschüzt öffnen ich hab es mit Excel.Application.Unprotect Probiert aber das scheint nicht der richtige Befehl zu sein.. -löschen von Gleichungen im Equation Manager hierbei will ich nicht die Globalen Variablen sondern die weiter unten aufgelisteten Gleichungen also D1@Skizze1 löschen swEquationMgr.Delete (Index Nr. der Gleichung) hat leider nicht funktioniert -setzten von gesteuerten Bemaßungen auf steuernde hierzu hab ich noch keinen Befehl im Netz gefunden und der Macrorecorder von sw konnte mir auch nicht weiterhelfen. schonmal vorab vielen Dank für die Hilfe Gruß Viktor
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CAD-Maler Mitglied Konstrukteur / CAD-Admin / Mädchen für alles
  
 Beiträge: 729 Registriert: 17.01.2007 SWX 2023 SP5 Draftsight 2023 Win 11 Enterprise Intel i7-13700 2.10 GHz 64GB RAM Nvidia RTX A2000 12GB SWx EPDM AP+ CSWE 2018
|
erstellt am: 28. Apr. 2017 14:33 <-- editieren / zitieren --> Unities abgeben:          Nur für Sc1ssoR
Zitat: Original erstellt von Sc1ssoR: -meine Excel Datei nicht schreibgeschüzt öffnen ich hab es mit Excel.Application.Unprotect Probiert aber das scheint nicht der richtige Befehl zu sein..
Ich habe es mir angewöhnt, den Inhalt der Excel-Datei beim Makrostart in ein Array zu schreiben und dann Excel wieder zu schließen. Zum einen ist der Abruf der Werte aus dem Array tausendmal schneller als jedesmal den Wert aus Excel zu holen (Beispiel: ein Array mit ca. 3k Einträgen wird in weniger als 1s aus Excel geladen und eine kleine Schleife, die nach einem bestimmten Wert darin sucht, benötigt ca. 1s Laufzeit). Zweiter Vorteil: Die Excel-Datei selbst ist nur für die paar Millisekunden des Auslesens gesperrt. Code:
Set xlapp = CreateObject("Excel.Application") xlapp.Visible = False Dim ExcelName As String ExcelName = "### Pfad zur Excel-Datei ###" Set wb = xlapp.Workbooks.Open(ExcelName, ReadOnly:=True) Set ws = wb.Worksheets(Tabelle) xlArray = ws.UsedRange xlAnz = UBound(xlArray, 1) Set ws = Nothing Set xlapp = Nothing
Zitat: -löschen von Gleichungen im Equation Manager hierbei will ich nicht die Globalen Variablen sondern die weiter unten aufgelisteten Gleichungen also D1@Skizze1 löschen swEquationMgr.Delete (Index Nr. der Gleichung) hat leider nicht funktioniert
Ich nutze folgenden Code, um alle (!) Gleichungen zu löschen: Code:
'alle Gleichungen löschen Set swEqnMgr = Part.GetEquationMgr While swEqnMgr.GetCount > 0 For g = 0 To swEqnMgr.GetCount - 1 retval = swEqnMgr.Delete(g) Next g Wend
Also nix anderes als du auch. Was mir aber beim Einzelschritt-Debuggen auffällt: Die Schleife dreht 3-4 Runden. Vermutlich bleiben da immer noch irgendwelche Reste der Gleichungen hängen. Einfach mal probieren, mehrfach hintereinander löschen? Zitat: -setzten von gesteuerten Bemaßungen auf steuernde
Müsste hiermit gehen. Gruß, Jens
------------------ CSWA, CSWP, CSWPA-SM & -SU =) 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: 3342 Registriert: 04.04.2001 CSWP 12/2015<P>SWX2021sp5 Win10/11 (SWX2016, SWX2012) proAlpha6.2e00/calinkV9 (Tactonworks) (Medusa7, NesCAD2010, solidEdge19)
|
erstellt am: 28. Apr. 2017 15:40 <-- editieren / zitieren --> Unities abgeben:          Nur für Sc1ssoR
Zitat:
... -löschen von Gleichungen im Equation Manager hierbei will ich nicht die Globalen Variablen sondern die weiter unten aufgelisteten Gleichungen also D1@Skizze1 löschen swEquationMgr.Delete (Index Nr. der Gleichung) hat leider nicht funktioniert
Hallo Viktor, kannst du die denn von Hand im Gleichungsmanager löschen? in SWX2016 - wenn ich in "Bemaßungsansicht" bin - geht das bei mir nicht. auf andere Ansicht wechseln, dann sind sie weg ...  evtl musst du in die Skizzen gehen und sie dort löschen. Gruß, Christian
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Sc1ssoR Mitglied Student

 Beiträge: 26 Registriert: 11.04.2017 SolidWorks 16 VBA
|
erstellt am: 02. Mai. 2017 08:48 <-- editieren / zitieren --> Unities abgeben:         
Erstmal danke für die Antworten nach längerem Probieren hab ich noch folgende Probleme: -Gleichungen löschen swEqnMgr.Delete (Index) Funktioniert Teilweise^^ wenn ich als Index 1 verwende löscht er mir jedoch nicht den ersten Index sondern den zweiten. Bei anderen Index Nr. z.b. 82, 57,56 löscht er genau diesen Index, aber bei 54 löscht er ihn wieder nicht?! warum auch immer Index 53 und 55 löscht er auch richtig. -Bemaßungen als gesteuert setzten Hierbei weiß ich nicht wie ich den Befehl DrivenState anwende. Ich habe Probiert ihn irgendwie an das ausgewählte Maß zu hängen aber ohne Erfolg z.b.:boolstatus = Part.Extension.SelectByID2("D1@Skizze1@Bauteil1.SLDPRT", "DIMENSION", 0, 0, 0, True, 0, Nothing, 0).DrivenState
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Sc1ssoR Mitglied Student

 Beiträge: 26 Registriert: 11.04.2017 SolidWorks 16 VBA
|
erstellt am: 02. Mai. 2017 08:57 <-- editieren / zitieren --> Unities abgeben:         
|
bk.sc Ehrenmitglied V.I.P. h.c. Konstrukteur Sondermaschinenbau

 Beiträge: 2800 Registriert: 18.07.2012 -Solid Works 2019 SP5 -Pro Engineer WF 3
|
erstellt am: 02. Mai. 2017 10:55 <-- editieren / zitieren --> Unities abgeben:          Nur für Sc1ssoR
Hallo, Code: Dim D1 As Object' Make dimension D1@Sketch1 on Part (assumed set) into a driven dimension Set D1 = Part.Parameter("D1@Sketch1") D1.DrivenState = swDimensionDriven '<- gesteuert, swDimensionDriving für steuernd
In diesem Fall ist die API-Hilfe doch mal sehr Hilfsbereit was nicht immer der Fall ist. 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 |
Sc1ssoR Mitglied Student

 Beiträge: 26 Registriert: 11.04.2017 SolidWorks 16 VBA
|
erstellt am: 03. Mai. 2017 14:45 <-- editieren / zitieren --> Unities abgeben:         
Danke Bernd! hatte kurz Probleme mehrere hintereinander zu steuernden zu ändern aber das hab ich auch gelöst. Code: Dim D1 As Object Set D1 = Part.Parameter("D1@Sketch1") D1.DrivenState = swDimensionDriving Part.ClearSelection2 True Set D1 = Part.Parameter("D2@Sketch2") D1.DrivenState = swDimensionDriving Part.ClearSelection2 True ... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |