PLM之家PLMHome-国产软件践行者

[交作业] 第二课圆柱创建轴线

[复制链接]

2015-7-27 11:00:52 2928 1

且听风吟 发表于 2015-7-26 22:12:05 |阅读模式

且听风吟 楼主

2015-7-26 22:12:05

请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!

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

x
/*****************************************************************************1 f8 M' s* v/ K$ V) l" ~
**! N, Q  r% \( x8 r" W. A' d- k
** test.c
3 c+ H9 g& T& v6 \**. V* o2 Z( w3 v8 R
** Description:# H" D: q% o( z* v) m. P' {1 {
**     Contains Unigraphics entry points for the application.; z. R# y. Y# t7 j7 b4 {7 l0 O( r0 t
**
6 n) ~2 w; v  c& y( D/ U& Z*****************************************************************************/
6 @" B- u7 ^3 m/* Include files */. I- f/ {- o+ `& A
#include <stdio.h>! T9 t( U) y8 |. M/ z$ u
#include <uf.h>/ {) A( e" r8 J3 f: q+ G( T7 M$ Q
#include <uf_ui.h>$ F$ t8 t' Y# f  x
#include <uf_modl.h>8 y: m( I9 N! t! f: `" \4 y* Y
#include <uf_curve.h>
- ]7 K1 C# D! X#include <uf_part.h>
: d# f9 k+ e' B# Z, o#include <uf_modl_types.h>& m( |0 @4 u$ P
#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))5 ~. V6 ~. c: I3 p+ b
static int report_error( char *file, int line, char *call, int irc)
$ k6 w9 B8 F4 V2 `# \/ E  m. }{
0 P5 t' \, r7 `% ~: r8 ]    if (irc)
7 d9 X# k- u& E) h! @% V    {
% z: ?2 w  Q2 j. V4 R! f        char err[133],
) h' }* `# `9 c. k6 s4 A             msg[133];7 |; y% ?5 f2 I% i# O" J
        sprintf(msg, "*** ERROR code %d at line %d in %s:\n+++ ",. H# d: B4 k! q4 ~
            irc, line, file);
: I. z6 s8 `9 T9 g4 _" T        UF_get_fail_message(irc, err);
  |. Y! B/ T. l* E& n        UF_print_syslog(msg, FALSE);1 k- N1 o" Z: |' i
        UF_print_syslog(err, FALSE);
6 r, }, |# ?' S1 F/ ?        UF_print_syslog("\n", FALSE);
3 P) g3 m" w# N/ t- o% D/ R0 J        UF_print_syslog(call, FALSE);0 v7 }: L7 _( U, z
        UF_print_syslog(";\n", FALSE);
$ S% {/ O1 T$ k/ J$ x9 n        if (!UF_UI_open_listing_window())
' N+ }" c0 u" c' @% r5 q        {7 i0 m9 B  _$ r6 T6 J
            UF_UI_write_listing_window(msg);! `3 \8 t7 ~" b- A( g0 ?2 I$ a2 E3 I
            UF_UI_write_listing_window(err);. d$ o2 G$ B3 h$ ~
            UF_UI_write_listing_window("\n");
' S' d* Y: }0 `, t/ a( g            UF_UI_write_listing_window(call);
' @# q  K5 l' ^0 j            UF_UI_write_listing_window(";\n");
# p- d) m+ o" f! V        }) u# X5 x/ x& z0 T6 U* u# }! k' k  E6 i
    }4 K5 N' L3 {7 f7 P$ r3 i
    return(irc);
0 Z4 v- n1 b$ v1 k# _4 G9 a- k}
0 P5 L# e/ q7 N4 V! l7 ~" e# J3 O/ z0 g1 E: N9 X
/*****************************************************************************& q1 i3 M- L, E0 V, q1 T* V1 B
**  Activation Methods
4 `, k# n1 M7 i  M*****************************************************************************/
( z* E+ b9 [& n! n/ p6 ~/*  Explicit Activation5 G( Y' v; n6 ^
**      This entry point is used to activate the application explicitly, as in
% d1 S  i. z, D  N. w**      "File->Execute UG/Open->User Function..." */+ e0 ?* W9 P! o+ e2 n& p
tag_t part_tag=NULL_TAG;
+ p' N& w6 N9 M  z! @# q! A* jtag_t tar_tag=NULL_TAG;
- V: o5 c( v$ w  \9 w. i7 Hdouble origin[3]={0.0,0.0,0.0};
8 X  w, A  ~% q. H5 f: dchar *height="30";' |+ B7 T1 _7 }4 k+ @4 a  P
char *diam="100";
" R9 ^6 G6 i# v$ E0 Q2 Adouble direction[3]={0.0,1.0,0.0};6 C3 u8 I; c5 S6 K  D
tag_t cylinderfea_tag=NULL_TAG;
9 p; K* H( g' D( w' ruf_list_p_t edge_list=NULL;! b7 l- x% A+ u# X! f, \; ^
int edge_count;1 i3 u4 H4 x4 n
char msg[256];8 F% r4 X" O' n5 j- i
int i=0;( Q/ F  v; M& u1 \1 U2 l
tag_t edge_tag=NULL_TAG;
8 K$ H; F4 t  t1 Z, t( jtag_t curve_tag=NULL_TAG;
' v6 R) n1 B+ t7 Ntag_t point_tag=NULL_TAG;
% i$ T" v1 B& jtag_t line_tag=NULL_TAG;
; ^" ~/ q! T, v% k) }- F; Z: P3 ]tag_t point_tag2=NULL_TAG;% v' D3 t5 v8 k6 i8 G9 x' U
double cen[2][3];
7 J# W' P/ y; N& FUF_CURVE_line_t line_coord;//最好不要定义为指针
+ N/ n8 |# K# L( e3 ?extern DllExport void ufusr( char *parm, int *returnCode, int rlen )1 Z; a. |! \# t; c
{
* i9 a! r7 B/ r' A. w  }2 \    /* Initialize the API environment */# u+ a* o2 D9 W: m
    if( UF_CALL(UF_initialize()) )
3 h6 d# ~+ x/ ]  k0 r    {
# j7 _6 }6 D8 C0 V3 a, B( j        /* Failed to initialize */% U) q1 n, q5 P3 F2 C3 Q7 c
        return;/ g+ ~4 X* R0 m
    }
& `+ g* n9 `" @; q' B   
9 S& E/ a& N. t) J$ G    /* TODO: Add your application code here */( c" H4 o* \6 ?% \' D
//1.create a new part' [* F$ {* [; _2 u0 V4 Y4 V# t
UF_PART_new("C:\\NX_work\\cylinder.prt",1,&part_tag);
* r( ^. }$ r3 b% @- [  W //2.create a new cylinder
; v' ?8 `* r5 g# O& e UF_MODL_create_cylinder(UF_NULLSIGN,tar_tag,origin,height,diam,direction,&cylinderfea_tag);: G' U- N/ |6 T: j5 w% z
//3.get the edge list
) x: D! j% h* c. y% B UF_MODL_ask_feat_edges(cylinderfea_tag,&edge_list);# ?# K' J' o' r1 b4 W
//4.get the edges
# J" T* A  a( d5 d! Z% u UF_MODL_ask_list_count(edge_list,&edge_count);3 l- r+ D! @: i9 h

" Q! b4 H/ J5 \ //5.get the centers" l0 J4 B! E7 S  a: w
for(;i<edge_count;++i){
4 N5 q9 H/ T! P5 j  UF_MODL_ask_list_item(edge_list,i,&edge_tag);
1 o( i3 p7 n7 K  u2 B  //UF_MODL_create_curve_from_edge(edge_tag,&curve_tag);
, z6 q1 d4 c3 q2 O# I  UF_CURVE_ask_centroid(edge_tag,cen[i]);
/ k4 F. I/ [5 R# y9 `; H# _$ t }' G" n* i$ L$ ~/ w2 R
//6.create line
3 |. O# T8 D( L) m' n7 W //UF_CURVE_create_point(cen[0],&point_tag);
3 N1 C9 J# m7 F8 S1 }- k8 H0 @ //UF_CURVE_create_point(cen[1],&point_tag2);
. H: D- y" O7 d3 X+ q( J line_coord.start_point[0]=cen[0][0];
/ L4 w. N* k( n( R line_coord.start_point[1]=cen[0][1];3 r! o6 a$ ~) X% U
line_coord.start_point[2]=cen[0][2];2 P; k' [% Z3 g# Z; s) X# {6 `2 U
line_coord.end_point[0]=cen[1][0];
8 U2 ~2 d1 R4 J" r+ A+ x3 ` line_coord.end_point[1]=cen[1][1];9 x9 d' U- ~: j
line_coord.end_point[2]=cen[1][2];0 R9 L7 l/ I; f8 d& t
UF_CURVE_create_line(&line_coord,&line_tag);
" ~3 i# T; h( H( i6 _9 k( @' k) e //UF_MODL_ask_list_item()) J% t% x2 G( _
    /* Terminate the API environment */6 n6 E/ s& e4 U. f( V
    UF_CALL(UF_terminate());
9 y: S3 S1 k' E6 c}
  Z+ i- t. Y2 s& O0 U7 Y/*****************************************************************************  b$ P2 q: S) V- p2 K. q
**  Utilities
: ^7 L: x/ _3 x/ e( b*****************************************************************************/! U% D/ R9 v0 k: t# x
/* Unload Handler
# b1 f# ?) p! V5 \0 d**     This function specifies when to unload your application from Unigraphics.0 P; g8 c( Q* O
**     If your application registers a callback (from a MenuScript item or a. ]5 @7 H- Z. h( x5 b, |  y2 X5 G
**     User Defined Object for example), this function MUST return
  d" e- W8 l7 l1 d  _3 T% a**     "UF_UNLOAD_UG_TERMINATE". */' i& S0 d- u7 R
extern int ufusr_ask_unload( void )
. M5 \( j. i9 V9 c2 k% [6 I" `# ?{
3 o: X% L0 I$ R6 b    return( UF_UNLOAD_IMMEDIATELY );8 I( q% I4 W0 h9 X6 `
}2 {" g5 h* s& A

6 K. X& N" h- G! A" b2 e5 ^

评分

参与人数 1PLM币 +5 收起 理由
admin + 5 很给力!

查看全部评分

上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复

使用道具 举报

全部回复1

admin 发表于 2015-7-27 11:00:52

admin 沙发

2015-7-27 11:00:52

继续加油哦 !!!
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 doTeam.tech
回复 支持 反对

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 注册

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

    本网站(plmhome.com)为PLM之家工业软件学习官网站

    展示的视频材料全部免费,需要高清和特殊技术支持请联系 QQ: 939801026

    PLM之家NX CAM二次开发专题模块培训报名开始啦

    我知道了