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;
告诉你把,cad中提示你选择实体的时候,都可以使用ssget的keyword来选择。还可以通过输入P,来获取上一个选择集。
页:
[1]