iCAx开思工具箱

标题: 【求助】如何去除表达式 [打印本页]

作者: goodluckwu    时间: 2004-4-8 10:37
标题: 【求助】如何去除表达式
      我建立了一个长方体,系统自动加上了长宽高的约束(表达式)。我想对这个长方体进行缩放,由于表达式的存在系统提示无法对不能缩放的物体缩放。于是我就想删除长方体上的表达式( 使用UF_MODL_delete_exp() )。但是系统又说表达式正在使用中无法删除。如何才能让这个长方体脱离表达式约束呢?没有UF_MODL_remove_exp****()之类的函数阿。
      那位高手不吝赐教。谢谢
作者: goodluckwu    时间: 2004-4-8 10:56
哪位高手知道,指导一二,谢了。
作者: wflying    时间: 2004-4-8 11:32
UF_MODL_dissect_exp_string ?
不行吗?
作者: liberty000    时间: 2004-4-8 11:54
什么是“缩放”?修改参数吗?
作者: zzz    时间: 2004-4-8 11:57
UF_MODL_delete_body_parms() or UF_MODL_delete_object_parms()
作者: zzz    时间: 2004-4-8 21:53
UG里面的变换不是特征,所以不能对有特征的东东变换。
在变换之前,要把body转成unparametered body
作者: goodluckwu    时间: 2004-4-8 22:17
wflying wrote:
UF_MODL_dissect_exp_string ?  
  不行吗?

  
不行,那个函数的作用是将表达式的名和值分离。
作者: goodluckwu    时间: 2004-4-8 22:19
liberty000 wrote:
什么是“缩放”?修改参数吗?

  
按照一定的比例进行缩放,不是修改表达式,否则我就直接修改表达式了
作者: goodluckwu    时间: 2004-4-8 22:23
zzz wrote:
UG里面的变换不是特征,所以不能对有特征的东东变换。  
  在变换之前,要把body转成unparametered body

  
谢谢zzz,这个正是我想要的。
但是我使用了UF_MODL_delete_body_parms()了之后还是提示
Shear Matrix With Non-shearable Objects In The List
这又是问什么呢?  
作者: zzz    时间: 2004-4-8 22:33
你用UG的命令试一下。
作者: goodluckwu    时间: 2004-4-8 22:41
      我用UG在图形接口下试过,没什么问题,在做变幻的时候,系统会提示你是否去掉参数。
作者: goodluckwu    时间: 2004-4-8 22:42
我把我的代码发上来,麻烦版主帮忙看看:
static void Transform()
{
  int UF_TRNSFM_COPY = 2;
  int UF_TRNSFM_ORIGINAL_LAYE = 0;
  int UF_TRNSFM_TRACE_CURVE_OFF = 2;
  double origin[3] = {0}; // origin point  
  int err=0;      //error code
  char buf[100];
  uf_list_p_t list;
  
  // para of the block
  tag_t block, copyBlock, blockFeature;
  char * para[3] = { "length=60", "width=60", "high=60"};  // the block's length, width, and high
  
  //Transform matrixs
  double blockMtrx[16];
  
  //parameters of scale
  double scale[3]={1, 2, 0.5};    //the scale for X, Y, Z
  int type = 2;
  int count = 1;
  
  //parameters of trace curve , they are no use in this programme.
  tag_t traceGroup;
  
  //create the block
  UF_MODL_create_block1(UF_NULLSIGN, origin, para, [$blockFeature)]
  UF_MODL_ask_feat_body(blockFeature, [$block)]
  
  //before scale , we must delete the expression on block
  UF_MODL_create_list([$list)]
  UF_MODL_put_list_item(list, block);
  err=UF_MODL_delete_body_parms(list);
  PrintErrorMessage(err);
  UF_MODL_delete_list([$list)]
  
  //create the transform matrix of scaling
  uf5944_([$type, scale, origin, blockMtrx, &err)]
  if(err) uc1601("create matrix of SCALE error!", 1);
  
  //transform the block
  uf5947_(blockMtrx, &block, &count, &UF_TRNSFM_COPY, &UF_TRNSFM_ORIGINAL_LAYE,
              [$UF_TRNSFM_TRACE_CURVE_OFF, &copyBlock, &traceGroup, &err)]
  if(err)
  {
    sprintf(buf, "Transform BLOCK error , errcode : %d", err);
    uc1601(buf, 1);
  }
}
作者: goodluckwu    时间: 2004-4-8 22:46
有些地方不知道为什么贴上来就变了,我做个附件发上来吧。
版主帮个忙谢谢了。




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