zoukankan      html  css  js  c++  java
  • ARX亮显问题

    转载一段acedSSSetFirst的用法仅供参考:
    打个比方,我创建了一个命令,这个命令的功能是提示用户选择,然后只过滤文本对象作为选择集,随后在屏幕上使得这个选择集的所有成员都亮显,并且能够显示出各成员上的夹点。通常我们在cad中什么命令也不输入的时候,随便框选一下图中的对象得到的选择集就是被亮显和夹取的,在ARX中如何实现?

    ads_name sset,sset_temp;

    //那个sset_temp你有没有初始化,如果没有肯定错。运行你的语句之前先加上下面的语句
    // Set ss to a null selection set.,
    acedSSAdd(NULL,NULL,sset_temp ); //初始化一个选择

    long len;
    acedSSLength(sset,&len);
    for (int i=0;i<len;i++)
    {

    ads_name ent;
    acedSSName(sset,i,ent);
    AcDbObjectId objId;
    acdbGetObjectId(objId,ent);

    ...

    acedSSAdd(ent,sset_temp,sset_temp);

    ...

    }

    acedSSFree(sset);
    acedSSSetFirst(sset_temp,NULL);

    注意启动命令要设置为CRX_CMD_REDRAW | ACRX_CMD_USEPICKSET
    sssetfirst可以控制加点或者选择的显示,但要注意注册命令的参数。

    测试代码 包括高亮

    static void PGCmds_Test()
    {
    ads_name ssName, ssTemp;
    acedSSAdd(NULL, NULL, ssTemp);

    acedSSGet(NULL, NULL, NULL, NULL, ssName);
    long len;
    acedSSLength(ssName, &len);

    for (int i = 0; i < len; i++)
    {
    ads_name ent;
    acedSSName(ssName, i, ent);

    AcDbObjectId objid;
    acdbGetObjectId(objid, ent);
    AcDbEntity *pent=NULL;
    acdbOpenAcDbEntity(pent, objid, AcDb::kForRead);
    if (pent->isKindOf(AcDbText::desc()))
    {
    acedSSAdd(ent, ssTemp, ssTemp);
    }
    pent->close();
    }
    acedSSFree(ssName);
    acedSSSetFirst(ssTemp, NULL);

    //亮显功能测试
    AcDbEntity *pent = NULL;
    AcGePoint3d pt;
    CSelectUtil::PromptSelectEntity(_T("xuanz"), AcDbLine::desc(), pent, pt);
    pent->highlight();
    pent->close();
    }

  • 相关阅读:
    解决前端从url路径上拿到的中文乱码
    仪表盘双层结构图
    element ui 按钮显示
    vue在手机上运行,打包之后显示
    echarts使用遇到的一些问题总结,比如颜色改变,文字位置调整
    微信小程序地图移动到指定的位置
    微信小程序多边形地图显示
    button取消边框
    代码审计小记 (一)
    [root-me](web-client)write up 一个大坑怎么填啊
  • 原文地址:https://www.cnblogs.com/mjgw/p/12347801.html
Copyright © 2011-2022 走看看