PLM之家精品课程培训,联系电话:18301858168 QQ: 939801026

  • NX二次开培训

    NX二次开培训

    适合初级入门或想深入了解二次开发的工程师,本培训结合ufun,NXOpen C++,大量的实例及官方内部的开发技术对于老鸟也值得借鉴!.

    NX CAM二次开发培训报名 NX二次开发基础培训报名
  • PLM之家Catia CAA二次开发培训

    Catia二次开发培训

    Catia二次开发的市场大,这方面开发人才少,难度大。所以只要你掌握了开发,那么潜力巨大,随着时间的积累,你必将有所用武之地!

  • PLM之Teamcenter最佳学习方案

    Teamcenter培训

    用户应用基础培训,管理员基础培训,管理员高级培训,二次开发培训应有尽有,只要你感兴趣肯学习,专业多年经验大师级打造!

  • PLM之Tecnomatix制造领域培训

    Tecnomatix培训

    想了解制造领域数字化吗?想了解工厂,生产线设计吗?数字化双胞胎,工业4.0吗?我们的课程虚位以待!

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

[交作业] lesson2exercise_CreateCylinder

  [复制链接]

2015-7-17 22:23:12 3024 2

文星和合 发表于 2015-4-21 21:14:38 |阅读模式

文星和合 楼主

2015-4-21 21:14:38

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

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

x
/* Include files */- M- O3 M2 f1 z
#include <stdio.h>
5 G6 Y9 l7 y! H' a3 f& P#include <uf.h>
( b2 y/ Y  t" i/ y( g" C- |#include <uf_ui.h>
' S7 e4 t9 ?. q% S$ ]3 p#include <uf_modl.h>. e' H8 ^) X3 w; F, |
#include <uf_part.h>
  a' n6 Q7 I$ t# ^, g! W#include <uf_obj.h>;" G& r. D, s% y5 j
#include <uf_curve.h>
" M) d( @4 `! b# ?) j$ U8 f: q1 o( r, |/ q, Y
#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))( L2 M+ u( D% l( ^6 F
static int report_error( char *file, int line, char *call, int irc); l; r! Z# Q7 |. N& I
{
9 E8 f* L$ A& H7 G$ d$ s( I& w& F    if (irc)! y. T( j" M' u% Y
    {
  @; ]$ }/ E& {4 v# v        char err[133],! a6 p; Y& ?! U7 v
             msg[133];7 d. b( @- `1 j  Q  X
        sprintf(msg, "*** ERROR code %d at line %d in %s:\n+++ ",% }, C9 w4 p, A2 W8 u$ C, b' a
            irc, line, file);
0 J) V" U9 P: h        UF_get_fail_message(irc, err);7 q8 c$ v0 f: u' C& [, F! I
        UF_print_syslog(msg, FALSE);9 F8 ?* l  h# G
        UF_print_syslog(err, FALSE);
8 P' z+ X2 Z" {8 v/ H$ A        UF_print_syslog("\n", FALSE);2 V+ j0 o* l5 C2 n
        UF_print_syslog(call, FALSE);1 N% J8 }$ c7 w# }8 g" q8 f$ a+ g
        UF_print_syslog(";\n", FALSE);
: \( D2 X+ k" T7 ~) O- Y7 k& k7 s        if (!UF_UI_open_listing_window())9 L( B% Z  l5 W3 `4 J+ w. Q
        {% e4 d# Q2 N: h2 N! t# J5 V
            UF_UI_write_listing_window(msg);
6 i) w6 l! V) z            UF_UI_write_listing_window(err);5 u( O+ Y* N7 ]$ |: ^
            UF_UI_write_listing_window("\n");- a/ _% {- I' U3 @3 R" p5 n
            UF_UI_write_listing_window(call);! P" m& o( i2 b
            UF_UI_write_listing_window(";\n");5 U' M" @  @* M9 \( l7 \- T5 J7 A  _
        }
& m' G8 F: H4 l4 B    }8 @9 ^9 S; {* R
    return(irc);
: M, N3 h% e! _! g& [2 @' N3 Z' b8 A# ?}  w: [- Q) Q- e; v7 s

# q6 k5 {5 c; U) {+ a) T1 R/*****************************************************************************5 x' D/ X0 G5 s9 N1 H3 W
**  Activation Methods3 @3 r2 ^. @/ E5 O& K$ }
*****************************************************************************/
2 ^1 E- z1 G+ l, `8 X4 W1 @& {/*  Explicit Activation
! J* y# V& J- w, _# Q+ X; T0 L**      This entry point is used to activate the application explicitly, as in
/ |% ?/ U% M6 t9 c**      "File->Execute UG/Open->User Function..." */- d  }  _  _8 R* p* ^' c$ k. a- F" {
# ?- s1 Z( k$ J
extern DllExport void ufusr( char *parm, int *returnCode, int rlen )3 ?( J, o3 y7 |
{
8 z4 I4 ?' J% w$ w    /* Initialize the API environment */
; t) R$ H9 s, |! j% D, h' o tag_t partTag=NULL_TAG;- g4 w, @6 \; r
double origin[3]={0,0,0};
$ u5 \. ~" w& q, }2 {$ m4 m1 } char *height="200";
2 E3 F5 I' }3 m: v! m char *diam="20";5 k9 [4 u4 f* `7 n" M. p% ^! W
double direction[3]={1,1,1};
# a; {" {/ j9 w5 R: \ tag_t cy_obj_id=NULL_TAG;' |4 |8 z' n4 W" N2 s
uf_list_p_t edge_list;6 d& |7 T7 r2 U/ o& X
int count=0;
$ \( M6 ^( o$ k7 p1 @ tag_t edge=NULL_TAG;
, l" T* {$ }' l8 `5 ^: I double originalpoint[2][3];1 d; u6 W) H& P% X8 u
UF_CURVE_line_t curve_coords;1 ^" I3 r: R/ `8 Q4 R
UF_CURVE_line_t mycurve_coords;
+ ^- s! F2 R3 b7 q4 E tag_t linetag=NULL_TAG;
3 G! Z2 v+ L/ Z2 B/ T tag_t body_ID=NULL_TAG;
- P" Z4 w9 ^" W/ R( K" e int i;
6 k/ w6 V% n; P/ H, X& [( {6 R char mymsg[256];7 J5 X9 w4 e5 q* f4 L7 T
    if( UF_CALL(UF_initialize()) ) ( ]' |) j2 B5 O# U% n- q/ U
    {$ ?3 c& y2 g8 F! x- c+ n
        /* Failed to initialize */
, i7 v- [* A9 U" o, \5 `1 }* c- [2 D        return;6 b' K5 g+ A. X" U
    }, b7 g0 S, O8 {+ s! S" w* M( n. O
    5 K2 q0 Y! }& f' |; D
    /* TODO: Add your application code here */* Z* j6 Q! G$ G& {' _
// 1 new part
3 A) Y% B9 h9 T9 P UF_CALL(UF_PART_new("E:\\NX\\rob.prt",1,&partTag));   //双斜杠
5 B, ?& E( b: D$ _8 A , m  m! R8 |3 f( z2 I, v! t3 S& J4 l
//2 new cylinder
' n) _+ [4 @4 v% b% {) X+ l UF_CALL(UF_MODL_create_cyl1(UF_NULLSIGN,origin,height,diam,direction,&cy_obj_id));
2 H3 ]1 U/ T- y: x+ g  ` UF_MODL_ask_feat_body(cy_obj_id,&body_ID);3 x6 o) e2 ~+ a# W: t
//feature -> body' F3 [4 A7 f/ d3 q  J
UF_OBJ_set_color(body_ID,21);& |3 o5 @* c, K; ^. B, x7 t1 o
//change translucency  G5 V2 s! `7 z8 o& e
UF_OBJ_set_translucency(body_ID,50);//先设置:菜单->首选项->可视化性能->一般图形,反选禁用透明度
) C0 A: e. L3 Z, y! c //UF_OBJ_set_color(cy_obj_id,21);  //错误的用法,cy_obj_id是feature的tag,不是body的tag' Z* ~7 G% l0 t5 |6 H+ \4 ^2 @
//3 new line& y& B4 |9 x- j% [; w" y, p
UF_CALL(UF_MODL_ask_feat_edges(cy_obj_id,&edge_list));& n$ p  {$ x  _' v0 M5 Y
UF_MODL_ask_list_count(edge_list,&count);
5 \3 f) @$ v$ Y: @9 G% e4 P if (count>0)
  T- k4 X; J) l+ T: E {
& ]4 W1 j% R# ^. ^8 r     for(i=0;i<count;i++)
4 v' R6 N+ w3 ~* T3 r  {; b! @1 z, E8 w% ?2 h. G! k
   UF_MODL_ask_list_item(edge_list,i,&edge);
5 f* @4 ~9 O( U6 c# B   UF_CURVE_ask_centroid(edge,originalpoint[i]);//计算圆弧中心0 P# K8 G; N. Q, H
  }
4 M( p" e( o0 \  for (i = 0; i <3; i++)4 k; c- Z9 Y4 _9 x+ y; N; \
  {& u7 D% N7 y1 u% T1 V% Q
      curve_coords.start_point[i]=originalpoint[0][i];
% j- `& T9 [, ~. A( M   curve_coords.end_point[i]=originalpoint[1][i];
$ ?' D/ v# R1 h9 n3 v* k5 a) \  }( b6 P& E+ R- V! |0 O% _5 k
// UF_UI_open_listing_window();
. V9 K5 K: z( X$ R! v // sprintf_s(mymsg,sizeof(mymsg),"point1:%f,%f,%f point2:%f,%f,%f\n",curve_coords.start_point[0],curve_coords.start_point[1],curve_coords.start_point[2],curve_coords.end_point[0],curve_coords.end_point[1],curve_coords.end_point[2]);; g$ G+ ]9 C1 Z4 \
//UF_UI_write_listing_window(mymsg);
) v1 e5 y3 R& O3 R/ m0 \+ x // uc1601(mymsg,1);" m4 Y( d- {" d% {. `; ^
  UF_CURVE_create_line(&curve_coords,&linetag);   //创建直线
+ f1 L8 _  C# U  UF_CURVE_ask_line_data(linetag,&mycurve_coords);//获取直线的端点3 j6 _3 e% T/ M9 h# G5 x
  sprintf_s(mymsg,sizeof(mymsg),"start:%f,%f,%f  end:%f,%f,%f\n",mycurve_coords.start_point[0],mycurve_coords.start_point[1],mycurve_coords.start_point[2],mycurve_coords.end_point[0],mycurve_coords.end_point[1],mycurve_coords.end_point[2]);
  A& Z/ D7 |9 Q. s; @* |  //UF_CURVE_ask_line_data(linetag,&curve_coords);
7 t, q2 W1 S$ a3 U  //sprintf_s(mymsg,sizeof(mymsg),"start:%f,%f,%f  end:%f,%f,%f\n",curve_coords.start_point[0],curve_coords.start_point[1],curve_coords.start_point[2],curve_coords.end_point[0],curve_coords.end_point[1],curve_coords.end_point[2]);; x% ?( k: E$ f: u9 \0 c
  //UF_UI_write_listing_window(mymsg);& Z5 ]( ]. t& |9 `8 I
  uc1601(mymsg,1);
5 z* R6 R$ Z8 h& ]0 E& |" i }4 V! e' c1 }3 S
else
2 l8 X8 H# a  P; @ {
8 }6 V7 o  v- r( {- j  uc1601("no edge founf",1);
' F+ F& n$ _, i7 q4 }+ F }
$ o' y" u3 _) ~ 7 x' k+ i2 B, n. T9 B. [2 }
: h$ ~5 ~! j: O
//UF_OBJ_set_color(cy_obj_id, UF_OBJ_WHITE);
4 N2 v. T8 M0 C. q+ V4 Y //UF_PART_save();  //保存部件
# i( I/ P2 Q5 Z6 `7 Z0 W8 M& e; c& p //UF_PART_close_all();   //关闭所有  i3 e8 C8 f& W" p) m( g
! I" e. _0 y- J! E2 {
    /* Terminate the API environment */3 u+ S( i- o6 |1 p$ z
    UF_CALL(UF_terminate());
. A. A$ u, W0 H$ ^5 ^7 f}0 Y1 ^0 B% i- c+ Z  Y
/*****************************************************************************
( I+ q6 W( [1 z! P1 q2 s6 w**  Utilities; j; o* p: J& T1 B0 d" x
*****************************************************************************/; _1 m- O* [9 A
/* Unload Handler' y; d& }+ R' f* R2 v$ Q( Y% {
**     This function specifies when to unload your application from Unigraphics.7 H3 d  O2 k$ j" l( [
**     If your application registers a callback (from a MenuScript item or a
4 D7 b3 E: C( F, {**     User Defined Object for example), this function MUST return
& J2 {9 b5 G" R4 K5 |**     "UF_UNLOAD_UG_TERMINATE". *// a. g9 ]/ G* o+ g
extern int ufusr_ask_unload( void )8 i6 S, ~* L5 |: `% d1 k" f
{
2 m' X1 c' N2 r    return( UF_UNLOAD_IMMEDIATELY );+ B# z7 x: p& u  i1 ]& w* x9 i; _3 @
}8 Q  `& q/ {9 h3 P; H; }

7 _! X9 |$ {) {
$ X: {3 x  B/ w% Y我把圆柱的方向设成【1,1,1】,成功了* J4 I% [; E, M

- ]0 b( W) O! Q
无标题.png

评分

参与人数 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
回复

使用道具 举报

全部回复2

hcaini0829 发表于 2015-7-17 22:23:12

hcaini0829 板凳

2015-7-17 22:23:12

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

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 注册

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

    本网站(plmhome.com)为PLM之家工业软件学习官网站

    展示的视频材料全部免费,需要高清和特殊技术支持请联系 QQ: 939801026

    PLM之家NX CAM二次开发专题模块培训报名开始啦

    我知道了