Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  Referenzebene verschieben VBA

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 Bamberg
Autor Thema:  Referenzebene verschieben VBA (2182 mal gelesen)
Bolle
Mitglied



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

Beiträge: 48
Registriert: 12.03.2003

erstellt am: 25. Feb. 2014 23:16    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,

ich möchte per VBA Script die Position einer Referenzebene ändern.
Die Ebene ist in einer Baugruppe über einen Abstands zur Top plane (Ebene oben) definiert.

Der Makro-Rekorder hat mir folgenden Code ausgegeben

Sub main()

Set swApp = Application.SldWorks

Set Part = swApp.ActiveDoc
boolstatus = Part.Extension.SelectByID2("EBENE1", "PLANE", 0, 0, 0, False, 0, Nothing, 0)
boolstatus = Part.Extension.SelectByID2("EBENE1", "PLANE", 0, 0, 0, False, 0, Nothing, 0)
Part.ClearSelection2 True
boolstatus = Part.Extension.SelectByID2("Ebene oben", "PLANE", 0, 0, 0, True, 0, Nothing, 0)
boolstatus = Part.Extension.SelectByID2("Ebene oben", "PLANE", 0, 0, 0, True, 0, Nothing, 0)
Dim myRefPlane As Object
Set myRefPlane = Part.FeatureManager.InsertRefPlane(8, 3.000, 0, 0, 0, 0)
Part.ClearSelection2 True
End Sub

Wenn ich den Offset nun von 3.000 auf 2.000 ändere und das Makro starte, ändert sich die Lage der Ebene aber nicht.

Ist der ausgegebene Code falsch oder unvollständig?

Viele Grüße
Bolle

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: 26. Feb. 2014 07: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 Bolle 10 Unities + Antwort hilfreich

Hallo Bolle,
Zitat:

Set myRefPlane = Part.FeatureManager.InsertRefPlane(8, 3.000, 0, 0, 0, 0)

dieser Codeteil würde dir eine neue Ebene erstellen und keine vorhandene ändern.

Ich habe jetzt leider auch keinen direkten Zugriff auf die Werte gefunden um die Ebene zu ändern, aber du könntest ja evtl. die Bemassung D1@Ebene1 manipulieren.

Versuch es mal mit

Code:
Dim swApp As Object

Dim Part As Object
Dim boolstatus As Boolean

Sub main()

Set swApp = _
Application.SldWorks

Set Part = swApp.ActiveDoc
Dim myDimension As Object
Set myDimension = Part.Parameter("D1@Ebene1")
myDimension.SystemValue = 2# 'neuer Abstand in Meter
End Sub


Gruß
Bernd


------------------
--- Man muß nicht alles wissen, man muß nur wissen wo es steht ---

Staatlich anerkannte Deutschniete    

[Diese Nachricht wurde von bk.sc am 26. Feb. 2014 editiert.]

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

StefanBerlitz
Guter-Geist-Moderator
IT Admin (CAx)



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

Beiträge: 8756
Registriert: 02.03.2000

SunZu sagt:
Analysiere die Vorteile, die
du aus meinem Ratschlag ziehst.
Dann gliedere deine Kräfte
entsprechend und mache dir
außergewöhnliche Taktiken zunutze.

erstellt am: 26. Feb. 2014 09:01    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 Bolle 10 Unities + Antwort hilfreich

Hallo Bolle,

wenn es eine RefPlane ist, die mit SW2010 oder später erstellt wurde müsstest du über  RefPlaneFeatureData::AngleOrDistance daran kommen können und damit auch einen neuen Abstand setzen können. Ich habe es alelrdings selbst noch nicht probiert und auch kein Beispiel zur Hand, von daher wäre es schön, wenn du bei Erfolg hier ein kleines Makro posten könntest, was zeigt, wie das geht 

Ciao,
Stefan

------------------
Inoffizielle deutsche SolidWorks Hilfeseite    http://solidworks.cad.de

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

StefanBerlitz
Guter-Geist-Moderator
IT Admin (CAx)



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

Beiträge: 8756
Registriert: 02.03.2000

SunZu sagt:
Analysiere die Vorteile, die
du aus meinem Ratschlag ziehst.
Dann gliedere deine Kräfte
entsprechend und mache dir
außergewöhnliche Taktiken zunutze.

erstellt am: 26. Feb. 2014 09:17    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 Bolle 10 Unities + Antwort hilfreich

Hallo nochmal,

hab gerade beim Stöbern doch noch ein Beispiel in der API Hilfe dazu gefunden: Modify Plane by Editing Its Definition Example (VBA)

Das sollte dir zeigen, was du machen musst, ist nicht ganz so offensichtlich  

Ciao,
Stefan

------------------
Inoffizielle deutsche SolidWorks Hilfeseite    http://solidworks.cad.de

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

Bolle
Mitglied



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

Beiträge: 48
Registriert: 12.03.2003

erstellt am: 26. Feb. 2014 21:50    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 Bernd, hallo Stefan,

ich habe eure Vorschläge ausprobiert und konnte mit beiden die Ebene verschieben.
An den Code von Bernd habe ich noch ein Update 'rangehängt, dann wars perfekt.


Code:
Sub main()
Dim swApp As Object

Dim Part As Object
Dim boolstatus As Boolean
Set swApp = Application.SldWorks

Set Part = swApp.ActiveDoc
Dim myDimension As Object
Set myDimension = Part.Parameter("D1@Ebene1")
myDimension.SystemValue = 2 'neuer Abstand in Meter
boolstatus = Part.EditRebuild3()

End Sub


Beim Code von Modify Plane by Editing Its Definition Example (VBA) habe ich die Zeile

Code:
Set swPart = swModel
berausnehmen müssen, da es eine Fehlermeldung gab.

In den letzten Zeilen habe ich swPart durch swModel ersetzt. So hat es dann auch einwandfrei funktioniert.

Ich habe in der Doku nochmal gesucht, welche Werte neben der 'Distance' (swRefPlane.distance = 0.1) noch gesetzt weren können, bin aber nicht so richtig fündig geworden. Ist irgendwie ein generelles Problem, dass ich zu den Methoden nie eine Auflistung der möglichen Argumente/Parameter finde. Gibt es da einen "Kniff" zu beachten ?

Vielen Dank für eure Hilfe !

Gruß
Bolle

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

Torsten Niemeier
Ehrenmitglied V.I.P. h.c.
Maschinenbau Ingenieur



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

Beiträge: 3682
Registriert: 21.06.2001

"ZUSE I.36", 8 BIT, 32 Lämpchen, Service-Ölkännchen "ESSO-Super", Software: AO auf Kuhlmann-Parallelogramm-Plattform
** CSWP 04/2011 **
** CSWE 08/2011 **

erstellt am: 27. Feb. 2014 01:05    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 Bolle 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Bolle:
Ich habe in der Doku nochmal gesucht, welche Werte neben der 'Distance' (swRefPlane.distance = 0.1) noch gesetzt weren können, bin aber nicht so richtig fündig geworden. Ist irgendwie ein generelles Problem, dass ich zu den Methoden nie eine Auflistung der möglichen Argumente/Parameter finde. Gibt es da einen "Kniff" zu beachten ?

Also erstmal gebe ich Dir da uneingeschränkt Recht.
Das war 'früher' wesentlich besser.

Als Tipp:

In der Deklaration nachschauen, als was das Ding deklariert ist:

hier als: RefPlaneFeatureData

Vor dieses Stichwort ein "i" setzen und danach suchen.
Das führt Dich in diesem Fall z.B. hierhin:

http://help.solidworks.com/2012/English/api/sldworksapi/SolidWorks.Interop.sldworks~SolidWorks.Interop.sldworks.IRefPlaneFeatureData.html

In den meisten Fällen klappt das.

Gruß, Torsten

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

StefanBerlitz
Guter-Geist-Moderator
IT Admin (CAx)



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

Beiträge: 8756
Registriert: 02.03.2000

SunZu sagt:
Analysiere die Vorteile, die
du aus meinem Ratschlag ziehst.
Dann gliedere deine Kräfte
entsprechend und mache dir
außergewöhnliche Taktiken zunutze.

erstellt am: 27. Feb. 2014 08: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 Bolle 10 Unities + Antwort hilfreich

Hallo Bolle,

Zitat:
Original erstellt von Bolle:
Ist irgendwie ein generelles Problem, dass ich zu den Methoden nie eine Auflistung der möglichen Argumente/Parameter finde. Gibt es da einen "Kniff" zu beachten ?

Ist ja interessant, im Gegensatz zu dir und Torsten finde ich die API Hilfe sehr übersichtlich, gut und gleichmäßig aufgebaut und es sind viele Beispiel drin. Sicherlich sind ein paar davon überholungsbedürftig oder haben auch mal nicht (mehr) funktionsfähigen Code drin, die Beschreibungen der obsoleten Calls sind leider zusammengestrichen worden und alles ist nur in englisch - aber da hab ich mich zumindest dran gewöhnt.

Ich finde in der API Hilfe ist es am einfachsten etwas zu finden, wenn man sein SolidWorks auf Englisch stellt und dann die Feature- und Funktionsnamen dort beim "normalen" Arbeiten sucht. So kam ich dann mit den Stichworten "reference plane distance" über die Suche in der API Hilfe relativ schnell auf "AngleOrDistance Property (IRefPlaneFeaturedata)".

Auf den Seiten der einzelnen Calls stehen in meinen Augen die wichtigsten Sache dann ganz unten. Der Bemerkungsabschnitt (Remarks) muss man unbedingt durchlesen, da stehen oft Einschränkungen, Besonderheiten, Alternativen usw. beschrieben. Dort unten finden sich auch Beispiele, in der dieser Call auftaucht und die oft hilfreich sind um zu sehen, wie die angewendet werden.

Dann gibt es den Abschnitt "Accessors", also auf welche Art und Weise man an die Objekte rankommen kann, das ist oft eine gute Stelle um weiter zu forschen. Und dann ganz unten hinter "See also" ist typischerweise der Link zu den passenden Übersichten der Eigenschaften und Methoden der Objekte, z.B. in unserem Fall gibt es einen Link zu "IRefPlaneFeatureData Members". Hier findest du dann alle Eigenschaften (Properties) und Methoden (Methods) des jeweiligen Objektes, inklusive Kurzbeschreibung und Link zu der Detailbeschreibung.

Immer dran denken: die API Hilfe ist dein Freund, manchmal sogar dein einziger - und wie das bei Freunden so ist, kennt man die Macken, aber nimmt sie hin 

Ciao,
Stefan

------------------
Inoffizielle deutsche SolidWorks Hilfeseite    http://solidworks.cad.de

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

Torsten Niemeier
Ehrenmitglied V.I.P. h.c.
Maschinenbau Ingenieur



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

Beiträge: 3682
Registriert: 21.06.2001

"ZUSE I.36", 8 BIT, 32 Lämpchen, Service-Ölkännchen "ESSO-Super", Software: AO auf Kuhlmann-Parallelogramm-Plattform
** CSWP 04/2011 **
** CSWE 08/2011 **

erstellt am: 27. Feb. 2014 12: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 Bolle 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von StefanBerlitz:
Ist ja interessant, im Gegensatz zu dir und Torsten finde ich die API Hilfe sehr übersichtlich, gut und gleichmäßig aufgebaut und es sind viele Beispiel drin.

Hallo Stefan.
Also ich habe nie gesagt, dass ich die API-Hilfe unübersichtlich, schlecht und ungleichmäßig aufgebaut finde.
Die ist schon ok so und im Vergleich zu manch anderer Hilfe sogar ganz toll.
Man merkt hier, dass die Entwickler da 'ne Menge Zeit investieren.

Ich wollte nur zum Ausdruck bringen, dass die Suche innerhalb der Hilfe schwieriger geworden ist, seit mit dieser i-Geschichte begonnen wurde, IMHO irgendwann zwischen 2008 und 2010.
Und dies Beispiel ist gut, um das zu belegen:
Eine Suche nach 'RefPlaneFeaturedata' (so wie es im Beispiel ja deklariert ist) fördert nahezu nichts zutage. Das funktionierte IMHO in der Hilfe zu SWX2010 noch besser.
Stellt man das i davor, klappts...
Das ist so nicht in Ordnung.
Die Schlüsselwörter, die in den Beispielen benutzt werden, müssen auffindbar sein.
Sonst ist einfach das Beispiel überholt, oder die Suche ist schlecht.

Gruß, Torsten

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

Bolle
Mitglied



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

Beiträge: 48
Registriert: 12.03.2003

erstellt am: 28. Feb. 2014 00: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

Na, das bringt mich doch schon wieder ein Stück voran. Danke für die Tipps.
Ich denke es ist letzten Endes alles eine Sache der Gewöhnung.
Die Beispiele sind wirklich zahl- und hilfreich. Man muss nur aufpassen, dass man bei einer Suche nicht in die falsche Richtung abbiegt. Aber auch das alles eine Frage der Erfahrung, wenn man weiss, wie und wonach man suchen muss.

Viele Grüße
Bolle

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