Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  NX Programmierung
  Wavelinks Positionsunabhängig

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 NX
Autor Thema:  Wavelinks Positionsunabhängig (497 / mal gelesen)
Eonwe
Mitglied



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

Beiträge: 55
Registriert: 10.11.2014

NX 12 mit ECTR

erstellt am: 12. Apr. 2022 15: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

Hallo Freunde,

ich stehe vor folgender Anwendung: Ich habe ein Teil und möchte dieses in eine neue Oberbaugruppe einbauen und von jedem sichtbaren Körper einen Wavelink erzeugen.
Die Links werden alle erzeugt, allerdings immer als "positionsunabhängig", so dass die Bodies dazu auf dem Basiskoordinatensystem liegen statt auf der korrekten Position in der Baugruppe.

Ich vermute, dass die Art und Weise wie ich die Körper, die gelinkt werden sollen bestimme, dazu führt, dass dem Link die Baugruppenstruktur nicht bekannt ist. Ich steh aber total auf dem Schlauch, wie ich das anders machen könnte. Habt ihr mir einen Hinweis?

Hier der Code dazu:

Code:
  Dim visibleObjects() As DisplayableObject = workPart.Views.WorkView.AskVisibleObjects()
                Dim theBodyList As New List(Of Body)

                For Each theVisObj As DisplayableObject In visibleObjects
                    If TypeOf theVisObj Is Body Then
                        theBodyList.Add(theVisObj)
                    End If
                Next

                Dim theComponent As Part = workPart

                Dim loadStatus As PartLoadStatus = Nothing
                Dim fn = Environment.GetEnvironmentVariable("UGII_USER_DIR") & "\application\CreatePictureV2\LogoParts\temp_part.prt"
                Dim theTempPart As Part = theSession.Parts.OpenActiveDisplay(fn, DisplayPartOption.ReplaceExisting, loadStatus)
                theSession.Parts.SetWork(theTempPart)

                workPart = theSession.Parts.Work

                Dim thePoint As New Point3d(0, 0, 0)
                Dim theOrientation As New Matrix3x3()
                With theOrientation
                    .Xx = 1
                    .Xy = 0
                    .Xz = 0
                    .Yx = 0
                    .Yy = 1
                    .Yz = 0
                    .Zx = 0
                    .Zy = 0
                    .Zz = 1
                End With

                theSession.Parts.Work.ComponentAssembly.AddComponent(theComponent, "Entire Part", theComponent.Name, thePoint, theOrientation, -1, loadStatus)

                'Körper linken, nicht assoziativ
                For Each theBody As Body In theBodyList
                    Dim theBodyArr2(0) As Body
                    If theBody.Prototype Is Nothing Then
                        theBodyArr2(0) = theBody
                    Else
                        theBodyArr2(0) = theBody.Prototype
                    End If

                    Dim waveLinkBuilder1 As WaveLinkBuilder = workPart.BaseFeatures.CreateWaveLinkBuilder(Nothing)
                    Dim extractFaceBuilder1 As ExtractFaceBuilder = waveLinkBuilder1.ExtractFaceBuilder

                    With waveLinkBuilder1
                        .Type = WaveLinkBuilder.Types.BodyLink
                        .Associative = False
                        .MakePositionIndependent = False
                        .FixAtCurrentTimestamp = False
                        .BlankOriginal = False
                        .CopyThreads = True
                    End With

                    Dim scCollector1 As ScCollector = extractFaceBuilder1.ExtractBodyCollector

                    With extractFaceBuilder1
                        .FaceOption = ExtractFaceBuilder.FaceOptionType.FaceChain
                        .ParentPart = ExtractFaceBuilder.ParentPartType.OtherPart
                        .Associative = False
                        .MakePositionIndependent = False
                        .FixAtCurrentTimestamp = False
                        .HideOriginal = False
                        .InheritDisplayProperties = True
                        .FeatureOption = ExtractFaceBuilder.FeatureOptionType.SeparateFeatureForEachBody
                        .CopyThreads = True
                    End With

                    Dim rules1(0) As SelectionIntentRule

                    Dim bodyDumbRule1 As BodyDumbRule = workPart.ScRuleFactory.CreateRuleBodyDumb(theBodyArr2, True)
                    rules1(0) = bodyDumbRule1

                    scCollector1.ReplaceRules(rules1, False)

                    waveLinkBuilder1.CommitFeature()
                    waveLinkBuilder1.Destroy()
                Next


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

mseufert
Moderator
Freiberuflicher CAD/CAM Ingenieur


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

Beiträge: 2624
Registriert: 18.10.2005

HP Z420
WIN7 64 Win 10
UG NX6-1980
3D Printer Prusa MK2 S

erstellt am: 19. Apr. 2022 15:23    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 Eonwe 10 Unities + Antwort hilfreich

Hallo Eonwe,

zunächst mal würde ich empfehlen, den Ablauf in einzelne Schritte/Funktionen zu unterteilen. Das macht es deutlich einfacher, einen Fehler zu finden und das Ganze zum Laufen zu bringen.

Dann die einzelnen Schritte aufzeichnen und nachsehen, was für Objekte jeweils verwendet werden. Ich tippe mal auf das Thema Occurences, da gilt es zwischen den Originalen und den Objekten in der Komponente und zu unterscheiden und der jeweiligen Funktion das zu übergeben, was sie benötigt.

Gruß, Michael

------------------
Ein Mensch wird laut, wenn er was will;
wenn er's erst hat, dann wird er still;
Das "Danke" ist, nach alter Sitte,
Weit selt'ner als das "Bitte, Bitte".

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



Ausbildungsintegriertes Studium Mechatronik 2024

Das sind wir:
Zusammen arbeiten, zusammen wachsen, zusammen Neues schaffen: EDAG verbindet Mensch und Zukunft - hier teilen Unternehmen und Mitarbeitende die gleiche Vision. Auf hohem Niveau gehst du bei uns deinen eigenen Karriereweg, national oder international.

Wir setzen auch in Zukunft auf unsere qualifizierten Kolleginnen und Kollegen. Wir unterstützen dich dabei, dein Potential voll zu entfalten....

Anzeige ansehenMechatronik
Eonwe
Mitglied



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

Beiträge: 55
Registriert: 10.11.2014

NX 12 mit ECTR

erstellt am: 20. Apr. 2022 09:39    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 Michael,

danke für deine Hinweise, Occurences war das richtige Stichwort. Ich hab das ganze jetzt nicht mit Wavelinks sondern mit Export Part realisiert, das erfüllt meine Zwecke noch besser, musste aber auch da den Bereich

                    Dim theBodyArr2(0) As Body
                    If theBody.Prototype Is Nothing Then
                        theBodyArr2(0) = theBody
                    Else
                        theBodyArr2(0) = theBody.Prototype
                    End If

ändern und die Abfrage auf Prototype entfernen. Bei den Wavelinks hatte das aber zu Fehlern geführt.

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)2023 CAD.de | Impressum | Datenschutz