zbmap 发表于 2003-2-21 21:22:00

求助:arx程序中自定义命令如何实现(对象先选中时执行),而未选中时提示选择对象

JicketMoney 发表于 2003-2-21 23:15:00

你所指的正是CAD的对象选择机制,尽管使用acedSSGet(NULL,NULL,NULL,NULL)
不过好像可以使用全局函数查看当前选择集(大概形式):
acedCurSelectionSet();

zbmap 发表于 2003-2-22 21:56:00

经过你提醒,arx2000中没有,arx2002找到了类似函数,还行!!
不过2000中为何找不到,以前见过别的二次软件在14及2000中也有此中
机制,若没有次函数,是否还有别的方法取得选择集,然后点取命令
执行?

JicketMoney 发表于 2003-2-24 22:04:00

int asdkGetCurrentSelectionSet(AcDbObjectIdArray &sset)
{
      ads_name ss;
      if ((int ret=acedSSGet(NULL,NULL,NULL,NULL,ss))!=RTNORM)
                return ret;
      long l;
      if (acedSSLength(ss,&l)!=RTNORM)
                return;
      ads_name ename;
      sset.LogicalLength = 0;
      AcDbObjectId id;
      for (long i=0;i<l;i++)
      {
                if (acedSSName(ss,i,ename)!=RTNORM)
                        return;
                if (acdbGetObjectId(id,ename)!=Acad::eOk)
                        return;
                sset.append(id);
      }
      acedSSFree(ss);
      return ret;
}
页: [1]
查看完整版本: 求助:arx程序中自定义命令如何实现(对象先选中时执行),而未选中时提示选择对象