乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 56|回复: 3

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

[复制链接]

1

主题

4

帖子

1

银币

初来乍到

Rank: 1

铜币
8
发表于 2003-2-21 21:22:00 | 显示全部楼层 |阅读模式
回复

使用道具 举报

1

主题

23

帖子

3

银币

初来乍到

Rank: 1

铜币
27
发表于 2003-2-21 23:15:00 | 显示全部楼层
你所指的正是CAD的对象选择机制,尽管使用acedSSGet(NULL,NULL,NULL,NULL)
不过好像可以使用全局函数查看当前选择集(大概形式):
acedCurSelectionSet();
回复

使用道具 举报

1

主题

4

帖子

1

银币

初来乍到

Rank: 1

铜币
8
发表于 2003-2-22 21:56:00 | 显示全部楼层
经过你提醒,arx2000中没有,arx2002找到了类似函数,还行!!
不过2000中为何找不到,以前见过别的二次软件在14及2000中也有此中
机制,若没有次函数,是否还有别的方法取得选择集,然后点取命令
执行?
回复

使用道具 举报

1

主题

23

帖子

3

银币

初来乍到

Rank: 1

铜币
27
发表于 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;
}
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2024-11-22 10:17 , Processed in 0.143799 second(s), 60 queries .

© 2020-2024 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表