iCAx开思网

标题: 求曲面(U=0.5,V=0.5)位置和曲面法向问题 [打印本页]

作者: asku88    时间: 2009-6-27 09:14
标题: 求曲面(U=0.5,V=0.5)位置和曲面法向问题
用UF_MODL_ask_face_props求法向是正确的,但求曲面(U=0.5,V=0.5)位置结果不对
我这个电极的尺寸45.000x18.000x20.029
求出来的点数据明显超大
[attach]934967[/attach]
代码如下:
  1. #include <uf.h>
  2. #include <uf_exit.h>
  3. #include <uf_ui.h>
  4. #include <uf_modl.h>
  5. #include <uf_disp.h>

  6. #if ! defined ( __hp9000s800 ) && ! defined ( __sgi ) && ! defined ( __sun )
  7. #        include <strstream>
  8. #   include <iostream>
  9.         using std::ostrstream;
  10.         using std::endl;       
  11.         using std::ends;
  12.         using std::cerr;
  13. #else
  14. #        include <strstream.h>
  15. #   include <iostream.h>
  16. #endif
  17. #include "ask_props.h"

  18. extern "C" DllExport void ufsta( char *param, int *returnCode, int rlen )
  19. {
  20.     int errorCode = UF_initialize();

  21.     if ( 0 == errorCode )
  22.     {
  23.                 int irc = 0;
  24.                 char *message = "Select Object";
  25.                 UF_UI_selection_options_t opts;
  26.                 UF_UI_mask_t mask;
  27.                 int response;
  28.                 tag_t object, view;
  29.                 double cursor[3];
  30.                
  31.                 UF_initialize();
  32.                 opts.other_options = 0;
  33.                 opts.reserved = NULL;
  34.                 opts.num_mask_triples = 1;
  35.                 opts.mask_triples = &mask;
  36.                
  37.                 opts.mask_triples->object_type = UF_solid_type;
  38.                 opts.mask_triples->object_subtype = UF_solid_face_subtype;
  39.                 opts.mask_triples->solid_type = UF_UI_SEL_FEATURE_ANY_FACE;

  40.                 while (response!=2)
  41.                 {               
  42.                         opts.scope = UF_UI_SEL_SCOPE_WORK_PART;
  43.                         irc = UF_UI_select_single(message,&opts,&response,
  44.                                 &object,cursor,&view);
  45.                        
  46.                         if (response==5)
  47.                         {
  48.                                 double face_param[2],face_point[3],face_u_deriv1[3];
  49.                                 double face_v_deriv1[3],face_u_deriv2[3],face_v_deriv2[3];
  50.                                 double face_normal[3],face_radii[2];
  51.                                 char msg[256];
  52.                                
  53.                                 face_param[0] = 0.5;
  54.                                 face_param[1] = 0.5;                       
  55.                                
  56.                                 UF_MODL_ask_face_props(object,
  57.                                         face_param,
  58.                                         face_point,
  59.                                         face_u_deriv1,face_v_deriv1,
  60.                                         face_u_deriv2,face_v_deriv2,
  61.                                         face_normal,face_radii);
  62.                                 sprintf(msg,"曲面(U=0.5,V=0.5)位置:\n  X = %.3f\n  Y = %.3f\n  Z = %.3f \n\n曲面法向:\n  I = %.3f\n  J = %.3f\n  K = %.3f \n\n",
  63.                                         face_point[0],face_point[1],face_point[2],
  64.                                         face_normal[0],face_normal[1],face_normal[2]);
  65.                                 uc1601(msg,1);
  66.                                 UF_DISP_set_highlight(object,0);
  67.                         }
  68.                 }

  69.         errorCode = UF_terminate();
  70.     }
  71. }

  72. extern "C" int ufusr_ask_unload( void )
  73. {
  74.     return( UF_UNLOAD_IMMEDIATELY  );
  75. }
复制代码

作者: jaken99    时间: 2012-4-15 19:51
到最后你会发现连面的法向都不对了
作者: qindongjun88    时间: 2012-4-16 09:10
jaken99 ,"到最后你会发现连面的法向都不对了"
为什么呀?
作者: zale_lzj    时间: 2012-4-19 12:35
曲面(U=0.5,V=0.5), 并不一定是曲面中心,因为这个面被边界修剪过了




欢迎光临 iCAx开思网 (https://www.icax.org/) Powered by Discuz! X3.3