查看: 3299|回复: 1

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

[复制链接]

2

主题

21

回帖

270

积分

培训VIP会员

积分
270
发表于 2015-7-26 22:12:05 | 显示全部楼层 |阅读模式

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

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

×
/*****************************************************************************6 g7 p# [( q& H
**7 s8 l4 g& Z) J7 M) v" i4 e
** test.c5 V: H+ E( A: I
**
3 [( y+ d( U( Z2 x) v** Description:
; W7 m$ v* {( [$ O; T' r/ v**     Contains Unigraphics entry points for the application.
: A! K3 v9 s# j2 G6 a4 X5 S**/ {( ]' ]. A$ j2 }; |- `% J( [
*****************************************************************************/4 J  S/ d3 X& B8 \) H% K4 K
/* Include files */
" I0 N# e: p  h5 f+ o$ \#include <stdio.h>
9 |: g5 Q9 u# p6 C) ]0 y#include <uf.h>
2 p0 |$ Y% U. M! U$ T2 m  S#include <uf_ui.h>
5 E! ^' k+ O( R3 N) i#include <uf_modl.h>
9 c  W, k. |# L2 @3 l. c#include <uf_curve.h>) ]7 q0 _, i8 N; o
#include <uf_part.h>
, t5 n: Z* W1 j, X2 H5 O$ P#include <uf_modl_types.h>
& Y7 u7 {  u; c: q#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X))); \$ m, P+ \0 x9 B) o) L
static int report_error( char *file, int line, char *call, int irc). Z% f' a, y% P8 Y' D
{
( j! ?& r, o. X3 e9 L  R" Z    if (irc)
; f5 Z( [+ z: S& c! H    {9 N+ [' m! Z( @: n7 p
        char err[133],
9 L* i  Z# ~% ~             msg[133];
/ |0 q' C1 ?% {* f        sprintf(msg, "*** ERROR code %d at line %d in %s:\n+++ ",+ O/ P$ i. e  P  ^
            irc, line, file);
1 `* a: A- E0 ]4 z# P        UF_get_fail_message(irc, err);" x7 N7 ]/ `$ m8 h
        UF_print_syslog(msg, FALSE);: B# x; h. t& R8 y
        UF_print_syslog(err, FALSE);" |! \& B2 N9 R9 ~) G8 p$ j
        UF_print_syslog("\n", FALSE);( m1 B2 H' A) [3 b5 z7 p
        UF_print_syslog(call, FALSE);
' Q$ S* g) k/ I" J' [        UF_print_syslog(";\n", FALSE);
/ ?0 k, s* Y  s) k7 E/ D6 a        if (!UF_UI_open_listing_window())
, B5 m' O, _& k1 m$ q4 s        {6 _$ p$ X" H6 w0 x* Z  |7 s
            UF_UI_write_listing_window(msg);
8 A. w' p: R' a/ Q' @1 o            UF_UI_write_listing_window(err);
7 D2 V' t$ Z7 Q6 i1 f% {7 c            UF_UI_write_listing_window("\n");
- @/ |- }1 l& c            UF_UI_write_listing_window(call);* v( C6 ]2 O1 [0 _7 ]
            UF_UI_write_listing_window(";\n");
5 y# N' Z, w6 w% R" ]        }* }" _, W0 K) y( J( p
    }
. {  H( \. D% Z' [    return(irc);
1 z1 j) F% z; @9 ?& F}0 f8 t/ O5 X6 A& I+ e3 F+ x
* }# p' `, U8 ]6 c0 O
/*****************************************************************************6 t) H% a2 w6 J5 |; x3 B/ p
**  Activation Methods! f! H6 K, x- l( K$ O# A
*****************************************************************************/
% f1 _0 p' y$ R$ V" Z) z/ G! `/*  Explicit Activation
+ b, z, G* n5 [**      This entry point is used to activate the application explicitly, as in3 C: f+ Z3 r( V4 {" T2 @. V1 L6 I
**      "File->Execute UG/Open->User Function..." */
: F# b9 g5 n& S$ {tag_t part_tag=NULL_TAG;& e, {6 q! B4 S  ~+ E1 X  R4 y) D6 E
tag_t tar_tag=NULL_TAG;
+ [  v. ?! I% X1 Rdouble origin[3]={0.0,0.0,0.0};8 X. s. a' j( @* c0 T0 ?
char *height="30";( e: ]2 ?7 R9 M
char *diam="100";. F5 n4 T# ]5 z9 b( T
double direction[3]={0.0,1.0,0.0};/ K' b- R% R. y& I
tag_t cylinderfea_tag=NULL_TAG;4 r3 H# u( b3 S8 Y
uf_list_p_t edge_list=NULL;. D5 J% Z( b& j1 N! b. K) c
int edge_count;
( r) V4 P4 N" X9 Dchar msg[256];$ O! ]+ G6 Q0 A/ w8 h: f$ ?* Z
int i=0;
: V9 T0 c. G9 M0 e4 C# }- \! s% l1 x: Ftag_t edge_tag=NULL_TAG;. H5 f1 P" [, A# y- }$ ^
tag_t curve_tag=NULL_TAG;
; [) q* X' P) p; B6 ~tag_t point_tag=NULL_TAG;
$ B. p6 E$ Q( m/ X0 n$ i' ?tag_t line_tag=NULL_TAG;
3 G! W) `  r" ~/ L  Y4 B) D% Atag_t point_tag2=NULL_TAG;
9 i6 s$ O. d! a6 n+ xdouble cen[2][3];3 M' U$ Y7 X  ]& v  E0 k6 j
UF_CURVE_line_t line_coord;//最好不要定义为指针& D: e3 D0 t; m. l
extern DllExport void ufusr( char *parm, int *returnCode, int rlen )( ]" d* L- e' W0 l
{4 Q) t1 B$ D  ^0 h3 O  k# P
    /* Initialize the API environment *// v9 n0 k3 t& X3 g
    if( UF_CALL(UF_initialize()) )
0 U6 T8 B* v2 @3 W; p    {
& j. w; j" D1 S; [: ^. U% v' Z        /* Failed to initialize */* L  V/ w( o4 J9 ]% T9 h' c
        return;
1 ]9 v) m3 K2 |: \8 [# ?6 B    }& s* z! Q" e# k
    6 p% d/ }  ^( v/ `
    /* TODO: Add your application code here */
' C. o; f0 B0 e //1.create a new part# k3 {8 u& G' y# U
UF_PART_new("C:\\NX_work\\cylinder.prt",1,&part_tag);2 R( h( T( E* S: ?# g  B5 W
//2.create a new cylinder) o9 R/ [4 P) U8 M3 h5 V
UF_MODL_create_cylinder(UF_NULLSIGN,tar_tag,origin,height,diam,direction,&cylinderfea_tag);
5 {2 W) _6 r9 e+ A8 ?# f4 E //3.get the edge list9 E# W% d: E, _* @
UF_MODL_ask_feat_edges(cylinderfea_tag,&edge_list);
7 T& o8 n! n* K* r8 r" u //4.get the edges: ~6 q1 s/ R* Z8 L8 q
UF_MODL_ask_list_count(edge_list,&edge_count);# O# |4 K" t6 y

$ U: {8 u8 O2 Y" S0 i9 a; v" r //5.get the centers/ P/ O" v2 r' |6 @
for(;i<edge_count;++i){! c  g. l( g& E% Y) `
  UF_MODL_ask_list_item(edge_list,i,&edge_tag);
- E: E  p" t" Y. J$ N/ v/ x4 D  //UF_MODL_create_curve_from_edge(edge_tag,&curve_tag);
& T1 c9 A# J3 n3 `& y) B  UF_CURVE_ask_centroid(edge_tag,cen[i]);" k( Z! I: K3 d8 r! V% r7 k& |. ?
}
* b- U8 u: b6 t$ j; m, z, p( `+ E //6.create line
& @' a8 l* s: v" i3 b' h+ x //UF_CURVE_create_point(cen[0],&point_tag);, Q  w0 a3 D- j' M! Z! w0 T
//UF_CURVE_create_point(cen[1],&point_tag2);
( F" `$ M  S/ D: [ line_coord.start_point[0]=cen[0][0];! t! l1 {9 I0 P9 h& C
line_coord.start_point[1]=cen[0][1];$ e9 J2 L- {$ F2 P( I, b0 H
line_coord.start_point[2]=cen[0][2];
7 A; S6 l1 E0 R/ [ line_coord.end_point[0]=cen[1][0];
# C" l9 m: m' _8 L/ k2 N8 b: } line_coord.end_point[1]=cen[1][1];6 u5 K. i3 ]/ G0 N! p% I" @
line_coord.end_point[2]=cen[1][2];
8 |: j; j5 E' @5 P+ f' g' N" } UF_CURVE_create_line(&line_coord,&line_tag);
! l0 X8 B# Z% Y7 }1 p //UF_MODL_ask_list_item()
  ?7 d; Q3 H" X- s/ l" B6 q! B    /* Terminate the API environment */
9 R6 T" ?  z9 d' [# O# V    UF_CALL(UF_terminate());1 a0 {* n, V. u% E6 {  o
}5 Q0 o9 W2 F6 g  \' ]. ^
/*****************************************************************************2 c0 ^3 s5 E0 o% W  O, ]  n5 e$ C, |
**  Utilities
6 M, M8 ^/ C/ T*****************************************************************************/
; O5 n! @* `6 @* d, `. D* V4 T: E/* Unload Handler
' A/ K! t( j: X- W6 W: _  Q**     This function specifies when to unload your application from Unigraphics." p. R6 T) s3 o1 g
**     If your application registers a callback (from a MenuScript item or a2 k* t' n; K5 }3 R+ v/ G! M
**     User Defined Object for example), this function MUST return
7 P; f- m6 z/ m3 Y8 p8 z" w**     "UF_UNLOAD_UG_TERMINATE". */
0 @! j2 }1 R( }" F7 X2 Wextern int ufusr_ask_unload( void )8 H5 Y, v) u' o
{
. V# ]  t/ b+ i) m6 P* u% v$ J+ K    return( UF_UNLOAD_IMMEDIATELY );
' }1 M* k1 H4 y+ @' v: P: |$ O}
0 n1 ^& N* ~4 V1 L4 i4 }( L% X7 H  E. O/ w1 z

评分

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

查看全部评分

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

使用道具 举报

6

主题

4

回帖

60

积分

管理员

积分
60
发表于 2015-7-27 11:00:52 | 显示全部楼层
继续加油哦 !!!
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.doteam.tech
回复 支持 反对

使用道具 举报

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

本版积分规则

在本版发帖
关注公众号
QQ客服返回顶部