Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  NX Programmierung
  Spotlight Ausgangs- und Zielpunkt

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:  Spotlight Ausgangs- und Zielpunkt (324 / 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: 02. Dez. 2021 09: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

Hallo zusammen,

ich will über ein NxOpen Programm gerenderte Bilder erstellen und scheitere aber gerade an der Beleuchtung. Ich habe 2 subs, einmal um Lichter zu erstellen, einmal um Lichter  zu modifizieren.

Code:
    Public Sub add_Light_spot(Name As String)
        Dim Light As Light = Nothing
        Dim Lightbuilder As Display.LightBuilder = displayPart.Views.CreateLightBuilder(Light)
        'Lightbuilder.LightType = LightType.Spot gibt internal Error, daher unten nochmal
        Lightbuilder.UseWithRayTracedImageBasedLighting = True
        Lightbuilder.Intensity = 1
        Lightbuilder.ConeAngle = 60
        Lightbuilder.DestinationPosition = displayPart.Points.CreatePoint(New Point3d(0, 0, 0))
        Lightbuilder.SourcePosition = displayPart.Points.CreatePoint(New Point3d(0, 0, 0))
        Lightbuilder.LightShadowType = Display.LightBuilder.ShadowType.SoftEdged
        Lightbuilder.Commit()
        Lightbuilder.Destroy()

        Light = displayPart.Lights.ToArray(displayPart.Lights.ToArray.Length - 1)
        Light.SetName(Name)

        Dim Lightbuilder2 As Display.LightBuilder = displayPart.Views.CreateLightBuilder(Light)
        Lightbuilder2.LightType = LightType.Spot
        Lightbuilder2.Commit()
        Lightbuilder2.Destroy()
    End Sub


Spotlicht wird erzeugt und richtig benannt. Source und Destinationposition stehen aber auf "Nothing". Daher:

Code:
    Public Sub modify_light(Name As String, TargetPoint As Point3d, SourcePoint As Point3d)
        Dim theLightCollection As LightCollection = displayPart.Lights
        Dim theLight As Light = theLightCollection.FindObject(Name)
        Dim theLightbuilder As Display.LightBuilder = workPart.Views.CreateLightBuilder(theLight)

        theLightbuilder.DestinationPosition.SetCoordinates(TargetPoint)

        theLightbuilder.SourcePosition = displayPart.Points.CreatePoint(SourcePoint)

        theLightbuilder.Commit()
        theLightbuilder.Destroy()
    End Sub


Dabei schmeisst

Code:
      theLightbuilder.DestinationPosition.SetCoordinates(TargetPoint)

eine "Object reference not set to an instance of an object" Exception. Warum auch immer, ist aber auch nicht schlimm.

Code:
theLightbuilder.SourcePosition = displayPart.Points.CreatePoint(SourcePoint)

die Zeile funktioniert einwandfrei, im Programmdurchlauf wird dem Lightbuilder der richtige Punkt zugeordnet. Rufe ich aber den nächsten Lightbuilder für das gerade bearbeitete Licht auf, steht "SourcePosition" wieder auf "Nothing"

Was genau mach ich hier falsch? Danke für eure Hilfe.

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



Zerspanungsmechaniker/in (m/w/d)

Sie interessieren sich für spannende Projekte? Sie möchten selbstständig und eigenverant­wortlich in einem innova­tiven Unternehmen arbeiten? Sie bewäl­tigen auch administrative Aufgaben und wollen sich mit Ihrer Erfahrung und guten Ideen einbringen? Dann sind Sie bei HTS richtig.

Wir entwickeln und produzieren Transport- und Hebe­technik in Fellbach und beliefern Kunden weltweit in allen Industrie- und Wirtschafts­zweigen....

Anzeige ansehenMechaniker
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: 06. Dez. 2021 16:22    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

Eventuell bin ich einen Schritt weiter gekommen. Mit den Userfunctions kann ich die Positionen der Lichter modifizieren:

Code:

    Public Sub modify_light(Name As String, TargetPoint As Point3d, SourcePoint As Point3d)
        Dim theUFlighting As UFView.Lighting = Nothing
        theUfSession.View.askviewlight(Tag.Null, theUFlighting)

        I = 0
        For Each theUfLight As UFView.Lights In theUFlighting.lights
            If theUfLight.light_name = Name Then
                theUfLight.light_mode = 1 'UFView.LightMode.FixedToThePart
                theUfLight.location = {SourcePoint.X, SourcePoint.Y, SourcePoint.Z}
                theUfLight.to = {TargetPoint.X, TargetPoint.Y, TargetPoint.Z}

                theUFlighting.lights(I) = theUfLight
            Else
                theUfLight.light_mode = 1 'UFView.LightMode.FixedToThePart
                theUFlighting.lights(I) = theUfLight
            End If
            I += 1
        Next

        theUfSession.View.SetViewLight(Tag.Null, theUFlighting)
        'theUfSession.View.askviewlight(Tag.Null, theUFlighting)
    End Sub


Dafür habe ich hier ein anderes Problem: den light_mode setze ich explizit auf "fixed to part" für jedes Licht. Im Programmdurchlauf kommt das bei "theUFlighting" auch an. Nach SetViewLight(...) stehen aber alle Lichter auf "fixed to observer". Damit stimmt keine Richtung mehr. Woran klemmts jetzt hier?

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