| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
| |
| PLM TechnologieForum Essen |
Autor
|
Thema: Gleichungen Löschen VBA SW16 (775 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: 720 Registriert: 17.01.2007 SWX 2019 SP5 AutoCAD 2019 Win 10 pro 64 bit Intel(R) Xeon(R) CPU E5-1650 v4 @ 3.60GHz 64GB RAM Nvidia Quadro M5000 SWx EPDM
|
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: 3189 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: 2776 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 |