Pro/TOOLKIT示例程序(十五)Mapkey(映射键)

Pro/TOOLKIT并不能完全实现Pro/E的所有功能。
对于Pro/TOOLKIT没有提供API接口的功能,就需要使用Mapkey来实现。
你可以先录制一段Mapkey,然后调用ProMacroLoad执行Mapkey。
在Wildfire5下录制Mapkey的步骤:
【工具】->【映射键】
这里写图片描述
录制完成之后,可以通过【保存】查看Mapkey的伪代码。

示例:修改工程图所有尺寸的箭头样式为双箭头

在Pro/TOOLKIT中,并没有提供修改工程图尺寸箭头样式的API,如果想要用代码实现修改尺寸的箭头样式,则只能通过Mapkey实现。
首先、录制一段修改工程图尺寸箭头样式的Mapkey,查看Mapkey的伪代码如下:

~ Command ProCmdDwgModArrowStyle ;#DOUBLE ARROW;#DONE/RETURN;

然后调用ProMacroLoad执行。
执行前后的效果如下图所示:
这里写图片描述
这里写图片描述
以下代码实现将当前工程图中的所有尺寸的箭头样式改为双箭头。

// 工程图尺寸访问函数
ProError DrwDimensionVisitAction(ProDimension  *dimension,
                                 ProError      status,
                                 ProAppData     data)
{
    vector<ProDimension>* pDimVec = (vector<ProDimension>*)data;
    pDimVec->push_back(*dimension);
    return PRO_TK_NO_ERROR;
}

// 修改当前工程图中所有尺寸的箭头样式
int ChangeDrwDimsArrowStyle(uiCmdCmdId  command,
                            uiCmdValue *p_value,
                            void       *p_push_command_data)
{
    // 获取当前工程图
    ProError err;
    ProMdl mdlCurr;
    err = ProMdlCurrentGet(&mdlCurr);
    ProMdlType mdlType;
    err = ProMdlTypeGet(mdlCurr, &mdlType);
    if (mdlType != PRO_MDL_DRAWING)
    {
        return -1;
    }

    // 遍历工程图中的所有尺寸
    vector<ProDimension> allDims;
    err = ProDrawingDimensionVisit((ProDrawing)mdlCurr, PRO_DIMENSION, 
        DrwDimensionVisitAction, NULL, &allDims);

    // 执行Mapkey
    wstring wstrMapkey = L"~ Command `ProCmdDwgModArrowStyle` ;#DOUBLE ARROW;#DONE/RETURN;";
    vector<ProDimension>::iterator iterDim = allDims.begin();
    for (; iterDim != allDims.end(); ++iterDim)
    {
        err = ProSelbufferClear();
        ProSelection dimSel;
        err = ProSelectionAlloc(NULL, &(*iterDim), &dimSel);
        err = ProSelbufferSelectionAdd(dimSel);

        // 加载并执行Mapkey
        err = ProMacroLoad((wchar_t*)wstrMapkey.c_str());
        err = ProMacroExecute();
    }
    err = ProWindowRepaint(-1);

    return 0;
}
  • 5
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值