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

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

[复制链接]

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

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

且听风吟 楼主

2015-7-26 22:12:05

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

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

x
/*****************************************************************************
: U- H  h9 d% ]$ s' _0 j**
( W  D0 \" H$ p3 a3 i, l( k5 l** test.c
: G+ f7 s9 T) h; o1 K8 N, Y4 z**
$ g. f9 i3 G4 `7 @% Q** Description:
. @7 Q# Q" {& _" J' G2 _3 F$ f# d1 q* B**     Contains Unigraphics entry points for the application.7 N/ A0 z% g4 ^! E  I
**' e! A: a# Z! u5 j4 c8 y) F
*****************************************************************************/
0 f( y! q$ f8 O! {- G) T& u& F/* Include files */
. L! E0 F- O1 R$ ^#include <stdio.h>
# u- i2 _+ i: D- b' ]. X#include <uf.h>  m3 a( d4 z7 ^. o8 c9 j$ k! j$ x
#include <uf_ui.h>
: J9 S7 q) g5 o8 H% |# i#include <uf_modl.h>' v. {8 n+ ]: D) q) u# }
#include <uf_curve.h>
- P6 J9 k+ Z+ S7 {) `#include <uf_part.h>
$ _& t! A; w/ D6 v1 x: j% }7 @# p7 ?#include <uf_modl_types.h>) F" f. g# S+ v$ c' N
#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))
7 u/ {- }' J! {( kstatic int report_error( char *file, int line, char *call, int irc). A1 p# e8 m+ r$ K8 M5 i9 f
{
8 j* j0 h# O3 e, N/ P5 A    if (irc)
4 [1 \) H& e- }) A/ T- Z    {  S& U) w$ C$ I
        char err[133],
. g- B9 D7 a, C" I& f7 C1 g4 I             msg[133];
: p" r6 M' b: M- O  }# C        sprintf(msg, "*** ERROR code %d at line %d in %s:\n+++ ",0 u9 f+ ~' P- p+ G7 ~& P* o, ^7 V
            irc, line, file);
/ m& E; |7 W7 d3 J  E        UF_get_fail_message(irc, err);5 d% ?5 X5 R& V9 t2 r9 G
        UF_print_syslog(msg, FALSE);/ R. \/ F+ p$ Z+ |# r; z
        UF_print_syslog(err, FALSE);
: r- \0 r! R9 a% V+ S2 y        UF_print_syslog("\n", FALSE);
; i) `; U& W" X! {4 T! D        UF_print_syslog(call, FALSE);: j1 c9 j: H) g9 r( f
        UF_print_syslog(";\n", FALSE);
7 u5 [; i, h  J" Y        if (!UF_UI_open_listing_window())
6 q6 d) m( P7 e0 k6 \% V! X        {
6 r8 O% \4 V3 f            UF_UI_write_listing_window(msg);
! U, d1 E/ l1 `3 h            UF_UI_write_listing_window(err);  d3 b' t! ?" l" m! Z. M
            UF_UI_write_listing_window("\n");
+ @" f1 Y$ c7 x            UF_UI_write_listing_window(call);4 O  ~* C) O4 Z. K, @$ T: b# ?4 l
            UF_UI_write_listing_window(";\n");* g4 D/ t6 O. q' y2 h0 ^" m. n
        }. s$ n, a9 v7 [& W4 N6 f+ E3 q7 i) q3 U
    }+ _  w1 o. W  b3 b- i% H2 _# E8 ?1 k% U
    return(irc);
& q+ ]' H8 s7 q2 X: U# H0 i: I}
$ `( l4 ^4 [  l5 m: f$ N) ?3 S$ Q  j1 }5 T" \/ |5 i2 T! c
/*****************************************************************************! X5 I0 Y" B6 u3 x& j
**  Activation Methods, d, l6 j, D) M. W5 S8 g  w
*****************************************************************************/
( M2 M( ~1 [9 G& q- U6 P/*  Explicit Activation" j$ F5 X$ X) t1 d% u$ B
**      This entry point is used to activate the application explicitly, as in  j$ Q; f; @) i  ~7 b% u
**      "File->Execute UG/Open->User Function..." */1 O. n% S" x7 ?+ V8 E
tag_t part_tag=NULL_TAG;
' D/ ~4 d3 K# R% W; stag_t tar_tag=NULL_TAG;1 x9 ^, s' n7 D7 E
double origin[3]={0.0,0.0,0.0};
$ k9 v" W& }6 e0 h, jchar *height="30";
( i, H8 \4 l6 z/ S9 ochar *diam="100";
7 F4 ], m$ Z! J' V! y3 w. q2 }/ ?3 qdouble direction[3]={0.0,1.0,0.0};! z8 K* _, P" D5 ]5 e
tag_t cylinderfea_tag=NULL_TAG;2 {( d$ r7 A6 Q3 T) k
uf_list_p_t edge_list=NULL;
, B" X7 D3 S+ O! R$ E  Zint edge_count;
: a8 {- e& B' h9 tchar msg[256];5 w. \; z7 O8 a: ^! e2 H1 B
int i=0;
3 g: w8 x0 ]2 P* s+ w' E9 Xtag_t edge_tag=NULL_TAG;8 E; o; g0 q& ^/ p
tag_t curve_tag=NULL_TAG;
" P9 e. v) T& c0 ~  f; I2 btag_t point_tag=NULL_TAG;6 t1 J2 O! ~& Z6 C9 X' z: v, Z/ w
tag_t line_tag=NULL_TAG;& k( Z" i. s4 X( J, f+ n" y
tag_t point_tag2=NULL_TAG;
! Y5 j3 z* n& K4 T' A# Fdouble cen[2][3];
0 m  Q( |2 ^) D8 |  P# L; L" ^& D) S+ pUF_CURVE_line_t line_coord;//最好不要定义为指针% _; f6 v9 s* t# @# a3 ~
extern DllExport void ufusr( char *parm, int *returnCode, int rlen )
" @8 m0 V! S  S* R3 d& Y6 k" L{' _5 b+ p. L/ T( F7 H
    /* Initialize the API environment */) p1 I: P* [  E/ v; z$ ^& I
    if( UF_CALL(UF_initialize()) )
' M+ m* z3 K/ V. ^. D    {4 u' T( O7 g3 F% K
        /* Failed to initialize */) ~' y; N+ u3 U7 {% D8 o2 A9 B
        return;% ~! D- t7 u; t: }' A8 c
    }6 E* o$ _# b, e3 e+ v' `* v
   
9 z1 a1 H2 @6 v5 t/ N    /* TODO: Add your application code here */
+ e& ~5 U) }( {7 E" O1 b: k //1.create a new part9 ?# L& X" `1 L# K) C% z! z$ K$ g1 v
UF_PART_new("C:\\NX_work\\cylinder.prt",1,&part_tag);
1 a2 |/ [" i1 P( Z% s' W4 j- p5 V9 q //2.create a new cylinder  u' X! K# T1 G  t3 @9 ~  K8 O
UF_MODL_create_cylinder(UF_NULLSIGN,tar_tag,origin,height,diam,direction,&cylinderfea_tag);
9 K; ~! o; D6 C; r6 K* k //3.get the edge list7 R& Y3 D' ^+ T) A1 o
UF_MODL_ask_feat_edges(cylinderfea_tag,&edge_list);
/ I. w1 J- d5 y; F, S //4.get the edges( J$ S3 x3 Y- x5 l4 g9 M
UF_MODL_ask_list_count(edge_list,&edge_count);
" @' g# [) L  V8 W. q! v  K + {4 ?/ Y' b6 @* X* D) ]
//5.get the centers) c( }% Z, J' w# I; ]5 U. y
for(;i<edge_count;++i){
% g/ B' d0 b* @+ v  UF_MODL_ask_list_item(edge_list,i,&edge_tag);% U( H2 e% {1 \, _
  //UF_MODL_create_curve_from_edge(edge_tag,&curve_tag);0 `( `- Z9 A" W7 t( g- C# O$ J
  UF_CURVE_ask_centroid(edge_tag,cen[i]);% _# S# A/ p- o5 K! ^) B
}" V+ a  R. h3 o  T
//6.create line
$ |- h6 N: c" [& H //UF_CURVE_create_point(cen[0],&point_tag);
' D: W+ |( N5 q //UF_CURVE_create_point(cen[1],&point_tag2);' ~% S! u* k6 B( V2 W- q
line_coord.start_point[0]=cen[0][0];' `/ J4 T, ?5 @6 U- q5 N2 Q+ T
line_coord.start_point[1]=cen[0][1];
1 L' Y- N; f# A& p% K line_coord.start_point[2]=cen[0][2];
0 d. r  F9 R0 k line_coord.end_point[0]=cen[1][0];
* L3 X; O: u2 b5 j) m( w+ k/ q+ u' J line_coord.end_point[1]=cen[1][1];6 ^5 v6 ?" z# U& I4 E$ S
line_coord.end_point[2]=cen[1][2];( \" w" c5 b$ Y4 \+ N& }
UF_CURVE_create_line(&line_coord,&line_tag);, X/ p; w& s3 C: U
//UF_MODL_ask_list_item()% o. Z. }9 }6 J' H7 T" b$ _
    /* Terminate the API environment *// H2 D  k( L  e' I/ \" V
    UF_CALL(UF_terminate());
" S- {; P5 P/ ]' F2 x. B}4 A# t( j# H# T4 d2 j
/*****************************************************************************
& ^# y- z, C  ]& e5 J  H**  Utilities& A; L! _9 T: L& Q, v' h
*****************************************************************************/
: T  Z* q) N- s/* Unload Handler/ P- ^7 y$ w. j0 }/ d- d0 u
**     This function specifies when to unload your application from Unigraphics.; j9 K( n7 ^- I* ?( Q) l
**     If your application registers a callback (from a MenuScript item or a
, x, R/ J4 J7 A**     User Defined Object for example), this function MUST return
2 D6 v9 z- c: L**     "UF_UNLOAD_UG_TERMINATE". */$ u2 m/ Q; C, i, |9 p1 h! e1 c0 ^3 d
extern int ufusr_ask_unload( void )* T/ ^' R. j7 I
{! J0 H8 s; H8 _1 Z9 n' `# ^
    return( UF_UNLOAD_IMMEDIATELY );; K8 W: Q3 H- i6 M3 U& O, o4 P
}
4 P) L4 o. F4 ?
7 S1 z$ A* q6 C! F6 s. L

评分

参与人数 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二次开发专题模块培训报名开始啦

    我知道了