青华模具培训学校

 找回密码
 注册

QQ登录

只需一步,快速开始

青华模具培训学院
查看: 2357|回复: 6

[疑难] UF_MODL_create_fitted_spline求助!!急...

[复制链接]
发表于 2012-4-1 23:28 | 显示全部楼层 |阅读模式
刚学习二次开发,遇到有关散点拟合的问题,用这个函数怎么不能出结果,这个函数到底该怎么用,求高手指点!!
 楼主| 发表于 2012-4-5 12:49 | 显示全部楼层
怎么没人回复啊!!求指导!!求指导啊!!
回复 支持 反对

使用道具 举报

发表于 2012-4-5 14:13 | 显示全部楼层
你好歹得把你的源代码放上来才能看你到底错在哪里了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-4-6 23:34 | 显示全部楼层
samfkkkk 发表于 2012-4-5 14:13 ) u9 E% t3 ?( D( Z& k& b' v# q
你好歹得把你的源代码放上来才能看你到底错在哪里了

1 ~' _* T  G; W2 g, P哦,多谢高手关注,我贴上代码求指导!!
8 S- O2 `+ n$ G0 g) C9 {
8 B7 |3 }2 p. ^: f+ P. O#include <stdio.h>
: J; m# z' ?, W; ^/ u5 m# ^; h' v#include <uf.h>
* z$ r& X( i# U* C- c0 O$ I#include <uf_ui.h>
! W0 |+ B( Z9 K, z" p5 T#include <uf_modl.h>
+ O& M7 f9 R$ c8 C* g0 S#define ptnum 5
) m: Q1 H! m/ C#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X))). ~9 V$ U2 `) ~9 f) S

( \6 k: n6 Z+ a, N7 d( Sstatic int report_error( char *file, int line, char *call, int irc)9 H. Z$ _# w/ D) j3 h* z
{
+ `0 Y5 @1 k* B, O3 e1 S7 M: Q8 L# \. W    if (irc)
6 M9 K6 G; @  J% a    {5 r9 k" e: ]2 q0 v7 j
        char err[133],: E5 U  F1 V' l; f
             msg[133];
0 Y) r' Z1 h1 [# H
2 W5 X0 ^6 a2 y7 `% b        sprintf(msg, "*** ERROR code %d at line %d in %s:\n+++ ",
! o* q1 ^' \8 Y. G# D            irc, line, file);
5 P! U, N8 l9 k& X+ \7 f0 e        UF_get_fail_message(irc, err);# Q2 h- ^7 @3 x! B$ w
, o& U  }' X. T; P, q; O# W, t* A
        UF_print_syslog(msg, FALSE);  s6 ~* p! e# x7 I9 e* l
        UF_print_syslog(err, FALSE);
1 M: M6 d/ D/ Q/ b/ n! L# K/ y- e9 U        UF_print_syslog("\n", FALSE);6 e! ?' f) N6 S+ ~0 z; c
        UF_print_syslog(call, FALSE);
8 z8 J  S- d6 ^9 X        UF_print_syslog(";\n", FALSE);3 r' I- ]7 l6 Q: A

  M% K7 Q0 ?' |        if (!UF_UI_open_listing_window())& F' W2 G% D& t$ G
        {
+ E+ T, r, _- l$ g( T! b            UF_UI_write_listing_window(msg);' o$ W: S1 `. r' X1 a8 A
            UF_UI_write_listing_window(err);# t" }6 E9 S6 G3 o
            UF_UI_write_listing_window("\n");! E# Q+ r8 ?0 F8 c5 h
            UF_UI_write_listing_window(call);
8 u. ~; l! o  O) I  |) _            UF_UI_write_listing_window(";\n");% ^+ B0 i0 i- O4 W# ?0 b
        }. m! j3 U6 [- x; T, f4 B3 `. l
    }' t4 b% h; K, j+ E
, b  K1 Z8 m7 F! I0 w2 j7 P' Z$ S
    return(irc);
# u  z2 v9 S1 F/ _. n8 h}( x1 N  Q! n9 C; p4 V: W7 s

* O8 |. J: O" H! a- s6 T: U# m: r
/ P2 }5 }1 }9 F3 W6 D- M% lstatic void do_creat_spline()
8 Q' P3 q" p& H& w) w2 \9 V$ {- B8 M{
+ \+ n/ H: J1 ]4 {        SPLINE_FIT_p_t spdata;
4 a& c' }1 `+ Z$ U" h: c6 \        double sp1,
, c; h* X( Y2 S1 A0 U8 ], y1 v4 O1 E7 A                pt[3*ptnum]={1.1000,  0.5320,  2.0000,
) }+ E# \9 o$ g. N, p2 I                      1.5240,  0.6789,  2.3000,; a2 s: ^' {9 f
                      2.0000,  0.9000,  3.5956,
) R4 U: N. C9 b5 t3 r: \                      2.3456,  1.3456,  3.7890,
! I: w( u  N+ `& \1 U9 G                      3.1000,  2.4567,  3.3214};
: U) q  D1 L! J8 Q1 ^        int poit,i;
4 u" E8 s& s! ^) l8 @" p0 D1 p# S        tag_p_t curve_id;
! o5 a& h) ]2 I* A& ?9 @        spdata->degree=3;. |0 j( u0 a0 J& f
        spdata->num_of_points=ptnum;
. L$ K  [% ~6 v6 u3 u, u/ h% m  z        spdata->num_of_segments=1;* U/ L9 W  W. y
        for (i=0;i<ptnum;i++)( x: q+ @% F- z4 E( v/ g
        {- y1 K' ], t' S1 {% B) o, ^  X
                spdata.points[0]=pt;
0 v) W: w' t7 ]" g; m3 \                spdata.points[1]=pt[i+1];
* @' q' |5 ~5 ]7 b                spdata.points[2]=pt[i+2];  H( M0 ]0 Y6 x# m8 t1 C( {' s
        }0 e) E4 o2 T6 u; W$ s" ]
        UF_CALL(UF_MODL_create_fitted_spline(spdata,&sp1,&poit,curve_id));4 i) a( U) k8 d* b8 t2 z' }: t
}
- g! {$ e7 R8 M; ]! L4 C2 a
% j; }* d% V! f* U8 Qextern DllExport void ufusr( char *parm, int *returnCode, int rlen )
# r9 M5 e3 c# D" K& B* T, I1 G{
; x0 z" E. U9 r( i    if( UF_CALL(UF_initialize()) )
$ @" t2 b1 |( l& u6 F# d    {
9 R+ ?& F; v) C1 n        return;
5 L3 o! C4 s+ E0 r, e    }% @* {7 ~3 S6 C  q
    do_creat_spline();
5 W: k3 T! G* c3 ~  _    UF_CALL(UF_terminate());
  ?. ^$ ?1 O# ^( \( P* ^. u+ V3 ^}
: J3 k: A2 M, {1 J; u8 ~' p$ a3 m: x7 `' I& y9 |

+ W/ @) |; J; |extern int ufusr_ask_unload( void ); M4 R3 |+ Q$ l$ L
{
4 u  m2 |! A  i2 v0 e# R    return( UF_UNLOAD_UG_TERMINATE );
- u. ]) D; r! `1 H0 j/ i& W2 T2 r}
, e6 {) e( \& L, o# Y
- h, h1 c. v6 U
回复 支持 反对

使用道具 举报

发表于 2012-4-10 14:16 | 显示全部楼层
本帖最后由 samfkkkk 于 2012-4-10 14:45 编辑 ) S7 S6 U. A7 [" J/ f2 N

; v# }0 T; S9 Z3 f" i5 `) Mdouble pt[ptnum][3]={1.1000,  0.5320,  2.0000,
# U- d1 |' W' C# _4 U7 ~" i9 U( E2 l                      1.5240,  0.6789,  2.3000,
; ]' @# [8 }1 w) }# g" _/ _2 o$ |                      2.0000,  0.9000,  3.5956,
% q$ J" I9 C3 p3 p" o                      2.3456,  1.3456,  3.7890,0 j8 Q# O& ~8 Y0 d; K
                      3.1000,  2.4567,  3.3214 };
  q0 v$ f5 i3 }6 ^3 x: Vfor (i=0;i<ptnum;i++). ^) G: x( I) z
        {     5 S& d: D3 L* R9 U6 C
         spdata->points【i*3]=pt【i] [0];, T! n. x( R- R
         spdata->points【i*3+1]=pt【i] [1];
' g/ Z1 R- f* N: s4 Y" V% T) V         spdata->points【i*3+2]=pt 【i][2];8 R* y3 l* \5 R% S/ s
        }
+ _$ S& ?5 q6 Y- |9 j' h
2 {5 V0 c' J( L( f5 o
. C2 n- q+ b5 F7 y试试
, j8 k+ |. [& x* K

" x* a# n7 N4 |, {( R' }; T3 Y9 t0 g0 W
补充内容 (2012-4-11 08:46):9 H$ x4 J! i- a9 @
回家试了一下,貌似不行。。。我再想想

点评

你问的问题,是一些非常基础和简单的问题,看你的代码就知道,你根本就没有理解输入的参数是什么。 拿你的数据做了一下,可以看看结果;(你可以把你的点整到NX,然后手工拟合,看看与我动画的曲线形状是不是一样的  详情 回复 发表于 2016-7-10 16:06

评分

参与人数 1激情 +2 G币 +10 收起 理由
victor_tech + 2 + 10 助人为乐!

查看全部评分

回复 支持 反对

使用道具 举报

发表于 2015-3-10 18:50 | 显示全部楼层
楼主该问题解决没有 我现在也是这个问题 通过点生成样条曲线 谢谢
回复 支持 反对

使用道具 举报

发表于 2016-7-10 16:06 | 显示全部楼层
samfkkkk 发表于 2012-4-10 14:16
0 f5 k$ P' d4 v2 A2 A" U3 Zdouble pt[3]={1.1000,  0.5320,  2.0000,, {% [5 _9 g; R8 S
                      1.5240,  0.6789,  2.3000,  F% R/ y9 a9 e2 N9 _
           ...

& C8 h- q) e* \你问的问题,是一些非常基础和简单的问题,看你的代码就知道,你根本就没有理解输入的参数是什么。
. |, d* c; d9 B* K 拿你的数据做了一下,可以看看结果;(你可以把你的点整到NX,然后手工拟合,看看与我动画的曲线形状是不是一样的。0 H6 n1 \# p. I9 }: Y6 q& j
二次开发相关的资料目前在网络上少得可怜,能找到的也是一些老的MFC在搞,那些代码:$ v3 S4 u: J. v1 T- d
1、教授也是乱抄的,拿过来直接编译都是不通过的;
0 V) }3 p( c; A9 X2 Y( X2、已经过时,建议不要学了;3 `& B* x! O. m* K
3、要学就学最新版的UI界面来做二次开发。
' [4 j; ^  m0 J* R! _ 在整个网络上,目前能将二次开发,从入门讲解做到高级的二次开发工具做出来的教程,只有我做过。
  E# u% ?2 v9 v! p! O% m7 k 有兴趣关注一下:(可以看目录,还有前面的试看教程)  n% |) z8 T. }2 a4 h* o0 r
http://www.chuanke.com/3405460-153615.html: P5 p. q* Y6 E# m  L0 Z
拟合曲线.gif 4 ^6 y0 O9 g% X6 @5 d' ?

- d+ n2 V4 o! ~3 x& t( T
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|关于我们|sitemap|小黑屋|Archiver|手机版|UG网-UG技术论坛-青华数控模具培训学校 ( 粤ICP备15108561号 )

GMT+8, 2025-6-27 23:47 , Processed in 0.074084 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表