| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für NX |
Autor
|
Thema: VB.Net Light erstellen (1331 mal gelesen)
|
met Mitglied CAD-Admin / Konstrukteur
Beiträge: 141 Registriert: 23.07.2004
|
erstellt am: 05. Jul. 2011 13:45 <-- editieren / zitieren --> Unities abgeben:
Hallo, wie kann ich mit Journal - VB.Net - neue Lichter erstellen? Ich möchte in einer Scene per Journal mehrere Lichter aus verschiedenen Richtungen erzeugen, intensität, schatten, usw. einstellen und dann Bilder rendern. Danke, und Gruß met Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mseufert Moderator Freiberuflicher CAD/CAM Ingenieur
Beiträge: 2700 Registriert: 18.10.2005 HP Z420 WIN7 64 Win 10 UG NX6-2306 3D Printer Prusa MK2 S
|
erstellt am: 05. Jul. 2011 15:11 <-- editieren / zitieren --> Unities abgeben: Nur für met
|
met Mitglied CAD-Admin / Konstrukteur
Beiträge: 141 Registriert: 23.07.2004
|
erstellt am: 05. Jul. 2011 15:54 <-- editieren / zitieren --> Unities abgeben:
|
mseufert Moderator Freiberuflicher CAD/CAM Ingenieur
Beiträge: 2700 Registriert: 18.10.2005 HP Z420 WIN7 64 Win 10 UG NX6-2306 3D Printer Prusa MK2 S
|
erstellt am: 06. Jul. 2011 09:36 <-- editieren / zitieren --> Unities abgeben: Nur für met
|
met Mitglied CAD-Admin / Konstrukteur
Beiträge: 141 Registriert: 23.07.2004
|
erstellt am: 06. Jul. 2011 10:37 <-- editieren / zitieren --> Unities abgeben:
Hallo Michael, der CreateLightBuilder benötigt ein nxopen.light. Wie kann ich das erstellen? Code: Dim theSession As Session = Session.GetSession() Dim workPart As Part = theSession.Parts.Work Dim displayPart As Part = theSession.Parts.Display Dim LB As Display.LightBuilder = Nothing Dim L As Light = Nothing LB = displayPart.Views.CreateLightBuilder(L) LB.LightType = LightType.Distant LB.LightShadowType = Display.LightBuilder.ShadowType.SoftEdged LB.SourcePosition.SetCoordinates(New Point3d(100, 100, 100)) LB.Commit()
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mseufert Moderator Freiberuflicher CAD/CAM Ingenieur
Beiträge: 2700 Registriert: 18.10.2005 HP Z420 WIN7 64 Win 10 UG NX6-2306 3D Printer Prusa MK2 S
|
erstellt am: 06. Jul. 2011 12:46 <-- editieren / zitieren --> Unities abgeben: Nur für met
Hallo met, Du brauchst vorab kein Light erstellen, das macht ja der Builder. Wenn ein Builder mit Argument erstellt wird, heißt das, es soll ein existierendes Objekt geändert werden. Wenn Du ein neues Objekt anlegen willst, gibst Du dem Builder als Argument "Nothing" mit. Dann die Eigenschaften wie z.B. Source- und TargetPosition angeben und bestätigen. Gruß, Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
met Mitglied CAD-Admin / Konstrukteur
Beiträge: 141 Registriert: 23.07.2004
|
erstellt am: 06. Jul. 2011 13:02 <-- editieren / zitieren --> Unities abgeben:
|
met Mitglied CAD-Admin / Konstrukteur
Beiträge: 141 Registriert: 23.07.2004 Solidworks 2017 TCE 9.1.3 NX 5 3ds max 2017/2019 CorelDraw 12
|
erstellt am: 06. Jul. 2011 13:40 <-- editieren / zitieren --> Unities abgeben:
Hallo, geht leider noch immer nicht... Code: Dim LB As Display.LightBuilder = Nothing Dim L As Light = Nothing For X As Integer = -10000 To 20000 Step 1000 LB = displayPart.Views.CreateLightBuilder(Nothing) LB.LightType = LightType.Point LB.SourcePosition.SetCoordinates(New Point3d(X, 0, 10000)) L = LB.Commit() L.SetName("L" & X.ToString) L.Intensity = 0.2 Next X
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mseufert Moderator Freiberuflicher CAD/CAM Ingenieur
Beiträge: 2700 Registriert: 18.10.2005 HP Z420 WIN7 64 Win 10 UG NX6-2306 3D Printer Prusa MK2 S
|
erstellt am: 06. Jul. 2011 14:50 <-- editieren / zitieren --> Unities abgeben: Nur für met
Hallo met, zwei Dinge fallen mir hier noch auf: Die Methode Commit soll laut API ein NXobject zurückgeben, Du weist ohne Typumwandlung den Wert einem Light zu. Weiterhin gibt commit m.W. überhaupt nichts zurück. Kannst Du mal prüfen, nach L = LB.Commit() mit Code: if L is nothing ...
Am Ende der Schleife fehlt ein LB.destroy. Daneben würde ich die Anzahl der Lights bei jedem Durchlauf prüfen, z.B. mit Code: displayPart.Lights.toarray.length
Gruß, Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
met Mitglied CAD-Admin / Konstrukteur
Beiträge: 141 Registriert: 23.07.2004
|
erstellt am: 06. Jul. 2011 16:38 <-- editieren / zitieren --> Unities abgeben:
es funktioniert... Code: Dim theSession As Session = Session.GetSession() Dim workPart As Part = theSession.Parts.Work Dim displayPart As Part = theSession.Parts.Display theSession.ListingWindow.Open() theSession.ListingWindow.WriteLine(displayPart.Lights.ToArray.Length) Dim LB As Display.LightBuilder = Nothing Dim numLicht As Integer = 0 For X As Integer = -10000 To 20000 Step 10000 Dim L As Light = Nothing For Each tmpL As Light In displayPart.Lights If tmpL.Name = "L " & Format(numLicht, "0000") Then L = tmpL End If Next tmpL If L Is Nothing Then theSession.ListingWindow.WriteLine("L " & Format(numLicht, "0000") & " - nicht vorhanden") LB = displayPart.Views.CreateLightBuilder(Nothing) LB.Commit() theSession.ListingWindow.WriteLine(displayPart.Lights.ToArray.Length) L = displayPart.Lights.ToArray(displayPart.Lights.ToArray.Length - 1) L.SetName("L " & Format(numLicht, "0000")) Else theSession.ListingWindow.WriteLine("L " & Format(numLicht, "0000") & " - vorhanden") End If LB = displayPart.Views.CreateLightBuilder(L) LB.LightType = LightType.Point LB.LightShadowType = Display.LightBuilder.ShadowType.SoftEdged LB.Intensity = 0.2 LB.SourcePosition = displayPart.Points.CreatePoint(New Point3d(X, 0, 10000)) LB.Commit() numLicht += 1 Next X
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Trainee Softwareentwicklung (m/w/divers) | thyssenkrupp ist ein international aufgestelltes Industrie- und Technologieunternehmen mit rund 100.000 Mitarbeitenden. In 48 Ländern erwirtschaftete es im Geschäftsjahr 2022/2023 einen Umsatz von 38 Mrd ?. Mit umfassendem Technologie-Know-how entwickeln die Geschäfte wirtschaftliche und ressourcenschonende Lösungen für die Herausforderungen der Zukunft, vor allem in den Bereichen Klimaschutz und Energiewende, digitaler Transformation in der Industrie sowie Mobilität der Zukunft.... | Anzeige ansehen | Fertigung, Produktion |
|
met Mitglied CAD-Admin / Konstrukteur
Beiträge: 141 Registriert: 23.07.2004 Solidworks 2017 TCE 9.1.3 NX 5 3ds max 2017/2019 CorelDraw 12
|
erstellt am: 07. Jul. 2011 10:54 <-- editieren / zitieren --> Unities abgeben:
|