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

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

[复制链接]

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

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

且听风吟 楼主

2015-7-26 22:12:05

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

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

x
/*****************************************************************************! o0 |0 s1 C! D" S3 g+ Y
**
% z4 ?1 q7 k2 ^/ L** test.c' H7 p; i& r1 N8 @. t
**
2 a. e$ Y6 P# K6 Y** Description:  B4 y) S& f% e0 f: w# g# o
**     Contains Unigraphics entry points for the application.' L4 {; r2 U& `" z& W' X
**: N4 A3 J- N+ s9 `, P6 q" L
*****************************************************************************/
+ C  G$ ?) o# B7 u& j/* Include files */. x" G* U9 }% B& c$ Z
#include <stdio.h>
. x! Q' `- k% h% K8 k#include <uf.h>
6 y" H  ~# W2 Q- Q3 |" x; T, N#include <uf_ui.h>
! ~/ _0 w+ l, I' o5 P#include <uf_modl.h>
# s' S% n* q% K#include <uf_curve.h>$ |1 Y) f( O; D# u- g( N+ F
#include <uf_part.h>
" e# S. v6 s; K, B. O1 `#include <uf_modl_types.h>
* K- R% d! S0 d- w5 k/ w#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))& A8 X  e  e/ N$ A4 Q7 f
static int report_error( char *file, int line, char *call, int irc)! d1 R5 ?7 \0 x. \
{
) Y( i# z! u! o& B) ?, a    if (irc)
5 Z- j, R( Q1 ~3 O" l9 i    {4 o" r" x) B' Y: t
        char err[133],4 z- u- T5 d- N+ v# [4 D: g& e/ I
             msg[133];& i" s( ?1 K! B+ t* y" F9 I) U. a7 J
        sprintf(msg, "*** ERROR code %d at line %d in %s:\n+++ ",
2 O- Z( ~+ _* w1 p            irc, line, file);9 U* M5 ~* Y# |! |
        UF_get_fail_message(irc, err);
/ ^! w, H# g" r( U6 x6 `  U2 F# V        UF_print_syslog(msg, FALSE);
5 z7 H: n  x' R2 f2 N        UF_print_syslog(err, FALSE);% h1 J. K. ?/ T) L5 g$ G
        UF_print_syslog("\n", FALSE);
# r1 N) U& o' a9 j        UF_print_syslog(call, FALSE);' F1 e- W% v! B' _: @
        UF_print_syslog(";\n", FALSE);- l( [/ B- _# }  P7 w
        if (!UF_UI_open_listing_window())4 R2 k, I+ d' n* K( _& P9 D0 h8 ]
        {# j  @1 x$ o- Z" }2 y6 s# J
            UF_UI_write_listing_window(msg);
& o& i3 M. k* y* @1 v            UF_UI_write_listing_window(err);
+ W' r$ V$ V+ e6 o. b            UF_UI_write_listing_window("\n");' K: E! Y6 f1 W
            UF_UI_write_listing_window(call);
( }6 w7 l4 x. r8 D            UF_UI_write_listing_window(";\n");5 m/ X% k( D9 z) ^
        }( G$ ^. e+ `4 Y9 P& C
    }" P9 [) a- W9 a' c6 N  g. a, n
    return(irc);
' f/ Z+ \6 A. U8 F0 l: S}2 z9 G- h. g" U1 w4 K/ T3 [

; @5 ~4 f8 K, r4 ?! H/*****************************************************************************
7 W7 Y1 Y' B1 H* D: x' H/ S& i**  Activation Methods
6 G6 V# ^3 I. J  G! m. u/ v*****************************************************************************/
4 K# K# p$ G3 X& _4 z! K' F; ?/*  Explicit Activation
  D, S7 T4 w5 u, t$ U* ]**      This entry point is used to activate the application explicitly, as in& J- n0 f- }1 N4 U. E" w
**      "File->Execute UG/Open->User Function..." */
2 J0 }  ?$ a+ y* V7 k  F7 l0 ftag_t part_tag=NULL_TAG;
* M9 c  b: g! u4 P; r+ ptag_t tar_tag=NULL_TAG;8 Z- U8 ~& l. Y- z2 a. y
double origin[3]={0.0,0.0,0.0};& Q' W* r" \# V7 z
char *height="30";5 t8 q9 ?+ P, O; `: E
char *diam="100";
6 e3 d. j9 V2 _2 W3 {% ldouble direction[3]={0.0,1.0,0.0};% b! D. @& ^# ^/ @
tag_t cylinderfea_tag=NULL_TAG;* E" W% A2 ]( l6 T  I* k
uf_list_p_t edge_list=NULL;
/ |# r, P6 U9 U+ \% p% I2 W* Bint edge_count;
1 C5 G0 e# u& ^& [" z2 h- kchar msg[256];
) h0 }7 i* d! j! J: e* Tint i=0;, a9 W9 r& f- k. H
tag_t edge_tag=NULL_TAG;
* y9 _4 ^( x1 ]+ Ctag_t curve_tag=NULL_TAG;( W' q5 K7 ]! y  b# W* s
tag_t point_tag=NULL_TAG;
9 d, @; b7 h; B/ h( N1 \9 ]tag_t line_tag=NULL_TAG;
' ?8 B  b8 D( {0 ?! Rtag_t point_tag2=NULL_TAG;
6 j6 l" p5 A- N3 Mdouble cen[2][3];) I' @* U" B* f
UF_CURVE_line_t line_coord;//最好不要定义为指针
5 T/ ^, r4 b1 O+ w  b+ |1 ~5 s5 ^extern DllExport void ufusr( char *parm, int *returnCode, int rlen )
3 k, h5 K/ v1 ~0 z$ S{- p7 |; U' d3 [- C1 T" G
    /* Initialize the API environment */
6 Z9 m9 ^5 ]5 G; u5 ^    if( UF_CALL(UF_initialize()) )
3 s+ _6 p1 o$ ]    {9 i3 x4 l: M# C& K- [& n
        /* Failed to initialize */5 d5 I* K/ t- @/ r% Z. g/ w9 u2 [
        return;
1 Q+ h' u0 w9 s    }" F1 [$ V- z/ U# S- j4 S
    8 e+ O( @( c7 o3 U# m! S# U
    /* TODO: Add your application code here */
8 @! M/ M5 Z% r1 O+ p1 ] //1.create a new part
* i# v0 G* y7 K UF_PART_new("C:\\NX_work\\cylinder.prt",1,&part_tag);: r& r% N" }1 @9 y
//2.create a new cylinder
  q6 t* @% U" Q6 I9 J- Q# B1 m UF_MODL_create_cylinder(UF_NULLSIGN,tar_tag,origin,height,diam,direction,&cylinderfea_tag);. B9 j. W! t9 u* _7 o3 w+ N8 z9 n
//3.get the edge list
8 f% A% B* ]( `& g; q! n- m  j5 o* \ UF_MODL_ask_feat_edges(cylinderfea_tag,&edge_list);+ d$ W/ h9 ?5 K# g5 a
//4.get the edges
5 N* S" n+ p6 S" E7 \$ o  j1 Z UF_MODL_ask_list_count(edge_list,&edge_count);' b: r. V; |( Q4 w6 p/ F
/ m0 m# ]* M. Q6 C
//5.get the centers" R6 [- S6 _$ g; w, z: O
for(;i<edge_count;++i){
5 v' y! A. @1 M( P  UF_MODL_ask_list_item(edge_list,i,&edge_tag);
' I! J7 g1 [8 l+ k# x  //UF_MODL_create_curve_from_edge(edge_tag,&curve_tag);* m# z2 K/ ]6 ?* ]
  UF_CURVE_ask_centroid(edge_tag,cen[i]);' K7 r% H6 V+ _- `* E- N
}( {4 a: D4 N# a2 y- Q
//6.create line
2 B* a" w% X! c, ^& v/ g6 [+ w, [ //UF_CURVE_create_point(cen[0],&point_tag);, g9 l, Z# D$ ^0 a
//UF_CURVE_create_point(cen[1],&point_tag2);
. n; L' l! ]( l- S: M, L line_coord.start_point[0]=cen[0][0];
- m& O5 G+ h+ I0 }" k$ i  Y$ H line_coord.start_point[1]=cen[0][1];1 k& q- Z# X8 J5 @7 `, ~
line_coord.start_point[2]=cen[0][2];
0 b# ~, |% `% L& { line_coord.end_point[0]=cen[1][0];
0 T: \+ d& I: T: d' o; x+ o' z line_coord.end_point[1]=cen[1][1];8 q( Y" A; `% `6 s
line_coord.end_point[2]=cen[1][2];; L6 z2 G. w: k  J! i# B
UF_CURVE_create_line(&line_coord,&line_tag);
4 i* U. n3 U! i- ~# P% P //UF_MODL_ask_list_item()
6 B$ b( S9 g& \- a4 s2 A7 z( T    /* Terminate the API environment */$ t+ g# I9 s; i
    UF_CALL(UF_terminate());
* Q& @! ?  p) a3 h}, S/ n  H; @; f' ~! t* m1 ~
/*****************************************************************************) A' R1 u9 F& g+ |$ T2 O
**  Utilities
$ Q9 f  e( c" G( c5 R: [*****************************************************************************/, t% b, N3 p3 A/ \
/* Unload Handler
  t1 P, H0 B$ w5 H**     This function specifies when to unload your application from Unigraphics.
6 v  `$ W2 e4 o**     If your application registers a callback (from a MenuScript item or a$ `: U' N$ M2 B6 D" ~6 @
**     User Defined Object for example), this function MUST return/ {/ M+ k" l# O
**     "UF_UNLOAD_UG_TERMINATE". */6 L; b- L5 X1 s" @1 I" d/ v; S' u! C5 _
extern int ufusr_ask_unload( void )5 E. o4 l! A0 H. u
{  U, C# w# E; ?6 \1 V; R5 _7 B
    return( UF_UNLOAD_IMMEDIATELY );- I& M" L# S" Q* A
}
1 H: j/ q7 E8 e9 a3 A4 g( M
& t0 `* D- Z, Q6 C8 v

评分

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

    我知道了