iCAx开思网

标题: UG5.0二次开发中创建一个二维工程视图(大虾请进) [打印本页]

作者: murphykwu    时间: 2009-4-8 17:26
标题: UG5.0二次开发中创建一个二维工程视图(大虾请进)
使用的例子是:《图表详解UG NX二次开发》第11章的例子(11.4.1)

代码如下:
#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] = {70.0, 160.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        *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 = FALSE;
view_info.transfer_annotation = TRUE;
UF_DRAW_view_prfs_t view_display_parms;
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 );
   UF_DRAW_delete_view_label ( view_tag );
   UF_DRAW_set_view_display(drawing_tag,&view_display_parms);   
   UF_DRAW_update_one_view(drawing_tag,draw_view_tag);
  }
}
ifail = UF_terminate();
}
1.在投影之前,UG中已经建立了一个三维模型,而且已经进入图纸空间(SH1
2.执行ImportView.dll
3.应该是俯视图(X-Y平面)出现在图纸上,但是我运行的时候什么都没有显示。
问题:
1.如何进入图纸空间
是不是点击“开始”-》“制图”-》确定
2.请大虾们试试这个例子,在UG5.0下到底可不可以运行。
我调试过这个程序,各条语句都运行了,但是图面就是没有反应。无奈啊!!
请大虾们帮帮忙,小弟不胜感激!!
作者: murphykwu    时间: 2009-4-9 11:05
哪位老哥指点一下啊!
作者: murphykwu    时间: 2009-4-10 11:07
高人们,显显灵吧。。!@#¥@#!@
俺呼唤你们~~
作者: 苏州人    时间: 2009-4-10 17:14
这个简单嘛。。。你设置几个提示的断点,看看你是不是真的得到了viewtag或drawingtag,一点点调试,这么简单的功能总是能检查出来的。。
作者: murphykwu    时间: 2009-4-10 21:34
最后找到了可能出现问题的原因了。运行到
UF_DRAW_import_view( drawing_tag, view_tag,reference_point, view_info,  &draw_view_tag );
语句的时候调试显示可能出现了内存错误,没有强制跳出。
另看到一个英文网站上说UG V15.0修复了一个引入视图错误。
而我看到帮助文档上写的是V13.0.可能这个错误在13.0没有修复,所以出了问题。
对于这两个有点疑问。UG5.0到底是什么版本的,引入视图这个问题有没有被修复?怎么才能用上V15.0这个已经修复的版本?
作者: murphykwu    时间: 2009-4-14 11:15
哪位大哥做成功过的出来帮小弟讲解一下啊~~
作者: hbd1983    时间: 2009-11-28 14:23
请问楼主问题解决了吗?
小弟如今也碰到这样的问题
添加视图在5.0以下的版本可以运行,但在5.0上就不行\
怎么解决呢?
也请高手指点一下
作者: my-scarecrow    时间: 2009-12-30 21:44
it is easy.......
作者: ffhi    时间: 2009-12-31 09:46
确实有这个问题,我搞很久才搞出来了,主要用到的函数如下:
        uc6464("", "",  "Bottom");//比如要出俯视图
        uc6450("", "NewBottom", 0, 0);//
        tag_t tPrtDisplay = UF_PART_ask_display_part();
        tag_t tView = NULL_TAG;
       UF_OBJ_cycle_by_name_and_type(tPrtDisplay,  "NewBottom", UF_view_type, TRUE, &tView);
       UF_DRAW_import_view();
作者: hejihu    时间: 2010-1-1 18:40
[local]1[/local]
作者: 恠框尹    时间: 2011-10-31 10:45
唉 也遇到同样的问题了  多谢指点 呵呵




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