DIAdem

cancel
Showing results for 
Search instead for 
Did you mean: 

Variablen in ChnClpCopy-Methode verwenden

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

 

0 Kudos
Message 1 of 3
(359 Views)

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 ;-).

 

 

Message 2 of 3
(345 Views)

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) 

 

0 Kudos
Message 3 of 3
(334 Views)