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

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

[复制链接]

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

2

主题

21

回帖

270

积分

培训VIP会员

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

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

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

x
/*****************************************************************************
& t- ]$ U7 D: T6 g0 I! s**& I/ y) G! d% \& r
** test.c' h( O/ x8 Y1 i  K& k
**
3 P4 g& v, [: m** Description:1 Q- N1 U; c( l5 |: Y  E
**     Contains Unigraphics entry points for the application.
' |' V0 G9 L( p8 o2 k**
  s5 E$ w6 E2 I- J/ ~* C*****************************************************************************/: T1 h: M1 @6 r" N# K( X+ Z4 C  [
/* Include files */
) ?. P( B4 _( N# u#include <stdio.h>% I8 w6 S/ K( ~4 S
#include <uf.h>3 A5 U) q& T, m" w( p0 m* W1 n
#include <uf_ui.h>
; \( c8 P7 g. i) s5 `/ G: w#include <uf_modl.h>
# a. q4 f. p0 `( m4 S#include <uf_curve.h>" ]' y$ \( D. E4 h1 }
#include <uf_part.h>
* b+ ~8 }( J- |9 p7 h: ?4 k#include <uf_modl_types.h>
. D2 `' L# C4 y% @* H1 |* @4 t5 X#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))
( Z5 b( p4 ?5 ~8 J* a( n7 vstatic int report_error( char *file, int line, char *call, int irc)
+ ?5 ?. F- ^1 m& P" ~{( E- ~9 `: h( B5 I( p6 A5 y  {
    if (irc)  B6 l! V0 `5 n$ o4 g0 j
    {
% P! a" K9 z4 ?9 }4 z0 c& j        char err[133],3 f8 T  x0 e7 F- _4 c. F- U; I
             msg[133];
1 n4 s, Q5 W" E2 m( j, u9 u        sprintf(msg, "*** ERROR code %d at line %d in %s:\n+++ ",
- ?- g6 D% f7 Z            irc, line, file);
4 q2 X" w$ P# N3 M) {; T/ C* Y8 f        UF_get_fail_message(irc, err);' Y4 M& J' x: D! ?* [
        UF_print_syslog(msg, FALSE);
4 O2 g; ]! B# r        UF_print_syslog(err, FALSE);
) k5 ]: @  A/ k" |        UF_print_syslog("\n", FALSE);
" `$ D( T5 V1 W1 b' p$ B6 R& g' H        UF_print_syslog(call, FALSE);  M- x- j# ?0 B8 `; y# @
        UF_print_syslog(";\n", FALSE);- b7 Q. {3 Z% e# W; ]3 a% ?! p) K
        if (!UF_UI_open_listing_window())
0 q5 @  P, M9 H& w0 D; T1 |        {3 H; q% E/ _- E5 M+ o
            UF_UI_write_listing_window(msg);" |' R+ ~% q2 `& @+ W- p5 I" K
            UF_UI_write_listing_window(err);/ W& U5 `. _. J- {
            UF_UI_write_listing_window("\n");
4 e# E1 Y2 y& ~' F$ f4 ]+ z            UF_UI_write_listing_window(call);3 W' M  a5 U: ?3 q+ X8 E$ P( X
            UF_UI_write_listing_window(";\n");7 C, M- [! q9 U% L7 O  K: x3 r
        }
3 I7 B, L* b+ z0 y    }
4 I$ [) ]/ T  ^& Q( F4 C& l/ m    return(irc);9 a' x- j: ^- t6 Z4 m# j. s3 m
}
# Z( J" G2 s9 v, v  I: ]+ k, J3 n! E% z% a  K* J4 ?
/*****************************************************************************! U3 x" B, C+ u* c
**  Activation Methods
0 A$ A4 X, K) ?4 t  U*****************************************************************************// W" v: M& V- B7 ]( O
/*  Explicit Activation
3 Z0 {* L, ~: J2 Q**      This entry point is used to activate the application explicitly, as in
7 X/ o" O! ~2 `% Y  Y) }**      "File->Execute UG/Open->User Function..." */1 ~, _. Y, i. y1 n2 o" N
tag_t part_tag=NULL_TAG;
. w% E9 D+ U5 R: c0 Wtag_t tar_tag=NULL_TAG;
7 P% @) n/ L& o4 f# xdouble origin[3]={0.0,0.0,0.0};/ [. [+ |& S8 E7 Y- G  W8 E
char *height="30";
% a% f2 e3 k& j2 J- p. H/ `char *diam="100";9 W% T9 i  t/ ^& ~8 O9 Z) [
double direction[3]={0.0,1.0,0.0};, W, e, k, g1 o1 z- c- k! [3 t
tag_t cylinderfea_tag=NULL_TAG;
4 V1 h- ?' h/ |! I3 luf_list_p_t edge_list=NULL;' D$ m( H, N' s* G# |/ f
int edge_count;; g$ M5 h& n. P' V7 M1 s) @$ e, v3 b
char msg[256];9 p9 X/ W0 A1 G* I! ^, G7 S
int i=0;
. T0 Y  Y4 d+ ^) W' f7 Ktag_t edge_tag=NULL_TAG;, _% y4 Y0 h  A2 m, \: l
tag_t curve_tag=NULL_TAG;9 Y3 q& n9 g" m. B8 u
tag_t point_tag=NULL_TAG;
/ m' A. d* a# }$ l$ qtag_t line_tag=NULL_TAG;
2 l! A" H0 Q$ q& p& [+ u7 Jtag_t point_tag2=NULL_TAG;1 j5 z# q# J2 H! Q8 x; {1 U( x
double cen[2][3];
5 a" I, ~7 H  A# J5 K7 SUF_CURVE_line_t line_coord;//最好不要定义为指针
3 P7 k" A6 z+ \, U' g9 {extern DllExport void ufusr( char *parm, int *returnCode, int rlen )& }6 Y* i8 g1 T2 x$ W( [: h6 w
{
9 s( c% S6 k* ?0 B    /* Initialize the API environment */& ^! k; p& t6 w' F1 f) v
    if( UF_CALL(UF_initialize()) )
% z: X) g" {. w- o6 l- d    {+ N0 ^1 h3 W; I, A! t/ x6 J0 j
        /* Failed to initialize */" R) c. \& B- e* y& U
        return;/ h# x5 n* d. h* r8 Z
    }8 I/ c( m$ b- ^3 }
   
/ t- `$ h2 [  z    /* TODO: Add your application code here */
" E+ u# H+ M7 S! n //1.create a new part) o$ }% \- U( X0 ?
UF_PART_new("C:\\NX_work\\cylinder.prt",1,&part_tag);
4 o0 A7 ^9 k& L9 }" \- F //2.create a new cylinder
# e: y1 C! ~7 x* Q3 O) I6 ]2 b UF_MODL_create_cylinder(UF_NULLSIGN,tar_tag,origin,height,diam,direction,&cylinderfea_tag);  o& h9 T: F! `# ?7 E
//3.get the edge list
% r2 Q$ k2 Z# e1 D UF_MODL_ask_feat_edges(cylinderfea_tag,&edge_list);  X  h  K) l" h7 \8 A  Q( o% ?2 E( r
//4.get the edges
9 Z. J* h; j3 ^# U& I, n UF_MODL_ask_list_count(edge_list,&edge_count);
$ \7 E2 L4 B, R  Z* ~5 P 0 g) j1 a6 `' W2 m& E' n' U% A% e, O
//5.get the centers
0 ~5 i2 N8 j: @. d( g3 D: L; G for(;i<edge_count;++i){
5 n# J. h+ |% V- t  UF_MODL_ask_list_item(edge_list,i,&edge_tag);5 g$ B, r* W, {
  //UF_MODL_create_curve_from_edge(edge_tag,&curve_tag);  x" f% }: c) ?) ^0 n6 l
  UF_CURVE_ask_centroid(edge_tag,cen[i]);
& X$ _$ u( R3 _: w8 } }
! f% A. j! ?' k( i //6.create line
1 f: i" M; S3 y: f9 p" l9 k; { //UF_CURVE_create_point(cen[0],&point_tag);; o; q" i7 p  B
//UF_CURVE_create_point(cen[1],&point_tag2);
! e0 I4 h- h4 k( h line_coord.start_point[0]=cen[0][0];% A) N: {8 _0 ?$ S9 y% Q
line_coord.start_point[1]=cen[0][1];
: A* t0 P: i9 v4 ]$ P line_coord.start_point[2]=cen[0][2];  e* c  c' C# v6 i3 a
line_coord.end_point[0]=cen[1][0];
9 ]6 g  J6 \4 c, e$ s& f line_coord.end_point[1]=cen[1][1];/ w( U5 q& [( K: v3 g# i# G
line_coord.end_point[2]=cen[1][2];
8 E, a3 ]1 \# j$ q6 j UF_CURVE_create_line(&line_coord,&line_tag);
; m3 ~+ X5 J- X: s/ @9 W$ I5 w //UF_MODL_ask_list_item()+ ]$ V$ P0 s8 w
    /* Terminate the API environment */. F& |9 `) n. h2 D, Q/ X) r
    UF_CALL(UF_terminate());
. j1 t+ p& _3 `" S) p}) P4 g4 u3 J" [- ]% H
/*****************************************************************************' T5 i9 D! L7 I4 k
**  Utilities  F' m( V  e9 A6 ~
*****************************************************************************/! y  k& S6 q4 z# j
/* Unload Handler
  q7 Z2 u9 k5 c: g! b4 c**     This function specifies when to unload your application from Unigraphics.3 V4 n& v8 ?% o/ j5 Q9 Y5 Z& [4 ^
**     If your application registers a callback (from a MenuScript item or a4 Q* Z3 G6 a$ J" H: R9 p
**     User Defined Object for example), this function MUST return, B# y2 G3 N* Q* w1 W8 h
**     "UF_UNLOAD_UG_TERMINATE". */  e3 _+ x5 Z' `- T6 K2 g6 j
extern int ufusr_ask_unload( void )0 m# k) @6 N% O% H1 S5 ^
{
8 e" o, w& U( w! F. v    return( UF_UNLOAD_IMMEDIATELY );+ S% X# H' r0 {8 s9 ?
}2 @# ]" F6 o$ M8 \7 ?# V( H! @$ z
" n( H& ?& A( \, y* ^$ c

评分

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

查看全部评分

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

使用道具 举报

全部回复1

2471

主题

1276

回帖

8万

积分

管理员

PLM之家站长

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

    我知道了