I'm a script beginner. I want to implement a function, which can nest selected events into a new project, without opening the new project. I tried the following code, but it reported an error.
using System;
using System.IO;
using System.Windows.Forms;
using ScriptPortal.Vegas;
namespace Test_Script1
{
public class Class1
{
public Vegas myVegas;
public void Main(Vegas vegas)
{
myVegas = vegas;
foreach (Track myTrack in myVegas.Project.Tracks)
{
if (myTrack.IsVideo())
{
foreach (TrackEvent evnt in myTrack.Events)
{
if (evnt.Selected)
{
MediaStream mediaStream = GetActiveMediaStream(evnt);
VideoStream videoStream = (VideoStream)mediaStream;
String filePath = mediaStream.Parent.FilePath;
String nestedPath = filePath + ".veg";
Project nestedProject = vegas.CreateEmptyProject();
VideoTrack track = nestedProject.AddVideoTrack();
nestedProject.SaveProject(nestedPath);
}
}
}
}
}
public MediaStream GetActiveMediaStream(TrackEvent trackEvent)
{
try
{
if (!(trackEvent.ActiveTake.IsValid()))
{
throw new ArgumentException("empty or invalid take");
}
Media media = myVegas.Project.MediaPool.Find(trackEvent.ActiveTake.MediaPath);
if (null == media)
{
MessageBox.Show("missing media");
throw new ArgumentException("missing media");
}
MediaStream mediaStream = media.Streams.GetItemByMediaType(MediaType.Video, trackEvent.ActiveTake.StreamIndex);
return mediaStream;
}
catch (Exception e)
{
MessageBox.Show("{0}", e.Message);
return null;
}
}
}
}
public class EntryPoint
{
public void FromVegas(Vegas vegas)
{
Test_Script1.Class1 test1 = new Test_Script1.Class1();
test1.Main(vegas);
}
}
The problem seems to be on line 28, and when I comment out that line, everything is fine. Can anyone help?