PLM之家PLMHome-工业软件与AI结合践行者

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

[复制链接]

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

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

且听风吟 楼主

2015-7-26 22:12:05

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

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

x
/*****************************************************************************" n! G: A9 ]4 X9 K0 ^1 J
**
( r. I" _% |9 z5 d# |  b) |** test.c1 U; S  Y8 r3 s0 q; H& X' I
**8 F  V2 g/ I* f; m4 c
** Description:
4 H/ O# [/ w" k: s( i; c" p**     Contains Unigraphics entry points for the application.
8 w" B* I4 P% m& V0 l5 O( Y**" z( A8 S& g  v) `
*****************************************************************************/! n8 y$ \2 g6 M' Z* J3 W! W" `
/* Include files */9 [- o5 A# r# `" [5 E+ n1 h: y
#include <stdio.h>/ r0 p  }2 S" A! V/ f+ B
#include <uf.h>" l3 O$ T! L+ b6 |9 A7 v1 {" d9 D
#include <uf_ui.h>
  @( O0 \+ x. M#include <uf_modl.h>/ x9 n# p9 z+ K0 M. T
#include <uf_curve.h>
+ s: {. l; h" F  I9 h! \1 y#include <uf_part.h>
( z4 V6 B3 H) S, v0 k#include <uf_modl_types.h>
& G3 w* `3 ]7 }7 b#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))
; w" N" u# Q% ]" O8 z& R* Ostatic int report_error( char *file, int line, char *call, int irc)
( m5 [" d4 [: J* @" \4 }( q# V{
; T( i. }9 s+ s    if (irc)* {4 a& `8 v: D1 S& Z. V
    {
  M7 T7 q# U' \8 ?6 v/ Q$ D6 Y3 h: l        char err[133],1 V( i: y) M5 t  O, f
             msg[133];
, j6 k7 i. A, v( u3 u4 a* k; s  v        sprintf(msg, "*** ERROR code %d at line %d in %s:\n+++ ",
8 g9 l) G. i! J' z, O  E            irc, line, file);
1 k+ y3 I9 Y! c: v2 O' J        UF_get_fail_message(irc, err);$ r# F1 ?, g0 A& {
        UF_print_syslog(msg, FALSE);, I" {  J  Y6 z
        UF_print_syslog(err, FALSE);; F) D1 W% o1 N5 y4 Q  k+ K
        UF_print_syslog("\n", FALSE);
" p9 m1 J" {; P7 q* G; C        UF_print_syslog(call, FALSE);
* D: u3 w; {! F3 E# @( S% l5 C5 X        UF_print_syslog(";\n", FALSE);
) Y  V' q6 B+ a6 R# r' X7 }$ B. j        if (!UF_UI_open_listing_window())
3 n( O0 b7 {- L+ F6 w' T3 H        {. o* @3 f; r( c% i
            UF_UI_write_listing_window(msg);
# Q/ ]% z6 e! g( Q( A& a$ p8 ^            UF_UI_write_listing_window(err);
1 s- _# O) M5 a% S" ^; `+ Y            UF_UI_write_listing_window("\n");' f- A  Y) @# t. j; j
            UF_UI_write_listing_window(call);
/ K* Z* u6 |5 V            UF_UI_write_listing_window(";\n");# f" h- a3 T. u, C( h& R& C" u
        }" i* \. |- U+ J7 a! _$ K, V) v
    }
$ I9 I: J& q" B! m    return(irc);# C0 ]4 C7 T/ d3 l
}% `0 Z% i5 Y3 r7 _, G$ X& s
8 o/ M( F: a" z( m- P
/*****************************************************************************0 Q( M: _. {1 b4 z- y, `
**  Activation Methods
/ ^8 g2 i! V3 y2 t*****************************************************************************/& K9 c; L: Y, s! t  O7 X
/*  Explicit Activation
# H1 h8 }5 c- c' x**      This entry point is used to activate the application explicitly, as in# }( w' u" f2 n$ C5 I1 O% {0 g9 U' a
**      "File->Execute UG/Open->User Function..." */& U! \* K) n& d( X6 X& ~1 U
tag_t part_tag=NULL_TAG;$ i5 m4 V$ S( w5 d1 `. K! H6 @
tag_t tar_tag=NULL_TAG;
( c$ g) W# C: jdouble origin[3]={0.0,0.0,0.0};
7 C$ y1 ]" N! k/ J, Z1 X9 Tchar *height="30";# O  u- O& U0 O7 [, Q4 h/ o" ~& n
char *diam="100";' I9 n3 o7 n& S, h: o
double direction[3]={0.0,1.0,0.0};$ E1 q: D, l# x1 R# @  b
tag_t cylinderfea_tag=NULL_TAG;
2 E  n" L+ G$ @# O/ P% R3 n' Tuf_list_p_t edge_list=NULL;3 ~: M' T. `6 a# k
int edge_count;
$ a+ A' k+ ^4 i. J' k' A: Qchar msg[256];
& }" b% I; r9 @7 }, z  _" Tint i=0;3 ]8 e% O4 d$ V8 N
tag_t edge_tag=NULL_TAG;
7 V& u( s) i) C3 U9 ]3 Xtag_t curve_tag=NULL_TAG;
% k' N4 u; ?/ Atag_t point_tag=NULL_TAG;
; p, N% A# N& D9 z$ X) y5 G6 {tag_t line_tag=NULL_TAG;
& V% _) D. ^+ ]  P- y9 btag_t point_tag2=NULL_TAG;  J% z" t% p7 u' f& w4 X' U
double cen[2][3];
5 V  d; a' v. A, KUF_CURVE_line_t line_coord;//最好不要定义为指针) @3 n5 r+ P+ Q; D6 }
extern DllExport void ufusr( char *parm, int *returnCode, int rlen )
+ N( f% s1 _0 F4 n{! k- \6 _5 w+ |6 M- c+ v8 s
    /* Initialize the API environment */
' c* `* A  `$ l) _! w3 x5 P    if( UF_CALL(UF_initialize()) ) , \7 L* b1 p  z# }8 W1 H, \* V
    {  I. `. \& ^1 }
        /* Failed to initialize */
0 I; Z' ~9 w3 |/ J& u) e9 X2 [        return;1 ^- g" `" ~4 p0 x
    }6 Y5 Z6 X4 x" y: d; a) T( [2 Z
    ! a9 V- D, d* O9 d, d
    /* TODO: Add your application code here */: n) r3 x, z* A, L4 D4 q( X
//1.create a new part$ o/ G8 G' R' B  J( e  t: y
UF_PART_new("C:\\NX_work\\cylinder.prt",1,&part_tag);
# ?9 T1 [: t% {6 o //2.create a new cylinder7 o3 v" A5 X9 W5 f& f; i4 T
UF_MODL_create_cylinder(UF_NULLSIGN,tar_tag,origin,height,diam,direction,&cylinderfea_tag);
" b! U* y2 o( P0 m$ h- M# @0 ^9 ^ //3.get the edge list
2 P& m3 u  V$ ^ UF_MODL_ask_feat_edges(cylinderfea_tag,&edge_list);' m7 r1 \- B( {9 i! r
//4.get the edges
" K6 s3 m& g! S% Q UF_MODL_ask_list_count(edge_list,&edge_count);# s* r& V- e4 N& n

( }$ }: b: [  X //5.get the centers& |( ]6 U/ c) j- V3 V7 I
for(;i<edge_count;++i){
) O% T# G" d. v  UF_MODL_ask_list_item(edge_list,i,&edge_tag);
! G# @% q6 D. Y/ _$ a* W  //UF_MODL_create_curve_from_edge(edge_tag,&curve_tag);" c; v2 j- E# ~3 @
  UF_CURVE_ask_centroid(edge_tag,cen[i]);. ^' V7 K  X) H3 ?- \  w3 l
}6 D( Q- R: N) {& G1 E% Z
//6.create line
+ a, i7 \* u6 o+ O* P //UF_CURVE_create_point(cen[0],&point_tag);8 e  H! ?  a0 r# x8 }" A
//UF_CURVE_create_point(cen[1],&point_tag2);7 p3 W7 L5 C) Q+ I! x
line_coord.start_point[0]=cen[0][0];3 h8 Z1 @# }: |2 a8 @; V
line_coord.start_point[1]=cen[0][1];
$ C1 \# |" P# Z2 n line_coord.start_point[2]=cen[0][2];
' `) y- Y0 ?1 g( m" ]( J0 W line_coord.end_point[0]=cen[1][0];
4 y$ R6 Y* s- O, f& \ line_coord.end_point[1]=cen[1][1];
3 S3 |- H* [( Q5 t7 M: A. h; f line_coord.end_point[2]=cen[1][2];& L- Y* P' [. S5 P9 h
UF_CURVE_create_line(&line_coord,&line_tag);" K0 G* ]7 X% t) P+ t
//UF_MODL_ask_list_item()
3 V$ _6 B" Z5 ?    /* Terminate the API environment */$ R2 t- _- O+ D! W& H
    UF_CALL(UF_terminate());
$ f7 Z% k! \8 i6 R' J& h}
: X3 e! _' U% N: g6 Y; x. e$ O8 M/*****************************************************************************+ x! z4 z/ C  F; U3 x6 k
**  Utilities
7 W- ~/ L2 |9 y) t*****************************************************************************/
) w& W" {$ O+ }$ U, a/* Unload Handler
8 O1 r; |, k$ q8 \**     This function specifies when to unload your application from Unigraphics.
9 B% A, M, T# c2 q**     If your application registers a callback (from a MenuScript item or a# h1 w, U& W* W+ Q$ D
**     User Defined Object for example), this function MUST return& v3 [5 C' P, K6 x, R
**     "UF_UNLOAD_UG_TERMINATE". */
6 d: m! o* I5 W7 Gextern int ufusr_ask_unload( void )9 Q, X' C" J/ `; i* W8 B  z
{
+ W. n& \& q) a7 ]$ g# A' D    return( UF_UNLOAD_IMMEDIATELY );
4 W/ |# G; I! j& r# i}9 _: |  }5 H# }9 Z8 e! j
: R( [: ^4 _: A4 V% z) N

评分

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

    我知道了