|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
/*****************************************************************************
) v6 Z2 ~( E# F**
: @! J i) C+ y. _' R4 c) W** test.c
+ p, T8 w) m. r, K6 h**
- t1 w5 W. P- y% P! d8 n4 x** Description: S5 I) M( Q2 I, U4 I% W! O
** Contains Unigraphics entry points for the application.
$ f8 O$ t& w6 j( o. O*** m0 } }& u" w/ A0 G4 M
*****************************************************************************/+ g+ J: p- v$ }2 y
/* Include files */
2 m$ q/ X( |9 G+ z |#include <stdio.h>( ~. K- Z. d: u
#include <uf.h>& Y/ X* z8 m- T" U" a
#include <uf_ui.h>
# A9 S Y$ p7 t v3 S1 `8 A#include <uf_modl.h>1 J- y) m3 Y) b% Y2 `8 Z
#include <uf_curve.h>" ~3 ^1 E3 C9 i( T* I
#include <uf_part.h>
/ `+ }2 e0 L" T, K2 Q#include <uf_modl_types.h>& X' `! ]) v, k- ~+ m
#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))2 t! u! d6 s2 @& r" S6 F
static int report_error( char *file, int line, char *call, int irc)
: J0 E9 W i$ h; D W' a{5 @+ @; R7 }# \# n; ~" ^
if (irc)
E2 n/ g: \0 j" h* T {3 k' e' K( Y6 {+ |: v u5 ]
char err[133],! {- ^( @8 U7 P' h: p
msg[133];6 |8 o% M4 ^8 L% D; b" H1 j
sprintf(msg, "*** ERROR code %d at line %d in %s:\n+++ ",, j% d# F6 y6 ^ t1 h. ~# q' \& [
irc, line, file);$ w6 V- y" u: U m3 {& @
UF_get_fail_message(irc, err);
4 k0 R3 F# O7 \) ]* p UF_print_syslog(msg, FALSE);* y# p' {( N8 ^3 M+ B
UF_print_syslog(err, FALSE);
/ `3 [! Y/ P" N D4 `- M( N UF_print_syslog("\n", FALSE);
! x/ k5 g1 z6 K b% G8 U! x UF_print_syslog(call, FALSE);/ o2 X* K8 L; e# y7 G
UF_print_syslog(";\n", FALSE);
5 _' p: ^1 B: ?" S if (!UF_UI_open_listing_window())$ D% T3 P7 E6 ?- G9 O3 P
{- Q/ j& W; u$ q! i, u
UF_UI_write_listing_window(msg);
% Y0 |) v8 [* U6 k UF_UI_write_listing_window(err);, p, P' r/ F" L8 t( b
UF_UI_write_listing_window("\n");
2 c: D2 f( U( |5 b3 {! n UF_UI_write_listing_window(call);7 t( o6 F6 [) |* b0 [" s
UF_UI_write_listing_window(";\n");! V. |5 V0 M6 Q1 [ c( ?' ~
}# p% Y- y9 A- D6 ?) u) ?; M
}+ z$ m& ?8 V- I
return(irc);: X! Q+ S" M/ \2 `4 a# i o! i
}7 f0 h8 ~9 x2 ~ ]
% I1 ?/ M! o" I
/*****************************************************************************
1 K4 ]" v- [# d2 c# W& S! u** Activation Methods
2 g: l' O" g3 W' ?: r3 z) i2 k% f*****************************************************************************/
5 V! N8 Z2 \0 L! `1 i3 l/* Explicit Activation
" W9 @ w, C' @0 r* o! W** This entry point is used to activate the application explicitly, as in" y; T& R3 V T. G/ [& g" I
** "File->Execute UG/Open->User Function..." */' ~$ e' q# G( \; M$ |* @& |8 Z
tag_t part_tag=NULL_TAG;8 U$ [2 p9 U! H0 C% O! w# F
tag_t tar_tag=NULL_TAG;
* v' R8 ?) Y: m( X2 S! Gdouble origin[3]={0.0,0.0,0.0};
# J7 Y. [% d: @) O* K* R, ochar *height="30";
- i6 E! ^( O; N" _5 I8 Y. m' @' z& Bchar *diam="100";
! p, {: g' a' Y5 L: m$ g. vdouble direction[3]={0.0,1.0,0.0};# }% G: f* j9 z9 X
tag_t cylinderfea_tag=NULL_TAG;8 b9 `% @3 y) _- G4 G# _
uf_list_p_t edge_list=NULL;) z" c8 P y: r% V) h
int edge_count;, Q9 v: p" o8 d* Y$ d
char msg[256];
4 g4 w0 s n% ~/ m, Zint i=0;5 W7 k; n" d% v6 U1 E
tag_t edge_tag=NULL_TAG;" N+ K1 f2 a# a1 O8 ~( O
tag_t curve_tag=NULL_TAG;
) z0 e+ [, r2 P1 ]tag_t point_tag=NULL_TAG;
& E' c& Z( f0 M) mtag_t line_tag=NULL_TAG;
' @9 [' a8 q3 Ptag_t point_tag2=NULL_TAG;
0 l# H9 n* Z1 B3 R1 cdouble cen[2][3];4 l& B" q* [! Z
UF_CURVE_line_t line_coord;//最好不要定义为指针
4 Y R, u& }" C; g) i" hextern DllExport void ufusr( char *parm, int *returnCode, int rlen )
. C: R0 ^* J/ r9 H9 i1 V, U$ G2 Z{
4 q0 }' G1 ?( x8 J /* Initialize the API environment */
2 [' b. q4 E- Y2 g' E' I if( UF_CALL(UF_initialize()) )
6 r9 F2 G$ q" ]% z2 V {2 t, n$ A, G& |2 @
/* Failed to initialize */
1 b' k3 M+ w" M return;6 |0 s4 }4 x- x. O; q k2 g1 L
}0 G7 l4 \* Z4 e$ S/ J# H
( T/ Z6 C$ S- |& Z% R
/* TODO: Add your application code here */
. G, G8 f" @3 [6 e9 l* c$ v //1.create a new part
. P6 {1 J: j, V o8 d7 c. n+ M UF_PART_new("C:\\NX_work\\cylinder.prt",1,&part_tag);9 r% @/ X$ b: z4 r" S
//2.create a new cylinder4 V& [% v1 r: ]& w% ?
UF_MODL_create_cylinder(UF_NULLSIGN,tar_tag,origin,height,diam,direction,&cylinderfea_tag);
7 B% J# K2 B* v- Q4 J' k //3.get the edge list
( f% B9 L% E5 r3 U. V2 c UF_MODL_ask_feat_edges(cylinderfea_tag,&edge_list);3 @; l% Z1 B) ^6 A
//4.get the edges7 z- p8 \( G, ?
UF_MODL_ask_list_count(edge_list,&edge_count);; c* P& n9 c2 `& K& T& O2 k0 ~$ F
) ^* F' @! w' |5 u d
//5.get the centers$ n/ A. E: a* X1 _ V
for(;i<edge_count;++i){
9 E! c, v# M1 Z2 Y UF_MODL_ask_list_item(edge_list,i,&edge_tag);0 M. p ]! A" x- `* y' ?( ]
//UF_MODL_create_curve_from_edge(edge_tag,&curve_tag);
5 n6 P2 F5 n6 V4 f8 p) q UF_CURVE_ask_centroid(edge_tag,cen[i]);
7 G [" t% F0 m6 @ }! T' H9 N1 u" r' ?, T+ o8 H- O( {
//6.create line
. c# Q6 G' b3 ~ B9 W4 F6 ^ //UF_CURVE_create_point(cen[0],&point_tag);
# z: H0 h$ ^ h1 O //UF_CURVE_create_point(cen[1],&point_tag2);. F/ K) w, O4 u1 E) ?/ H f
line_coord.start_point[0]=cen[0][0];+ _( W! T& T$ ^. H( j# y$ T0 e$ t
line_coord.start_point[1]=cen[0][1];( T/ {5 V: H" W3 Y
line_coord.start_point[2]=cen[0][2];
9 C* D; ~4 v/ A! o g1 A line_coord.end_point[0]=cen[1][0];
/ \2 A S9 K# m3 t* u$ [ line_coord.end_point[1]=cen[1][1];
0 n: h0 S3 ?0 K% Y1 r1 a" l: y, y6 }# ? line_coord.end_point[2]=cen[1][2];
: q9 G% |1 q+ ]5 A5 E UF_CURVE_create_line(&line_coord,&line_tag);4 P+ x; K4 a9 B% s. L" f
//UF_MODL_ask_list_item()& S- \( C4 F. t3 e2 F! W& f
/* Terminate the API environment */
& R. _; c D' W/ S# y UF_CALL(UF_terminate());/ o, i4 e G; b! p0 E
}
; o8 V) l4 v2 j" [, |0 u# Q& S+ H/*****************************************************************************# C( ^: |. A0 D! K6 L, T
** Utilities4 e1 E+ P( g6 m$ ?
*****************************************************************************/
' H: g5 J6 R; I& Z/ |7 }( `/* Unload Handler
2 Z) z! @- L! F+ o6 |** This function specifies when to unload your application from Unigraphics.- I8 O" }0 A* j! p( |$ Z' W
** If your application registers a callback (from a MenuScript item or a
1 v' I2 u# O. s" i0 R: I7 C8 y** User Defined Object for example), this function MUST return& D) [6 \# v. e' J& O
** "UF_UNLOAD_UG_TERMINATE". */0 T4 ?/ }$ y( U4 t- X7 Q$ |
extern int ufusr_ask_unload( void ); \! |( v! S2 d0 X
{
0 q# K8 I. }0 E# O* y+ y" Z return( UF_UNLOAD_IMMEDIATELY );
* f: o g% @: U- p& N}8 x5 B2 j! x. {/ f
4 L8 U/ C: q: I/ w' l8 u' U
|
评分
-
查看全部评分
|