查看: 3164|回复: 1

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

[复制链接]

2

主题

21

回帖

270

积分

培训VIP会员

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

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

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

×
/*****************************************************************************: r& ]& h6 b* o* ?# a" F
**+ C" a5 Z; b( h7 f* H! `! ]2 ?
** test.c
) j7 {( g, C: s; C/ A**
* L. W& ]+ i) C- b1 y0 A( L** Description:1 T) @( y4 b8 u+ o9 K
**     Contains Unigraphics entry points for the application.4 W; A9 k. t0 X
**
- M9 G. l4 {. z4 ?  J" j*****************************************************************************/
6 F% k7 g& s/ {6 `0 [, q2 x7 ]  h, q/* Include files */1 ?5 G* C) h4 _$ B: H" Z
#include <stdio.h>5 B: R7 M. f/ m2 p* i2 n4 ?
#include <uf.h>
- w; H, W! p  g+ M#include <uf_ui.h>. \4 B  u7 U8 W4 S
#include <uf_modl.h>
& N. k0 R) l# W5 e+ t9 D#include <uf_curve.h>- K6 _# |" g) o6 c* r. s
#include <uf_part.h>
  S$ {' C( l' F  C& p. ^8 B" f2 ~$ S#include <uf_modl_types.h>
) U% ?7 p; @) I$ B) U#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))7 q9 V- b5 X3 A! o& g" c& x
static int report_error( char *file, int line, char *call, int irc)
* @8 T1 U- G1 z1 o1 i' n# Y4 T! q: V{3 B3 M3 g$ B0 J
    if (irc): X+ \3 b: z% S- R. c. @# g
    {
  t- Y- u' T- q# [: }  _, P! G        char err[133],! H3 w, p1 _3 H
             msg[133];
; A0 P+ r; P! X0 B2 k        sprintf(msg, "*** ERROR code %d at line %d in %s:\n+++ ",
+ O: j: L) N! O6 G$ a            irc, line, file);$ x  Y3 |: p5 `% N
        UF_get_fail_message(irc, err);
" W' N) K% R) H3 ?1 z        UF_print_syslog(msg, FALSE);$ K/ g! D- ]5 \* T
        UF_print_syslog(err, FALSE);
4 x: [7 O" h- b" V( V' b0 c# H        UF_print_syslog("\n", FALSE);
. K& t& ^/ e8 e% X6 h$ [        UF_print_syslog(call, FALSE);- X( L. ?( ^+ g: g
        UF_print_syslog(";\n", FALSE);0 r# R! Z2 s( v7 r
        if (!UF_UI_open_listing_window())
1 F) {1 Y' B5 `1 {7 z        {) j. s+ x$ l2 W# X$ ?
            UF_UI_write_listing_window(msg);
& s( m9 j, H# ]5 p) r( x* a$ |            UF_UI_write_listing_window(err);1 C( k* F& ?$ L5 f! c, M" o# `% Z
            UF_UI_write_listing_window("\n");& }0 O* v3 J' V/ U
            UF_UI_write_listing_window(call);& Y3 \7 v# d! K2 ~2 y  {2 R7 _
            UF_UI_write_listing_window(";\n");
9 S4 p0 A( A2 b5 g- x1 O  v) t  g! {        }" U! O- b( D6 t$ s* p0 f) E
    }  L" g( |: C% A: T1 T
    return(irc);
9 k4 @$ J$ A6 Y  g) f}
; z& c3 y: I( R, U) k/ `) \7 e/ `& r6 ~/ J& t, \% e) B
/*****************************************************************************
4 d# q6 @1 }- h- a; v5 l**  Activation Methods3 q! P2 Q1 z( {; F" I, |! o/ I
*****************************************************************************/' b. S+ l) z) e& P0 p, b
/*  Explicit Activation
" i! W: L, D( U8 A% S**      This entry point is used to activate the application explicitly, as in
# |6 ^1 ^8 v% b( e5 q! E**      "File->Execute UG/Open->User Function..." */
) L+ W4 ?  T, |1 J0 ?! {  o$ ztag_t part_tag=NULL_TAG;4 O/ E- T6 U. f! w2 V+ U
tag_t tar_tag=NULL_TAG;
  Y5 J1 {, F3 B& Kdouble origin[3]={0.0,0.0,0.0};
; D8 S9 |9 h6 g- [4 `/ ochar *height="30";
+ K+ H9 ~9 Z8 {, p8 v) G& A6 Achar *diam="100";
- ?( y, i5 z- vdouble direction[3]={0.0,1.0,0.0};
% a! H' C, g! c8 U: L* s3 Gtag_t cylinderfea_tag=NULL_TAG;
  x( m3 I9 W/ a% yuf_list_p_t edge_list=NULL;$ F5 F1 Y% O8 g! j' _
int edge_count;
8 U7 |, q, w# `/ Q8 O+ Y5 O' Schar msg[256];; n, X2 v5 k3 A5 i9 b7 ]
int i=0;# ^' |6 m! G+ w( m7 v: J* A, K  \2 I
tag_t edge_tag=NULL_TAG;' ^! m. P% m- \+ u/ Y  e( G% `! C+ T; p
tag_t curve_tag=NULL_TAG;
; j5 U: j8 j+ Q/ C7 J# z  ztag_t point_tag=NULL_TAG;6 z3 y8 ^+ Y6 E
tag_t line_tag=NULL_TAG;
" g, |) l% V$ O; Y: J- s- D) `. ctag_t point_tag2=NULL_TAG;1 R3 L5 p# H  k8 k5 q2 k/ Q1 |
double cen[2][3];1 ~$ {. A: T- z$ |+ T! i7 v
UF_CURVE_line_t line_coord;//最好不要定义为指针
; |6 _3 E5 }; \. u7 sextern DllExport void ufusr( char *parm, int *returnCode, int rlen )4 C2 u4 N& m: S' Z0 ^$ I0 z
{; u% e1 d. \* [2 O! B+ p
    /* Initialize the API environment */+ C4 N+ K# F$ H7 }6 T
    if( UF_CALL(UF_initialize()) )
) G2 Z+ R* M4 h9 y    {  j- Q' t# K1 D5 `; p" T$ o0 I
        /* Failed to initialize */* T2 i6 d) n: k
        return;2 ]* }$ e6 t: d7 m
    }
; e; C/ ~$ A( t   
# G* D/ A' G; K5 g# B0 _( J" j; Q    /* TODO: Add your application code here */
3 U+ S3 n, W( }; [) p; W //1.create a new part
/ p' X( c4 q6 g UF_PART_new("C:\\NX_work\\cylinder.prt",1,&part_tag);
1 h7 ^9 l; P& ^ //2.create a new cylinder
4 {+ V3 U  X8 ], ?3 G6 y UF_MODL_create_cylinder(UF_NULLSIGN,tar_tag,origin,height,diam,direction,&cylinderfea_tag);7 ^4 V: K2 D, K- @
//3.get the edge list
( ?6 d1 {7 A! S  Q5 f, k! A3 O* S UF_MODL_ask_feat_edges(cylinderfea_tag,&edge_list);
4 x# j9 j7 K* ?* p //4.get the edges% L6 \! D- W" r+ f
UF_MODL_ask_list_count(edge_list,&edge_count);) _! b# M5 |) d+ H9 Y7 L1 x

: {# J% G# N$ U: } //5.get the centers+ E( Y: O4 Y9 ?3 T% U9 {
for(;i<edge_count;++i){
$ r+ d) b- I5 D/ C9 q7 Q4 f% [  UF_MODL_ask_list_item(edge_list,i,&edge_tag);9 L" k+ U" P+ A% w8 B/ E( Q4 w
  //UF_MODL_create_curve_from_edge(edge_tag,&curve_tag);1 V. X" x: M2 K8 V
  UF_CURVE_ask_centroid(edge_tag,cen[i]);8 A$ l( M) [- d6 V$ u
}2 ?( m, Y/ A  O& y4 t
//6.create line
! V7 d. x! N$ _7 T& y  b //UF_CURVE_create_point(cen[0],&point_tag);) @& J+ \, ^$ f; ?+ Z, w) p1 y
//UF_CURVE_create_point(cen[1],&point_tag2);/ e6 [! f9 {. ?, v# A- o7 W
line_coord.start_point[0]=cen[0][0];
# x; V0 P: D, y; J6 o5 y9 \  V3 ? line_coord.start_point[1]=cen[0][1];* n' k/ Z* ?) L4 t# F4 P1 t
line_coord.start_point[2]=cen[0][2];8 n! s6 N6 R3 z; D" r
line_coord.end_point[0]=cen[1][0];+ ?' w$ r& D2 b
line_coord.end_point[1]=cen[1][1];( r2 P' V5 Y$ _  \% T0 r+ X
line_coord.end_point[2]=cen[1][2];
$ Z$ e9 r9 B$ L, a6 T- J UF_CURVE_create_line(&line_coord,&line_tag);' u4 q/ q4 Q) f: g( S
//UF_MODL_ask_list_item()& ?. u& n" w" ^
    /* Terminate the API environment */
( o2 X2 {1 Q  b* @    UF_CALL(UF_terminate());' x# j6 ^4 H- y2 B# ?3 r7 @
}
: a; \) r& L& g1 m1 [8 t/*****************************************************************************1 y# m/ Y: X  h; t; J: e
**  Utilities
. V% [7 k" h0 g' L8 |9 s8 W*****************************************************************************/9 u% L8 p2 m0 i( f
/* Unload Handler
) ]$ r: @- a; Q  u**     This function specifies when to unload your application from Unigraphics.
  l1 g' ]1 P, `6 U2 n**     If your application registers a callback (from a MenuScript item or a4 _, p. o: `5 m$ @+ i! `) d
**     User Defined Object for example), this function MUST return8 a2 `0 F" O1 m: P! S: b" A# z
**     "UF_UNLOAD_UG_TERMINATE". */% E' X) _" ~1 `
extern int ufusr_ask_unload( void ), m' h. f0 N( U9 g! G+ x4 S* Q: N
{8 D* {6 I) [8 n
    return( UF_UNLOAD_IMMEDIATELY );" N; e; V0 E* @
}
0 \6 e# F! x% d/ [7 w4 a5 q7 c. i
6 |6 v& J( `8 R' f

评分

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

查看全部评分

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

使用道具 举报

4

主题

3

回帖

44

积分

管理员

积分
44
发表于 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客服返回顶部