iCAx开思工具箱

标题: cero二次开发,遍历尺寸函数问题 [打印本页]

作者: liuzhixing5566    时间: 2012-4-17 14:13
标题: cero二次开发,遍历尺寸函数问题
请大侠帮忙看看啊。 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;
}


作者: api163    时间: 2012-4-21 10:52
还看不懂,帮你顶一下
我想搞一个关闭所有窗口的命令,看手册好象要用到下面的函数
ProWindowsVisit
不过还没有看懂
在慢慢学




欢迎光临 iCAx开思工具箱 (https://t.icax.org/) Powered by Discuz! X3.3