PLM之家PLMHome-工业软件与AI结合践行者

[二次开发源码] UG二次开发源码:计算曲线信息评估非常好用的方法分享

[复制链接]

2014-5-3 12:58:05 4054 0

admin 发表于 2014-5-3 12:58:05 |阅读模式

admin 楼主

2014-5-3 12:58:05

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

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

x

; w1 N+ U+ r1 X  w6 B! F4 |5 R
! T. n8 E9 o  i! m' c6 b& E: [- u( x2 d7 u1 g$ f
: J/ w  o* q; W& o
  1. /******************************************************************************
    0 I- _* x2 S( _: ?! T3 Z
  2.              Copyright (c) 1999 Unigraphics Solutions, Inc.
    0 b, @) ]6 F& |. d$ N( P. {% z
  3.                        Unpublished - All Rights Reserved# D$ d7 R: n8 n2 P) T
  4. 2 g0 d, V: k9 N, l7 @5 |) a
  5. *******************************************************************************/
    4 \0 O- F+ ]( f; z9 T# B0 P9 j
  6. /* This example demonstrates the UF_EVAL api for lines and arcs.
    9 W6 ~* M2 p& P( \- s6 f% ^$ {
  7. Some of the UF_EVAL routines operate on an evaluator
    3 u  z& [$ u8 b0 Z6 ]$ g+ j
  8. independent of type while others are type dependent.  No longer use
    " C' o) y9 d% K4 \, O
  9. UF_CURVE_ask_curve_struct ( ),
    ) H9 X3 P& f0 g9 k& k
  10. UF_CURVE_ask_curve_struct_data ( ) and
    8 [1 u/ A( S' ^# R. N  T% K
  11. UF_CURVE_free_curve_struct ( )
    ; G6 @! t. T# V
  12. */5 H; U+ U  I7 T( r

  13. + G" Q$ {( g; u9 w) X' o8 j3 s
  14. #include <stdio.h>
    4 V' l# f9 f' ?: R: v+ x7 @/ `5 T
  15. #include <uf_object_types.h>
    , m7 E, p7 \3 W& n; U# f5 h
  16. #include <uf_curve.h>% L& D  |0 J  Z6 f8 a$ \3 ^/ {1 x' y
  17. #include <uf_eval.h>% h" W  u* v6 ~+ F$ E2 ~' h$ R
  18. #include <uf_modl.h>
    5 k' B8 H5 o. [- ]- G+ T) }
  19. #include <uf_part.h>" c, @3 b. V) B# K
  20. #include <uf_so.h>/ A5 P8 N6 ?- e$ @
  21. #include <uf.h>' y. u$ L3 O$ ^! w( C/ \# a/ }! G& _! c
  22. #define UF_CALL( X ) ( report ( __FILE__, __LINE__, #X, ( X ) ) )  S; c; {0 j% _
  23. static void show_edge_points(UF_EVAL_p_t eval, int n_pts);
    ( g# X4 U+ B/ y) d6 s, c
  24. /*---------------------------------------------------------------*/
    / O0 C$ e5 y# s7 K- _
  25. static int report ( char *file, int line, char *call, int irc )+ c8 G/ N# [6 h# S
  26. {# d3 W& J$ O/ D! w0 y" y
  27.     if ( irc )
    ; [0 z' c/ s/ U
  28.     {& Q- ~" U- u0 |: d
  29.         char message [ 132 + 1 ];
    : A# G/ B+ U6 F( z4 y3 E' ]
  30.         printf ( "%s, line %d:  %s\n", file, line, call );' h. G3 M4 W4 a3 O* ~2 [
  31.         UF_get_fail_message ( irc, message ) ?
    , ?" C" X& u6 q5 C: G5 l" Z
  32.             printf ( "    error %d\n", irc ) :- E3 v, }6 U7 W8 N+ P1 S' J
  33.             printf ( "    error %d:  %s\n", irc, message );! y* d: h$ Z  Y& @# ~
  34.     }( g( {4 ]. X1 y
  35.     return irc;
      \2 S( k, j9 B% v) S
  36. }
      R. ~& B. n" L% g4 Q- S
  37. /*---------------------------------------------------------------*/+ a' J2 K, ^* H+ I+ o
  38. int ufusr_ask_unload ( void )
    % F# I4 g; M$ U: @
  39. {
    / h6 s& N/ c9 Q: x/ p% m. Z
  40.     return UF_UNLOAD_IMMEDIATELY;3 V/ R( ^" J& E4 G+ c3 `" C
  41. }0 m- a; w# K4 z& g  G+ g
  42. /*---------------------------------------------------------------*/
    , C/ F  ~) V& E# t
  43. /* ARGSUSED */
    9 `& }1 @! D# E' X9 U" Y
  44. extern void ufusr ( char *param, int *reTCod, int param_len )% j1 z1 `8 T& z) m2 {( y+ E
  45. {
    . `* V5 ]+ y' D, u* l; i
  46.     tag_t line;
    7 e! w- w# x) K, ]
  47.     tag_t arc;/ j! X, \8 p1 }3 [1 z
  48.     tag_t edge;5 c1 c! a% E9 B. C+ E/ b
  49.     tag_t edges [ 3 ];
    # U0 m. ?$ W1 n$ `
  50.     UF_EVAL_p_t line_evaluator;
    1 p8 E% W. @7 W3 s+ @) O
  51.     UF_EVAL_p_t arc_evaluator;
    * b8 J6 ~; K' t. z
  52.     UF_EVAL_p_t edge_evaluator;0 t& F" \9 a* F/ y( W  _5 _
  53.     UF_CALL ( UF_initialize ( ) );
    ) n4 n% B' U6 b0 }1 I9 q
  54.     /*  - ^4 o6 K- W/ |6 Z7 J
  55.         Create new part "ufd_eval.prt".
    - \# R& C, f$ O2 U) B
  56.         + z& G* g5 _$ k
  57.         Close part if it already exists.8 q7 }) C' n: F% N! M/ w) c9 l
  58.     */3 W. U1 {- w/ f8 V
  59.     {3 K" ]7 u2 S! |
  60.         tag_t part = UF_PART_ask_part_tag ( "ufd_eval.prt" );
    5 T4 M2 K$ J3 `0 K2 M( K
  61.         if ( part != NULL_TAG )7 I! Y, K3 O, [% @3 f
  62.         {
    7 U5 Q7 P. Y6 o/ y; A3 I
  63.             UF_CALL ( UF_PART_close ( part, 0, 1 ) );
    5 y% ^9 e9 U* ]: u
  64.         }0 l7 t6 p. Y. C0 y
  65.         UF_CALL ( UF_PART_new ( "UGd_eval.prt", : p% l# ^* y3 V1 j0 _  s( R
  66.                                 UF_PART_ENGLISH,
    5 a+ M8 Q% s1 k+ O6 k" T2 f) j
  67.                                 &part ) );
    ; S5 S8 v& ~) M- Y
  68.     }# B& `. @5 H9 V7 v3 D  Z
  69.     /*
    ' F$ D3 w; S% `- P- W4 g4 o9 [3 Y
  70.         Create block and get edges.
    5 {; M2 C9 _$ F; g4 n; ~" i5 T8 o
  71.     */
    ' d3 q( D7 ^: m; R# k
  72.     {  x6 r! [/ ^. S9 i3 w, s
  73.         double  origin [ ] = { 0.0, 0.0, 0.0 };; u! l9 C& y" p7 P
  74.         char   *sizes  [ ] = { "1", "1", "1" };
    $ L4 E6 i. L$ i
  75.         tag_t block_feature;
      T0 i* B3 M$ e* `3 ^6 z: }
  76.             4 D  G* ^! f( t0 U$ G# y
  77.         UF_CALL ( UF_MODL_create_block1 ( UF_NULLSIGN,
    9 F# _+ ]7 u5 q
  78.                                           origin, 9 e9 {  ]* l- C/ c3 T
  79.                                           sizes, & S- |) C% U7 V
  80.                                           &block_feature ) );7 D& u" X9 I/ J% }- H* F; [
  81.         {
    + ?* R/ ^) B) h4 p1 E9 y: D2 ~' p
  82.             uf_list_p_t edge_list;9 W" w! e+ t( m2 L5 j+ I
  83.             UF_CALL ( UF_MODL_ask_feat_edges ( block_feature,
    - n9 `, P/ w9 @; [( y0 U1 [0 E! U/ F
  84.                                                &edge_list ) );. g- R  z4 O+ F2 y0 G
  85.             
    " f, B" K  q. [" g8 _" b
  86.             UF_CALL ( UF_MODL_ask_list_item ( edge_list,
    ' q5 D/ v& L: o+ I
  87.                                               1, * t' i% b+ x& R% S, r7 h# E
  88.                                               &edge ) );9 C9 c. Y# I/ f( |' `
  89.             edges [ 0 ] = edge;% S" T0 P! s) s7 C: J6 d1 L0 P
  90.             edges [ 1 ] = edge;
    ( r  Y& y3 f/ G# j6 |, {
  91.             UF_CALL ( UF_MODL_ask_list_item ( edge_list, % V% J) Z, x& T) O! C% G
  92.                                               0, * G, J% E' ~) k" V! d; M! J
  93.                                               &edges [ 2 ] ) );  _3 ?3 F* h. o" B0 Y- ~" _
  94.             UF_CALL ( UF_MODL_delete_list ( &edge_list ) );& Q  u5 b5 F1 {, J
  95.         }, I( e& o3 k  e, Y+ S
  96. }
    6 B5 y" @2 Q  z5 A/ M# M; H# g2 S
  97.     /*  8 T& E* D+ e% L% l
  98.         Create smart line.' j* g$ g: r% ]& |
  99.     */, N4 M0 u/ y+ `& n& \5 t
  100.     UF_CALL ( UF_SO_create_curve_extract 3 N+ u' Z: o0 \5 f1 K
  101.               ( 0 x& R8 D" W7 E) y2 O+ H( v2 S3 M
  102.                   edge, 2 p! a- ^! F* }+ F+ Z! x& W* x
  103.                   UF_SO_update_after_modeling, / B6 O2 a. E, |
  104.                   edge,3 K( n! t; O3 s. E! X; F' Q
  105.                   UF_line_type, /* enforce line type */
    " V" d5 d% k$ A8 q  I1 y
  106.                   0,            /* no subtype to enforce */: p8 _6 X2 S! ~1 }6 o1 \8 O
  107.                   NULL_TAG,, B, |$ c' M  L7 Z0 J4 |9 @
  108.                   &line
    / A* r( U/ {+ H. m
  109.               ) );" z& M5 a* r( V7 ?; b8 w
  110.         
    0 Z- t4 F! b# _2 a9 j$ H* w
  111.     /*  : t; X/ A$ ^) K8 H, ]7 [- C  ]
  112.         Create smart arc.
    8 r; e% _9 [: y  m8 ~- D
  113.     */
    2 S* C. t4 f! `) G
  114.     {1 i/ K: N9 _# `2 t, O
  115.         int i;
    7 N  w# X: F1 E" m' n
  116.         tag_t points [ 3 ];* v6 P7 z  S- Z( y. C4 l2 ]' D. i
  117.         for ( i = 0; i < 3; i++ )0 k9 d+ A, ^* R
  118.         {
    2 z/ ]! R& j1 v3 u  {) [  R
  119.             char *strings [  ] = { "center=1.0",
    % B& G: r$ ]: C8 G3 g
  120.                                    "start=0.0",
    ( L3 x8 {8 j% U# k2 G; u4 J" y
  121.                                    "end=1.0" };  N6 O1 N( C$ c, Y: E
  122.             tag_t exps    [ 3 ];; t' c9 h. h' n+ c7 g" ~4 u
  123.             tag_t scalars [ 3 ];
    * N4 H. h2 J& A5 a
  124.             UF_CALL ( UF_MODL_create_exp_tag ( strings [ i ],
    " F  h/ A$ T2 G0 K, `& ~
  125.                                                &exps [ i ] ) );
    $ i1 Q8 T# m) y* O/ D
  126.             UF_CALL ( UF_SO_create_scalar_exp / f7 Z& O; q* C1 h
  127.                       ( 5 b& n0 b; C: ^
  128.                           exps [ i ],
    % w" c8 z6 X$ r5 I! q6 J6 k
  129.                           UF_SO_update_after_modeling, 2 K( _& f8 |: r/ ?; o5 a1 _. e( Q, b
  130.                           exps [ i ], ( m  D7 k! x/ M( h
  131.                           &scalars [ i ]& p4 \2 f8 p  ?7 h9 _
  132.                     ) );) ]3 u' |9 \6 k8 O- T( Q
  133.             UF_CALL ( UF_SO_create_point_on_curve
    # G' q# r$ V2 G: A' R3 n9 r
  134.                       (
    ! M% j- M6 d& p8 ^0 G- n
  135.                           edges [ i ],2 s6 `: d( {! W6 O+ X" s9 I) |
  136.                           UF_SO_update_after_modeling, * H) w- s" T: a
  137.                           edges [ i ],9 j3 F, e7 e. W7 m$ {
  138.                           scalars [ i ], 2 q, P3 x! ?( ~. x6 t+ W/ d; Q, n' K, E: N
  139.                           &points [ i ]8 h) r! x7 s8 {, m1 `+ D
  140.                     ) );( {* e% d& S, o# @
  141.         }
    ' S/ q, Z& @2 y9 r' p$ I
  142.         UF_CALL ( UF_SO_create_arc_center_2_pnts 1 `' D* Z& U2 ~: o. f" M- C
  143.                  ( ( ^# I% E- f( y+ F# R
  144.                       points [ 0 ],
    ) a* h: j( x+ N) e! Z5 `
  145.                       UF_SO_update_after_modeling,
    * _3 ]! Y* z8 s: `3 W
  146.                       points, 5 w. G9 M6 S0 O% p7 j$ p
  147.                       &arc
    : {1 U- q( b# ]" f/ F' h* A1 C
  148.                   ) );
    / q3 n0 q* M# q# ]& T
  149.     }
    , _; l% y3 w; E
  150.         
    ; U# M- c$ l& d/ F3 P5 F
  151.     /* 4 O& f0 M) ?5 p, b* V( `& B
  152.        Smart objects are created as invisible objects by
    1 e1 B8 ?0 `) C9 `3 M
  153.        default.  UF_SO_set_visibility_option ( ) can be
    / Z2 c1 F9 r$ ^$ u, q4 z) u
  154.        used to make them visible in the graphics window.7 a( `' r& }/ V6 L3 R$ [
  155.     */
    2 Y, c# n- ^9 K$ I3 Q* ^
  156.     UF_CALL ( UF_SO_set_visibility_option ( line, 5 v: D' ^+ [( {- v
  157.                                             UF_SO_visible ) );
    ; }6 @( G- U' n3 L5 E
  158.     UF_CALL ( UF_SO_set_visibility_option ( arc,  
    0 I4 [# K& }. w! ~3 ^: j
  159.                                             UF_SO_visible ) );, E; H+ w; m3 W
  160.     /*  . n5 R& X/ p7 ?
  161.         Get line/arc/edge evaluators.
    ! P4 y( V; X# a, N+ I$ e9 j
  162.     */" k: k* ~& p+ l! C, R
  163.     UF_CALL ( UF_EVAL_initialize ( line, &line_evaluator ) );
    2 ^( K9 {% I, Y8 _% Q3 }0 x
  164.     UF_CALL ( UF_EVAL_initialize ( arc,  &arc_evaluator ) );
    % v0 }) D+ L, Y# s* O; Q3 P2 V
  165.     UF_CALL ( UF_EVAL_initialize ( edge, &edge_evaluator ) );7 u) o. I; k! q2 ~
  166.     show_edge_points(line_evaluator, 10);
    5 K9 ]( y# k$ b  L  A
  167.     show_edge_points(arc_evaluator, 10);
    # X5 |; [3 Y: J, {7 h
  168.     show_edge_points(edge_evaluator, 10);
    7 E$ k" y. C- O- V* k; R
  169.     /*  : r( l9 ?; b9 N  |7 p
  170.         Get line/arc/edge data.
      P! M8 N) u9 |$ f" a" f" ^% W) I
  171.     */
    ' v; k2 p/ E, I' L
  172.     {0 ~' @3 v- i9 R4 o  H, a
  173.         UF_EVAL_line_t line_data;
    ) ]+ d* }0 {+ s5 D
  174.         UF_EVAL_arc_t  arc_data;7 w+ n/ L( n% M/ s1 z( v  k9 S2 [
  175.         UF_EVAL_line_t edge_data;
    ' L! S# q* T$ u+ k" q; B. g
  176.         UF_CALL ( UF_EVAL_ask_line ( line_evaluator,
    1 G# i9 g2 ]  Q
  177.                                      &line_data ) );9 Q' {- R7 E; S4 v6 D
  178.         UF_CALL ( UF_EVAL_ask_arc  ( arc_evaluator,  & x1 M7 I- |7 \1 I, I5 r: M* U
  179.                                      &arc_data ) );3 W3 O$ X& L& F% s$ }6 u
  180.         UF_CALL ( UF_EVAL_ask_line ( edge_evaluator,  
    # i6 K, @6 u1 t* {- j4 ]
  181.                                      &edge_data ) );
    8 U! Y1 l9 e) P* z( \
  182.     }
    9 g7 Y# |8 Y+ ~, q) i/ ^: ^
  183.     /*  $ F, ^2 r$ E7 u1 _* q* z
  184.         Check line/arc/edge periodicity.4 N9 o( ?- o. E/ ~0 B: T
  185.     */
    7 w$ p; m8 [/ @0 I6 T- a2 S( c5 x
  186.     {
      Z' q! Z( {" |2 w
  187.         logical is_periodic;6 o6 {8 h% _. F, G2 i( N
  188.         
    ! ~) _: u5 Q/ {% `9 [
  189.         UF_CALL ( UF_EVAL_is_periodic ( line_evaluator,
    ' @( }& D- j1 O: g9 f" W' G
  190.                                         &is_periodic ) );
    / @# b* B( ~# S/ {" x( B: I
  191.         UF_CALL ( UF_EVAL_is_periodic ( arc_evaluator,  8 {0 X4 e+ i: F, ?' r  s
  192.                                         &is_periodic ) );
    , o% g: v9 q0 d( p) [9 `
  193.         UF_CALL ( UF_EVAL_is_periodic ( edge_evaluator,  : [: t$ P! M) h; O% R
  194.                                         &is_periodic ) );
    - a% A& S; K$ y
  195.     }! l2 U* B9 i8 i8 t
  196. /*  1 x( V) O8 Y- ~5 {1 M9 e
  197.         Evaluate line/arc/edge.
    , \* E3 ]: \, k" y3 ^: L1 M
  198. */
    # M+ |9 z: b1 X
  199.     {# @3 P8 f- P3 |( U4 v7 B
  200.         double limits [ 2 ];        
    5 `- h( [! F/ O+ w+ [8 q0 P
  201.         double mid_t;
    , b5 l( o* U7 ]$ }$ }
  202.         double point [ 3 ];
    8 ^7 u0 N! u) d- h8 X
  203.         double derivative [ 3 ];
    ( w5 t4 z1 l5 f, N! p6 E
  204.         double tangent [ 3 ];
    : V5 w, s8 ^$ x0 R5 o" I/ S% }
  205.         double normal [ 3 ];
    . q+ J9 G2 s0 h
  206.         double binormal [ 3 ];, o5 [  X8 y) y* Z  ?" d% G* M
  207.         UF_CALL ( UF_EVAL_ask_limits ( line_evaluator, limits ) );
    ' k* |& l$ L( Y0 Q6 K9 w
  208.         mid_t = ( limits [ 1 ] + limits [ 0 ] ) / 2.0;" Z3 z2 g3 c/ I( J3 X2 ~! r) C
  209.         UF_CALL ( UF_EVAL_evaluate ( line_evaluator,
    7 I) T; ^. H8 w+ L8 s9 `
  210.                                      1,
    - ?2 y% C6 F( y- M6 V& P4 F
  211.                                      mid_t,
    : Y8 o- |* f* k! E4 o
  212.                                      point,
    / K/ |/ |) X/ M3 V/ o& W
  213.                                      derivative ) );
    1 ~; n8 Q& u) _
  214.                   7 Y9 u- k/ n: A: S  U
  215.         UF_CALL ( UF_EVAL_evaluate_unit_vectors ( line_evaluator,
    6 ]; W  N! w' @- h) \( S
  216.                                                   mid_t, 2 R! V! S. @- d' O
  217.                                                   point,   E. R7 p( [9 U, P$ A, }1 h, z
  218.                                                   tangent, 6 [4 i5 [3 p& O7 P8 F. i
  219.                                                   normal, . E. H. {/ c2 o1 X, K& ^
  220.                                                   binormal ) );: k. v1 ?* z0 V+ F) m& i7 I
  221.         UF_CALL ( UF_EVAL_ask_limits ( arc_evaluator, limits ) );
    4 a; P! o& A( }+ J; ^' `
  222.         mid_t = ( limits [ 1 ] + limits [ 0 ] ) / 2.0;  r; m( g5 t* u" N
  223.         0 R$ q- L: u: H3 L
  224.         UF_CALL ( UF_EVAL_evaluate ( arc_evaluator,
    5 ^. l" |; A) p# R
  225.                                      1,
    6 ^9 |3 n4 s' P" u& C
  226.                                      mid_t, " ^( N( Q4 {3 s- j8 y% Q, M
  227.                                      point, + J: M7 k; ~) r
  228.                                      derivative ) );
    " o0 `0 x8 }/ D. U. g2 k3 @
  229.         / z0 y8 h/ c  [* d( o7 L/ b0 L& j
  230.         UF_CALL ( UF_EVAL_evaluate_unit_vectors ( arc_evaluator, 2 S2 l' z$ i. x! ?% r8 j" K
  231.                                                   mid_t,
    5 e- `/ \; b- D
  232.                                                   point, # G/ I. p# B3 m0 ^. l6 g
  233.                                                   tangent,
    2 I/ n4 {) \5 O8 @* }  x
  234.                                                   normal,
    5 t& {9 _8 D7 w$ K3 Q
  235.                                                   binormal ) );( Z4 E+ H  X- T" x/ _1 p* k; }
  236.         UF_CALL ( UF_EVAL_ask_limits ( edge_evaluator, limits ) );8 ?; x: v; U* a( Q
  237.         mid_t = ( limits [ 1 ] + limits [ 0 ] ) / 2.0;4 [$ R7 w0 X8 \# R3 R6 Y
  238.         UF_CALL ( UF_EVAL_evaluate ( edge_evaluator, ' O* @; V1 o7 _! m: R
  239.                                      1, ! b, M7 A3 C, \( }
  240.                                      mid_t, 5 Z4 D# r- t7 M
  241.                                      point,
    0 Q  h5 \& D0 {9 t0 _2 N% ~; E( ~3 u
  242.                                      derivative ) );" k5 C0 g/ s/ T, n" X
  243.         UF_CALL ( UF_EVAL_evaluate_unit_vectors ( edge_evaluator, ( @# u: z& X8 m, J/ f2 _) K6 _' E6 m
  244.                                                   mid_t,
    % K# i, x$ T) r  e2 k' u9 `
  245.                                                   point, $ V' r4 Q2 f  X& f
  246.                                                   tangent,
    3 s/ c2 g7 k$ G7 `
  247.                                                   normal, & T, K6 ?+ D( B9 ^& ~3 L8 s1 n5 u
  248.                                                   binormal ) );$ Z  q8 _6 u& q
  249.     }8 y, u- W! A6 j
  250.     /*  
    ! ~* }4 z% `2 l/ |- S3 J4 O2 p
  251.         Check line/arc/edge equality of evaluators.7 R' v# c" g/ Y+ N" @
  252.     */, k" O6 S5 |: |# J& ?1 ]
  253.     {
    * s0 A. U( w0 i9 t. |7 F
  254.         logical is_equal;6 |( x  V) r0 l5 n6 ?* M; l3 B
  255.         UF_EVAL_p_t line_evaluator_copy;: F( K) a3 X3 m7 B# R" m- D
  256.         UF_CALL ( UF_EVAL_copy ( line_evaluator,4 @" r. L: d; U
  257.                                  &line_evaluator_copy ) );! a9 V; }" m1 a1 L- K% a
  258.         UF_CALL ( UF_EVAL_is_equal ( line_evaluator,( B+ ?" v+ J% A7 g7 q7 K
  259.                                      line_evaluator_copy,& i- g4 f; G8 w# b0 b( ^
  260.                                      &is_equal ) );0 j' @  w  m6 Z$ E
  261.         UF_CALL ( UF_EVAL_free ( line_evaluator_copy ) );
    - c% e  T# n6 u0 z' ?
  262.         UF_CALL ( UF_EVAL_is_equal ( line_evaluator, $ b8 u. z* `* ?
  263.                                      arc_evaluator,
    9 j% }. D) S* s9 z0 {% l
  264.                                      &is_equal ) );, U' ^, {! w5 e  N$ u
  265.         UF_CALL ( UF_EVAL_is_equal ( line_evaluator, / ]% z* f0 x: c( s) U% U! M
  266.                                      edge_evaluator, 8 @" Z+ H+ V% \6 G% f  ?7 g
  267.                                      &is_equal ) );5 G' n: f, x' M$ G7 p: v) j
  268.     }
    : l% `# S1 u; T
  269.     /*  - S/ D8 b2 s; l! s; {& K
  270.         Check line/arc/edge type.  {# A% s7 g+ _1 T& v4 V4 ]
  271.     */$ E9 m' ^. F$ D) _, e8 f% m
  272.     {% d: G9 Y$ S7 p% n* @
  273.         logical is_line;# h0 c4 ~& C$ m% O# c
  274.         logical is_arc;" @6 D6 `4 `/ ^' {
  275.         UF_CALL ( UF_EVAL_is_line ( line_evaluator, &is_line ) );
    9 P- R- l2 l: s, ]* v. a: \# [
  276.         UF_CALL ( UF_EVAL_is_arc  ( line_evaluator, &is_arc ) );
    ) Y+ P% M2 ^$ p( x
  277.         UF_CALL ( UF_EVAL_is_arc  ( arc_evaluator,  &is_arc ) );3 O& M% Y& R$ k' [+ N8 {
  278.         UF_CALL ( UF_EVAL_is_line ( arc_evaluator,  &is_line ) );+ ]( w- S9 O/ u) E
  279.         UF_CALL ( UF_EVAL_is_arc  ( edge_evaluator, &is_arc ) );
    8 l+ g2 }: _( c4 W+ T
  280.         UF_CALL ( UF_EVAL_is_line ( edge_evaluator, &is_line ) );! T+ o, j8 u. s6 d  a
  281.     }4 Z/ n# B  O; h1 Q% y9 M
  282.     UF_CALL ( UF_EVAL_free ( line_evaluator ) );# S  _* I) N. ~
  283.     UF_CALL ( UF_EVAL_free ( arc_evaluator ) );
    . q& K1 c  M4 z7 m$ a- y- R0 X
  284.     UF_CALL ( UF_EVAL_free ( edge_evaluator ) );
    * g, h3 [5 B8 E' u  O; `! {
  285.     UF_CALL ( UF_terminate ( ) );
    6 d1 }5 T% F. ]* v- j
  286. }1 C* X" l0 M* i2 `4 o

  287. 2 ?: s9 M& L; w, f9 x
  288. /* This function will disply n_pts equally spaced along the
    2 J3 f# }- [! t8 G+ C" _7 R
  289.    input curve.
    . S9 h, {8 D( m) M- F- Z3 p
  290. */) S) c' K8 r5 {  q* K
  291. static void show_edge_points(UF_EVAL_p_t eval, int n_pts)
    8 X! }0 ~3 ?$ o; e8 |3 X
  292. {* z$ Q% e8 Q* t: m
  293.     int ii;: B* O# N, i) u: Q* T" x8 r4 H# }
  294.     double limits[2], p, point[3], end_parameter, start_parameter;" J" F3 ~0 r/ `* _) l6 D0 x2 s
  295.     UF_OBJ_disp_props_t
    " p. n) X) E8 f! f
  296.         attrib = { 1, UF_OBJ_WHITE, UF_OBJ_NOT_BLANKED, UF_OBJ_WIDTH_NORMAL,5 f1 k4 v3 ^1 Y! z2 A9 q
  297.             UF_OBJ_FONT_SOLID, FALSE};4 \* U; J( G3 ^! a! L( F: f
  298. / z& H) Y! m5 m+ o& e* b2 {1 k
  299.     UF_CALL(UF_EVAL_ask_limits(eval, limits));" G" \: J. f2 C' D' x$ L
  300.     printf ( "limit0 = %f\n", limits[0] );* t! _" h1 K0 f% g# g0 [/ }4 q0 O. b. H
  301.     printf ( "limit1 = %f\n", limits[1] );5 `  T) Q$ x. Z/ g4 x4 X) p$ s' V# M& E
  302.     start_parameter = limits[0];
    $ L* N6 E  i7 h8 R* V
  303.     end_parameter = limits[1];' v: @* F. Y! [0 c( O

  304. ! t( \3 m+ W/ }8 x% @9 v' D- i8 ~
  305.     for (ii = 0; ii < n_pts; ii++)
    7 j5 X: i7 Q$ ]+ }. y, m1 T
  306.     {$ o1 U- Z+ x- d
  307.         p =start_parameter + ii*((end_parameter - start_parameter)/(n_pts - 1));! y9 _3 h5 C+ M# V  ?# A
  308.         printf ( "evaluate = %f\n", p );! k7 ^, ?; w' e4 }
  309.         UF_CALL(UF_EVAL_evaluate(eval, 0, p, point, NULL));
      N7 G+ C$ M& U$ X( i- k8 n. K+ J7 |
  310.         UF_CALL(UF_DISP_display_temporary_point(NULL_TAG,
    - Z! g6 x. [8 N  c
  311.             UF_DISP_USE_ACTIVE_PLUS, point, &attrib, UF_DISP_POINT));6 M: [. H$ v# C  B6 J# U8 q
  312.     }! C6 a7 G$ u" B1 x3 Y( ]$ L3 t

  313. # \9 _& K/ V: S. F7 D
  314. }: z6 m) x0 \, J: b6 _- x
复制代码

- `" [+ i- O  s9 k
8 [; ^1 T* K2 w! ]; s( F6 U# x7 L# \8 g( g: F1 _
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了