Moin,
ich hab da ein kleines Problem mit einem RECORD. In dem RECORD stehen strings, robtargets und nums:
RECORD rTypes
string sName;
robtarget rPosition;
num nWinkel;
...
ENDRECORD
Jetzt mach ich ein array davon, weil ich 32 rTypes habe:
CONST rTypes housingTypes{3} :=
[
[
"Gehaeusetyp 1",
[[0,0,0],[1,0,0,0],[0,0,0,0],[9E9,9E9,9E9,9E9,9E9,9E9]],
0.0
], [
"Gehaeusetyp 2",
[[0,0,0],[1,0,0,0],[0,0,0,0],[9E9,9E9,9E9,9E9,9E9,9E9]],
0.0
], [
...
]
];
Im Programm sollen nun rPosition und nWinkel geändert werden.
VAR num nTypeToTeach;
PROC TeachPos()
TPReadNum nTypToTeach, "Welcher Typ?";
moveJ housingTypes{nTypeToTeach}.rPosition, v100, fine, tGripper, \WObj:=wBST;
housingTypes{nTypeToTeach}.nWinkel := giWinkel;
ENDPROC
Dann meckert RobotStudio aber (berechtigterweise), daß housingTypes{...}.nWinkel schreibgeschützt ist. Also hab ich die Instanz von CONST auf PERS geändert, d.h.
PERS rTypes housingTypes{3} :=
[
...
];
Wenn ich in der PROC TeachPos nun die Position housingTypes{nTypeToTeach}.rPosition markiere und korrigieren will, bekomme ich ein Auswahlfenster:
Datenfeldname: housingTypes{3}
Auf das Element tippen, das bearbeitet werden soll.
------------------------------------------------------------
Element Wert
{1} ["Gehaeusetyp 1", [...], 0.0]
{2} ["Gehaeusetyp 2", [...], 0.0]
{3} ...
------------------------------------------------------------
Schließen
Ich tippe auf das Element, aber Bearbeiten lässt sich da nichts. Es gibt nur "Schließen" als Auswahl. Zuletzt hab ich es 'unschön' probiert:
VAR num nTypeToTeach;
PERS robtarget rTargetToTeach;
PROC TeachPos()
TPReadNum nTypToTeach, "Welcher Typ?";
rTargetToTeach := housingTypes{nTypeToTeach}.rPosition;
moveJ rTargetToTeach, v100, fine, tGripper, \WObj:=wBST;
housingTypes{nTypeToTeach}.rPosition := rTargetToTeach;
housingTypes{nTypeToTeach}.nWinkel := giWinkel;
ENDPROC
Die Position wird (korrekt) aus dem RECORD geladen. Wenn ich sie dann das robtarget in der moveJ-Zeile per "Position korrigieren" ändern möchte (unabhängig davon, ob im Programmfenster oder über die Programmdaten) poppt ein Fenster auf:
Fehler beim Ändern der Position
Position kann nicht geändert werden.
Ähhh ... Hilfe?!

Gruß
Jörn