明经CAD社区

 找回密码
 注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 573|回复: 5

[运行时] ResultBuffer扩展类第二版

[复制链接]
发表于 2017-12-3 14:00 | 显示全部楼层 |阅读模式
本帖最后由 雪山飞狐_lzh 于 2017-12-3 18:27 编辑

源码:

这一版的ResulrBuffer扩展类分为三大类分别对应扩展字典/数据、Lisp数据和选择集过滤器
其中
XdataList类对应扩展字典/数据
Lisp*类对应Lisp数据
Op*类对应选择集过滤器
测试代码:
  1.         [CommandMethod("tt1")]
  2.         public void Test1()
  3.         {
  4.             //扩展数据
  5.             XdataList lst =
  6.                 new XdataList
  7.                 {
  8.                     { 1001, "myapp" },
  9.                     { 1000, "hello" }
  10.                 };

  11.             //过滤器的三种写法
  12.             var fd =
  13.                 new OpOr
  14.                 {
  15.                         !new OpAnd
  16.                         {
  17.                             { 0, "line" },
  18.                             { 8, "0" },
  19.                         },
  20.                         new OpAnd
  21.                         {
  22.                             !new OpEqual(0, "circle"),
  23.                             { 8, "2" },
  24.                             { 10, new Point3d(10,10,0), ">,>,*" }
  25.                         },
  26.                 };

  27.             var p = new Point3d(10, 10, 0);

  28.             var f =
  29.                 OpFilter.Bulid(
  30.                     e =>
  31.                         !(e.Dxf(0) == "line" & e.Dxf(8) == "0") |
  32.                         e.Dxf(0) != "circle" & e.Dxf(8) == "2" & e.Dxf(10) >= p
  33.                     );

  34.             var f2 =
  35.                 OpFilter.Bulid(
  36.                     e =>
  37.                         e.Or(
  38.                         !e.And(e.Dxf(0) == "line", e.Dxf(8) == "0"),
  39.                         e.And(e.Dxf(0) != "circle", e.Dxf(8) == "2", e.Dxf(10) <= new Point3d(10, 10, 0)))
  40.                     );

  41.             SystemManager.Editor.WriteMessage($"\nXdataList:{lst}\n{fd}\n{f}\n{f2}");

  42.         }

  43.         [LispFunction("mytt")]
  44.         public object LispTest(ResultBuffer rb)
  45.         {
  46.             var rl = LispList.FromBuffer(rb);
  47.             return rl[0].GetValue();
  48.         }


  49.         [LispFunction("mytt2")]
  50.         public object LispTest2(ResultBuffer rb)
  51.         {
  52.             var r2 =
  53.                 new LispList
  54.                 {
  55.                     0,
  56.                     new LispDottedPair{ 12, 13 }
  57.                 };
  58.             return r2.GetValue();
  59.         }

本帖子中包含更多资源

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

x
 楼主| 发表于 2017-12-3 18:30 | 显示全部楼层
结果
命令:

  1. TT1
  2. XdataList:((1001,myapp)(1000,hello))
  3. (-4,<Or)(-4,<Not)(-4,<And)(0,line)(8,0)(-4,And>)(-4,Not>)(-4,<And)(-4,<Not)(0,circle)(-4,Not>)(8,2)(-4,>,>,*)(10,(10,10,0))(-4,And>)(-4,Or>)
  4. (-4,<Or)(-4,<Not)(-4,<And)(0,line)(8,0)(-4,And>)(-4,Not>)(-4,<And)(-4,<Not)(0,circle)(-4,Not>)(8,2)(-4,>,>,*)(10,(10,10,0))(-4,And>)(-4,Or>)
  5. (-4,<Or)(-4,<Not)(-4,<And)(0,line)(8,0)(-4,And>)(-4,Not>)(-4,<And)(-4,<Not)(0,circle)(-4,Not>)(8,2)(-4,<,<,*)(10,(10,10,0))(-4,And>)(-4,Or>)
  6. 命令: (mytt2)
  7. (0 (12 . 13))
  8. 命令: (mytt '(1 (2 . 3)))
  9. (1 (2 . 3))
复制代码

发表于 2017-12-5 12:45 | 显示全部楼层
学习了,非常感谢!!
发表于 2017-12-21 23:16 | 显示全部楼层
飞狐出品,必属精品
发表于 2017-12-27 23:29 | 显示全部楼层
厉害,好好拜读下
发表于 2018-6-11 19:05 | 显示全部楼层
厉害,好好拜读下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号  
©2000-2017 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2018-6-22 05:49 , Processed in 0.324872 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.3

© 2001-2013 Comsenz Inc.

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