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

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

[复制链接]

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

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

且听风吟 楼主

2015-7-26 22:12:05

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

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

x
/*****************************************************************************1 M; t/ ^" h. N  y* S& e$ j
**
: D, }: a/ q" c% G** test.c
; A2 n: \0 M$ c% u: a**  T- O) R; O8 x
** Description:
9 L6 A" s8 _6 i7 ^8 D2 ?/ m- j5 _**     Contains Unigraphics entry points for the application.
9 K9 v) P, k6 D**' M& Y, T6 I$ f$ U
*****************************************************************************/
% h6 n& N: G! b2 n/ B/* Include files */
8 N: i  A7 e: H#include <stdio.h>
( j1 S+ U, C& {" \; N  V9 V" y#include <uf.h>. B# {) E% i' |' T  k7 }. i
#include <uf_ui.h>
& H# w# Q3 h5 s8 h- j% X#include <uf_modl.h>
1 I5 _+ h7 d# @3 |#include <uf_curve.h>0 f3 Y" P. S% v5 v+ X( ]. k
#include <uf_part.h>
  O6 ~: i7 |. ]#include <uf_modl_types.h># ?( ?  R2 H, q; r/ _
#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))
, B4 N* {+ _% O0 ?. tstatic int report_error( char *file, int line, char *call, int irc)
9 @  D5 Z2 S3 v1 D8 M) c! I{) T. r1 h  X/ W4 F
    if (irc)
- |9 S4 E$ z, k' _8 M4 w' G    {/ M2 j9 M: i( v$ J# s( ^
        char err[133],( i& f7 c6 C: t/ t6 ^' {5 E  P/ C, a
             msg[133];
: n  B* f. n( M: i- ^6 B3 Z        sprintf(msg, "*** ERROR code %d at line %d in %s:\n+++ ",$ A3 G* d. ]9 n! I0 E: K) f& Z
            irc, line, file);! n& S0 z2 a: J+ R; w
        UF_get_fail_message(irc, err);
% o- M' {8 D; ^3 C- V6 @1 Y        UF_print_syslog(msg, FALSE);
" S# H7 o7 i) [/ u9 |% O' I  |' W        UF_print_syslog(err, FALSE);
+ t% I6 j: o& T, F  ^- e5 C( ?3 m9 ~: Z        UF_print_syslog("\n", FALSE);7 z5 `: N  Z; r& l
        UF_print_syslog(call, FALSE);  X+ h6 N7 T% ~6 y& u8 N
        UF_print_syslog(";\n", FALSE);
; \) _% A) {( O8 F; T! q        if (!UF_UI_open_listing_window())
  Q/ S" o' H7 D. }: f        {
& _* Z7 e' U( G' ^' U4 T' e% X            UF_UI_write_listing_window(msg);& G, K* ]) f3 b
            UF_UI_write_listing_window(err);
+ ?6 }* N- h0 }1 i            UF_UI_write_listing_window("\n");) K, ?, \+ @- X! p! V
            UF_UI_write_listing_window(call);) p6 o4 m) n- c" s& y* w% I/ I6 l
            UF_UI_write_listing_window(";\n");
. s( S' Y/ a5 v; q2 |9 c1 J        }
, s* |$ {# n* t* L3 h  O    }
9 L" A, {- `/ _% q' f    return(irc);8 d! O  J0 O) p* y; p+ G( s5 T) m& e
}
- i3 p: N+ v* z1 ^- S
( l- a& |6 H* q# \+ s/*****************************************************************************
+ G7 L4 j3 x4 x) |9 q**  Activation Methods
5 N( p6 h! k: p! U, V$ j5 U5 F*****************************************************************************/
* S  k6 @( r) d, n/*  Explicit Activation
$ S+ M* A8 q! b+ D**      This entry point is used to activate the application explicitly, as in) G. l# a9 V9 E+ J" K
**      "File->Execute UG/Open->User Function..." */
0 e* ?' O/ A  n7 y$ Ktag_t part_tag=NULL_TAG;
2 g: I0 ~" N  y3 k% `1 Dtag_t tar_tag=NULL_TAG;) r2 p- t- e4 B8 E
double origin[3]={0.0,0.0,0.0};
$ d5 [8 ]* z% _. L. Ichar *height="30";
& F: U& f' H0 \( l; e5 {char *diam="100";" ]( f$ T# N1 ~5 N: n
double direction[3]={0.0,1.0,0.0};) t1 m3 R7 V& u3 h$ ?
tag_t cylinderfea_tag=NULL_TAG;
' n! c# ]  S6 p- ?& a9 ?9 \9 xuf_list_p_t edge_list=NULL;
' R4 m) t% f' ^int edge_count;- ]- \* J% T( R1 `1 }; g
char msg[256];8 l$ G( f5 s* P) u2 z( N
int i=0;; ^1 p/ i# }4 s7 d+ W4 D
tag_t edge_tag=NULL_TAG;
5 `4 @& U7 O- u. dtag_t curve_tag=NULL_TAG;1 n0 E2 A7 q" e( L0 d6 O
tag_t point_tag=NULL_TAG;/ A6 M0 [: v) s/ N
tag_t line_tag=NULL_TAG;. A# X# u: U& ~4 ?# V" o
tag_t point_tag2=NULL_TAG;
& B4 N. T" I8 cdouble cen[2][3];5 x! A/ z$ K  N( ]; w
UF_CURVE_line_t line_coord;//最好不要定义为指针) K" L/ }" s& t$ |+ `- e# c
extern DllExport void ufusr( char *parm, int *returnCode, int rlen )7 G( f9 s6 b) j( [
{
% q$ o  r: S4 P    /* Initialize the API environment */+ A. V% r) m, M3 p0 Z1 O- ^
    if( UF_CALL(UF_initialize()) )
% ]! G; r: c+ j    {
1 T/ A, w9 f7 A  n+ e        /* Failed to initialize */
# M, Y! _$ V2 {/ M* ~        return;3 {( M- `  w: ]* [
    }
, L6 h# \5 S- t8 g: B, n0 J    ) S! V9 e9 ^, Q2 c& N3 ], W
    /* TODO: Add your application code here */
0 `( s# G( C) p+ E$ V //1.create a new part" V* f' {3 K/ y2 q/ h
UF_PART_new("C:\\NX_work\\cylinder.prt",1,&part_tag);
+ V4 X) ~5 ^5 m0 ~/ \& } //2.create a new cylinder
1 ?: e" ~3 e/ s* O! [ UF_MODL_create_cylinder(UF_NULLSIGN,tar_tag,origin,height,diam,direction,&cylinderfea_tag);
, {  \8 c5 }  a6 r5 \" S" M //3.get the edge list( o" a$ B# A( y- j. Q: M; M; p6 R
UF_MODL_ask_feat_edges(cylinderfea_tag,&edge_list);  {* P7 Z4 C; [+ L$ k( H4 C
//4.get the edges
9 a/ y' l! y; l( N5 ^4 Z5 [. n" ^7 d UF_MODL_ask_list_count(edge_list,&edge_count);+ ?3 o9 `  T5 l- q

9 [  F& T$ g) S6 W //5.get the centers
& M2 Q% Z2 k% }" j for(;i<edge_count;++i){5 k/ [& a9 R0 [8 @" e2 I& @
  UF_MODL_ask_list_item(edge_list,i,&edge_tag);
; I$ V  k5 N8 u5 H  //UF_MODL_create_curve_from_edge(edge_tag,&curve_tag);
) M5 f) a* j8 t$ U* O& X! ~" O6 _  UF_CURVE_ask_centroid(edge_tag,cen[i]);/ \' z- P! J/ B/ a
}
) ?* R1 d( d: o# P //6.create line
' m( z  E5 e) @ //UF_CURVE_create_point(cen[0],&point_tag);% A5 V5 E) S9 J: H! V0 [
//UF_CURVE_create_point(cen[1],&point_tag2);
4 o4 P  a4 s) e1 H line_coord.start_point[0]=cen[0][0];
& w4 s& I+ k, B+ W  p line_coord.start_point[1]=cen[0][1];4 C# N& y, X3 G; Q
line_coord.start_point[2]=cen[0][2];. R* }1 B! v: r# s. S! H4 D2 C
line_coord.end_point[0]=cen[1][0];8 O) O; {3 ?4 g2 U
line_coord.end_point[1]=cen[1][1];
3 Q$ R1 m* c+ w line_coord.end_point[2]=cen[1][2];
  Z# |& f8 W* |) t, ?( t UF_CURVE_create_line(&line_coord,&line_tag);7 h+ B/ m0 m% O  h8 N2 v: j
//UF_MODL_ask_list_item(), e& [& p( ]9 r
    /* Terminate the API environment */  |' \: [1 |+ ~
    UF_CALL(UF_terminate());
, H- ?7 M6 E: T$ O8 f}
( U# I, b8 `. c$ w; _% V" z  o/*****************************************************************************, I# Z. ]- k1 f
**  Utilities& q- W: D' e4 m0 p( e4 S8 p, ]
*****************************************************************************/$ `1 N# L' n7 m+ c3 `! G
/* Unload Handler
" U) I5 X& u* `- g; {**     This function specifies when to unload your application from Unigraphics.( ^" K; S! }" P6 w# h' R
**     If your application registers a callback (from a MenuScript item or a
9 Z# @/ u0 ~& A**     User Defined Object for example), this function MUST return+ S6 q& n, D6 d$ @) a. y
**     "UF_UNLOAD_UG_TERMINATE". */) p8 c7 w! ^: n
extern int ufusr_ask_unload( void )
: R4 \# N6 Z) f0 A4 J4 \{$ I# G5 m; z! W/ l% m% {" Q3 @
    return( UF_UNLOAD_IMMEDIATELY );$ ~$ g+ f2 U7 |0 I% O: ]* K
}/ d0 N- e" _' m; j
; i' l0 G# \% b6 P, _; E9 F* _4 Q

评分

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

    我知道了