iCAx开思工具箱

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 25466|回复: 1
打印 上一主题 下一主题

cero二次开发,遍历尺寸函数问题

[复制链接]
跳转到指定楼层
楼主
发表于 2012-4-17 14:13:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册登录,享用更多网站功能!

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
请大侠帮忙看看啊。 cero二次开发,遍历尺寸函数问题: 这个问题纠结了几天了,请大侠帮我看看是什么问题,万分感谢!
ProSolidDimensionVisit((ProSolid)mdl, PRO_B_FALSE, DimAction, NULL, NULL); 这个函数的第三个参数是调用DimAction函数,而我的程序运行时,为什么DimAction函数没有执行呢?
下面是我的源码:  该实例是王伟老师《ProE野火版TOOLK IT二次开发入门与进阶》上的实例,自己加了一个简单的菜单,程序可以正常生产dll文件,但是在cero1.0上挂起后,运行,DimAction函数里的内容没打印出来。
// Example2_1.cpp : Defines the initialization routines for the DLL.
#include "stdafx.h"
#include "Example2_1.h"
/*--------------------------------------------------------------------*\
Pro/TOOLKIT includes
\*--------------------------------------------------------------------*/
#include"ProMenu.h"
#include"ProUtil.h"
#include"ProMenubar.h"
#include <ProSolid.h>
#include <ProMdl.h>
#include <ProWstring.h>
/*--------------------------------------------------------------------*\
Functions declaration
\*--------------------------------------------------------------------*/
int ShowMessageTest();
static uiCmdAccessState AccessDefault (uiCmdAccessMode);
ProError DimAction(ProDimension *dimension, ProError status, ProAppData data);
/////////////////////////////////////////////////////////////////////////////
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
// CExample2_1App
BEGIN_MESSAGE_MAP(CExample2_1App, CWinApp)
//{{AFX_MSG_MAP(CExample2_1App)
  // NOTE - the ClassWizard will add and remove mapping macros here.
  //    DO NOT EDIT what you see in these blocks of generated code!
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CExample2_1App construction
CExample2_1App::CExample2_1App()
{
// TODO: add construction code here,
// Place all significant initialization in InitInstance
}
/////////////////////////////////////////////////////////////////////////////
// The one and only CExample2_1App object
CExample2_1App theApp;
//
/*=======================================================================*\
FUNCTION: user_initialize()
\*=======================================================================*/
extern "C" int user_initialize()
{
     ProError     status;
     ProFileName  message_file;
  uiCmdCmdId   cmd_id;
  status = ProCmdActionAdd("ShowTest",
              (uiCmdCmdActFn)ShowMessageTest,
              uiCmdPrioDefault,AccessDefault,
        PRO_B_TRUE,PRO_B_TRUE,&cmd_id);
     status = ProMenubarmenuPushbuttonAdd(
             "Utilities", "ShowMessageTest", "ShowMessageTest",
             "Active ShowMessageTest menu", NULL,
           PRO_B_TRUE, cmd_id, ProStringToWstring(message_file, "Message2.txt"));
return status;
}
/*===============================================================*\
FUNCTION: user_terminate()
\*===============================================================*/
extern "C" void user_terminate()
{
   AFX_MANAGE_STATE(AfxGetStaticModuleState());
}
/*================================================================*\
FUNCTION: AccessDefault()
\*================================================================*/
static uiCmdAccessState AccessDefault (uiCmdAccessMode access_mode)
{
    return (ACCESS_AVAILABLE);
}
/*================================================================*\
FUNCTION: ShowMessageTest()
\*================================================================*/
int ShowMessageTest()
{
ProMdl mdl;
ProMdlCurrentGet(&mdl);
// 依次访问每一个尺寸,并调用“DimAction”来处理这些尺寸
ProSolidDimensionVisit((ProSolid)mdl, PRO_B_FALSE, DimAction, NULL, NULL);
ProSolidRegenerate((ProSolid)mdl, PRO_REGEN_NO_FLAGS); //更新模型
  AfxMessageBox("Pro/TOOLKIT应用程序1成功运行!",MB_OK);   //  这个是调试用的,弹出对话框,以便确定函数是否执//行到这里
  return true;
}
ProError DimAction(ProDimension *dimension, ProError status, ProAppData data)   
{
AfxMessageBox("Pro/TOOLKIT应用程序2开始运行!",MB_OK);
ProName symbol, dim_name;
ProStringToWstring(dim_name, "LENTH");
ProDimensionSymbolGet(dimension, symbol); //获取传入的尺寸符号
int result;
ProWstringCompare(symbol, dim_name, PRO_VALUE_UNUSED, &result);
double dim_value = 0;
if(result == 0) //如果是我们的“LENTH”尺寸
{
  ProDimensionValueGet(dimension, &dim_value);
  CString show;
  show.Format("current dim value is : %f", dim_value);
  AfxMessageBox(show); //输出尺寸值
  dim_value = 300;
  ProDimensionValueSet(dimension, dim_value); //设置一个新数值
}
AfxMessageBox("Pro/TOOLKIT应用程序2成功运行!",MB_OK);
return PRO_TK_NO_ERROR;
}

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 支持支持
沙发
发表于 2012-4-21 10:52:05 | 只看该作者

马上注册登录,享用更多网站功能!

您需要 登录 才可以下载或查看,没有帐号?立即注册

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

本版积分规则

手板模型制作,在线3D打印服务

QQ|小黑屋|手机版|开思工具箱 CAD工具箱_CAM工具箱  

GMT+8, 2024-12-22 18:45 , Processed in 0.010282 second(s), 7 queries , Gzip On, Redis On.

Powered by Discuz! X3.3

© 2002-2024 www.iCAx.org

快速回复 返回顶部 返回列表