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程序中自定义命令如何实现(对象先选中时执行),而未选中时提示选择对象