Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  Mit dem Makro auf Ursprung zugreiffen

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
  
SOLIDWORKS Webinar-Serie 2020 / 21: Aufzeichnungen zum Nachhören
Autor Thema:  Mit dem Makro auf Ursprung zugreiffen (2003 mal gelesen)
krassdi
Mitglied
Konstrukteur


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

Beiträge: 17
Registriert: 03.12.2019

SolidWorks 2022 SP5.0

erstellt am: 20. Dez. 2019 10: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


2019.12.20-000203.jpg


2019.12.20-000204.jpg

 
Hallo Zusammen

Ich suche den Befehl wie ich im Makro auf den Ursprung zugreiffen kann.
Die Ausgangslage ist das ich in der Baugruppe ein Teil bearbeite und in diesem aktiven Teil eine Skizze einfügen will.
In dieser Skizze dann eine Linie einfüge und diesen auf den Urspung des Teils dekungsgleich setzen will.

Habe versucht mit Makro aufzeichen, ob es hier ein Hinweis gibt, hier ist jedoch das Problem das die "Namen" ausgefühlt sind, diese jedoch nicht den Wert vom aktiven Teil laden, somit geht es nur wenn alle "Namen" gleich sind.
Jetzt ist die Frage wie ich den Teil mit 021107.084.126_Wärmeschutzplatte-AS.i01-1@Baugruppe1 im Satz vom aktiven Teil abhänig machen kann.

boolstatus = Part.Extension.SelectByID2("Point1@Ursprung@021107.084.126_Wärmeschutzplatte-AS.i01-1@Baugruppe1", "EXTSKETCHPOINT", 0, 0, 0, True, 0, Nothing, 0)


Gruss Krassdi

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

ckoring
Mitglied
Ingenieur


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

Beiträge: 229
Registriert: 09.06.2009

Fujitsu CELSIUS M740
Intel Xeon E5-1620v4
32 GB RAM
Nvidia Quadro P4000
Windows 10 Pro
SolidWorks 2017 SP4.1
DBWorks R16 SP1.7

erstellt am: 08. Jan. 2020 11:13    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 krassdi 10 Unities + Antwort hilfreich

Hi Krassdi,

schon versucht einfach mal eine Linie per API am Ursprung (0,0,0) starten zu lassen? Standardmäßig scheint das Fangen immer aktiv zu sein, siehe dieser Thread.

mfg Christian

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: 08. Jan. 2020 13: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 krassdi 10 Unities + Antwort hilfreich

Hallo,

die Variante von Christian hat das Problem das der Ursprung der Baugruppe gefangen wird, was zu externen Referenzen führt.

Du musst "Point1@Ursprung@021107.084.126_Wärmeschutzplatte-AS.i01-1@Baugruppe1" in seine Einzelteile zerlegen und durch Variablen ersetzen.
Also ermittel den Namen der Baugruppe, dann den Namen der Komponenten und pack sie jeweils in eine Variable und setze diese direkt ein, könnte dann so aussehen
"Point1@Ursprung@" & Komponentenname & "@" & Baugruppenname du kannst das zusammensetzen natürlich auch in einer separaten Variablen machen.

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

krassdi
Mitglied
Konstrukteur


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

Beiträge: 17
Registriert: 03.12.2019

SolidWorks 2022 SP5.0

erstellt am: 08. Jan. 2020 14:59    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

Besten Danke für die Antwort, leider finde ich nicht wie ich diese zwei Namen/Bezeichnungen abrufen kann. Hier fehlt mir der Ansatz.

Gruss Krassdi

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

Winni-two
Mitglied
Ing. Maschb.


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

Beiträge: 154
Registriert: 12.03.2010

SW 2021 SP5
Intel Xenon W2135 @3.7GHz
Win 10 64 bit
Graka: Nvidia Quadro P4000
32 GB Ram

erstellt am: 08. Jan. 2020 15:46    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 krassdi 10 Unities + Antwort hilfreich

Hallo Krassdi,

vielleicht kannst du mit folgendem schnell zusammengeschustertem Makro weiterarbeiten:

Sub main()
    Dim swApp              As SldWorks.SldWorks
    Dim swModel            As SldWorks.ModelDoc2
    Dim swAssy              As SldWorks.AssemblyDoc
    Dim swEditModel        As SldWorks.ModelDoc2
    Dim Punkt, Zus, Teil    As String
    Dim retVal              As Boolean
    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc
    Set swAssy = swModel
    Set swEditModel = swAssy.GetEditTarget
   
    Punkt = "Point1@Ursprung@"
    Teil = Right(swEditModel.GetPathName, Len(swEditModel.GetPathName) - InStrRev(swEditModel.GetPathName, "\"))
    Teil = Left(Teil, Len(Teil) - 7) + "-1@"
    Zus = Right(swModel.GetPathName, Len(swModel.GetPathName) - InStrRev(swModel.GetPathName, "\"))
    Zus = Left(Zus, Len(Zus) - 7)
    Zus = Punkt + Teil + Zus

   
    retVal = swModel.Extension.SelectByID2(Zus, "EXTSKETCHPOINT", 0, 0, 0, False, 0, Nothing, 0)

End Sub


Gruss Winni

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

krassdi
Mitglied
Konstrukteur


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

Beiträge: 17
Registriert: 03.12.2019

SolidWorks 2022 SP5.0

erstellt am: 09. Jan. 2020 07:06    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 Winni

Perfekt dein Makro funktioniert einwandfrei
Besten Dank

Gruss Krassdi

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: 09. Jan. 2020 13:52    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 krassdi 10 Unities + Antwort hilfreich

Hallo,

bei dem Macro musst du beachten das nicht mehrere Instanzen des Teiles das du editierst vorhanden sind (also das Teil mehrfach verbaut ist), weil ich glaub SWX fände es evtl. nicht so gut wenn du Instanz 5 editierst aber du den Ursprung von Instanz 1 selektierst oder es Instanz 1 gar nicht mehr gibt.

"Teil = Left(Teil, Len(Teil) - 7) + "-1@"" in diesem Teil wird nämlich immer auf Instanz 1 verwiesen.

Evtl. würdest du mit GetEditTargetComponent und Component.Name2 besser fahren für das ermitteln des Komponentennamens.

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

krassdi
Mitglied
Konstrukteur


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

Beiträge: 17
Registriert: 03.12.2019

SolidWorks 2022 SP5.0

erstellt am: 09. Jan. 2020 16:13    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


2020.01.09-000209.jpg

 
Hallo Bernd

Du hast vollkommen recht, wenn mehrere gleiche Teile verbaut sind klappt es nicht. Doch SWX nummeriert die gleichen Teile hinten mit <XYZ> (XYZ steht als Platzhalter) somit müsste es möglich sein diesen Wert abzugreifen und nicht wie im Makro (    Teil = Left(Teil, Len(Teil) - 7) + "-1@")die -1 statisch, sondern dynamisch vom SWX abhängig zu machen.

Somit müsste auf Point1@Ursprung@021107.084.126_Wärmeschutzplatte-AS.i01-XYZ@Baugruppe1 zugegriffen werden.


Bei den Versuchen ist noch ein zweiter Punkt aufgefallen.
Wir haben nicht nur eine Baugruppe, sondern eine unterschiedliche Anzahl Ebenen, ist es denn möglich hier etwas dirkter drauf zuzugreifen?


Im Anhang ein Bild mit beiden Punkten, der Nummerirung und der Struktur.


Gruss Krassdi

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: 09. Jan. 2020 17: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 krassdi 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von krassdi:
… diesen Wert abzugreifen …

Hallo krassdi,

bei component.name müsste der Teil XYZ schon mitgeliefert werden.
bräuchtest statt "swEditModel" ein Objekt "swEditComponent" …
trau dich !

und der Dateipfad ist dann gar nicht mehr dabei, dafür aber die evtl vorhandenen unterbaugruppen.
von den anderen Zeilen kannst du dann einige löschen.

Gruß, Christian_W

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

Winni-two
Mitglied
Ing. Maschb.


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

Beiträge: 154
Registriert: 12.03.2010

SW 2021 SP5
Intel Xenon W2135 @3.7GHz
Win 10 64 bit
Graka: Nvidia Quadro P4000
32 GB Ram

erstellt am: 10. Jan. 2020 07:26    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 krassdi 10 Unities + Antwort hilfreich

Hallo Krassdi,

versuch mal folgendes:

Sub main()

    Dim swApp              As SldWorks.SldWorks
    Dim swModel            As SldWorks.ModelDoc2
    Dim swAssy              As SldWorks.AssemblyDoc
    Dim selTarget          As SldWorks.Component2
    Dim Punkt, Zus, Teil    As String
    Dim retVal              As Boolean
   
    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc
    Set swAssy = swModel
    Set selTarget = swAssy.GetEditTargetComponent
   
    Punkt = "Point1@Ursprung@"
    Teil = selTarget.GetSelectByIDString
    Zus = Punkt + Teil
   
    retVal = swModel.Extension.SelectByID2(Zus, "EXTSKETCHPOINT", 0, 0, 0, False, 0, Nothing, 0)

End Sub


Gruss Winni

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

krassdi
Mitglied
Konstrukteur


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

Beiträge: 17
Registriert: 03.12.2019

SolidWorks 2022 SP5.0

erstellt am: 10. Jan. 2020 09:52    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

Mit dem vom Winni-two aufgezeigtem Weg klappt es jetzt.
Original erstellt von Winni-two:
    Set selTarget = swAssy.GetEditTargetComponent

Auch das Thema wo Bernd angesprochen hat mit den mehreren Teilen ist so kein Problem

Besten Dank für euere Unterstützung
Gruss Krassdi 

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