请帮忙解决一下创建过两条线的基准面的问题!  内容加载中,请稍后...
CAD家园 
CAD家园
生活因感动而精彩,理想在创造中放飞!
请帮忙解决一下创建过两条线的基准面的问题!
作者:cad 提交日期:2009-7-6| 分类: | 访问量:




请帮忙解决一下创建过两条线的基准面的问题!

请帮忙看看:创建过两条线的基准面该怎么弄,谢谢!!! 
下面的程序可以运行,也可以选线,但就是出不了基准面,在ProFeatureCreate (mdl_sel, elem_tree, NULL, 0, &feature,&errors);时出问题了,不知道该怎么用那个PRO_DTMPLN_THRU,谢谢指点!
主要的问题是:PRO_DTMPLN_THRU该怎么用?谢谢!

/*====================================================================*\
    FUNCTION : CreatOffsetDtm() (创建过两条线的基准面)
\*====================================================================*/

int CreattDtm_twoline()
{
  ProError        status;
  ProElement      elem_tree, elem_ftype, elem_consts, elem_offset;
  ProElement      elem_const_type, elem_offset_ref, elem_offset_dist;
  ProModelitem    model_modelitem;
  ProSelection    mdl_sel;
  ProFeature      feature;
  ProErrorlist    errors;

  ProValueData value_data;
  ProSelection * p_select;
  ProSelection sel;
  int n_select;
  ProValue value;

//  为特征树顶层元素elem_tree分配内存

  status = ProElementAlloc (PRO_E_FEATURE_TREE, &elem_tree);

//    向特征树添加特征类型元素

  int ivalue=PRO_FEAT_DATUM;
  UsrElemtreeElementAdd(PRO_E_FEATURE_TYPE,elem_tree,&ivalue,PRO_VALUE_TYPE_INT,&elem_ftype);

//  向特征树添加约束平面集元素elem_consts

  status = ProElementAlloc (PRO_E_DTMPLN_CONSTRAINTS, &elem_consts);
  ProElemtreeElementAdd (elem_tree, NULL, elem_consts);

///////////
//  向约束平面集元素添加子元素elem_const

  status = ProElementAlloc (PRO_E_DTMPLN_CONSTRAINT, &elem_offset);
  status = ProElemtreeElementAdd (elem_consts, NULL, elem_offset);

//  设置基准面类型元素,并添加到特征树中

  ivalue=PRO_DTMPLN_THRU;
  UsrElemtreeElementAdd(PRO_E_DTMPLN_CONSTR_TYPE,elem_offset,
      &ivalue,PRO_VALUE_TYPE_INT,&elem_const_type);


//  向特征树添加基准面参照元素
  CString wzh;
//  ProSelection sel;
  ProSolid solid;
  status=ProMdlCurrentGet((ProMdl*)&solid);//获得当前模型
/*********
  ProSelectionAlloc(NULL, &BasePln, &sel);//选择参照轴线;
  UsrElemtreeElementAdd(PRO_E_DTMPLN_CONSTR_REF,elem_offset,
      &sel,PRO_VALUE_TYPE_SELECTION,&elem_offset_ref);
*********/
  AfxMessageBox("选线");
  status = ProSelect ( "axis,datum,line", -1, NULL, NULL, NULL, NULL, &p_select,&n_select );
  if ( n_select <= 0 )
  {
    return ProError(-1);
  }
  status = ProElementAlloc (PRO_E_DTMPLN_CONSTR_REF,&elem_offset_ref);
  value_data.type = PRO_VALUE_TYPE_SELECTION;
  value_data.v.r = p_select[0];

//  向特征树添加偏距元素之值
  status = ProValueAlloc ( &value );
  status = ProValueDataSet ( value, &value_data );
  status = ProElementValueSet (elem_offset_ref, value );
  wzh.Format("line_1_valueset_%d",status);
  AfxMessageBox(wzh);
  status = ProElemtreeElementAdd (elem_offset, NULL,elem_offset_ref);
  wzh.Format("line_1_ADD_%d",status);
  AfxMessageBox(wzh);


//second_line
  status = ProElementAlloc (PRO_E_DTMPLN_CONSTRAINT, &elem_offset);
  status = ProElemtreeElementAdd (elem_consts, NULL, elem_offset);
  status = ProSelect ( "axis,datum,line", -1, NULL, NULL, NULL, NULL, &p_select,&n_select );
  if ( n_select <= 0 )
  {
    return ProError(-1);
  }
  status = ProElementAlloc (PRO_E_DTMPLN_CONSTR_REF,&elem_offset_ref);
  value_data.type = PRO_VALUE_TYPE_SELECTION;
  value_data.v.r = p_select[0];

//  向特征树添加偏距元素之值
  status = ProValueAlloc ( &value );
  status = ProValueDataSet ( value, &value_data );
  status = ProElementValueSet (elem_offset_ref, value );
  status = ProElemtreeElementAdd (elem_offset, NULL,elem_offset_ref);
  wzh.Format("line_2_ADD_%d",status);//这一步出来status=0;
  AfxMessageBox(wzh);

  //  获得当前模型项的选择对象

  ProMdlToModelitem(solid, &model_modelitem);
  ProSelectionAlloc(NULL, &model_modelitem, &mdl_sel);

//  创建偏距基准面

  status = ProFeatureCreate (mdl_sel, elem_tree, NULL, 0, &feature,&errors);
  wzh.Format("feature_%d",status);  //这一步出来status=-1;
  AfxMessageBox(wzh);
//  释放内存空间

status = ProElementFree (&elem_tree);
  status = ProSelectionFree (&mdl_sel); 
  return (status);
}



其中UsrElemtreeElementAdd()定义如下:

/*====================================================================*\
函数: UsrElemtreeElementAdd()
功能:设置特征元素之值,并将特征元素添加到特征元素树中)
\*====================================================================*/

void UsrElemtreeElementAdd(ProElemId id,  //(In)特征元素标识符
        ProElement parent,  //(In)上级元素
        void *value,    //(In)特征元素值
                          ProValueDataType type, //(In)特征元素值类型
                          ProElement *element  //(In)特征元素
                          )
       
{
    ProValueData value_data;
    ProValue pvalue;
    value_data.type = type;
//特征元素值类型转换
    switch(type)
    {
    case PRO_VALUE_TYPE_INT      :
  value_data.v.i = *(int*)value;
  break;
    case PRO_VALUE_TYPE_DOUBLE    :
  value_data.v.d = *(double*)value;
  break;
    case PRO_VALUE_TYPE_POINTER  :
  value_data.v.p = *(void**)value;
  break;
    case PRO_VALUE_TYPE_STRING    :
  value_data.v.s = *(char**)value;
  break;
    case PRO_VALUE_TYPE_WSTRING  :
  value_data.v.w = *(wchar_t**)value;
  break;
    case PRO_VALUE_TYPE_SELECTION :
  value_data.v.r = *(ProSelection*)value;
  break;
    case PRO_VALUE_TYPE_TRANSFORM :
  value_data.v.t = *(double***)value;
  break;
    case PRO_VALUE_TYPE_BOOLEAN  :
  value_data.v.i = *(int*)value;
  break;
    }
//设置特征树元素之值
ProElementAlloc(id, element);
    ProValueAlloc(&pvalue);
    ProValueDataSet(pvalue, &value_data);
    ProElementValueSet(*element, pvalue);
    //将特征元素添加到特征元素树中
    ProElemtreeElementAdd (parent, NULL, *element);
}

*

本文摘自:http://www.jxcad.com.cn/read.php?tid=456669&fpage=2



阅读全文 | 回复(0) | 引用通告 | 编辑


作者:游客
输入您的评论:(不支持HTML标签)

段首缩进两个汉字:


  
个人档案
文章分类
企业管理与质量体系(4019)

建筑标准区(2817)

已应助标准区(17707)

标准资料攻关区(30)

资料教程区(168)

精品教程区(95)

UG习题区(95)

Solidworks插件学习区(96)

Solidworks习题及画法区(95)

模型及标准件库区(24)

Pro/E教程区(94)

加分习题区(95)

Pro/E二次开发(96)

习题区(62)

练习提高区(94)

资料教程区(96)

作品展示及模型专区(96)

焦点专区(96)

AutoCAD 二次开发专区(96)

画法几何及习题专区(96)

图纸专区(95)

资料区(95)

资料区(96)

起重机交流区(96)

冶金设备资料图纸共享专区(95)

钢铁新闻(90)

资料区(53)

资料区(96)

资料区(96)

习题区(35)

资料区(97)

资料区(96)

液压气动仿真(91)

轴承专版(92)

资料区(97)

涉世之初(95)

已答复区(95)

技术求助, 应助 技术心得, 探讨(91)

Technical English(or other languages) Forum(103)

基础理论(95)

手册区(93)

机械零部件、机构、装置、设备设计、制造及应用专区(93)

工程材料(95)

金属热处理(96)

机械冷加工(95)

资料区(95)

液压气动、液力传动与控制、仿真设计等资料(95)

五金模具设计(96)

金属板料成形专版(95)

塑胶模具设计(95)

特种加工(96)

橡胶与工程塑料(96)

化工机械、管道与压力容器专版(4209)

汽车技术专版(12590)

齿轮类零件及减(增)速机设计、制造及应用专区(5305)

电子(电气)、电力系统专业基础知识、应用技术、技术经验、资料交流(14173)

钢铁、冶金技术(12883)

重型机械装备(2798)

数控技术(2688)

清洁能源(93)

AutoDesk技术、教程、资料交流区(17459)

Inventor设计应用专区(4595)

Catia技术、教程、资料交流区(2329)

CAXA技术、教程、资料交流专区(3870)

KM开目技术、教程、资料交流专区(403)

Pro/E技术、教程、资料交流区(11947)

SolidWorks 技术、教程、资料交流区(9523)

TH天河技术、教程、资料交流专区(1635)

UGS技术、教程、资料交流区(7596)

建筑设计CAD专区(1629)

逆向工程技术、教程、资料交流专区(902)

其它CAX软件交流区(533)

ANSYS系列软件技术资料交流区(6590)

ABAQUS软件技术资料交流区(650)

CFD软件技术资料交流区(851)

MSC 系列软件技术资料交流区(2509)

疲劳, 断裂力学, 可靠性及钢结构软件技术资料交流专区(831)

科学, 工程计算专版(533)

其它 CAE软件技术资料交流区(1334)

Cimatron技术、教程、资料交流区(726)

MasterCAM技术、教程、资料交流区(1932)

PowerMill技术、教程、资料交流区(402)

其它 CAM软件技术资料交流区(436)

标准资料求助板块(1215)

国内标准共享版块(19074)

国外标准共享版块(10434)

标准手册区(1766)

标准库(112)

标准件、非标准件图形图库专区(951)

Copyright © 2008.01.06 design| CAD家园   生活因感动而精彩,理想在创造中放飞