| |  | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
Autor
|
Thema: Probleme mit eingefügten Teilen!! (647 mal gelesen)
|
Jens S. Mitglied Dipl.-Ing.

 Beiträge: 55 Registriert: 23.02.2005
|
erstellt am: 14. Mrz. 2005 10:03 <-- editieren / zitieren --> Unities abgeben:         
Hallo Jungs und Mädels, ich habe ein Problem, an dem ich schon seit Tagen hänge und keine Lösung finde. Das Problem sieht wie folgt aus: 1. Ich habe ein geöffnetes PART 2. Ich füge in diesem Part ein zweites Part mit Model.InsertPart ein. 3. Soweit so gut! :-) 4. Ich füge noch ein Part mit Model.InsertPart ein. (und das geht so beliebig weiter) 5. Nun möchte ich die eingefügten Parts auf dem Grundkörper (geöffnetes Part) positionieren, sprich drehen und schieben mit Model.FeatureManager.InsertMoveCopyBody2 6. Das Problem ist, dass die eingefügten Parts die selben SOLIDBODY- Namen haben, die ich für das Drehen und Schieben selektieren muss. Das heißt, ich kann sie NICHT korrekt über Model.Extension.SelectByID ansprechen !!!! Meine Idee war/ist, die SOLIDBODY-Namen der eingefügten Parts umzubenennen, aber ich habe keinen API-Befehl gefunden, der das leistet. Das einzige was ich umbennen kann, ist der PART-Name der eingefügten Teile (Feature.Name), aber das hilft mir nicht weiter! Ich bin über jede Idee oder Anregung echt dankbar. Gruß JENS PS: Schönes Wochenende an Alle
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Kalle Mitglied Student
  
 Beiträge: 706 Registriert: 14.04.2002
|
erstellt am: 14. Mrz. 2005 12:07 <-- editieren / zitieren --> Unities abgeben:          Nur für Jens S.
Aheu Jens, ich würde mal folgendes probieren. Nach jedem einfügen eines Teils den Befehl PartDoc.GetBodies2 ausführen und immer das letzte Element des zurückgegebenen Variant-Arrays in einen neuen Zeiger schreiben. Damit solltest Du am Ende einen Zeiger auf jeden Solidbody in Deinem Teil haben (sofern GetBodies2 die Körper in der Reihenfolge des einfügens holt). Die einzelnen Körper kannst Du dann mit retval = Body2.Select ( Append, Mark ) auswählen. Dabei auf keinen Fall Mark vergessen auf 1 zu setzen, da InsertMoveCopyBody sonst nicht funktioniert (siehe API-Hilfe). Ich hoffe, dass es klappt, ansonsten nochmal melden, vielleicht fällt mir ja nochwas ein, denn Es gibt immer mehr Lösungen als Probleme. Bis dann, Kalle Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cad manu Mitglied Technische Zeichnerin / Konstrukteurin
  
 Beiträge: 799 Registriert: 01.09.2004 IntelCore i9-14900K 3,2 GHz-64 GB RAM NVIDIA RTX A5000 SolidWorks 2022 Pro x64 SP5.0 Windows 11 Pro 23H2 DraftSight 2022 x64 VariCAD Viewer 202*
|
erstellt am: 14. Mrz. 2005 12:48 <-- editieren / zitieren --> Unities abgeben:          Nur für Jens S.
Moin Jens, mag jetzt plump wirken, aber wie wäre es, wenn Du dazu die Baugruppe (*.sldasm) benutzt, statt das Part (*.sldprt) ? Gruß cad manu ------------------ "Das Glück besteht nicht darin, dass du tun kannst, was du willst, sondern darin, dass du auch immer willst, was du tust." (Leo Tolstoi) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jens S. Mitglied Dipl.-Ing.

 Beiträge: 55 Registriert: 23.02.2005
|
erstellt am: 14. Mrz. 2005 13:32 <-- editieren / zitieren --> Unities abgeben:         
Hallo CAD MANU, die Frage ist nicht plump sondern sehr berechtigt! Da habe ich auch schon drüber nachgedacht. Habe mich aber dann, am Anfang meiner Programmierung, für das Einfügen eines Parts in Part entschieden. Der Grund dafür ist eine anschliessende CAM - Kopplung und das Generieren eines CNC-Codes, von EINEM Bauteil. Ob das der richtige Ansatz war/ist, kann ich aufgrund mangelnder Programmier-Erfahrung nicht beurteilen :-) Aber irgendeinen Weg muss man ja nunmal gehen :-) Gruß JENS PS: Fakt iss aber, dass ich ohne dieses Forum mit Sicherheit nicht da wäre, wo ich jetzt bin - DANKE NOCHMAL AN ALLE!!! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jens S. Mitglied Dipl.-Ing.

 Beiträge: 55 Registriert: 23.02.2005
|
erstellt am: 14. Mrz. 2005 13:33 <-- editieren / zitieren --> Unities abgeben:         
|
Kalle Mitglied Student
  
 Beiträge: 706 Registriert: 14.04.2002
|
erstellt am: 14. Mrz. 2005 13:40 <-- editieren / zitieren --> Unities abgeben:          Nur für Jens S.
Aheu Jens, wenn's um NC-Bearbeitung geht und die generierung des Codes aus einem Teil, dann würde ich trotzdem den Weg über die Baugruppe gehen und diese dann am Ende als Einzelteil abspeichern. Ist vermutlich wesentlich einfacher. Aber versuch's trotzdem mal im Teil, da mich interessiert ob meine Idee funktioniert  Bis dann, Kalle ------------------ ----------------------------------------- Es gibt immer mehr Lösungen als Probleme. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jens S. Mitglied Dipl.-Ing.

 Beiträge: 55 Registriert: 23.02.2005
|
erstellt am: 14. Mrz. 2005 15:44 <-- editieren / zitieren --> Unities abgeben:         
Hoi Kalle, also die Selektion über Body2.Select funktioniert (praktisch) :-) Koerper = Swpart.GetBodies2(swSolidBody, False) Set swbody1 = Koerper(1) retval = swbody1.Select(True, 1) Part.FeatureManager.InsertMoveCopyBody2 0.04, 0, 0, 0, 0, 0, 0, 0, 0, 0, False, 1 Mein Weg war folgender: 1. Ich füge ein Part ein und positioniere es 2. und füge anschliesend das zweite ein und positioniere das ebenfalls Es hatte den Anschein, dass jedes neu eingefügte Part den VARIANT-"Wert" Köerper(1) hat. Das scheint aber nicht "immer" so zu sein. Da oft wieder die falschen eingefügten Parts verschoben wurden. Bei einer Kontrolle viel auf, dass das vorher ERSTE Element "plötztlich" einen ganz anderen Zeiger-"Wert" hat/ bekommen hat. Hmmm .. grübel ... LG JENS Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jens S. Mitglied Dipl.-Ing.

 Beiträge: 55 Registriert: 23.02.2005
|
erstellt am: 14. Mrz. 2005 15:46 <-- editieren / zitieren --> Unities abgeben:         
|
Kalle Mitglied Student
  
 Beiträge: 706 Registriert: 14.04.2002
|
erstellt am: 14. Mrz. 2005 16:24 <-- editieren / zitieren --> Unities abgeben:          Nur für Jens S.
Aheu Jens, jetzt wird's umständlich. Versuche folgendes: InsertPart gibt Dir einen Zeiger auf das eingefügte Teil (allerdings auf das Feature und nicht auf den Body). Mit FeatureFlaechen = Feature.GetFaces holst Du Dir alle Flächen des eingefügten Teils (Features). Dann setzt Du einen Zeiger auf z.B. die erste der Flächen Set Flaeche = FeatureFlaechen(1) Dann holst Du Dir von der Fläche den zughörigen Body mittels Set Koerper = Flaeche.GetBody Wie immer hab ich's nicht ausprobiert und vielleicht ist hier und da die Syntax falsch, aber diese Vorgehensweise müsste ziemlich sicher funktionieren. Bis dann, Kalle ------------------ ----------------------------------------- Es gibt immer mehr Lösungen als Probleme. [Diese Nachricht wurde von Kalle am 14. Mrz. 2005 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jens S. Mitglied Dipl.-Ing.

 Beiträge: 55 Registriert: 23.02.2005
|
erstellt am: 15. Mrz. 2005 10:06 <-- editieren / zitieren --> Unities abgeben:         
Hallo Kalle, danke für den Tipp! Es scheint so, als würde es 100% funktionieren! Deswegen hier die umgesetzte Syntax für ALLE: Info: Das Program fügt das Part XXX in das aktive Part-Dokument ein und verschiebt es um 20mm in positive x-Richtung. Dim swApp As Object Dim Part As Object Dim bool As Boolean Dim Objekt As Object Dim Koerper As Object Dim faces As Variant Dim face2 As Object
Sub main() Set swApp = Application.SldWorks Set Part = swApp.ActiveDoc Set Objekt = Part.InsertPart("C:\xxx.SLDPRT", False, False, False) faces = Objekt.GetFaces Set face2 = faces(1) Set Koerper = face2.GetBody() bool = Koerper.Select(True, 1) Part.FeatureManager.InsertMoveCopyBody2 0.02, 0, 0, 0, 0, 0, 0, 0, 0, 0, False, 1 End Sub LG JENS
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Kalle Mitglied Student
  
 Beiträge: 706 Registriert: 14.04.2002
|
erstellt am: 15. Mrz. 2005 11:02 <-- editieren / zitieren --> Unities abgeben:          Nur für Jens S.
|

| |
cad manu Mitglied Technische Zeichnerin / Konstrukteurin
  
 Beiträge: 799 Registriert: 01.09.2004 IntelCore i9-14900K 3,2 GHz-64 GB RAM NVIDIA RTX A5000 SolidWorks 2022 Pro x64 SP5.0 Windows 11 Pro 23H2 DraftSight 2022 x64 VariCAD Viewer 202*
|
erstellt am: 15. Mrz. 2005 12:55 <-- editieren / zitieren --> Unities abgeben:          Nur für Jens S.
Moin Jungs, vorallem Jens und Kalle. Da ich euch leider nicht mehr folgen kann, steige ich hier aus und grüße euch mit diesem hier Hätt ja sonst gern noch mein Senf dazugegeben ... cad manu ------------------ "Das Glück besteht nicht darin, dass du tun kannst, was du willst, sondern darin, dass du auch immer willst, was du tust." (Leo Tolstoi) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
 |