PLM之家PLMHome-工业软件践行者

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

[复制链接]

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

2

主题

21

回帖

270

积分

培训VIP会员

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

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

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

x
/*****************************************************************************- t; K$ V  c0 y) |; `4 p4 u- i
**- @5 t, X4 A- Z6 V
** test.c8 c( O7 n/ P% u  i* Y
**
9 z: n3 X, g! C* V  e5 v2 t** Description:
$ ^$ w' e6 ~; H) S6 b**     Contains Unigraphics entry points for the application.
) A' V$ B1 ~  M' B**
# p. {$ e1 \5 v; k6 N*****************************************************************************/0 |0 z- N% U' d! h
/* Include files */
" k# {/ i* Q- W& l1 O9 [#include <stdio.h>
  p' t5 O! A/ W: h" R#include <uf.h>' t, j# d$ J3 T; S0 {4 I: h2 B
#include <uf_ui.h>$ {# @2 R8 L6 ^
#include <uf_modl.h>
( M" B% A7 v9 J#include <uf_curve.h>
/ |' _2 A: c( p$ k2 J4 ~#include <uf_part.h>
& q8 j/ v  c- ?3 e#include <uf_modl_types.h>
/ _0 ~' g6 g  k# g  ?#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))$ |( F$ Z7 C) `5 n2 l& r0 A& a
static int report_error( char *file, int line, char *call, int irc)
# v5 g9 s7 K0 l- L5 y; i{
+ K. h" R; z# s* X- I/ D4 N    if (irc)
! b* O, q0 G1 W; o    {8 ]) a# ~+ c5 F. b& Y8 G2 h
        char err[133],
9 O0 S. D/ S# B2 T* n5 z             msg[133];
  W" [+ b2 g' D4 N        sprintf(msg, "*** ERROR code %d at line %d in %s:\n+++ ",
& s- T# x5 G  Q3 _5 c# q7 T  h            irc, line, file);# p. X/ ?. }9 w
        UF_get_fail_message(irc, err);
9 h2 [+ [* M% Q6 X4 D' Y2 i        UF_print_syslog(msg, FALSE);: v2 w% u& n7 S  c
        UF_print_syslog(err, FALSE);
2 K" S. `! H4 f/ T        UF_print_syslog("\n", FALSE);
- a1 G' z5 |3 `7 y- \( E/ N/ W        UF_print_syslog(call, FALSE);# O% F' d0 `/ p
        UF_print_syslog(";\n", FALSE);, {, L$ J# D5 o. O% |' n' x9 u/ {( Y% G
        if (!UF_UI_open_listing_window())
# G* F9 s1 l% Z: [# U        {( t  N4 w1 r. G5 G1 u
            UF_UI_write_listing_window(msg);
! y, C# n: t0 A, _' [            UF_UI_write_listing_window(err);( n5 J* H( X( f3 d$ ?; o0 C
            UF_UI_write_listing_window("\n");
& }6 F+ q& N, v# R3 N0 u: A            UF_UI_write_listing_window(call);# D7 W! [1 A. V. L
            UF_UI_write_listing_window(";\n");
5 Y+ x  y, Y2 v; ~  b7 s, m2 z        }' J) _& [8 E7 E, Q; V
    }
. c. {. M5 T" |4 f$ I- u' f    return(irc);; N) X% \" n* w/ K7 L0 @) [
}
: v# A- w; o' ^* m! W
3 {8 H8 ]) I2 {$ R( {/*****************************************************************************2 R6 M3 ]. A& ~  J- E% s- a
**  Activation Methods
1 X+ d/ u) b+ X* {7 a/ G*****************************************************************************// }- k3 ]. T, B1 c9 Q7 A
/*  Explicit Activation8 }8 i1 s) `- \
**      This entry point is used to activate the application explicitly, as in6 q5 i; q) z' V3 m5 |% f
**      "File->Execute UG/Open->User Function..." */
& f3 J5 P2 C! L* w  d2 ztag_t part_tag=NULL_TAG;
5 ^7 @, m3 L- O7 D$ I+ S6 ftag_t tar_tag=NULL_TAG;% U& q( x5 _0 N0 r% M
double origin[3]={0.0,0.0,0.0};
! p/ I% P- Z( [1 K0 x: d* ~# N: ychar *height="30";! o7 P6 m7 m. f6 c0 s; r7 L
char *diam="100";
# w9 Y. ]/ L9 T# _/ }0 Sdouble direction[3]={0.0,1.0,0.0};
5 p) V& z! T2 W1 M) atag_t cylinderfea_tag=NULL_TAG;7 M9 z' u* {1 @2 {9 ~) _. h0 B% k
uf_list_p_t edge_list=NULL;! w, {" O6 Q8 |8 p7 C' {. I1 ^- u2 m3 U
int edge_count;
6 ~+ i  b, O2 T! |* Ochar msg[256];2 L. {$ A+ ^9 k1 f1 T3 I, B, @9 C
int i=0;
, \1 u/ x. }; K. w3 L- e7 Ptag_t edge_tag=NULL_TAG;
' c+ c# c( T* d+ h3 g9 ^tag_t curve_tag=NULL_TAG;
& r! G: F' h" c! t, M) r2 w9 ~tag_t point_tag=NULL_TAG;
7 [- h. i2 u0 ktag_t line_tag=NULL_TAG;; r. l9 M6 A/ h, W/ s1 L, a) x2 f
tag_t point_tag2=NULL_TAG;2 I/ W( E8 \& H7 s# _" @
double cen[2][3];
: _5 M* D; e5 sUF_CURVE_line_t line_coord;//最好不要定义为指针
" n/ k! J; I3 x# G% V: ]extern DllExport void ufusr( char *parm, int *returnCode, int rlen )
9 _4 {; I3 h6 |" D6 P{+ o6 N  W" e0 |7 s6 H+ o- n
    /* Initialize the API environment */
  a" r( n' h1 c4 R6 x5 k    if( UF_CALL(UF_initialize()) ) , z- g0 }' M# b' r. s' e$ o
    {
: u8 z! x" W2 a  a% c- j        /* Failed to initialize */
+ x& a! V: A! M# e! e& m        return;: ]9 w" N& t' C+ l; i& f
    }
0 D( L. o) v: ^, C3 i( b% O& m9 F    2 O& A3 h* O( t
    /* TODO: Add your application code here */
: H0 K: G. ?0 U //1.create a new part0 I/ K7 m4 t/ g: }4 f
UF_PART_new("C:\\NX_work\\cylinder.prt",1,&part_tag);
5 @& T- X/ F. {5 d0 U //2.create a new cylinder
/ x+ Q/ [% a" Z7 x UF_MODL_create_cylinder(UF_NULLSIGN,tar_tag,origin,height,diam,direction,&cylinderfea_tag);
- C; t' R9 z- h1 O //3.get the edge list2 A; ~6 [7 N+ G+ f3 o9 Y
UF_MODL_ask_feat_edges(cylinderfea_tag,&edge_list);
5 U9 C) h1 L  e- {- ]5 Y$ Z6 Y1 |, w //4.get the edges
# P4 j" N* X3 ?1 g2 p UF_MODL_ask_list_count(edge_list,&edge_count);
3 k8 U9 \9 g/ C & A) ~( I; c* ~+ }
//5.get the centers$ }; t- b0 B! L5 y# ?
for(;i<edge_count;++i){
* l0 p( p0 j' [7 v  UF_MODL_ask_list_item(edge_list,i,&edge_tag);3 P0 W% q/ z% F# A7 |
  //UF_MODL_create_curve_from_edge(edge_tag,&curve_tag);
( t; B$ E( f" i& F5 w  UF_CURVE_ask_centroid(edge_tag,cen[i]);( D  E* a4 x) H" ?
}1 E: v+ {0 Z. ^5 |. l2 h& ^
//6.create line
4 P/ d6 E- k: Q! c5 |* h //UF_CURVE_create_point(cen[0],&point_tag);# ?' Q* K' d- G  T& E
//UF_CURVE_create_point(cen[1],&point_tag2);, u/ a( e+ i7 ]7 m$ w$ I) I
line_coord.start_point[0]=cen[0][0];0 T+ F5 a6 B4 ]2 ]9 w
line_coord.start_point[1]=cen[0][1];! k4 T9 [: m: _
line_coord.start_point[2]=cen[0][2];: Z9 v6 k' Y" m  S8 V
line_coord.end_point[0]=cen[1][0];
3 j7 B5 a# m9 ^ line_coord.end_point[1]=cen[1][1];/ A, x) p9 H% L1 n
line_coord.end_point[2]=cen[1][2];
' X7 M9 k, L1 M. A+ t% M* ` UF_CURVE_create_line(&line_coord,&line_tag);
$ j7 l- Y  M3 J  V/ H0 {( W  F, p //UF_MODL_ask_list_item()  W4 t: j4 e  q& J" O8 P: V
    /* Terminate the API environment */
. E& x, N9 o$ U4 L    UF_CALL(UF_terminate());
6 e* H- \: \+ w) v$ R7 _: ~  o}  n( e  I7 B' u; x; p5 b6 }) o8 R
/*****************************************************************************
! N  |$ Y, B3 p: M0 U9 q7 X**  Utilities
; M$ h, i0 i! c9 w% n- t! z" b8 b*****************************************************************************/
0 [8 R( l5 v3 F4 g/* Unload Handler4 K; c8 D+ R& y8 b* r
**     This function specifies when to unload your application from Unigraphics.) L& W7 \& f1 p1 H& j# e: L
**     If your application registers a callback (from a MenuScript item or a9 b+ ]( l7 c+ m* z7 Z7 a
**     User Defined Object for example), this function MUST return: h' L( T  H9 J- g# ^" k' `' \
**     "UF_UNLOAD_UG_TERMINATE". */
! D: o/ F* C% bextern int ufusr_ask_unload( void )
; k" Y" s, E4 S6 Z3 ~6 m% [. h{
! |& P) z/ y+ A, E0 T  |6 P- H% K    return( UF_UNLOAD_IMMEDIATELY );
7 ]5 L# v& x! G}% D- W# W& }. D  |+ g% N5 F4 v9 Q* b5 R

3 c$ s2 d; D9 }6 Y% L! b# _! [

评分

参与人数 1PLM币 +5 收起 理由
admin + 5 很给力!

查看全部评分

上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.doteam.tech
回复

使用道具 举报

全部回复1

2470

主题

1275

回帖

8万

积分

管理员

PLM之家站长

积分
82170
QQ
发表于 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二次开发专题模块培训报名开始啦

    我知道了