08-22-2023 08:58 AM
Hallo,
ich habe mal wieder ein Problem. Ich habe es mal versucht in einem Minimalbeispiel darzustellen.
Mein Ausgangscode, welcher einwandfrei funktioniert ist folgender:
dd.DataFileLoad(MyFolders[0]+"Datei.mf4", "", "Load|ChnXYRelation") dd.Data.Root.ChannelGroups.Add("KanalgruppeNEU", 2).Activate() dd.ChnClpCopy("'CAN_Gruppe123/Kanal1', 'CAN_Gruppe123/Kanal2'", True) dd.ChnClpPaste(1, True) dd.Data.Move(dd.Data.Root.ChannelGroups(2).Channels("Kanal1"),dd.Data.Root.ChannelGroups(2).Channels,1) dd.Data.Move(dd.Data.Root.ChannelGroups(2).Channels("Kanal2"),dd.Data.Root.ChannelGroups(2).Channels,2)
Da die Kanäle und Gruppen der verschiedenen Dateien unterschiedlich benannt sind, möchte ich "CAN_Gruppe123", "Kanal1" und "Kanal2" mit einer Variable ersetzen.
Zu Beginn des Skripts wird also abgefragt wie die Gruppen und Kanäle heißen, dann läuft das Skript durch. Das funktioniert in jeder Zeile, außer bei ChnClpCopy.
Gruppenname = "CAN_Gruppe123" Kanalname1 = "Kanal1" Kanalname2 = "Kanal2" dd.DataFileLoad(MyFolders[0]+"277-6399.mf4", "", "Load|ChnXYRelation") dd.Data.Root.ChannelGroups.Add("KanalgruppeNEU", 2).Activate() dd.ChnClpCopy(Gruppenname/Kanalname1, Gruppenname/Kanalname2, True) #<- Das ist die Zeile an der es scheitert, die Move-Methode unten funktioniert mit den Variablen dd.ChnClpPaste(1, True) dd.Data.Move(dd.Data.Root.ChannelGroups(2).Channels(Kanalname1),dd.Data.Root.ChannelGroups(2).Channels,1) dd.Data.Move(dd.Data.Root.ChannelGroups(2).Channels(Kanalname2),dd.Data.Root.ChannelGroups(2).Channels,2)
Wäre mega wenn mir jemand helfen könnte!
Gruß, Paul
08-22-2023 09:46 AM
Hallo Paul,
um einen bestehenden Kanal in eine andere Gruppe zu kopieren, sollte nicht der Umweg über das Clipboard genutzt werden. Es gibt die Funktion AddChannel bei der Channels-Collection, die einen bestehenden Kanal aus einer beliebigen Gruppe der Kanalauflistung hinzufügt. Dies sollte in Ihrem Fall wie folgt aussehen:
Gruppenname = "Temperaturverteilung"
Kanalname1 = "Test_A"
Kanalname2 = "Test_B"
new_group = dd.Data.Root.ChannelGroups.Add("KanalgruppeNEU", 2)
new_group.Channels.AddChannel(dd.Data.Root.ChannelGroups(Gruppenname).Channels(Kanalname1))
new_group.Channels.AddChannel(dd.Data.Root.ChannelGroups(Gruppenname).Channels(Kanalname2))
Ich habe den Gruppennamen und die Kanalnamen so geändert, dass der Beispielcode mit dem Example-Datensatz funktioniert. Mit diesem Code müssen Sie nicht die Default-Gruppe umsetzen und die Zwischenablage wird nicht unnötig überschrieben ;-).
08-22-2023 10:06 AM
Wenn Sie Ihren Code beibehalten möchten, dann können Sie eine Kanalauflistung aus ihren gewünschten Kanälen mit CreateElementList erstellen und diese der Funktion ChnClpCopy übergeben:
channels = dd.Data.CreateElementList()
channels.Add(dd.Data.Root.ChannelGroups(Gruppenname).Channels(Kanalname1))
channels.Add(dd.Data.Root.ChannelGroups(Gruppenname).Channels(Kanalname2))
dd.ChnClpCopy(channels, True)