iCAx开思工具箱

标题: 关于ProAsmcompConstraintsGet [打印本页]

作者: hyccai    时间: 2010-11-19 18:26
标题: 关于ProAsmcompConstraintsGet
status=ProSelbufferSelectionsGet(&buff);
......
ProModelitem part_model_item;
ProSelectionModelitemGet(buff[0],&part_model_item);
......
ProAsmcompconstraint *p_constraints;
status=ProAsmcompConstraintsGet((ProModelitem*)&part_model_item,&p_constraints);
ProAsmcompconstraintTypeGet(p_constraints[0],&asm_type);

//ProAsmcompConstraintsGet返回值总是PRO_TK_INVALID_TYPE,不知是什么原因
作者: hust65    时间: 2010-11-20 18:37
應該就是你的ProSelection是有問題的
你可以把part_model_item.type印出來看看
作者: xbin_cax    时间: 2010-11-20 20:32
要先給*p_constraints分配内存
作者: hyccai    时间: 2010-11-22 18:11
谢谢楼上两位!
1.part_model_item.type的值为PRO_PART,后面我进行了类型转换
status=ProAsmcompConstraintsGet((ProModelitem*)&part_model_item,&p_constraints);
当然,我选择的是装配下的一个零件
2.我试着这样分配内存
ProArrayAlloc(0,sizeof(ProAsmcompconstraint),1,(ProArray*)&p_constraints);
可也还是不对
3.以下是帮助文档的代码
ProError status;
ProSelection* component_arr;
int size;
ProAsmcomp cfeat;

ProMessageDisplay (MSGFIL, "USER Select an assembly component:");
status = ProSelect ("membfeat", 1, NULL, NULL, NULL, NULL, &component_arr, &size);
if (status != PRO_TK_NO_ERROR)
        return status;
ProSelectionModelitemGet (component_arr [0], (ProModelitem*)&cfeat);

ProSelectionUnhighlight (component_arr [0]);

ProWindowRepaint (-1);

UserAsmcompConstraintsHighlight (&cfeat);//ProError  UserAsmcompConstraintsHighlight (ProAsmcomp* asmcomp)
return PRO_TK_NO_ERROR;
//就算我把
ProModelitem part_model_item;
改成ProAsmcomp cfeat;
也还是不行
作者: hust65    时间: 2010-11-23 16:09
4#  

part_model_item.type的值應該要是PRO_FEATURE不應該是PRO_PART
作者: hyccai    时间: 2010-11-23 18:41
我用的是status=ProSelbufferSelectionsGet(&buff);
而不是ProSelect函数,
是不是这个函数ProSelbufferSelectionsGet的问题
作者: hust65    时间: 2010-11-24 17:12
那段幫助文檔的代碼
cfeat.type是PRO_FEATURE
用ProFeaturetypeGet得到的feattype是PRO_FEAT_COMPONENT
也就是說 ProAsmcomp是ProFeature的一種
所以我才會問你的part_model_item.type是甚麼
不是PRO_FEATURE
那ProAsmcompconstraintTypeGet返回值才會說你輸入了一個無效的type
作者: hyccai    时间: 2010-11-25 19:53
我笨,实在没办法了,
能不能从这个函数ProSelbufferSelectionsGet开始,帮我写一小段,让我调试下
我是想在模型树选择一个PART,右建,
然后显示这个零件的约束类型.
作者: hyccai    时间: 2010-11-25 19:53
我笨,实在没办法了,
能不能从这个函数ProSelbufferSelectionsGet开始,帮我写一小段,让我调试下
我是想在模型树选择一个PART,右建,
然后显示这个零件的约束类型.
作者: hust65    时间: 2010-11-26 10:00
9#  
不要說自己笨
現在沒甚麼時間,你不急的話我找時間試試看(不一定會成功)
應該可以從你選進來的ProSelection再轉到ProAsmcomp(關鍵是你之前問過的ProSolidFeatVisit)
作者: hyccai    时间: 2010-11-29 09:28
呵呵,先谢!
其实我是前两个月才自学了点C++,到现在也只会了一点语法,所以感觉比较吃力
只不过没有目标,学到哪算哪的那种,
作者: hust65    时间: 2010-11-30 11:16
8#  
有一個做法可以簡單取得 Asmcomp
ProAsmcomppath comppath;
ProAsmcomp        comp;
ProSelectionAsmcomppath(buff, &comppath);
comp.owner = comppath.owner;
comp.id = comppath.comp_id_table[0] <-這裡假設你只裝配在第一層
comp.type = PRO_FEATURE;

這樣你就可以用ProAsmcompConstraintsGet()
作者: hyccai    时间: 2010-12-3 18:17
非常感谢hust65
终于搞定了,在这之前总是想通过强制类型转换得到ProAsmcomp
今天尝试下遍历,结果就搞定了




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