| |
| 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 (1288 mal gelesen)
|
met Mitglied CAD-Admin / Konstrukteur
Beiträge: 137 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: 2624 Registriert: 18.10.2005 HP Z420 WIN7 64 Win 10 UG NX6-1980 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: 137 Registriert: 23.07.2004
|
erstellt am: 05. Jul. 2011 15:54 <-- editieren / zitieren --> Unities abgeben:
|
mseufert Moderator Freiberuflicher CAD/CAM Ingenieur
Beiträge: 2624 Registriert: 18.10.2005 HP Z420 WIN7 64 Win 10 UG NX6-1980 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: 137 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: 2624 Registriert: 18.10.2005 HP Z420 WIN7 64 Win 10 UG NX6-1980 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: 137 Registriert: 23.07.2004
|
erstellt am: 06. Jul. 2011 13:02 <-- editieren / zitieren --> Unities abgeben:
|
met Mitglied CAD-Admin / Konstrukteur
Beiträge: 137 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: 2624 Registriert: 18.10.2005 HP Z420 WIN7 64 Win 10 UG NX6-1980 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: 137 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 |
| Konstrukteur (m/w/d) | SAV ? power. people. passion. Unsere Leidenschaft gehört seit 1984 perfekt durchdachten Spannlösungen für Branchen wie Maschinenbau, Automobilindustrie, Erneuerbare Energien, Medizintechnik, Luft- und Raumfahrt, Stahlbau sowie Werkzeug- und Formenbau. Teilen Sie diese Begeisterung mit uns und unterstützen Sie unser ca. 80-köpfiges Team als Konstrukteur (m/w/d) im Bereich Spanntechnik dabei, Technik für die Zukunft zu entwickeln.... | Anzeige ansehen | Konstruktion, Visualisierung |
|
met Mitglied CAD-Admin / Konstrukteur
Beiträge: 137 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:
|