《proe 二次开发01》

【1.】 "protected: virtual struct AFX_MSGMAP const * __thiscall SelectDLG::GetMessageMap(void)const "

出现这个原因是因为创建一个新类时,不能设置基类为CObject,随便选择了一个基类,然后,在将其改为CObject。“MSGMAP”这个词出现在了错误中,说明与MessageMap有关
【解决方法】:
1.“DECLARE_MESSAGE_MAP()”就是因为多加了一句这个,删除这一句。
2.DECLARE_MESSAGE_MAP()”必须配合以下语句使用不出现上述问题

BEGIN_MESSAGE_MAP(Ctest2App, CWinApp)
END_MESSAGE_MAP()

【2.】无法解析的外部符号

【解决方法】:

查看配置是否正确;
用到的函数是否声明,是否定义,及其函数名字书写是否正确

【3.】按钮菜单不显示,加载辅助程序时崩溃。
【解决方法】:
首先,查看信息文本中四行信息,第一行一定是英文状态,与函数代码中一致(结果显示的是第二行中文名字),
其次,一定注意,第一行信息,必须都不相同,不要简单的粘贴复制之后,不修改。

【4.】vc++2010环境下设置release 可调式:
设置在Release模式下调试的方法:
1.工程项目上右键 -> 属性
2.c++ -> 常规 -〉调试信息格式 选 程序数据库(/Zi)或(/ZI), 注意:如果是库的话,只能(Zi)
3.c++ -> 优化 -〉优化 选 禁止(/Od)
4.连接器 -〉调试 -〉生成调试信息 选 是 (/DEBUG)

【5.】

UpdateData(TRUE) 是将控件的状态传给其关联的变量,当然你要为控件关联上变量才行。
UpdateData(FALSE) 是将控件的关联变量的值传给控件并改变控件状态。
UpdateData 刷新的是当前对话框。

【6】读取TXT文档的函数代码
ProPath text_path;
char path[PRO_PATH_SIZE], note_path[PRO_PATH_SIZE];
CStdioFile fp;
CString str1;
CString strTech;
SCommonTolData CommonTolData;//常用公差数据

//在text文件夹下的ct.txt文件中保存常用公差
ProToolkitApplTextPathGet(text_path);
ProTKSprintf(note_path,_T("%0s\\text\\"), ProWstringToString(path, text_path));
strTech=CString(note_path)+_T("ct.txt");
fp.Open(strTech,CFile::modeRead|CFile::typeText);
//读取公差的设置,各参数值之间用逗号分隔
while(fp.ReadString(str1))
{
int index=0;
//第1个参数
str1.Format(_T("%s"),str1);
if((index = str1.Find(",")) != -1)
{
CommonTolData.tolCName=str1.Left(index);
str1=str1.Mid(index+1,str1.GetLength());
}
//第2个参数
if((index = str1.Find(",")) != -1)
{
CommonTolData.tolEName=str1.Left(index);
str1=str1.Mid(index+1,str1.GetLength());
}
//第3个参数
if((index = str1.Find(",")) != -1)
{
CommonTolData.upperLimit=atof(str1.Left(index));
str1=str1.Mid(index+1,str1.GetLength());

}
//第4个参数
if((index = str1.Find(",")) != -1)
{
CommonTolData.lowerLimit=atof(str1.Left(index));
str1=str1.Mid(index+1,str1.GetLength());
}
//第5个参数和第6个参数
if((index = str1.Find(",")) != -1)
{
int tolType_index=0;
tolType_index=atoi( str1.Left(index));
switch (tolType_index)
{
case 0:
CommonTolData.tolType=PRO_TOL_LIMITS;//限制
break;
case 1:
CommonTolData.tolType=PRO_TOL_PLUS_MINUS;//加-减
break;
case 2:
CommonTolData.tolType=PRO_TOL_PLUS_MINUS_SYM;//+-对称
break;
case 3:
CommonTolData.tolType=PRO_DIM_TOL_SYM_SUPERSCRIPT;//+-对称上标
break;
default:
return;
}
CommonTolData.tolDecimal=atoi(str1.Mid(index+1,str1.GetLength()));
}
CommonTolArray.Add(CommonTolData);
}
fp.Close();

【7】fin.getline(sentence, 100);

第一个参数显然是用来接受的char数组.
第二个参数是在遇到换行符之前,数组允许接受的最大元素数量.

【8.】 "protected: virtual struct AFX_MSGMAP const * __thiscall SelectDLG::GetMessageMap(void)const "

出现这个原因是因为创建一个新类时,不能设置基类为CObject,随便选择了一个基类,然后,在将其改为CObject。“MSGMAP”这个词出现在了错误中,说明与MessageMap有关
【解决方法】:
1.“DECLARE_MESSAGE_MAP()”就是因为多加了一句这个,删除这一句。
2.DECLARE_MESSAGE_MAP()”必须配合以下语句使用不出现上述问题

BEGIN_MESSAGE_MAP(Ctest2App, CWinApp)
END_MESSAGE_MAP()

【9.】无法解析的外部符号

【解决方法】:

查看配置是否正确;
用到的函数是否声明,是否定义,及其函数名字书写是否正确

【10.】按钮菜单不显示,加载辅助程序时崩溃。
【解决方法】:
首先,查看信息文本中四行信息,第一行一定是英文状态,与函数代码中一致(结果显示的是第二行中文名字),
其次,一定注意,第一行信息,必须都不相同,不要简单的粘贴复制之后,不修改。

【11.】读取线缆装配体显示在树形控件中

BOOL CDlg_Manager_AsmInfo::OnInitDialog()
{
CDialog::OnInitDialog();

// TODO: 在此添加额外的初始化
m_AsmInfo_tab.AddPage(_T("装配特征"),&m_AF_page,IDD_Manager_AF);
m_AsmInfo_tab.AddPage(_T("装配连接"),&m_AL_page,IDD_Manager_AL);
m_AsmInfo_tab.AddPage(_T("关键特性"),&m_KC_page,IDD_Manager_KC);
m_AsmInfo_tab.Show();

BOOL bb = UpdateTreeList();

return bb; // return TRUE unless you set the focus to a control
// 异常: OCX 属性页应返回 FALSE
}

BOOL CDlg_Manager_AsmInfo::UpdateTreeList()
{
ProError status;
ProName name;
status=ProMdlCurrentGet((ProMdl*)&asm_solid);
if (status!=PRO_TK_NO_ERROR)
{
SendMessage(WM_CLOSE);
return FALSE;
}
ProMdlNameGet(asm_solid,name);

m_AsmInfo_tree.DeleteAllItems();
HTREEITEM hroot = m_AsmInfo_tree.InsertItem(cur_component->c_cur_asm_name,0,0,TVI_ROOT);
m_AsmInfo_tree.SetItemData(hroot,0);

p_asmfeatlist.RemoveAll();
ShowModelTree(asm_solid,m_AsmInfo_tree,m_AsmInfo_tree.GetRootItem(),p_asmfeatlist);//包括装配体、子装配体、零件以及装配特征

m_AsmInfo_tree.Expand(hroot,TVE_EXPAND);
return TRUE;
}

/************************************************************************/
/* 把模型下面的元件添加到树节点下面(这里面用到了树控件) */
/************************************************************************/
void CDlg_Manager_AsmInfo::ShowModelTree(ProSolid solid,CTreeCtrl & m_Tree
,HTREEITEM hItem,CArray<ProFeature,ProFeature> & p_treeitem)
{
ProError status;
CString csName;
ProName wName;
HTREEITEM ChildItem, AfItem;
ProMdlType type;
ProFeattype ftype;
CArray<ProFeature,ProFeature> feat_list;

status = ProMdlTypeGet(solid, &type);
if(type == PRO_MDL_PART) //零件,获取该零件下的装配特征添加在子节点上
{
status = ProMdlNameGet(solid, wName);

CArray<CBIT_AsmFeature*,CBIT_AsmFeature*> AsmFeature;
AsmFeature.RemoveAll();
CBIT_MemoryFile mfile;
mfile.GetAsmFeat(wName, type, AsmFeature);
for (int j = 0; j < AsmFeature.GetCount(); j ++)
{
AfItem = m_Tree.InsertItem(AsmFeature.GetAt(j)->m_strAsmFeatName + _T(".AF"), hItem);
m_Tree.SetItemData(AfItem,p_treeitem.GetCount());
}
return();
}
//装配体,访问其下面的所有特征(子装配体、零件等),添加子树
//访问实体模型solid的所有特征
status=ProSolidFeatVisit(solid,(ProFeatureVisitAction)Manager_FeatureAsmVisitAcFn
,NULL,(CArray<ProFeature,ProFeature>*)&feat_list);
int num=(int)feat_list.GetCount();

//循环获得每个特征的类型,并判断类型是否为元件
for (int i = 0; i < num; i ++)
{
status = ProFeatureTypeGet (&feat_list[i], &ftype);

//如果特征的类型为元件,则把元件的文件名添加插入到树节点下面
if (ftype == PRO_FEAT_COMPONENT)
{
ProSolid mdl;
status=ProAsmcompMdlGet((ProAsmcomp *)(&feat_list[i]), (ProMdl *)&mdl);
status=ProMdlNameGet(mdl,wName);
csName=CString(wName);
status=ProMdlTypeGet(mdl,&type);

//获得元件的类型(装配件或零件),并在名称后面添加文件扩展符
if (type == PRO_MDL_ASSEMBLY) csName = csName + _T(".ASM");
if (type ==PRO_MDL_PART) csName = csName + _T(".PRT");

//////把元件添加到树节点下面
ChildItem = m_Tree.InsertItem(csName, hItem);
p_treeitem.Add(feat_list[i]);
m_Tree.SetItemData(ChildItem,p_treeitem.GetCount());

//递归展开子树
ShowModelTree(mdl,m_Tree,ChildItem,p_treeitem);
}
}
}

【Python之机器学习(NumPy)】

时间: 2025-01-14 21:34:45

《proe 二次开发01》的相关文章

CI框架源码阅读笔记3 全局函数Common.php

从本篇开始,将深入CI框架的内部,一步步去探索这个框架的实现.结构和设计. Common.php文件定义了一系列的全局函数(一般来说,全局函数具有最高的加载优先权,因此大多数的框架中BootStrap引导文件都会最先引入全局函数,以便于之后的处理工作). 打开Common.php中,第一行代码就非常诡异: if ( ! defined('BASEPATH')) exit('No direct script access allowed'); 上一篇(CI框架源码阅读笔记2 一切的入口 index

IOS测试框架之:athrun的InstrumentDriver源码阅读笔记

athrun的InstrumentDriver源码阅读笔记 作者:唯一 athrun是淘宝的开源测试项目,InstrumentDriver是ios端的实现,之前在公司项目中用过这个框架,没有深入了解,现在回来记录下. 官方介绍:http://code.taobao.org/p/athrun/wiki/instrumentDriver/ 优点:这个框架是对UIAutomation的java实现,在代码提示.用例维护方面比UIAutomation强多了,借junit4的光,我们可以通过junit4的

Yii源码阅读笔记 - 日志组件

?使用 Yii框架为开发者提供两个静态方法进行日志记录: Yii::log($message, $level, $category);Yii::trace($message, $category); 两者的区别在于后者依赖于应用开启调试模式,即定义常量YII_DEBUG: defined('YII_DEBUG') or define('YII_DEBUG', true); Yii::log方法的调用需要指定message的level和category.category是格式为“xxx.yyy.z

源码阅读笔记 - 1 MSVC2015中的std::sort

大约寒假开始的时候我就已经把std::sort的源码阅读完毕并理解其中的做法了,到了寒假结尾,姑且把它写出来 这是我的第一篇源码阅读笔记,以后会发更多的,包括算法和库实现,源码会按照我自己的代码风格格式化,去掉或者展开用于条件编译或者debug检查的宏,依重要程度重新排序函数,但是不会改变命名方式(虽然MSVC的STL命名实在是我不能接受的那种),对于代码块的解释会在代码块前(上面)用注释标明. template<class _RanIt, class _Diff, class _Pr> in

CI框架源码阅读笔记5 基准测试 BenchMark.php

上一篇博客(CI框架源码阅读笔记4 引导文件CodeIgniter.php)中,我们已经看到:CI中核心流程的核心功能都是由不同的组件来完成的.这些组件类似于一个一个单独的模块,不同的模块完成不同的功能,各模块之间可以相互调用,共同构成了CI的核心骨架. 从本篇开始,将进一步去分析各组件的实现细节,深入CI核心的黑盒内部(研究之后,其实就应该是白盒了,仅仅对于应用来说,它应该算是黑盒),从而更好的去认识.把握这个框架. 按照惯例,在开始之前,我们贴上CI中不完全的核心组件图: 由于BenchMa

CI框架源码阅读笔记2 一切的入口 index.php

上一节(CI框架源码阅读笔记1 - 环境准备.基本术语和框架流程)中,我们提到了CI框架的基本流程,这里这次贴出流程图,以备参考: 作为CI框架的入口文件,源码阅读,自然由此开始.在源码阅读的过程中,我们并不会逐行进行解释,而只解释核心的功能和实现. 1.       设置应用程序环境 define('ENVIRONMENT', 'development'); 这里的development可以是任何你喜欢的环境名称(比如dev,再如test),相对应的,你要在下面的switch case代码块中

Apache Storm源码阅读笔记

欢迎转载,转载请注明出处. 楔子 自从建了Spark交流的QQ群之后,热情加入的同学不少,大家不仅对Spark很热衷对于Storm也是充满好奇.大家都提到一个问题就是有关storm内部实现机理的资料比较少,理解起来非常费劲. 尽管自己也陆续对storm的源码走读发表了一些博文,当时写的时候比较匆忙,有时候衔接的不是太好,此番做了一些整理,主要是针对TridentTopology部分,修改过的内容采用pdf格式发布,方便打印. 文章中有些内容的理解得益于徐明明和fxjwind两位的指点,非常感谢.

CI框架源码阅读笔记4 引导文件CodeIgniter.php

到了这里,终于进入CI框架的核心了.既然是"引导"文件,那么就是对用户的请求.参数等做相应的导向,让用户请求和数据流按照正确的线路各就各位.例如,用户的请求url: http://you.host.com/usr/reg 经过引导文件,实际上会交给Application中的UsrController控制器的reg方法去处理. 这之中,CodeIgniter.php做了哪些工作?我们一步步来看. 1.    导入预定义常量.框架环境初始化 之前的一篇博客(CI框架源码阅读笔记2 一切的入

jdk源码阅读笔记之java集合框架(二)(ArrayList)

关于ArrayList的分析,会从且仅从其添加(add)与删除(remove)方法入手. ArrayList类定义: p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Monaco } span.s1 { color: #931a68 } public class ArrayList<E> extends AbstractList<E> implements List<E> ArrayList基本属性: /** *

dubbo源码阅读笔记--服务调用时序

上接dubbo源码阅读笔记--暴露服务时序,继续梳理服务调用时序,下图右面红线流程. 整理了调用时序图 分为3步,connect,decode,invoke. 连接 AllChannelHandler.connected(Channel) line: 38 HeartbeatHandler.connected(Channel) line: 47 MultiMessageHandler(AbstractChannelHandlerDelegate).connected(Channel) line: