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

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

[复制链接]

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

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

且听风吟 楼主

2015-7-26 22:12:05

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

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

x
/*****************************************************************************& Q5 X% z* w; n' `  G# \
**
. g# ]1 U9 e1 o: [1 U1 ]& g' @** test.c
/ b& l* u5 C9 L, q  a6 A**" A4 E0 s# R/ x; C8 @# i
** Description:
5 T, E* Y. p( \- L  S( j: M**     Contains Unigraphics entry points for the application.) Z* N) S, |; p# }$ \9 c
**
1 @( e* ?* M, Y* n$ r; S7 }*****************************************************************************// `) t3 x  y- ~" V: q
/* Include files */
, x6 B( ~! C! c; x; y/ p8 ]#include <stdio.h>
7 N5 Q' I6 i6 Z# Z& M#include <uf.h>3 ?" K/ ]7 e) z1 c, Z* [
#include <uf_ui.h>
; n) u; v  V2 _: D! a# J* d# g#include <uf_modl.h>
: f1 U' @/ k  U  t9 o#include <uf_curve.h>& v" G: J* Y& r8 F  h) Q
#include <uf_part.h>
- v  p, _' d7 u2 ^+ A1 c% j#include <uf_modl_types.h>
; v% |+ m) `2 n6 x#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))
7 `1 l+ y+ }( `! T- Y9 f" U* B- Astatic int report_error( char *file, int line, char *call, int irc)
1 G2 G2 M. n" P' X2 O# @{
7 z2 t; n* k4 D* t( Q    if (irc)
/ S1 Z. M. Z. i    {; @" \( M0 m. ^4 N' x: H. R
        char err[133],
6 C0 \$ W* Z2 N             msg[133];% D/ {- v" S' |( b6 W* c
        sprintf(msg, "*** ERROR code %d at line %d in %s:\n+++ ",0 N  z4 m2 j! }. n
            irc, line, file);
8 w$ L1 R$ B( K2 L% l8 ^/ I# @        UF_get_fail_message(irc, err);
/ V  Z$ m$ A5 {8 ~5 \) \1 g$ G        UF_print_syslog(msg, FALSE);
! G. w8 L' j! M' _7 i1 y        UF_print_syslog(err, FALSE);
; _0 H4 {  H1 G, U2 G8 Y* H        UF_print_syslog("\n", FALSE);) e. N. ^: T7 ]
        UF_print_syslog(call, FALSE);
- U  M3 W$ T6 J& E& x2 {) \        UF_print_syslog(";\n", FALSE);4 z$ f! F* C* V
        if (!UF_UI_open_listing_window())
5 S# s- R' ?* u1 Q; L        {# ~: h" v' p# f; o5 R% {
            UF_UI_write_listing_window(msg);
) @9 j9 W, M5 j2 i% s/ I, A- N& K            UF_UI_write_listing_window(err);
+ c: e; H6 Z9 X; V0 t9 M            UF_UI_write_listing_window("\n");
, ~4 [6 |' [: q" K; g) p7 {' N& C: I            UF_UI_write_listing_window(call);0 _5 r, m" s8 i( I+ h& W# [
            UF_UI_write_listing_window(";\n");
- G) B5 S/ U6 R. K' Z        }5 \0 r1 S' v& Q- Q& V' s
    }# z1 y/ u) d& F5 z* F- `8 l
    return(irc);
1 Q2 H- U) S% C: y}
5 k# W/ G+ `4 P) H3 T* x
* P9 j0 J$ w% w6 j* s  \8 u1 J/*****************************************************************************1 m- U8 c) ?! B
**  Activation Methods: P8 J. ^4 S, i) p5 n
*****************************************************************************/% @% j; c% t' e1 b. }
/*  Explicit Activation3 Z2 @6 M% {) i( l2 p) X0 `" N
**      This entry point is used to activate the application explicitly, as in
# a4 ^  n, T( I**      "File->Execute UG/Open->User Function..." */
# x# |' c& j. u: ftag_t part_tag=NULL_TAG;
2 ^- g. N/ Z1 w+ vtag_t tar_tag=NULL_TAG;9 j1 G4 {; t$ M, z; V7 R
double origin[3]={0.0,0.0,0.0};
5 I/ t2 \: `2 S) I- @6 o' c- b; J" Uchar *height="30";9 c5 J( V! O3 y
char *diam="100";: v) |) r1 q2 g; {7 B4 ~
double direction[3]={0.0,1.0,0.0};  C) u, s" i) Y
tag_t cylinderfea_tag=NULL_TAG;: ]9 C. x8 m+ b* _7 T7 i4 ?; H% T
uf_list_p_t edge_list=NULL;& e7 o* x) x2 n( V# J9 `1 w- x7 g
int edge_count;: ~4 q3 U8 |" ~! }- s4 @2 X
char msg[256];
& y' a# O" j) w: r( b9 W- O, X* Zint i=0;
2 ]1 Z/ H( i& F9 C, m+ ?# ltag_t edge_tag=NULL_TAG;
0 j8 P0 a0 X& Y$ g. Wtag_t curve_tag=NULL_TAG;4 X8 G$ `3 A3 g) q- R
tag_t point_tag=NULL_TAG;
0 w2 N/ Q. X1 q: z0 H. ?tag_t line_tag=NULL_TAG;
4 H* e- n5 j# \, ctag_t point_tag2=NULL_TAG;
' c. }- S; ^7 {1 W  Gdouble cen[2][3];
# Z# P, d( E- G# q! b! u2 aUF_CURVE_line_t line_coord;//最好不要定义为指针
2 J) v( n$ s: ~% X- {, l* {) dextern DllExport void ufusr( char *parm, int *returnCode, int rlen )* q" k$ l, O6 |( o
{
! H, ~2 h0 J5 e- F+ B    /* Initialize the API environment */
2 N' N* k2 I- b    if( UF_CALL(UF_initialize()) )
1 R+ u0 ^+ Q, C    {
% }. C/ P. h0 ~. O" [        /* Failed to initialize */8 Q( ]: M) K8 n& o" [) _. E! C6 a
        return;7 u8 a6 t3 F. M- c7 j1 |3 i' F! r
    }# u6 l: m5 u* y
   
- o, v" v3 ~4 s    /* TODO: Add your application code here */" t; b$ h, w! `( |: W
//1.create a new part6 f7 Y5 P7 O6 q- A' @) G' P
UF_PART_new("C:\\NX_work\\cylinder.prt",1,&part_tag);; R, `- ~5 h- Z( p$ y$ d$ j  c
//2.create a new cylinder
8 v/ p" e2 ]' Q) J$ J- M: E UF_MODL_create_cylinder(UF_NULLSIGN,tar_tag,origin,height,diam,direction,&cylinderfea_tag);
, P! n. u( N( O# p //3.get the edge list
4 i% _2 f. I  k4 _" Q( k UF_MODL_ask_feat_edges(cylinderfea_tag,&edge_list);7 p! G9 W. C; R' x0 a' n
//4.get the edges3 d* R7 v: S3 U8 o
UF_MODL_ask_list_count(edge_list,&edge_count);
3 @9 L% G* u2 M) A+ n4 o ( B( L  o: G! n& h' v
//5.get the centers
6 H& y# R( u& A( [! a7 U for(;i<edge_count;++i){  N. C* i2 i! a. j& }1 P
  UF_MODL_ask_list_item(edge_list,i,&edge_tag);
5 K6 w& I: E9 f8 t. G  //UF_MODL_create_curve_from_edge(edge_tag,&curve_tag);1 q7 P: c2 E# K2 E/ v$ H% ?
  UF_CURVE_ask_centroid(edge_tag,cen[i]);9 `: u  \- r4 W- d% P
}
2 [7 f! `! o6 A3 {7 `5 w //6.create line( @6 A$ a; `2 v7 w6 I/ h
//UF_CURVE_create_point(cen[0],&point_tag);
( F0 p  {* N: ? //UF_CURVE_create_point(cen[1],&point_tag2);+ v9 p) E- s! h. u4 {5 ?
line_coord.start_point[0]=cen[0][0];" d5 ~( |( F5 z7 w
line_coord.start_point[1]=cen[0][1];- V$ S/ Z. k2 K8 f6 w1 A/ t  z
line_coord.start_point[2]=cen[0][2];( s+ }: Y6 K6 `0 W
line_coord.end_point[0]=cen[1][0];
0 ?# v4 k; C& C. o line_coord.end_point[1]=cen[1][1];
: n& [2 M; {2 b/ {1 I. C" Y line_coord.end_point[2]=cen[1][2];
( g: E( l0 x$ r/ w" Q; w UF_CURVE_create_line(&line_coord,&line_tag);
6 x7 S2 i8 c. e3 N" x! T //UF_MODL_ask_list_item()5 a9 ^2 x4 F- ^9 M2 {+ o6 t
    /* Terminate the API environment */
7 V6 M3 Q# j6 `6 z5 @    UF_CALL(UF_terminate());0 Q# o6 i! F2 b$ c& ?! f
}" V4 k3 F) s3 O1 N
/*****************************************************************************
5 V; b6 A" ]% `! N. t; a, y& S**  Utilities" E+ H& p% f' d, w' k  T; E
*****************************************************************************/% K9 F4 z, q. V0 D( v* M6 `/ R
/* Unload Handler8 w% h. U2 l) t6 j' K1 J9 Z$ u
**     This function specifies when to unload your application from Unigraphics.* L7 ~0 _# c( h7 J, Z  V( j
**     If your application registers a callback (from a MenuScript item or a, g: `7 |" n; X2 }1 B% j7 P
**     User Defined Object for example), this function MUST return
& |% Z& g% i" O- |3 F/ F! _**     "UF_UNLOAD_UG_TERMINATE". */
2 e: c- T+ i4 h' ~1 j. g' |) _extern int ufusr_ask_unload( void )
3 c% }$ R& o# a4 l& `" s{1 c' s( v0 r3 y- u2 _( T
    return( UF_UNLOAD_IMMEDIATELY );# Z7 z+ u; u. }- ?: E* w) ~9 n" Y/ \! Z
}
' E3 b* T3 s! o- l# X% i" p0 D
* ]3 l# U/ e# Y0 A# h6 u% K9 Q" D

评分

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

    我知道了