Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  in assembly per makro child auswählen und ersetzen

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
  
Simulation von Kunststoffteilen und Spritzgussformen - Live aus dem Spritzguss-Forschungslabor
Autor Thema:  in assembly per makro child auswählen und ersetzen (415 mal gelesen)
Bruggmann
Mitglied
Konstrukteur (& Nachdiplomstudium Software-Engineering)


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

Beiträge: 85
Registriert: 17.03.2004

Workstation:
Fujitsu Siemens P4 3.2GHz
2.0 GB RAM
Win XP SP1 - SW2005 SP0.1
(PDM: Smarteam)<P>Laptop:
Compaq Evo 800w P4 2GHz
500MB RAM
WinXP SP2 - SW2005 SP0.1
(PDM: ec-Manager, eigenes Tool..)

erstellt am: 27. Sep. 2004 11:53    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

also,
das direkte ersetzen mit swApp.ReplaceReferencedDocument scheint ja nicht bei offenem assembly zu funktionieren.

aber es gibt einen punkt AssemblyDoc.ReplaceComponents in der sw-APIProgrammier- und Anwendungsschnittstelle (Application Programming Interface). jetzt müsste ich ja nur noch im voraus per makro das betreffende teil auswählen können.
aber wie geht das?

gruss stefan

------------------
----------
encom GmbH

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

Kalle
Mitglied
Student


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

Beiträge: 706
Registriert: 14.04.2002

erstellt am: 27. Sep. 2004 12: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 Nur für Bruggmann 10 Unities + Antwort hilfreich

Aheu Stefan,

soll der User das Teil auswählen, oder soll das Dein Makro selbständig machen? Ich vermute letzteres.
Das ginge einerseits über ModelDoc2.Extension.SelectbyID
Dafür brauchst Du aber den genauen Namen des Teils und der ist ziemlich umständlich zu generieren (Zeichne mal ein Makro auf wo Du in einer Baugruppe ein Teil auswählst (möglichst noch in einer Unterbaugruppe - dann siehst Du, dass das nicht die eleganteste Möglichkeit ist).

Wenn Du weisst wie das Teil ungefähr heisst, dann würde ich die Baugruppe mittels wie im Traverse Assembly Beispiel durchgehen und den Komponentennamen (Component.Name2) mittles InStr behandeln um zu schauen ob der bekannte Teil des Namens vorhanden ist. Damit hast Du dann auch gleich einen Zeiger auf die entsprechende Komponente. Ich weiss jetzt leider nicht wie  AssemblyDoc.ReplaceComponents arbeitet, aber was ich geschrieben hab sollte ein Anhaltspunkt sein.

Edit: Hab's mir grad nochmal angeschaut. Es sollte so gehen wie ich's geschrieben hab. Bevor Du ReplaceComponents auswählst musst du das bzw. die Teile noch mit retval = Component2.Select2(True,0) auswählen.

Bis dann,
Kalle

[Diese Nachricht wurde von Kalle am 27. Sep. 2004 editiert.]

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

Bruggmann
Mitglied
Konstrukteur (& Nachdiplomstudium Software-Engineering)


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

Beiträge: 85
Registriert: 17.03.2004

Workstation:
Fujitsu Siemens P4 3.2GHz
2.0 GB RAM
Win XP SP1 - SW2005 SP0.1
(PDM: Smarteam)<P>Laptop:
Compaq Evo 800w P4 2GHz
500MB RAM
WinXP SP2 - SW2005 SP0.1
(PDM: ec-Manager, eigenes Tool..)

erstellt am: 27. Sep. 2004 13: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

wie ist denn diese ID aufgebaut dass die so schwer zu generieren ist?
ich habe so oder so die ganze baugruppe mir unterbaugruppen in einem TreeView dargestellt mit komplettem pfad und dateiname.

entspricht diese id nicht dem unter komponenteneigenschaften angezeigtem  'vollständiger name'.. ?

weil das wäre in meinem fall einfach. immer "name<1>" da sowiso jeweils alle referenzen ersetzt werden sollen.

hmm, die zweite variante hbe ich garnicht begriffen %-) sorry

------------------
----------
encom GmbH

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

Kalle
Mitglied
Student


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

Beiträge: 706
Registriert: 14.04.2002

erstellt am: 27. Sep. 2004 14:10    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 Bruggmann 10 Unities + Antwort hilfreich

Aheu Stefan,

wie die ID aufgebaut ist möchte ich nicht unbedingt beschreiben, aber starte einfach mal eine Makroaufnahme und klicke im Feature-Manager auf ein Teil, welches in einer Unterbaugruppe steckt. Dann Aufnahme stoppen und mal das Makro anschauen. Der erste Parameter von SelectByID ist der Name den Du generieren müsstest. Ich hab's mal geschafft das auf einer Unterbaugruppenebene zu machen. Sobald Du aber noch eine Ebene tiefer kommst wird's wirklich anstrengend.

Zur zweiten Methode:
Schau Dir in der APIProgrammier- und Anwendungsschnittstelle (Application Programming Interface)-Hilfe das Beispiel zu 'Traverse Component at Assembly Level' an. Dort wird nach und nach ein Zeiger auf jedes einzelne Teil in einem Assembly gesetzt. Diese Funktionalität kannst Du dir zu Nutze machen indem Du ebenfalls das Assembly durchgehst (geht verdammt schnell) und nach der Zeile

Set swChildComp = vChildComp(i)

Deine Abfrage für den Namen einfügst. Das sähe ungefähr so aus.

If InStr(0,swChildComp.Name2, "Name des Teils") <> 0 Then
swChildComp.Select2 True, 0
AssemblyDoc.ReplaceComponents...

ReplaceComponents ersetzt selektierte Komponenten, daher das Select2. Die Parameter zu Select2 sind in der Hilfe erklärt. Damit Du nicht versehentlich noch irgendwelche anderen Teile ausgewählt hast sollte vorher irgendwo noch ein

ModelDoc2.ClearSelection2(True) stehen

Ich hoffe jetzt ist es verständlicher.

Bis dann,
Kalle

[Diese Nachricht wurde von Kalle am 27. Sep. 2004 editiert.]

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

Bruggmann
Mitglied
Konstrukteur (& Nachdiplomstudium Software-Engineering)


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

Beiträge: 85
Registriert: 17.03.2004

Workstation:
Fujitsu Siemens P4 3.2GHz
2.0 GB RAM
Win XP SP1 - SW2005 SP0.1
(PDM: Smarteam)<P>Laptop:
Compaq Evo 800w P4 2GHz
500MB RAM
WinXP SP2 - SW2005 SP0.1
(PDM: ec-Manager, eigenes Tool..)

erstellt am: 27. Sep. 2004 15: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

ah ja jetzt habe ich das auch endlich noch hinbekommen!

ein riesen dankeschön für die hilfe!

das makro funktioniert nun soweit und liest das ganze assembly aus (zeigt es in einem treeview an) und checkt in der online datenbank ob irgend ein teil schon indexiert wurde. wenn ja wird dieses gleich nachgeladen.

jetzt muss ich nur noch das mit den events richtig hinbekommen dass es bei jedem assembly den tab rinschreibt 

------------------
----------
encom GmbH

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