野火论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始


查看: 10593|回复: 4

[已解决] 王伟《ProE野火版TOOLK IT二次开发入门与进阶》上的实例,尺寸操作问题,尺寸遍历函数

 关闭 [复制链接]

1

主题

5

回帖

0

威望

实习生

Rank: 1

积分
7
发表于 2012-4-17 13:20 | 显示全部楼层 |阅读模式
请大侠帮忙看看啊。 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;
}

7

主题

48

回帖

0

威望

助工

Rank: 2

积分
60
发表于 2012-4-24 18:44 | 显示全部楼层
这些代码都要自己编写?不是吧。
回复 支持 反对

使用道具 举报

1

主题

5

回帖

0

威望

实习生

Rank: 1

积分
7
 楼主| 发表于 2012-4-28 16:19 | 显示全部楼层
问题 已经自己解决了 , 呵呵   自己加上了调试程序啦,其他的是书上的代码,
回复 支持 反对

使用道具 举报

1

主题

22

回帖

0

威望

实习生

Rank: 1

积分
25
发表于 2012-8-21 10:29 | 显示全部楼层
不清楚是什么意思?楼主能把王伟老师书上的例子的代码发过来吗??120181624@qq.com  谢谢。。
回复 支持 反对

使用道具 举报

1

主题

56

回帖

0

威望

助工

Rank: 2

积分
61
发表于 2012-12-17 16:34 | 显示全部楼层
不懂啊  还有好多东西要学啊
回复 支持 反对

使用道具 举报

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

本版积分规则

本站为非营利性站点,部分资源为网友搜集或发布,仅供学习和研究使用,如用于商业用途,请购买正版。站内所发布的资源,如有侵犯你的权益,请联系我们,本站将立即改正或删除。

QQ|手机版|小黑屋|野火论坛(©2007~2024) ( 苏ICP备11036728号-2 )苏公网安备 32039102000103号

GMT+8, 2024-5-1 22:28 , Processed in 0.102042 second(s), 23 queries .

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