找回密码 注册 QQ登录
开思网工业级高精度在线3D打印服务

iCAx开思网

CAD/CAM/CAE/设计/模具 高清视频【积分说明】如何快速获得积分?快速3D打印 手板模型CNC加工服务在线3D打印服务,上传模型,自动报价
查看: 17306|回复: 10
打印 上一主题 下一主题

[原创] 关于设置图纸比例问题

[复制链接]
跳转到指定楼层
1
发表于 2009-11-30 09:17:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多同行朋友,交流,分享,学习。

您需要 登录 才可以下载或查看,没有帐号?注册

x
/*
The code in the following example modifies the scale of a drawing
member view.
*/
#include <stdio.h>
#include <uf.h>
#include <uf_defs.h>
#include <uf_draw.h>
#include <uf_draw_types.h>
#include <uf_modl.h>
#include <uf_obj.h>
#include <uf_view.h>
void ufusr(char *param, int *retcod, int param_len)
{
    char                drawing_name [MAX_ENTITY_NAME_SIZE] = "SHT1";
    char               * view_name [MAX_ENTITY_NAME_SIZE] ={"[email=EF@2]EF@2","ER@3[/email]"};
    char                error_message[MAX_LINE_SIZE + 1] = "";
    tag_t               view_tag = NULL_TAG;
    tag_t               drawing_tag = NULL_TAG;      // a1.这里的NULL_TAG 是什么意思?
    int                 ifail = 0;
tag_t               exp_tag = NULL_TAG;
double              scale;
    ifail = UF_initialize();
    if (!ifail)
    {
        /* Get the tag of drawing. */  
        ifail = UF_DRAW_ask_current_drawing (&drawing_tag);
    }
    if (!ifail)
    {
        /* Get the name of first drawing. */
        ifail = UF_OBJ_ask_name(drawing_tag, drawing_name);  //2.这里的意思是 获取该图纸的名称吗?
    }
    if (!ifail)
    {
        /* Get the name of the drawing's first view. */      //3.如果我想同时修改三个视图的比例,该怎么写?
        ifail = uc6499 (drawing_name, &view_name);
    }
    if (!ifail)
    {
        /* Get the view's tag. */
        ifail = UF_VIEW_ask_tag_of_view_name (&view_name,
&view_tag);
    }
  if (!ifail)
    {
       ifail =  UF_DRAW_ask_view_scale (view_tag, &exp_tag,&scale);
    }
    if (!ifail)
    {
        /* Set the parametric view scale. */
        ifail = UF_DRAW_set_view_scale (view_tag, 2);
    }
    printf ("UF_DRAW_set_view_scale sample ");
    if (ifail)
    {
        ifail = UF_get_fail_message( ifail, error_message );
        printf( "fails.\nError is: %s\n", error_message );
    }
    else
        printf( "is successful.\n" );
    UF_terminate();
}

本帖最后由 my-scarecrow 于 2009-11-30 09:49 编辑
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 赞一下!赞一下!
2
发表于 2009-11-30 14:45:11 | 只看该作者
1# my-scarecrow
3
发表于 2009-11-30 14:47:42 | 只看该作者
1# my-scarecrow
从你的帖子来看,你可能对NX的开发是一点基础都没有,建议你找本基础的书的来看看,打点基础,不然就算大家解决了你的这三个问题,对你还是没有用的。
4
发表于 2009-11-30 17:07:03 | 只看该作者
问题我已经解决了, 代码如下


//////////////////////////////////////////////////////////////////////////////
//
//  draw1.cpp
//
//  Description:
//      Contains Unigraphics entry points for the application.
//
//////////////////////////////////////////////////////////////////////////////

//  Include files
#include <uf.h>
#include <uf_exit.h>
#include <uf_ui.h>
#if ! defined ( __hp9000s800 ) && ! defined ( __sgi ) && ! defined ( __sun )
#        include <strstream>
#   include <iostream>
        using std:strstream;
        using std::endl;       
        using std::ends;
        using std::cerr;
#else
#        include <strstream.h>
#   include <iostream.h>
#endif
#include "draw21.h"
#include <stdio.h>
#include <uf_defs.h>
#include <uf_draw.h>
#include <uf_draw_types.h>
#include <uf_modl.h>
#include <uf_obj.h>
#include <uf_view.h>

//----------------------------------------------------------------------------
//  Activation Methods
//----------------------------------------------------------------------------

//  Unigraphics Startup
//      This entry point activates the application at Unigraphics startup
extern "C" DllExport void ufsta( char *param, int *returnCode, int rlen )
{
    /* Initialize the API environment */
    int errorCode = UF_initialize();

    if ( 0 == errorCode )
    {
        /* TODO: Add your application code here */
        char                drawing_name [30] = "SHT1";
    char                view_name[30] = "ES@4";
        char                view_name2[30] = "MF@9";
        char                view_name3[30] = "MT@8";
    char                view_name4[30] = "R@7";
//        char                view_name5[30] = "T@5";
        char                view_name6[30] = " F@6";
    char                error_message[30] = "";
    tag_t               view_tag;
        tag_t               view_tag2 ;
        tag_t               view_tag3;
        tag_t               view_tag4;
//        tag_t               view_tag5;
        tag_t               view_tag6;
    tag_t               drawing_tag = NULL_TAG;      
    int                 ifail=0,ifail2=0,ifail3=0,ifail4=0,ifail5=0,ifail6=0;
        tag_t               exp_tag ;
        tag_t               exp_tag2;
        tag_t               exp_tag3 ;
        tag_t               exp_tag4 ;
        //tag_t               exp_tag5 ;
        tag_t               exp_tag6 ;
        double              scale;
    ifail = UF_initialize();
    if (!ifail)
    {
        /* Get the tag of drawing. */  
        ifail = UF_DRAW_ask_current_drawing (&drawing_tag);
    }
    if (!ifail)
    {
        /* Get the name of first drawing. */
        ifail = UF_OBJ_ask_name(drawing_tag, drawing_name);   
    }
    if (!ifail)
    {
        /* Get the name of the drawing's first view. */      
        ifail = uc6499 (drawing_name, view_name);
                ifail2= uc6499 (drawing_name, view_name2);
                ifail3= uc6499 (drawing_name, view_name3);
                ifail4= uc6499 (drawing_name, view_name4);
        //        ifail5= uc6499 (drawing_name, view_name5);
                ifail5= uc6499 (drawing_name, view_name6);
    }
    if (!ifail)
    {
        /* Get the view's tag. */
        ifail = UF_VIEW_ask_tag_of_view_name (view_name,
&view_tag);
                ifail2 = UF_VIEW_ask_tag_of_view_name (view_name2,
&view_tag2);
                ifail3 = UF_VIEW_ask_tag_of_view_name (view_name3,
&view_tag3);
                ifail4 = UF_VIEW_ask_tag_of_view_name (view_name4,
&view_tag4);
        /*        ifail5 = UF_VIEW_ask_tag_of_view_name (view_name5,
&view_tag5);*/
                ifail6 = UF_VIEW_ask_tag_of_view_name (view_name6,
&view_tag6);
    }
         if (!ifail)
    {
       ifail =  UF_DRAW_ask_view_scale (view_tag, &exp_tag,&scale);
           ifail2 =  UF_DRAW_ask_view_scale (view_tag2, &exp_tag2,&scale);
           ifail3 =  UF_DRAW_ask_view_scale (view_tag3, &exp_tag3,&scale);
       ifail4 =  UF_DRAW_ask_view_scale (view_tag4, &exp_tag4,&scale);
        //   ifail5 =  UF_DRAW_ask_view_scale (view_tag5, &exp_tag5,&scale);
           ifail6 =  UF_DRAW_ask_view_scale (view_tag6, &exp_tag6,&scale);
    }
    if (!ifail)
    {
        /* Set the parametric view scale. */
        ifail = UF_DRAW_set_view_scale (view_tag,0.9);
                ifail2 = UF_DRAW_set_view_scale (view_tag2,0.9);
                ifail3 = UF_DRAW_set_view_scale (view_tag3,0.9);
                ifail4 = UF_DRAW_set_view_scale (view_tag4,0.9);
        //        ifail5 = UF_DRAW_set_view_scale (view_tag5,0.9);
                ifail6 = UF_DRAW_set_view_scale (view_tag6,0.9);
    }
    printf ("UF_DRAW_set_view_scale sample ");
    if (ifail)
    {
        ifail = UF_get_fail_message( ifail, error_message );
        printf( "fails.\nError is: %s\n", error_message );
    }
    else

        /* Terminate the API environment */
        errorCode = UF_terminate();
    }

    /* Print out any error messages */
    PrintErrorMessage( errorCode );
}

//----------------------------------------------------------------------------
//  Utilities
//----------------------------------------------------------------------------

// Unload Handler
//     This function specifies when to unload your application from Unigraphics.
//     If your application registers a callback (from a MenuScript item or a
//     User Defined Object for example), this function MUST return
//     "UF_UNLOAD_UG_TERMINATE".
extern "C" int ufusr_ask_unload( void )
{
    return( UF_UNLOAD_UG_TERMINATE );
}

/* PrintErrorMessage
**
**     Prints error messages to standard error and the Unigraphics status
**     line. */
static void PrintErrorMessage( int errorCode )
{
    if ( 0 != errorCode )
    {
        /* Retrieve the associated error message */
        char message[133];
        UF_get_fail_message( errorCode, message );

        /* Print out the message */
        UF_UI_set_status( message );

        // Construct a buffer to hold the text.
        ostrstream error_message;

        // Initialize the buffer with the required text.
        error_message << endl
                      << "Error:" << endl
                      << message
                      << endl << endl << ends;

            // Write the message to standard error
        cerr << error_message.str();
    }
}
5
发表于 2009-11-30 17:08:55 | 只看该作者
代码功能是实现5个视图的比例更改(改为0.9),因为我才刚接触二次开发才几天,如果有不懂的地方,还希望各位高手赐教
6
发表于 2009-12-2 15:45:43 | 只看该作者
4# my-scarecrow
问下楼主,你程序里;
       char                view_name[30] = "ES@4";
        char                view_name2[30] = "MF@9";
        char                view_name3[30] = "MT@8";
view_mane[30]这个命名规则是什么,为什么是view_name[30] = "ES@4";
呢?是根据你工程图里视图名字来的吗?

本帖最后由 zss3208 于 2009-12-2 15:47 编辑
7
发表于 2009-12-3 12:39:44 | 只看该作者
1. view_mane[30] 中的 view_name是自己随便命名的, 无特定要求
2.[30] 意思是工程图纸里你指定要修改的试图名称最大字符不能超过30个,诸如 ES@4,MF@9,MT@8等, 不过这些名称是NX 软件提供默认的视图名称,也就是工程图里视图的默认名称
8
发表于 2009-12-7 14:01:42 | 只看该作者

RE: 关于设置图纸比例问题

7# my-scarecrow

我还是有点不明白~比如说,如图,高显视图的viewname在UG底部提示框里是"ORTHO@12",那么在命名的时候是不是需要先声明view_name="ORTHO@12"。。我的意思就是是不是需要先知道UG里视图的名称才再能给view_name赋值啊??

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
9
发表于 2009-12-9 00:13:38 | 只看该作者
zss3208 发表于 2009-12-7 14:01
7# my-scarecrow

我还是有点不明白~比如说,如图,高显视图的viewname在UG底部提示框里是"ORTHO@12",那么在命名的时候是不是需要先声明view_name="ORTHO@12"。。我的意思就是是不是需要先知道UG里视图的名称才再 ...


首先获取各视图的Tag,然后查询名称,可以不需要预先输入的
10
发表于 2009-12-10 00:20:56 | 只看该作者
这只是你想修改指定的试图的前提下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3D打印手板模型快速制作服务,在线报价下单!

QQ 咨询|手机版|联系我们|iCAx开思网  

GMT+8, 2024-12-25 01:44 , Processed in 0.028748 second(s), 10 queries , Gzip On, Redis On.

Powered by Discuz! X3.3

© 2002-2024 www.iCAx.org

快速回复 返回顶部 返回列表