查看: 3127|回复: 1

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

[复制链接]

2

主题

21

回帖

270

积分

培训VIP会员

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

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

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

×
/*****************************************************************************
8 W9 y& Y" X- m, R0 T: U' Z**8 }4 G$ ?( P' f$ G
** test.c
( `8 a9 V3 e  M/ K$ n8 F" }**
; n* Z0 b: @/ X- \3 o, r; V+ L** Description:0 V& ?/ F/ u8 B  {, J- q% V6 H
**     Contains Unigraphics entry points for the application.6 u# r0 Z/ l9 b1 [# d
**
, b, m% ?7 s3 v*****************************************************************************/% y' H- {7 ]* W3 [% ]
/* Include files */
. @* ]. W( ]0 c7 }. ?- l' \3 j/ Q#include <stdio.h>
( \# l+ j5 e* O1 a#include <uf.h>
9 G# g# P9 u, r" K0 n) h% a#include <uf_ui.h>( l4 [, \' p; B3 b, e' j$ m
#include <uf_modl.h>' A1 w7 c# n  `7 y0 y5 m0 m
#include <uf_curve.h># |* l: F, X; |; I  D6 w
#include <uf_part.h>0 w$ {+ O! _9 c' t6 V7 _6 y) w
#include <uf_modl_types.h>
$ H+ ]% H% I4 b9 e5 ~2 H#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))/ U3 u$ S5 D5 E' c% M
static int report_error( char *file, int line, char *call, int irc)
* n4 Q; \$ H; J. V{
8 b/ |0 L6 S/ \5 y  x3 B) q1 r    if (irc)  D, y) q: L, a6 {* D# ]
    {* Z# e& z# m; l. \. n9 m+ q
        char err[133],
5 n9 p, q+ k' q5 n/ J# |6 [/ Q7 L( `             msg[133];4 h/ \! ]* o4 J+ E
        sprintf(msg, "*** ERROR code %d at line %d in %s:\n+++ ",) }" D; u. e* ^/ h+ J
            irc, line, file);; G/ d9 J  i2 w  F6 h
        UF_get_fail_message(irc, err);( `% d1 ~+ b% l, ]. X
        UF_print_syslog(msg, FALSE);
0 P; f# z& Y; X1 f+ Q        UF_print_syslog(err, FALSE);/ h2 m& u& e5 o$ }& R" U4 x8 o
        UF_print_syslog("\n", FALSE);8 i0 @% ]1 |' {0 x
        UF_print_syslog(call, FALSE);, P6 F* o/ E' J" P1 P: V
        UF_print_syslog(";\n", FALSE);; s4 Z& H! r; R
        if (!UF_UI_open_listing_window())) g; h% q3 q: h5 H; `
        {
) ]% {4 B" G  P& _            UF_UI_write_listing_window(msg);
$ Q4 Q% @0 W% ^5 k7 i4 p, G            UF_UI_write_listing_window(err);
1 _3 o# k( H# X            UF_UI_write_listing_window("\n");
  C: o* M9 g& r& n. [" {  i: Z            UF_UI_write_listing_window(call);
% U2 b6 V' V. L3 [            UF_UI_write_listing_window(";\n");( r4 E# I8 @* u6 B0 m
        }* I- i9 Q. x% g9 j+ N) v
    }) O/ |/ D2 p8 F, m2 v# f
    return(irc);
, n& d. J8 k( q% @; o}( V8 t0 E, f$ @. [# \

  l: h# x1 G4 \% H" q# i/*****************************************************************************8 W- x1 R/ f3 C( y; h& G0 F
**  Activation Methods4 Q! A1 y2 F# i
*****************************************************************************/
3 H$ C5 X6 |1 ?, O$ {! o/*  Explicit Activation5 k7 D4 ^5 r# r- G0 c
**      This entry point is used to activate the application explicitly, as in
/ n* d% m1 h$ H**      "File->Execute UG/Open->User Function..." */9 w- l+ S0 H' ~" B. }9 F
tag_t part_tag=NULL_TAG;
; c3 Q, ]2 j- ^7 g4 Etag_t tar_tag=NULL_TAG;) a) U. Q( X& I8 _
double origin[3]={0.0,0.0,0.0};' i/ g- A+ f  [' L4 z% W
char *height="30";
* X( F- e! N4 S0 W3 X* x7 Zchar *diam="100";
- Z. w9 `7 s2 ^7 ^+ ?1 y+ Ldouble direction[3]={0.0,1.0,0.0};  w  s! t7 g. G0 A/ n
tag_t cylinderfea_tag=NULL_TAG;
6 W4 S, e, x( S( U3 Luf_list_p_t edge_list=NULL;
. N; c1 H* s0 I6 |) \int edge_count;: T* X9 s. B+ r
char msg[256];! O9 q( d" z- s9 r2 y6 M  h
int i=0;
3 ~0 U: I/ A& m6 T: gtag_t edge_tag=NULL_TAG;3 S6 g, H5 J( z2 d0 w# Z1 z2 K. l
tag_t curve_tag=NULL_TAG;
" A7 ]+ S& ]# W+ }, ctag_t point_tag=NULL_TAG;; m. `5 h) Q# `! W" K% |8 Z3 e
tag_t line_tag=NULL_TAG;
* }7 U8 Z2 r7 p: itag_t point_tag2=NULL_TAG;' w1 B- n3 L9 i+ K* f: t
double cen[2][3];
( d$ R$ B; e+ k; X) X+ WUF_CURVE_line_t line_coord;//最好不要定义为指针7 m) O# M! H6 N+ v  T+ ?
extern DllExport void ufusr( char *parm, int *returnCode, int rlen )
8 X, b. S5 |: k  g5 k{
( Y5 r7 h  K; c7 F3 L3 s' U    /* Initialize the API environment */
. X4 i; r4 s8 ^" D0 p5 k    if( UF_CALL(UF_initialize()) )
- [8 {$ n3 g% B) l    {
6 O; K: s" P; |        /* Failed to initialize */
+ c6 h  f. C9 p/ u  v/ o5 D3 n        return;
# M( i; B5 a2 Q$ `3 O: |    }
9 `9 _7 R+ d5 C; ^0 f2 n4 H& m- O   
3 F8 ^' L% J9 _  B7 f: ^. x    /* TODO: Add your application code here */: G( _. g2 J0 o. T. |  Y
//1.create a new part  e- y2 m) f+ t7 Z
UF_PART_new("C:\\NX_work\\cylinder.prt",1,&part_tag);
; y7 f* S& h9 z) P5 \ //2.create a new cylinder0 [8 U2 L- ?- v/ \2 {
UF_MODL_create_cylinder(UF_NULLSIGN,tar_tag,origin,height,diam,direction,&cylinderfea_tag);
% J# ~/ J8 X+ a/ c9 e( }9 @ //3.get the edge list1 d  N' M/ c: X0 `
UF_MODL_ask_feat_edges(cylinderfea_tag,&edge_list);
- x- m3 O7 k: A/ N //4.get the edges2 ^6 r7 u8 x, F5 j4 ]9 l8 s! j; S( v
UF_MODL_ask_list_count(edge_list,&edge_count);
, J8 _, ~  {5 N( @ 4 \" r! ]$ n: z
//5.get the centers: }$ q: n9 a2 S) V' |
for(;i<edge_count;++i){
: T9 O9 ]* d  ~4 {4 Y* c( f  UF_MODL_ask_list_item(edge_list,i,&edge_tag);  C  Q5 F2 p  t# b' _9 J4 A7 G
  //UF_MODL_create_curve_from_edge(edge_tag,&curve_tag);& [# a" [0 P) H
  UF_CURVE_ask_centroid(edge_tag,cen[i]);
9 ?9 b7 z/ _+ c& T5 y }& f3 N9 k+ C5 Y% R* e9 u
//6.create line
: ?5 [6 o% X; C7 ] //UF_CURVE_create_point(cen[0],&point_tag);2 R; T8 E! E' p" w) y
//UF_CURVE_create_point(cen[1],&point_tag2);
/ M: s; f! t( k. K% B- X: N line_coord.start_point[0]=cen[0][0];
: L  V9 W  H, D2 y5 z2 l: O line_coord.start_point[1]=cen[0][1];
, @. `2 e. X  E6 m! p1 I7 E' x line_coord.start_point[2]=cen[0][2];/ w, v% n) m+ @& ]# b3 S& n
line_coord.end_point[0]=cen[1][0];
3 U/ c# K* l' F: R line_coord.end_point[1]=cen[1][1];$ [! a1 T9 }: d" M# U3 r
line_coord.end_point[2]=cen[1][2];
' V& |/ W6 E2 Y UF_CURVE_create_line(&line_coord,&line_tag);5 U9 Y6 f1 W; [2 D
//UF_MODL_ask_list_item()$ n: y: X2 S' X' _' w8 B" ^
    /* Terminate the API environment */$ Y% a  U, r8 @$ f6 H
    UF_CALL(UF_terminate());
6 l9 a" \. K" r% q$ @}
( a8 s2 p4 A  b  J1 h) N/*****************************************************************************: B- x( {! g( l& H
**  Utilities
! e# t) _* X% c- ]4 D*****************************************************************************/
9 D& Z9 ]( W- x+ \. C7 w" ^/* Unload Handler
/ L0 ?. ]# A, C+ C8 w( v5 }. r**     This function specifies when to unload your application from Unigraphics.* e* h* v2 j. b$ U7 S' w# c
**     If your application registers a callback (from a MenuScript item or a
5 x. Z1 `3 {3 S- \: \6 J9 E) y% a**     User Defined Object for example), this function MUST return+ p- C& \% V' A- }3 Q, M
**     "UF_UNLOAD_UG_TERMINATE". */, B$ c' o/ d: Q5 w5 z
extern int ufusr_ask_unload( void )
6 p! c! N# x$ u: j9 g8 c( X{
7 x/ B* `/ o5 K" b5 k    return( UF_UNLOAD_IMMEDIATELY );; \5 o4 N  K+ f$ v, a9 q9 j
}% ^1 V: f" Z5 U

) `0 s" L9 T7 a/ G4 n5 m0 n( c

评分

参与人数 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

回帖

38

积分

管理员

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