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

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

[复制链接]

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

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

且听风吟 楼主

2015-7-26 22:12:05

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

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

x
/*****************************************************************************
8 |( g9 b  P( I5 P2 ~**3 S; g- N$ K+ B3 M- e% C0 Q7 a
** test.c
/ n* N8 K3 C3 q* Z  L) {8 l) k**
9 v3 D# I% a  `* E0 v4 R** Description:. A9 G7 ]  Q9 C
**     Contains Unigraphics entry points for the application.( k1 Z# A( H7 w) ?, K
**/ G" X" t3 `8 Z1 c. W
*****************************************************************************/
; {- k: ^( U3 F/* Include files */
, R0 v0 o5 ]# q, ~#include <stdio.h>3 ?5 D' ~2 g% M8 V. d# L2 I
#include <uf.h>" f, J0 F) ?* Y( u! d. F  c6 f
#include <uf_ui.h>- C$ J9 m5 u4 @. e. l) h0 b. Z7 o
#include <uf_modl.h>
3 z& b- I, j. m4 g/ d#include <uf_curve.h>
# E/ s& ]2 L, ]) z#include <uf_part.h>" \2 j$ _" k, d+ x# D6 K8 n) Z. O4 D
#include <uf_modl_types.h>
- g, O# d% |7 o8 ^5 F1 U- p#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))
% B" }" F- m3 V" S5 r. ^5 [6 Q. W4 h! s) sstatic int report_error( char *file, int line, char *call, int irc)7 u. A& {% r: I' `& P
{
! {6 j& J* V& A4 j" B4 |* [1 r! q+ Q    if (irc)
7 a3 @( M1 }5 B& a: H! f6 m    {1 K% f1 x  W, U5 {7 L
        char err[133],
4 C) ~* S/ x0 H% `" B* x             msg[133];
; [7 |: |5 r  ~5 z* p* s        sprintf(msg, "*** ERROR code %d at line %d in %s:\n+++ ",
0 O7 \, z) K; s8 F# A. y            irc, line, file);
( S& F! X6 l3 y: O) _; {, [8 b; ^        UF_get_fail_message(irc, err);
  H- N8 }4 L: f9 C8 @8 _7 {- u        UF_print_syslog(msg, FALSE);9 t' W; p% p8 Q( I5 A
        UF_print_syslog(err, FALSE);! w* R$ h8 ^2 L) }7 C
        UF_print_syslog("\n", FALSE);% ^# d& a9 F' C" F' n1 r, m5 I
        UF_print_syslog(call, FALSE);
: d* }/ C9 l+ |5 |+ b8 u$ Q2 S        UF_print_syslog(";\n", FALSE);, D9 R- k( p3 o+ Z8 g8 d
        if (!UF_UI_open_listing_window())" ]7 r: y" x8 f
        {# q* V. h' R9 m2 Q& U; K: Y1 d
            UF_UI_write_listing_window(msg);+ l( h: m7 x- l+ t
            UF_UI_write_listing_window(err);
! z- q( }: G+ c( N1 X, m            UF_UI_write_listing_window("\n");2 y- B" Y0 j. ?! l2 f0 d: m/ k1 I3 a
            UF_UI_write_listing_window(call);
; x& Q; q% K7 A& E/ _3 Y3 G            UF_UI_write_listing_window(";\n");
6 {/ n9 M- f) ]7 g; K! z- }& T        }. D+ W9 K: ^0 F# G2 T
    }, p5 ]1 z) b8 H6 M/ t! W) J
    return(irc);- R- v4 v, H1 F6 P
}
8 g( f/ L! P- o7 y: s* X+ y
  E% u: ]' \& y! ~/*****************************************************************************0 h9 s4 _* p0 `
**  Activation Methods4 u1 x. `: _' ~6 i# q5 H' ?
*****************************************************************************/
8 G" _. @8 y0 g2 R- K! r  y/*  Explicit Activation( b4 L1 I' V8 _+ W' c0 y
**      This entry point is used to activate the application explicitly, as in
2 m6 s1 j. c" E+ F' y**      "File->Execute UG/Open->User Function..." */2 _( S2 I3 N( d( _, K! v& z
tag_t part_tag=NULL_TAG;+ r$ }/ L; q4 X5 F
tag_t tar_tag=NULL_TAG;9 x0 }$ H- E! E
double origin[3]={0.0,0.0,0.0};
# O7 p& j8 W- Schar *height="30";. g' |" [- V, G' V/ |; o
char *diam="100";
" U' b& D) i+ N; I7 J3 f) l4 mdouble direction[3]={0.0,1.0,0.0};3 v1 p( a' g$ l1 N2 H! U. t3 W
tag_t cylinderfea_tag=NULL_TAG;
* T0 O5 \$ m' Duf_list_p_t edge_list=NULL;
6 y( \1 r" y7 P  g( _int edge_count;
, Y5 L  ~3 x# U6 ?+ p7 m7 {char msg[256];
! R  d% b4 {, D$ ^% U, `' _& Dint i=0;$ O* b; D. C. q- ]
tag_t edge_tag=NULL_TAG;+ N1 g5 b5 t# P! m+ m
tag_t curve_tag=NULL_TAG;+ S1 C; M# f* E+ z
tag_t point_tag=NULL_TAG;
+ W1 H" I+ Y, Q! k, xtag_t line_tag=NULL_TAG;
, P# J6 ~4 g% f& ]  v: I. e- i4 J3 p, Rtag_t point_tag2=NULL_TAG;
4 \( A( i5 K* V/ xdouble cen[2][3];) Y- [  Z  ~$ M1 j4 g2 t
UF_CURVE_line_t line_coord;//最好不要定义为指针
4 d; @# ^8 k5 h/ `/ u: J9 jextern DllExport void ufusr( char *parm, int *returnCode, int rlen )& Z0 Q5 z  [* e" g0 H9 Q
{
8 S! c6 T4 W) s6 s8 k1 d0 q$ Q    /* Initialize the API environment */
% ?9 |# A2 I3 O1 g" n0 r    if( UF_CALL(UF_initialize()) )
( v% i; Q/ v0 X2 P- D; h! d    {
1 i0 I# P: m6 I9 s7 H5 e) q: t6 M        /* Failed to initialize */6 Z9 I* |+ f- y0 P8 r8 Y/ ]; Q! b; p
        return;
2 Y  x. N/ ?5 N9 X    }
, [2 A6 I8 z; |   
! G  R  r' h0 k  a" \0 N6 S    /* TODO: Add your application code here */8 ?5 k! ]# @, b$ U7 n# _. y, t+ C: s
//1.create a new part5 w  x+ m, U  e/ i0 a3 `6 e: S5 o
UF_PART_new("C:\\NX_work\\cylinder.prt",1,&part_tag);
& H( J, J1 |0 h! E/ [( L5 F //2.create a new cylinder) U, d4 m% V3 M" {1 c# Z6 g2 R/ J
UF_MODL_create_cylinder(UF_NULLSIGN,tar_tag,origin,height,diam,direction,&cylinderfea_tag);( @( u4 W3 Z0 U) q  a+ V
//3.get the edge list- X$ y* l* f% @' s$ U
UF_MODL_ask_feat_edges(cylinderfea_tag,&edge_list);
  d8 D3 s" ?0 y6 C+ i //4.get the edges- c* F$ x- ?' k& g7 ?7 P# g. f
UF_MODL_ask_list_count(edge_list,&edge_count);. Q1 G- G( a* T6 x- r3 J$ }

7 o3 R: A! B6 i* [ //5.get the centers
( L6 n7 u( q' H% t5 h: [) e for(;i<edge_count;++i){3 [2 ^) p/ P  W  a5 n9 W* H
  UF_MODL_ask_list_item(edge_list,i,&edge_tag);0 q3 ~& c4 z4 C3 A- N
  //UF_MODL_create_curve_from_edge(edge_tag,&curve_tag);) d! F& v  Z9 o( o
  UF_CURVE_ask_centroid(edge_tag,cen[i]);+ h- x" f0 l1 n+ u: e
}
; X  ^. k# A8 ?5 f0 u //6.create line5 t% j, ?4 S2 `8 X) w
//UF_CURVE_create_point(cen[0],&point_tag);# B9 `' O; _( H* Y% O% o7 ^& x2 H- r3 w
//UF_CURVE_create_point(cen[1],&point_tag2);
' g2 Y7 W# `3 a% |7 {! s/ } line_coord.start_point[0]=cen[0][0];
! o) ?. P$ t' ]" h# t' I% c line_coord.start_point[1]=cen[0][1];0 B+ L* X/ v  c+ p/ r+ r2 w$ d
line_coord.start_point[2]=cen[0][2];0 B- l$ X, i- h8 h
line_coord.end_point[0]=cen[1][0];1 u$ a; Q. F& w2 m+ }1 M
line_coord.end_point[1]=cen[1][1];+ y- \  D' E, B- L
line_coord.end_point[2]=cen[1][2];
1 F6 v% m) a  F- C  | UF_CURVE_create_line(&line_coord,&line_tag);" X5 H; o5 X- p/ g: N
//UF_MODL_ask_list_item()
% {4 P# n9 o# P" k* T    /* Terminate the API environment */
( ^* s9 e. r* x, F1 j" u0 g1 L4 `    UF_CALL(UF_terminate());7 ~5 h/ S# W' }2 i
}
) f( r) v" d* C9 H- x- B/*****************************************************************************. h8 T1 D4 Y; B* c, p2 S
**  Utilities( q; i0 ^, O& y: B7 n) }, l* F
*****************************************************************************/
1 L5 p4 J& `3 H' o" @* a6 H2 L5 M$ i/* Unload Handler! ?/ Y2 O6 p% T" `( d7 P
**     This function specifies when to unload your application from Unigraphics.+ @1 u% u0 ^0 Z3 o
**     If your application registers a callback (from a MenuScript item or a
8 O" Q, g3 V# ]' \. Y* r**     User Defined Object for example), this function MUST return
" G/ C7 m, E4 M+ J  z. D& p**     "UF_UNLOAD_UG_TERMINATE". */
" ^) G- @1 V" j3 \& x, P$ jextern int ufusr_ask_unload( void )6 j7 ^- d0 R* L: S
{  M( q  c) o0 N6 H
    return( UF_UNLOAD_IMMEDIATELY );6 F8 m. B5 `5 _
}1 m: Y+ k4 H) O: ^. f% v/ p6 G
) [0 n* ^" d# O# \

评分

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

    我知道了