找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 937|回复: 0

[分享] ResultBuffer流测试

[复制链接]

已领礼包: 859个

财富等级: 财运亨通

发表于 2014-4-29 15:37:26 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
  1.         [LispFunction("ReturnArgs")]
  2.         public static Object ReturnArgs(ResultBuffer args)
  3.         {
  4.             // extract the lisp parameters if any !
  5.             if (args != null)
  6.             {
  7.                 // extract Arguments
  8.                 ResultBuffer argsOut = new ResultBuffer();
  9.                 //Database db = Application.DocumentManager.MdiActiveDocument.Database;
  10.                 Database db = HostApplicationServices.WorkingDatabase;
  11.                 Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;
  12.                 foreach (TypedValue arg in args)
  13.                 {
  14.                     switch (arg.TypeCode)
  15.                     {
  16.                         case (short)LispDataType.Angle:
  17.                             ed.WriteMessage("\n   Angle");
  18.                             argsOut.Add(new TypedValue((int)LispDataType.Angle, arg.Value));
  19.                             break;
  20.                         case (short)LispDataType.DottedPair:
  21.                             ed.WriteMessage("\n   DottedPair");
  22.                             argsOut.Add(new TypedValue((int)LispDataType.DottedPair, arg.Value));
  23.                             break;
  24.                         case (short)LispDataType.Double:
  25.                             ed.WriteMessage("\n   Double");
  26.                             argsOut.Add(new TypedValue((int)LispDataType.Double, arg.Value));
  27.                             break;
  28.                         case (short)LispDataType.Int16:
  29.                             ed.WriteMessage("\n   Int16");
  30.                             argsOut.Add(new TypedValue((int)LispDataType.Int16, arg.Value));
  31.                             break;
  32.                         case (short)LispDataType.Int32:
  33.                             ed.WriteMessage("\n   Int32");
  34.                             argsOut.Add(new TypedValue((int)LispDataType.Int32, arg.Value));
  35.                             break;
  36.                         case (short)LispDataType.ListBegin:
  37.                             ed.WriteMessage("\nListBegin");
  38.                             argsOut.Add(new TypedValue((int)LispDataType.ListBegin, arg.Value));
  39.                             break;
  40.                         case (short)LispDataType.ListEnd:
  41.                             ed.WriteMessage("\nListEnd");
  42.                             argsOut.Add(new TypedValue((int)LispDataType.ListEnd, arg.Value));
  43.                             break;
  44.                         case (short)LispDataType.Nil:
  45.                             ed.WriteMessage("\n   Nil");
  46.                             argsOut.Add(new TypedValue((int)LispDataType.Nil, arg.Value));
  47.                             break;
  48.                         case (short)LispDataType.None:
  49.                             ed.WriteMessage("\n   None");
  50.                             argsOut.Add(new TypedValue((int)LispDataType.None, arg.Value));
  51.                             break;
  52.                         case (short)LispDataType.ObjectId:
  53.                             ed.WriteMessage("\nObjectId");
  54.                             argsOut.Add(new TypedValue((int)LispDataType.ObjectId, arg.Value));
  55.                             break;
  56.                         case (short)LispDataType.Orientation:
  57.                             ed.WriteMessage("\n   Orientation");
  58.                             argsOut.Add(new TypedValue((int)LispDataType.Orientation, arg.Value));
  59.                             break;
  60.                         case (short)LispDataType.Point2d:
  61.                             ed.WriteMessage("\n   Point2d");
  62.                             argsOut.Add(new TypedValue((int)LispDataType.Point2d, arg.Value));
  63.                             break;
  64.                         case (short)LispDataType.Point3d:
  65.                             ed.WriteMessage("\n   Point3d");
  66.                             argsOut.Add(new TypedValue((int)LispDataType.Point3d, arg.Value));
  67.                             break;
  68.                         case (short)LispDataType.SelectionSet:
  69.                             ed.WriteMessage("\n   SelectionSet");
  70.                             ObjectId[] ids = new ObjectId[0];
  71.                             SelectionSet ss = SelectionSet.FromObjectIds(ids);
  72.                             ss = arg.Value as SelectionSet;
  73.                             argsOut.Add(new TypedValue((int)LispDataType.Int16, ss.Count));
  74.                             ObjectId[] oidcol = ss.GetObjectIds();
  75.                             foreach (ObjectId oid in oidcol)
  76.                             {
  77.                                 argsOut.Add(new TypedValue((int)LispDataType.Text, oid.Handle.ToString()));
  78.                             }
  79.                             break;

  80.                         case (short)LispDataType.T_atom:
  81.                             ed.WriteMessage("\n   T_atom\n");
  82.                             argsOut.Add(new TypedValue((int)LispDataType.T_atom, arg.Value));
  83.                             break;
  84.                         case (short)LispDataType.Text:
  85.                             ed.WriteMessage("\n   Text\n");
  86.                             argsOut.Add(new TypedValue((int)LispDataType.Text, arg.Value));
  87.                             break;
  88.                         default:
  89.                             ed.WriteMessage("\n   Error: incorrect argument\n");
  90.                             argsOut.Add(new TypedValue((int)LispDataType.Text, "Error: incorrect argument"));
  91.                             //ed.WriteMessage("\nError: incorrect argument\n");
  92.                             break;
  93.                     }
  94.                 }
  95.                 return argsOut;
  96.             }
  97.             else
  98.             {
  99.                 return new TypedValue((int)LispDataType.Nil, "nil");
  100.             }
  101.         }

说明:
(returnargs params)
params 任何Lisp数据,返回在 C# 中的TypeCode
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-17 22:26 , Processed in 0.246263 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表