iCAx开思网

标题: UG二次开发---Draft模式中怎样Add Baseview? [打印本页]

作者: zengshengqu    时间: 2006-12-24 13:47
标题: UG二次开发---Draft模式中怎样Add Baseview?
进入二维图,要创建一个base view(如主视图,俯视图等),我查了document里面的函数
如extern int UF_DRAW_add_auxiliary_view (
const tag_t drawing_tag,
const tag_t parent_view_tag,
const tag_t hinge_line_tag,
double dwg_reference_point[ 2 ],
tag_t * aux_view_tag );
都有一个parent_view_tag, 但是要新创建一个base view,没有parent_view_tag啊?
请教怎么解决,有没有其他的函数或者方法创建一个base view!
作者: gao264    时间: 2006-12-26 08:06
Help里这不都有自带例子的嘛,没有视图先用UF_DRAW_add_orthographic_view加
作者: missing914    时间: 2006-12-26 20:36
兄弟,你用错命令了
要添加一个视图可以用一下命令:
extern int uc6481 (
const char * dwg_name,
const char * view_name,
const double * reference_pt,
const int view_status );

有问题的话,可以去www.cadway.org
我一般在那边帮人解决问题!
作者: zengshengqu    时间: 2006-12-26 20:38
/*
The code in the following example creates an orthographic view.
*/

#include <stdlib.h>
#include <stdio.h>
#include <uf.h>
#include <uf_defs.h>
#include <uf_draw.h>
#include <uf_obj.h>
#include <uf_part.h>
void ufusr(char *param, int *retcod, int param_len)
{
  double      reference_point[2] = {10.0, 12.0};
  int         ifail = 0;
  tag_t       drawing_tag = NULL_TAG;
  tag_t       part_tag = NULL_TAG;
  tag_t       parent_view_tag = NULL_TAG;
  tag_t       ortho_view_tag = NULL_TAG;
  char        error_message[133];
  char        *view_name = "TOP@1";    //parent view
  UF_DRAW_proj_dir_t projection_direction = UF_DRAW_project_infer;
  
  ifail = UF_initialize();
   
  if( !ifail )
      part_tag = UF_PART_ask_display_part();
            
  if( !ifail && part_tag != NULL_TAG )
      ifail = UF_DRAW_ask_current_drawing( &drawing_tag );
                                             
  if( !ifail && drawing_tag != NULL_TAG )
      ifail = UF_OBJ_cycle_by_name( view_name,
                                   &parent_view_tag );
                                 
  if( !ifail && parent_view_tag != NULL_TAG )
      ifail = UF_DRAW_add_orthographic_view( drawing_tag,
                                         parent_view_tag,
                                         projection_direction,
                                         reference_point,
                                        &ortho_view_tag );
  printf( "UF_DRAW_add_orthographic_view " );
  if( ifail )
  {
      ifail = UF_get_fail_message( ifail, error_message );
      printf( "fails. \nError is:%s\n", error_message );
  }
  else if( part_tag == NULL_TAG )
      printf( "fails.\nError is: no active part.\n" );
  else if ( drawing_tag == NULL_TAG )
      printf( "fails.\nError is: no current drawing.\n" );
  else if ( parent_view_tag == NULL_TAG )
      printf( "fails.\nError is: no parent view.\n" );
  else   
      printf( "is successful.\n" );
   
  ifail = UF_terminate();
}

我试了,不行,这个函数也是根据已经有的视图去创建一个新的视图,如果图框中没有视图,那么
if( !ifail && drawing_tag != NULL_TAG )
      ifail = UF_OBJ_cycle_by_name( view_name,
                                   &parent_view_tag );
返回得到的parent_view_tag = NULL_TAG
不能执行UF_DRAW_add_orthographic_view函数!
作者: 春泉    时间: 2007-4-29 17:14
不错
作者: zzx240    时间: 2007-5-5 10:15
标题: 顶下~好东西!
好东西!
作者: ice-snow    时间: 2007-5-12 09:44
要首次添加一个视图可以用uc6481或者UF_DRAW_import_view:
uc6481 add view to drawing

extern int uc6481 (
const char * dwg_name,
const char * view_name,
const double * reference_pt,
const int view_status );


UF_DRAW_import_view

extern int UF_DRAW_import_view (
const tag_t drawing_tag,
const tag_t view_tag,
double dwg_reference_point[ 2 ],
UF_DRAW_view_info_t * view_info,
tag_t * draw_view_tag );

以下是帮助文档给出的例子:
/*
This example imports the BOTTOM view onto the drawing as an
active view, with a scale of 1.0, no anchor point.  It uses the stored
reference point.  The drawing member view inherits the model view's
boundary.
*/
#include <stdlib.h>
#include <stdio.h>
#include <uf.h>
#include <uf_defs.h>
#include <uf_draw.h>
#include <uf_draw_types.h>
#include <uf_obj.h>
#include <uf_part.h>
void ufusr(char *param, int *retcod, int param_len)
{
  int         ifail = 0;
  double      reference_point[2] = {10.0, 12.0};
  tag_t       drawing_tag = NULL_TAG;
  tag_t       part_tag = NULL_TAG;
  tag_t       view_tag = NULL_TAG;
  tag_t       draw_view_tag = NULL_TAG;
  char        error_message[133];
  char        *view_name = "BOTTOM";
  UF_DRAW_view_info_t view_info;

  view_info.view_status = UF_DRAW_ACTIVE_VIEW;
  view_info.anchor_point = NULL_TAG;
  view_info.view_scale = 1.0;
  view_info.use_ref_pt = FALSE;
  view_info.inherit_boundary = TRUE;

  ifail = UF_initialize();

  if( !ifail )
      part_tag = UF_PART_ask_display_part();

  if( !ifail && part_tag != NULL_TAG )
      ifail = UF_DRAW_ask_current_drawing( &drawing_tag );

  if( !ifail && part_tag != NULL_TAG && drawing_tag != NULL_TAG
)
  {
      ifail = UF_OBJ_cycle_by_name( view_name, &view_tag );
      if( !ifail && view_tag != NULL_TAG )
      {
          ifail = UF_DRAW_import_view( drawing_tag, view_tag,
                                       reference_point, &view_info,
                                       &draw_view_tag );
      }
  }
  printf( "UF_DRAW_import_view " );
  if( ifail )
  {
      ifail = UF_get_fail_message( ifail, error_message );
      printf( "fails. \nError is:%s\n", error_message );
  }
  else if( part_tag == NULL_TAG )
      printf( "fails.\nError is: no active part.\n" );
  else if ( drawing_tag == NULL_TAG )
      printf( "fails.\nError is: no current drawing.\n" );
  else if ( view_tag == NULL_TAG )
      printf( "fails.\nError is: invalid view tag.\n" );
  else
      printf( "is successful.\n" );

  ifail = UF_terminate();
}




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