public void ImportFromKinect()
    {
      Document doc =
        Autodesk.AutoCAD.ApplicationServices.
          Application.DocumentManager.MdiActiveDocument;
      Editor ed = doc.Editor;

      // Get some user input for the number of snapshots...

      PromptIntegerOptions pio =
        new PromptIntegerOptions("\nNumber of captures");
      pio.AllowZero = false;
      pio.DefaultValue = _numShots;
      pio.UseDefaultValue = true;
      pio.UpperLimit = 20;
      pio.LowerLimit = 1;

      PromptIntegerResult pir = ed.GetInteger(pio);

      if (pir.Status != PromptStatus.OK)
        return;

      _numShots = pir.Value;

      // ... and the delay between them

      PromptDoubleOptions pdo =
        new PromptDoubleOptions("\nNumber of seconds delay");
      pdo.AllowZero = false;
      pdo.AllowNegative = false;
      pdo.AllowArbitraryInput = false;
      pdo.DefaultValue = _delay;
      pdo.UseDefaultValue = true;

      PromptDoubleResult pdr = ed.GetDouble(pdo);

      if (pdr.Status != PromptStatus.OK)
        return;

      _delay = pdr.Value;

      Transaction tr =
        doc.TransactionManager.StartTransaction();

      KinectDelayJig kj = new KinectDelayJig(_numShots, _delay);

      if (!kj.StartSensor())
      {
        ed.WriteMessage(
          "\nUnable to start Kinect sensor - " +
          "are you sure it's plugged in?"
        );
        return;
      }
      
      PromptResult pr = ed.Drag(kj);
      if (pr.Status == PromptStatus.OK)
      {
        kj.StartTimer();
        pr = ed.Drag(kj);
      }
      kj.StopSensor();

      if (pr.Status != PromptStatus.OK && !kj.Finished)
      {
        tr.Dispose();
        return;
      }

      tr.Commit();

      // Manually dispose to avoid scoping issues with
      // other variables

      tr.Dispose();

      kj.WriteAndImportPointCloud(doc, kj.Vectors);
    }
示例#2
0
        public void ImportFromKinect()
        {
            var doc =
                Autodesk.AutoCAD.ApplicationServices.
                Application.DocumentManager.MdiActiveDocument;
            var ed = doc.Editor;

            // Get some user input for the number of snapshots...

            var pio = new PromptIntegerOptions("\nNumber of captures");

            pio.AllowZero       = false;
            pio.DefaultValue    = _numShots;
            pio.UseDefaultValue = true;
            pio.UpperLimit      = 20;
            pio.LowerLimit      = 1;

            var pir = ed.GetInteger(pio);

            if (pir.Status != PromptStatus.OK)
            {
                return;
            }

            _numShots = pir.Value;

            // ... and the delay between them

            var pdo = new PromptDoubleOptions("\nNumber of seconds delay");

            pdo.AllowZero           = false;
            pdo.AllowNegative       = false;
            pdo.AllowArbitraryInput = false;
            pdo.DefaultValue        = _delay;
            pdo.UseDefaultValue     = true;

            var pdr = ed.GetDouble(pdo);

            if (pdr.Status != PromptStatus.OK)
            {
                return;
            }

            _delay = pdr.Value;

            var tr = doc.TransactionManager.StartTransaction();

            var kj = new KinectDelayJig(_numShots, _delay);

            if (!kj.StartSensor())
            {
                ed.WriteMessage(
                    "\nUnable to start Kinect sensor - " +
                    "are you sure it's plugged in?"
                    );
                return;
            }

            var pr = ed.Drag(kj);

            if (pr.Status == PromptStatus.OK)
            {
                kj.StartTimer();
                pr = ed.Drag(kj);
            }
            kj.StopSensor();

            if (pr.Status != PromptStatus.OK && !kj.Finished)
            {
                tr.Dispose();
                return;
            }

            tr.Commit();

            // Manually dispose to avoid scoping issues with
            // other variables

            tr.Dispose();

            kj.WriteAndImportPointCloud(doc, kj.Vectors);
        }