Hallo,
ich bin Neuling in der allgemeinen, sowie der NX Programmierung mit VB (und SNAP) und habe ein kleines Tool geschrieben und in der Rohfassung funktioniert es schon komplett.
Nun habe ich mithilfe des Block UIStyler ein Userinteface gebastelt, mit dem Wizard Layout, da dies perfekt zu meinem Tool passt.
Leider funktioniert hier wenig bis garnix, da ich nicht genau weiß wie ich die Inputdaten in mein Programm einbauen kann.
Ich schilder mal meine genauen Probleme.
Ich nutze übrigens NX 8.5 und 9 VS2010 Premium und VB als Sprache (NXOpen und SNAP Bibliotheken stehen zur Verfügung)
Zunächst habe ich einen Selection Block eingebaut, mit dem ich einen Body anwählen will, welcher anschließend in einer SNAP Funktion genutzt werden soll.
Meine Idee hierzu war so:
Code:
For u = minU To maxU Step stepU
'#################################################################################
Dim tagobj As NXOpen.TaggedObject() = selection0.GetSelectedObjects
Dim n As Integer = tagobj.Length
Dim i As Integer
Dim target(n) As NX.Body
For i = 1 To n - 1
target(i) = Snap.NX.Body.Wrap(tagobj(i).Tag)
Next
'#################################################################################
Dim center = path.Position(u) ' Point on path
Dim dist = Compute.Distance(center, target(i)) ' Distance to target
... usw.
PROBLEM: target(i) wird nicht die ausgewählte Fläche zugeordnet und somit kann die Berechnung (Compute.Distance(...)) nicht gestartet werden.
Weiterhin habe ich 2 Enumeration Blöcke mit der Auswahlmethode Radio Box verwendet um bestimmte Werte in meinem Tool zu setzen.
Hier habe ich es auf verschiedene Weisen probiert, aber keine führte zum Erfolg.
Der Wert ist immer auf 0 und nicht auf den Ausgewählten gesetzt.
Code:
Dim rStep As Single
Dim pl As PropertyList = enum0.GetProperties()
Dim cho1 As String
If cho1 = pl.GetEnumAsString("1deg") Then
rStep = -1
ElseIf cho1 = pl.GetEnumAsString("3deg") Then
rStep = -3
ElseIf cho1 = pl.GetEnumAsString("5deg") Then
rStep = -5
End If
Dim count As Single
Dim pl2 As PropertyList = enum01.GetProperties()
Dim cho2 As Integer
If cho2 = pl2.GetEnumAsString("High") Then
count = 600
ElseIf cho2 = pl2.GetEnumAsString("Middle") Then
count = 500
ElseIf cho2 = pl2.GetEnumAsString("Low") Then
count = 400
End If
All diese Befehle sollen ausgeführt werden nachdem ein Startbutton gedrückt wurde,
dieser funktioniert auch und das Programm startet und läuft sauber durch, aber nur wenn ich die Variablen quasi intern im Programm eingebe.
Ich habe das gesamte Programm unter dem von NX generierten Callback update_cb eingefügt, ist das überhaupt korrekt?
Ich habe auch noch den Gesamten Quelltext angehängt, falls jemand Lust hat da mal drüber zu schauen
Vielen Dank schon mal im vorraus!!!
Grüße
Sören
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP