Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  Gleichungen Löschen VBA SW16

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
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


Sehen Sie sich das Profil von Sc1ssoR an!   Senden Sie eine Private Message an Sc1ssoR  Schreiben Sie einen Gästebucheintrag für Sc1ssoR

Beiträge: 26
Registriert: 11.04.2017

SolidWorks 16
VBA

erstellt am: 28. Apr. 2017 13:56    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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


Sehen Sie sich das Profil von CAD-Maler an!   Senden Sie eine Private Message an CAD-Maler  Schreiben Sie einen Gästebucheintrag für CAD-Maler

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Sc1ssoR 10 Unities + Antwort hilfreich

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)


Sehen Sie sich das Profil von Christian_W an!   Senden Sie eine Private Message an Christian_W  Schreiben Sie einen Gästebucheintrag für Christian_W

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Sc1ssoR 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von Sc1ssoR an!   Senden Sie eine Private Message an Sc1ssoR  Schreiben Sie einen Gästebucheintrag für Sc1ssoR

Beiträge: 26
Registriert: 11.04.2017

SolidWorks 16
VBA

erstellt am: 02. Mai. 2017 08:48    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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


Sehen Sie sich das Profil von Sc1ssoR an!   Senden Sie eine Private Message an Sc1ssoR  Schreiben Sie einen Gästebucheintrag für Sc1ssoR

Beiträge: 26
Registriert: 11.04.2017

SolidWorks 16
VBA

erstellt am: 02. Mai. 2017 08:57    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

mein Fehler anscheinend fängt er bei Index 0 an also jeden Index +1
swEqnMgr.Delete (53) löscht doch meine 54^^

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

bk.sc
Ehrenmitglied V.I.P. h.c.
Konstrukteur Sondermaschinenbau



Sehen Sie sich das Profil von bk.sc an!   Senden Sie eine Private Message an bk.sc  Schreiben Sie einen Gästebucheintrag für bk.sc

Beiträge: 2776
Registriert: 18.07.2012

-Solid Works 2019 SP5
-Pro Engineer WF 3

erstellt am: 02. Mai. 2017 10:55    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Sc1ssoR 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von Sc1ssoR an!   Senden Sie eine Private Message an Sc1ssoR  Schreiben Sie einen Gästebucheintrag für Sc1ssoR

Beiträge: 26
Registriert: 11.04.2017

SolidWorks 16
VBA

erstellt am: 03. Mai. 2017 14:45    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2024 CAD.de | Impressum | Datenschutz