xinxirong 发表于 2016-3-9 08:47:39

erase命令没有调用acedSSGet函数?

花了一天时间辛苦hook了acedSSGet函数,居然发现系统的命令没有调用acedSSGet,究竟最底层的函数是什么啊?

如果问我为什么要hook acedSSGet函数,是因为我保存了四个选择集供后期调用,代码如下:       static int ads_p1(void)
      {
                long len;
                int ret=acedSSLength(DocVars.docData().myss1,&len);
                if(ret!=RTNORM)                return RTERROR;
                if (len==0)      return RTERROR;

                ret=acedRetName(DocVars.docData().myss1,RTPICKS);
                if (ret==RTNORM)
                {
                        acutPrintf(_T("<P1 Selection set>"));
                }
                return (RSRSLT) ;
      }在p.select、erase、move、rotate等系统命令下是可以的,但一到了lisp命令比如(ssget),则提示"无法重复进入LISP",于是用acedSSGet的关键字"_:K"来增加这个功能,当然P1是不可以作为关键字的,只能用英文,这是第一个不爽的地方;
第二个不爽的地方是,p.select、erase、move、rotate等系统命令下居然没有调用acedSSGET;

luowy 发表于 2016-3-9 10:01:28

告诉你把,cad中提示你选择实体的时候,都可以使用ssget的keyword来选择。还可以通过输入P,来获取上一个选择集。
页: [1]
查看完整版本: erase命令没有调用acedSSGet函数?