Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  Schleife für mehrere Änderung von Bemaßungen in Skizzen

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 Leipzig
Autor Thema:  Schleife für mehrere Änderung von Bemaßungen in Skizzen (3301 mal gelesen)
Arne T.
Mitglied



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

Beiträge: 23
Registriert: 07.11.2011

SW2010 SP0.0

erstellt am: 19. Dez. 2011 10:58    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

Hallo zusammen,
ich bin die Tage auf ein Problem gestoßen und erhoffe mir Hilfe von euch:

Gibt es eine Möglichkeit, mehrere Bemaßungen unterschiedlicher Skizzen in einer Schleife abzuhandeln?

Zu meiner Schande muss ich sagen, dass momentan jede einzelne Skizzenbemaßung über einzelne Zeilen geändert wird (Hier ein Beispiel):

Code:
Set myDimension = Part.Parameter ("D1@Skizze1")
myDimension.SystemValue = Laenge / 1000

Code:
Set myDimension = Part.Parameter ("D2@Skizze2")
myDimension.SystemValue = Winkel *Pi/180

Das ist natürlich nur eine Änderung, davon gibt es recht viele ... hier die Frage (mit Bitte um ein Beispiel), wie ich aus den beiden Änderungsarten eine Schleife basteln kann.

Meine Überlegung war, die Maß- und Skizzenbezeichnungen in einfache Zahlen umzubennenen (z.B. Längenmaße mit _1, Winkel mit _2 und Skizzen  mit 900 beginnend voneinander zu trennen "1_1@901 / 1_2@902") und diese mit "n" und "m" durchlaufen zu lassen.
Hier ist doch aber das Problem, dass n nicht direkt als Double-Wert einfach eingesetzt werden kann sondern erst umgewandelt werden muss und später wieder als Integer zurückgewandelt werden muss, um den Zählwert wieder zu erhöhen!?

Zumal sich mir die Frage stellt, ob man eine zweifache Schleife (Also n und m zählend) basteln kann, ohne dass er in einen Error läuft, wenn er z.B. erstmal nur n zählt und wenn es in Skizze 1 keinen höheren n-Wert gibt, er mit n=1 in die nächste Skizze (mit m zählend) springen soll!?

Ich hoffe, dass war halbwegs verständlich beschrieben - freue mich auf jeden Fall schon über Rückmeldung!

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

dopplerm
Ehrenmitglied V.I.P. h.c.
Konstrukteur


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

Beiträge: 3592
Registriert: 11.02.2005

Win 10
SWX 2019 SP 5.0

erstellt am: 19. Dez. 2011 11:32    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 Arne T. 10 Unities + Antwort hilfreich

warum arbeitest du nicht mit Excel?
Tabelle erstellen
Werte rein nehmen
Konfigurationen können erstellt werden
oder immer die selbe Zeile ändern und Teil neu abspeichern

lg Martin

------------------
Bin jetzt auch unter Skype erreichbar  , einfach nach Martin Doppler in Wien suchen.

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

Arne T.
Mitglied



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

Beiträge: 23
Registriert: 07.11.2011

SW2010 SP0.0

erstellt am: 19. Dez. 2011 11: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

Zitat:
warum arbeitest du nicht mit Excel?

Ist vom Prof. leider nicht gewünscht ... soll rein VBA-technisch laufen. 

Aber du hast Recht, mit Excel wäre es wirklich recht einfach, so wie ich es abschätzen kann.
Abfrage Werte, in Excel reinkloppen, Excel schmeisst die in SW und fertig. 

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

dopplerm
Ehrenmitglied V.I.P. h.c.
Konstrukteur


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

Beiträge: 3592
Registriert: 11.02.2005

Win 10
SWX 2019 SP 5.0

erstellt am: 19. Dez. 2011 21:21    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 Arne T. 10 Unities + Antwort hilfreich

jedes Maß hat eine einen eindeutigen Namen
D1@Skizze1
D2@Skizze1
D1@Skizze2

darüber sollte sich alles einfach ansteuern lassen

lg Martin

------------------
Bin jetzt auch unter Skype erreichbar  , einfach nach Martin Doppler in Wien suchen.

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

nahe
Ehrenmitglied



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

Beiträge: 1747
Registriert: 18.01.2001

arbeite mit:
Dell Precision 7750
i7 2,6 GHz 6 Kerne
32GB RAM
512GB SSD
NVIDIA Quadro RTX 4000
------------------------
SWX-2020 SP5.0
EPDM
----------------
Windows 10
----------------
VB.net
VB
VBA
ein wenig Swift am Mac

erstellt am: 19. Dez. 2011 22:15    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 Arne T. 10 Unities + Antwort hilfreich

Hallo

Bin jetzt grad nicht vor meinem Arbeitsplatz, aber
Musst Du nur ein paar Maße je Skizze ändern oder alle?

Wenn alle dann würd ich ein paar Schleifen "basteln"
In der 1.  würd ich alle Features durchlaufen
  In der 2. alle Skizzen des Features
    In der 3. alle Maße der Skizze

Um eine einigermaßen brauchbare Lösung anzubieten wär es gut noch ein wenig mehr zu wissen. Was Wie geändert werden soll


------------------
Grüße
Heinz

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

MWN
Mitglied
Dipl.-Ing.


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

Beiträge: 492
Registriert: 14.02.2007

erstellt am: 20. Dez. 2011 08:29    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 Arne T. 10 Unities + Antwort hilfreich

Guten Morgen,

da D1@Skizze1 eh nur ein String ist, setz ihn dir doch mit Laufvariablen zusammen, z.B. so:

Code:
"D" & i & "@Skizze" & "j"

Und dann in einer Schleife erst die erste Variable durchlaufen, wenn es kein Maß mit dem Namen D3@Skizze1 mehr gibt, die zweite Variable durchlaufen und dabei bei der ersten wieder von 1 beginnen.
Vielleicht hilft dir das weiter.
Grüße

Tobias

------------------
Besucht mich doch mal in meiner Tischlerei

"...Kommunikation ist nur so gut wie ihr Ergebnis..." - frei nach Richard Bandler / John Grinder

"...Wenn du das tust, was du schon immer tust, wirst du auch nur das erhalten, was du schon immer erhalten hast..."

[Edit] ein vergessenes & eingefügt [/Edit]

[Diese Nachricht wurde von MWN am 21. Dez. 2011 editiert.]

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

Arne T.
Mitglied



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

Beiträge: 23
Registriert: 07.11.2011

SW2010 SP0.0

erstellt am: 20. Dez. 2011 09:34    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

Guten Morgen zusammen,

also ich würde definitiv 2 Schleifen brauchen, da sowohl Längen- als auch Winkelmaße geändert werden sollen.

Wir sprechen über ca. 20-30 Skizzen, 3-6 Maße pro Skizze. Davon sind 80% Oberflächenfeatures, der Rest ausgetragener Aufsatz bzw. Schnitt.

Die Features an sich müssen nicht bearbeitet werden, müssen also auch in der Schleife nicht berücksichtigt werden.

@MWN / Tobias: Deine Idee bzw. Vorschlag war sehr gut, danke!
Ich werde mich gleich mal dransetzen und mir was zurecht basteln, muss leider erst das Modell dementsprechend verändern!
aber nicht weglaufen, ich werde bei der Schleife mit Sicherheit noch Hilfe brauchen - bin was VBA angeht total unerfahren und zudem noch auf den Kopf gefallen (kommt mir zumindest manchmal so vor!  )

Kurze Zwischenfrage: Muss ich immer

Code:
For i = 1 to 10

schreiben oder kann ich ihn auch selber aufhören lassen, wenn er merkt dass da nichts mehr kommt? (also ihm sozusagen eine Prüfung reinpacken, damit er nicht in einen Error läuft, wenn es kein Maß D10@Skizze1 gibt, um die Bezeichnung von Tobias weiterzuführen)

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

Michael Fröse
Mitglied
Anwendungsberater Mixed Realiy


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

Beiträge: 25
Registriert: 22.04.2010

Windows10
Dell Precision 7710
SolidWorks 2022

erstellt am: 20. Dez. 2011 11:15    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 Arne T. 10 Unities + Antwort hilfreich

Moin,

Das gesuchte Schlüsselwort heisst "Exit".

Mit der Anweisung "Exit For" kannst du eine For Schleife jederzeit verlassen

Sieh auch hier: http://msdn.microsoft.com/de-de/library/t2at9t47(v=vs.80).aspx

Sauberer wäre es natürlich erst die Anzahl der Skizzen zu ermitteln und statt "To 10" "To anzahlSkizzen" zu schreiben.
Sonst funktioniert dein Programm nicht sauber wenn du mehr als 10 Skizzen hast, da es ja immer bei 10 aufhört.

[Diese Nachricht wurde von Michael Fröse am 20. Dez. 2011 editiert.]

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

nahe
Ehrenmitglied



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

Beiträge: 1747
Registriert: 18.01.2001

arbeite mit:
Dell Precision 7750
i7 2,6 GHz 6 Kerne
32GB RAM
512GB SSD
NVIDIA Quadro RTX 4000
------------------------
SWX-2020 SP5.0
EPDM
----------------
Windows 10
----------------
VB.net
VB
VBA
ein wenig Swift am Mac

erstellt am: 20. Dez. 2011 12:38    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 Arne T. 10 Unities + Antwort hilfreich

Hallo nochmals

Der Ansatz mit den Schleifen ("D" & i "@Skizze" & "j")
ist zwar möglich aber doch sehr starr.
Die Anzahl der Skizzen und Maße pro Skizze muss bekannt sein.
Wenn Maße wegfallen oder neu berücksichtigt werden müssen,
muss das Makro umgeschrieben werden, .....

Nochmals mein Ansatz

1.) alle Maße die durch das Makro geändert werden sollen
mit einem bestimmten Suffix od. Präfix zu versehen
(wenn alle Maße berechnet werden sollen dann kannst Du darauf verzichten)

2.) eine Schleife die alle Features durchläuft
      eine untergeordnete Schleife für alle Skizzen
        eine untergeordnete Schleife für alle Maße
          wenn das Maß das entsprechende Suffix/Präfix enthält
            wenn das Maß keine Winkelbemaßung ist (Stichwort "Dimension::GetType")
              Maß ändern
            sonst
              Winkel ändern
            Ende Maßtyp auswerten/ändern
          Ende Suffix/Präfix suchen
        nächstes Maß
      nächste Skizze
    nächstes Feature 
         
Hätte für mich den Vorteil, dass es, meiner Meinung nach, sehr flexibel ist, weil es egal ist in welchem Feature und in welcher Skizze sich ein Maß befindet und wieviele Features, Skizzen und Maße das Makro bearbeiten soll.
Ein zusätzliches zu berücksichtigendes Maß muss einfach nur benannt werden.

------------------
Grüße
Heinz

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

Arne T.
Mitglied



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

Beiträge: 23
Registriert: 07.11.2011

SW2010 SP0.0

erstellt am: 20. Dez. 2011 16:54    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

Moin Michael,

danke für den Link, ich finde es etwas schwer, genau passende Infos zu einfachen Fragen zu bekommen, ohne das Forum damit zu belästigen (z.B. Erklärung zur Verwendung eines Befehls)...  
----------
Hallo Heinz,

Features werden nicht bearbeitet, daher kann man zumindest diesen Teil weglassen.
Es muss also nur eine Schleife sein, die die einzelnen Skizzen anwählt, dann den Typ unterscheidet (Winkel/Längen), den Wert ändert und dann weiter hochzählt.
Ich werde mich heute dran setzen ... ihr hört dann morgen von meinen Problemen! 

[Diese Nachricht wurde von Arne T. am 20. Dez. 2011 editiert.]

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

nahe
Ehrenmitglied



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

Beiträge: 1747
Registriert: 18.01.2001

arbeite mit:
Dell Precision 7750
i7 2,6 GHz 6 Kerne
32GB RAM
512GB SSD
NVIDIA Quadro RTX 4000
------------------------
SWX-2020 SP5.0
EPDM
----------------
Windows 10
----------------
VB.net
VB
VBA
ein wenig Swift am Mac

erstellt am: 20. Dez. 2011 21:42    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 Arne T. 10 Unities + Antwort hilfreich

Hallo Arne

Ich glaub wir reden aneinander vorbei
Wenn Du die Features nicht berücksichtigst dann musst Du genau wissen wieviele Skizzen es sind und wie sie heißen (zumindest wenn ich keinen Denkfehler habe)

------------------
Grüße
Heinz

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

Arne T.
Mitglied



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

Beiträge: 23
Registriert: 07.11.2011

SW2010 SP0.0

erstellt am: 20. Dez. 2011 23:18    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

Hallo Heinz,

kann gut möglich sein, dass wir aneinander vorbeireden, vor lauter Schleifen weiss ich nicht mehr, wo mir der Kopf steht! 

Also letztendlich ist es so, dass ich ein Modell habe, wo sich die Anzahl der Skizzen nicht ändert, eventuell wird eine gelöscht, aber das kommt erst nach den Maßänderungen.
Somit wird immer (bei jedem Start des Makros) die identische Anzahl von Skizzen und Maßen verändert.

Da ich momentan auch jedes Maß einzeln ansteuer dachte ich, dass wir garnicht in die Feature reingehen muss, sondern einfach die Skizzen packe und darin die Maße anpasse ... oder ist das so nicht möglich?

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

nahe
Ehrenmitglied



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

Beiträge: 1747
Registriert: 18.01.2001

arbeite mit:
Dell Precision 7750
i7 2,6 GHz 6 Kerne
32GB RAM
512GB SSD
NVIDIA Quadro RTX 4000
------------------------
SWX-2020 SP5.0
EPDM
----------------
Windows 10
----------------
VB.net
VB
VBA
ein wenig Swift am Mac

erstellt am: 21. Dez. 2011 05:43    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 Arne T. 10 Unities + Antwort hilfreich

Guten Morgen Arne

das ist natürlich möglich, aber wie schon weiter oben geschrieben,
mir persönlich wäre es zu starr.

------------------
Grüße
Heinz

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

MWN
Mitglied
Dipl.-Ing.


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

Beiträge: 492
Registriert: 14.02.2007

erstellt am: 21. Dez. 2011 08:35    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 Arne T. 10 Unities + Antwort hilfreich

Guten Morgen,

Heinz hat natürlich recht: ändert sich etwas an deinem Dummymodell, so änderst du auch das Makro mit. Denn schließlich weiß man nie, was noch alles kommen wird. Und du wirst selber merken, dass wenn man erst einmal den Vorzug eines Automatismus genossen hat, will man automatisch immer mehr...
Und wie auch schon erwähnt wurde, musst du mit meinem Vorschlag vorher natürlich prüfen, ob das Maß, dessen Namen du dir einfach so zusammensetzt, prüfen, ob es auch existiert. Sonst läufst du in einen Fehler. Existiert das Maß nicht, musst du natürlich mit "Exit" aus deiner Schleife heraus, und mit der anderen Laufvariblen weitermachen. Und so weiter...
Sicherlich ist es zur Dimensionierung deiner Schleife, die alle Maße durchläuft, hilfreich, erst einmal die gesamte Anzahl an Skizzen zu ermitteln. Ansonsten weißt du nicht, ob du alle Maße erwischt hast.
Weiterhin stelle ich es mir recht aufwendig vor, den passenden Wert für das Maß zu vergeben. Schließlich musst du immer abprüfen, wie das Maß heißt und ihm anschließend den dafür vorgesehenen Wert zuweisen, sofern die Werte alle unterschiedlich sind. Haben hingegen alle Längen- und Winkelmaße den selben Wert, so muss mit Hilfe von 

Zitat:
Stichwort "Dimension::GetType"
noch unterschieden werden, ob Winkel- oder Längenmaß und erst dann die Wertzuweisung erfolgen.
Grüße und HTH

Tobias

------------------
Besucht mich doch mal in meiner Tischlerei

"...Kommunikation ist nur so gut wie ihr Ergebnis..." - frei nach Richard Bandler / John Grinder

"...Wenn du das tust, was du schon immer tust, wirst du auch nur das erhalten, was du schon immer erhalten hast..."

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

Arne T.
Mitglied



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

Beiträge: 23
Registriert: 07.11.2011

SW2010 SP0.0

erstellt am: 22. Dez. 2011 07:28    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

Guten Morgen zusammen,

vielen Dank für eure Hilfe!
Habe mich jetzt an die Schleife gemacht, allerdings habe ich das Problem, dass er mir die Textfeld-Variable als String hochzählt (ist auch so gewollt), ich sie aber als Objekt brauche um sie ins

Code:
myDimension.SystemValue = Textbox.value

einzubringen.

Hat einer von euch noch ne fixe Idee, wie ich sie einfach und problemlos umgewandelt bekomme? Müsste doch eigentlich nur ein Einzeiler in der Schleife sein, oder!?
Habe mich schonmal auf Google geworfen, aber das blick ich noch nicht ganz... 

Ansonsten schonmal frohe Weihnachten und n guten Rutsch!

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

nahe
Ehrenmitglied



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

Beiträge: 1747
Registriert: 18.01.2001

arbeite mit:
Dell Precision 7750
i7 2,6 GHz 6 Kerne
32GB RAM
512GB SSD
NVIDIA Quadro RTX 4000
------------------------
SWX-2020 SP5.0
EPDM
----------------
Windows 10
----------------
VB.net
VB
VBA
ein wenig Swift am Mac

erstellt am: 22. Dez. 2011 11:15    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 Arne T. 10 Unities + Antwort hilfreich

Hallo

anbei mein Beispiel
man muss den Maßen "CHG_" voranstellen
z.B.: CHG_D1@Skizze2
alle Maße in den Subfeatures werden dann berücksichtigt.
Teil kann ich leider keinen hochladen, weil Du SWXSolidWorks 2010 hast und wir 2011
Was Du anpassen musst, ist die Berechnung

Sub SetDimensionTo(swApp As SldWorks.SldWorks, swModel As SldWorks.ModelDoc2, swDim As SldWorks.Dimension)
    Dim nRetval                As Long
    Dim nOldVal                As Double
    Dim nNewVal                As Double
   
    If swDimensionDriving <> swDim.DrivenState Or swDim.ReadOnly Then
        Exit Sub
    End If
   
    If Left(swDim.Name, 4) = "CHG_" Then
   
      nOldVal = swDim.GetSystemValue2("")
     
      If swDim.GetType <> swDimensionParamTypeDoubleAngular Then
        'Berechnung für neuen Werte die kein Winkel sind
        nNewVal = nOldVal * 1.1
      Else
        'Berechnung für neuen Werte die ein Winkel sind
        nNewVal = nOldVal * 0.5
      End If

      nRetval = swDim.SetSystemValue3(nNewVal, swSetValue_InThisConfiguration, Empty)
    End If
End Sub

Sub main()
    Dim swApp                  As SldWorks.SldWorks
    Dim swModel                As SldWorks.ModelDoc2
    Dim swFeat                  As SldWorks.Feature
    Dim subFeat                As SldWorks.Feature
    Dim swDispDim              As SldWorks.DisplayDimension
    Dim swDim                  As SldWorks.Dimension
   
    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc 
 
    Set swFeat = swModel.FirstFeature
    Do While Not swFeat Is Nothing
   
      Set subFeat = swFeat.GetFirstSubFeature
      Do While Not subFeat Is Nothing
        Set swDispDim = subFeat.GetFirstDisplayDimension
        Do While Not swDispDim Is Nothing
          Set swDim = swDispDim.GetDimension
       
          SetDimensionTo swApp, swModel, swDim
          Set swDispDim = swFeat.GetNextDisplayDimension(swDispDim)
        Loop
        Set subFeat = subFeat.GetNextSubFeature
      Loop
      Set swFeat = swFeat.GetNextFeature
    Loop
    swModel.ForceRebuild3 False
    MsgBox "Fertig!", vbOKOnly
End Sub

------------------
Grüße
Heinz

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

Arne T.
Mitglied



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

Beiträge: 23
Registriert: 07.11.2011

SW2010 SP0.0

erstellt am: 22. Dez. 2011 14:47    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

Ach du schande, ich glaube ich stelle mich jetzt in die Ecke nach der ernüchternden Erkenntnis, dass ich absolut unwissend bin!

Ne, mal im Ernst, Heinz, du hast mir Weihnachten gerettet!!

Darauf wäre ich NIE im Leben gekommen!
Zu der Problematik mit dem Modell: Ich nehme mal an, der Code funktioniert mit einer dementsprechenden UserForm für jedes beliebiges Modell, richtig?

Also nochmals vielen vielen Dank!

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

nahe
Ehrenmitglied



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

Beiträge: 1747
Registriert: 18.01.2001

arbeite mit:
Dell Precision 7750
i7 2,6 GHz 6 Kerne
32GB RAM
512GB SSD
NVIDIA Quadro RTX 4000
------------------------
SWX-2020 SP5.0
EPDM
----------------
Windows 10
----------------
VB.net
VB
VBA
ein wenig Swift am Mac

erstellt am: 22. Dez. 2011 20:24    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 Arne T. 10 Unities + Antwort hilfreich

Hallo Arne

Ich hoffe es hilft Dir weiter.
Was hat das Modell mit einer Userform zu tun?

PS ich will mich nicht mit fremden Federn schmücken
Eigentlich ist das nur ein etwas abgewandeltes Makro aus der Onlinehilfe
Stichwort Alle Maße auf Toleranzmitte setzen

------------------
Grüße
Heinz

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

Arne T.
Mitglied



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

Beiträge: 23
Registriert: 07.11.2011

SW2010 SP0.0

erstellt am: 22. Dez. 2011 22:44    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

Sch...ade, hätte ich vielleicht erwähnen sollen, die Werte sollen von einer UserForm (Textboxen) vom Benutzer eingegeben und von VBA ausgelesen und an SW weitergegeben werden - und das Ganze in einer Schleife.

Da ich aber Weihnachten in der Einöde verbringe und ganz viele Nachschlagewerke eingepackt habe (da gibts noch nicht mal Internet), denke ich mal dass ich das da auch noch irgendwo reingefrickelt.

Oder hast du da eine spontane Idee?
So mal als kurzen Überblick:

Volumenmodell wird aus einzelnen Oberflächen erzeugt, welche sich mit jeweils 4 Skizzen definieren.
Diese Skizzen sollen vom Benutzer gesteuert werden (Längen- und Winkelmaße) und zwar über Textfelder mehrerer UserForms. Jeder definierte Teilbereich des Modells bekommt eine UserForm zugewiesen.
Die Werte der Textfelder sollen von VBA in einer Schleife abgefragt und dann an SW übergeben werden.
Die Oberflächen-Features werden nicht angerührt.

Vielleicht hätte ich es so schreiben sollen, macht warscheinlich alles ein wenig deutlicher!?

Zu dem PS: Man muss nur wissen, wo man suchen soll!  

[Diese Nachricht wurde von Arne T. am 22. Dez. 2011 editiert.]

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

nahe
Ehrenmitglied



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

Beiträge: 1747
Registriert: 18.01.2001

arbeite mit:
Dell Precision 7750
i7 2,6 GHz 6 Kerne
32GB RAM
512GB SSD
NVIDIA Quadro RTX 4000
------------------------
SWX-2020 SP5.0
EPDM
----------------
Windows 10
----------------
VB.net
VB
VBA
ein wenig Swift am Mac

erstellt am: 23. Dez. 2011 06:38    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 Arne T. 10 Unities + Antwort hilfreich

Hallo Arne

dann kannst Du meinen Ansatz vergessen!
Weil der davon ausgeht, dass alle Maße um einen bestimmten Faktor geändert werden.
Wie schon in meiner ersten Antwort geschrieben,
"Um eine einigermaßen brauchbare Lösung anzubieten wär es gut noch ein wenig mehr zu wissen. Was Wie geändert werden soll"

Und die Info hast Du erst jetzt gegeben
Dann kannst Du nur alle Maße einzeln ändern. Ich seh da keine Möglichkeit das über eine Schleife zu machen.
Weil ja, wenn ich Dich richtig verstehe, für jedes Maß ein eigener Wert angegeben werden kann.
 

------------------
Grüße
Heinz

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