青华模具培训学校

 找回密码
 注册

QQ登录

只需一步,快速开始

青华模具培训学院
查看: 2356|回复: 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 ) d+ |9 J* i( i6 `
你好歹得把你的源代码放上来才能看你到底错在哪里了

$ ^3 ~! Y! r1 v4 l, F% g哦,多谢高手关注,我贴上代码求指导!!
, s# P* n6 N5 x
- j" O( n) h, h1 I1 O- t7 Q; y1 [$ z#include <stdio.h>
! G: ?7 d$ S( }+ B/ f5 K#include <uf.h>  n  Z3 y' _5 ~  e. ^" i8 \; @
#include <uf_ui.h>/ E" I7 W6 C4 C1 K$ J
#include <uf_modl.h>7 C; b8 T/ F3 X% a# r4 ~% r1 ]  D
#define ptnum 5
1 N4 q5 y2 x5 E. n6 C6 w( t) X#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X))), w6 E$ B7 `. B$ l3 M9 b

2 u5 \8 n2 t& e% sstatic int report_error( char *file, int line, char *call, int irc)
8 G! B! o7 I! Y# a4 e{7 W+ J9 C3 z5 M$ k+ W
    if (irc)
; d$ ^, o0 D% x* L8 j( O! g- f: B    {
1 o" W. R' B3 E* G        char err[133],
! D4 w: [4 D8 `% A2 L5 A. l  s             msg[133];
/ V" v9 Z2 a& T) f7 s, i% w& V  V! x
* v3 x, ?- g% m: S% k        sprintf(msg, "*** ERROR code %d at line %d in %s:\n+++ ",
1 h' C- u- h5 f' ^7 ~            irc, line, file);7 P8 V3 `- C1 K
        UF_get_fail_message(irc, err);
5 ?2 Z2 l1 {, h4 k; X
3 t5 E. ~) _4 s& t8 s: z+ Y- ?        UF_print_syslog(msg, FALSE);
$ I1 G" T( m2 G' o        UF_print_syslog(err, FALSE);2 @) E3 Q/ E7 W$ T
        UF_print_syslog("\n", FALSE);/ {. I$ |) ^3 O! z; L( i8 |" A- G
        UF_print_syslog(call, FALSE);/ F0 \' K5 [- q. w
        UF_print_syslog(";\n", FALSE);' b$ J1 k. l' A" p
# n( x2 |. m! K7 I% ]$ n+ e7 E/ V
        if (!UF_UI_open_listing_window())$ u. L" w& d6 D5 G5 l
        {
% N* e# d1 F- |/ o6 l5 I" F6 ?' I* T% t; d            UF_UI_write_listing_window(msg);
; ?- M+ m) r& E# f  [% D            UF_UI_write_listing_window(err);
5 w1 W. v: O5 j9 W7 k            UF_UI_write_listing_window("\n");! E* L1 ^1 j! ]$ Q! C  f6 z" b, U% Y
            UF_UI_write_listing_window(call);
; [. W) h* t- ?, z- j; K: T6 d6 W            UF_UI_write_listing_window(";\n");
* r$ g7 _, {( M+ Q( e' S        }) L: _! `" p* t' H3 e3 x+ I2 ?
    }9 Z$ y1 A. |0 e# Y, C3 o. H% p
4 K$ t/ q* F" `0 ~
    return(irc);, R: B1 T2 W3 e4 Y
}% P# j% U/ v' e

+ I% J6 n' y! {  H* D& ^6 T7 L: V
7 y0 H- m* r9 ?, E- xstatic void do_creat_spline()" }/ R  k4 j& f" ~, t
{
" |! U$ G2 b& J5 t        SPLINE_FIT_p_t spdata;
% {5 J0 [( ?: @        double sp1,- o% P) q/ J+ ~, E
                pt[3*ptnum]={1.1000,  0.5320,  2.0000,) ]0 b3 X5 D! c3 f- F& m% F! d
                      1.5240,  0.6789,  2.3000,5 W1 h0 L& b! }' t7 X& z
                      2.0000,  0.9000,  3.5956,
0 n6 k; y: c4 F; L- X0 Y                      2.3456,  1.3456,  3.7890,  G$ K$ z& c" V+ U7 k/ D7 O$ ]: w
                      3.1000,  2.4567,  3.3214};
" P' n; H/ p8 X- D, w        int poit,i;
& a+ Y3 U: q& M        tag_p_t curve_id;0 C4 e6 S9 ^! x0 m# Y
        spdata->degree=3;3 D# i8 o8 |9 e/ {, d
        spdata->num_of_points=ptnum;
7 z: X$ B5 b8 i% w6 h        spdata->num_of_segments=1;
- D. r) P. E7 k3 p: h4 \        for (i=0;i<ptnum;i++)
% A6 B3 {( `% g% [3 C. h        {: p: y% T) F" u: e# @
                spdata.points[0]=pt;
& L/ T8 u4 K1 l! F- M                spdata.points[1]=pt[i+1];0 d" ]& [8 n  m5 w" Z5 U
                spdata.points[2]=pt[i+2];# w3 c# k$ N7 {6 }' Z0 c
        }
- \1 D7 d; `  G. b! T! x+ ~        UF_CALL(UF_MODL_create_fitted_spline(spdata,&sp1,&poit,curve_id));" J) l4 F/ D1 A3 W
}; b0 y2 T9 V3 r6 l% O1 [4 q3 K& Z

! O3 {' S; I: u6 Xextern DllExport void ufusr( char *parm, int *returnCode, int rlen )
* x7 ?! B4 v, K{0 e! e( w, {6 E! j7 ]) d
    if( UF_CALL(UF_initialize()) )
& ?- P; A0 q! r  W0 q' n0 J    {
& c( N  n, Y/ V; x        return;
; |3 u& c% t2 J    }
- J- A/ }+ ^  R! [+ z4 f( T3 ]    do_creat_spline();
" y4 @( j! M9 E2 u9 t/ H    UF_CALL(UF_terminate());
- E; ^" B$ l# {' |; }0 m9 z1 U}
/ Q% _; Y3 V) [4 @0 e) Y  v; ^$ ?! h- {7 R

3 Z# }) I5 d! i  L2 c9 xextern int ufusr_ask_unload( void )9 e& c" M: i4 t% n$ }! n! `$ C; N. w
{
% x6 Q# O% j4 c' L& N    return( UF_UNLOAD_UG_TERMINATE );
2 L2 O& F, I- @- t}. U! P& R: u( |6 b3 Q
% A/ t2 t/ f+ i; m. n
回复 支持 反对

使用道具 举报

发表于 2012-4-10 14:16 | 显示全部楼层
本帖最后由 samfkkkk 于 2012-4-10 14:45 编辑
/ r2 Z/ I1 K, Y5 f5 N4 ]( W/ r3 ]
9 z" G; i0 H- rdouble pt[ptnum][3]={1.1000,  0.5320,  2.0000,
2 _  g! z$ r/ d8 `                      1.5240,  0.6789,  2.3000,
& \5 R1 c8 W7 t4 g  B                      2.0000,  0.9000,  3.5956,
- K5 T! J8 z8 l( G' T) Z8 k' K                      2.3456,  1.3456,  3.7890,
9 h8 H5 _. b; x+ O0 l4 S6 ?+ [) H                      3.1000,  2.4567,  3.3214 };5 `5 M) c' \' V0 _
for (i=0;i<ptnum;i++)* h7 c: B1 q2 q3 d
        {     * @1 w6 v  H. u! m' t5 K
         spdata->points【i*3]=pt【i] [0];
* _+ b' ^( L% N) S         spdata->points【i*3+1]=pt【i] [1];2 T) e8 n- ^! X: I" T8 T
         spdata->points【i*3+2]=pt 【i][2];
# p8 n$ @" w9 g+ C2 }        }
9 A' l; G) ^* J6 Q& ?9 C/ c* l8 @; N- [. f, B6 w7 x6 U

- e. a# Y5 g. f& y/ S) B3 M试试

2 X. ]; m/ ]% S& o& X' X. j+ ^5 {$ q9 H* m$ @  K3 \& P4 H8 T
! c: i1 k& _# U! N0 g
补充内容 (2012-4-11 08:46):: z: }8 v0 t4 Z/ {) [
回家试了一下,貌似不行。。。我再想想

点评

你问的问题,是一些非常基础和简单的问题,看你的代码就知道,你根本就没有理解输入的参数是什么。 拿你的数据做了一下,可以看看结果;(你可以把你的点整到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
% g( v0 R! @. a; X4 r( i$ p2 bdouble pt[3]={1.1000,  0.5320,  2.0000,
! I2 l9 M% }1 m, ^. i( e% m) N                      1.5240,  0.6789,  2.3000,. S0 ?5 W- x) V7 r, T, O
           ...
2 i8 R2 L, W5 \
你问的问题,是一些非常基础和简单的问题,看你的代码就知道,你根本就没有理解输入的参数是什么。
: l# M. F' J" j8 j6 G. [3 T1 f- } 拿你的数据做了一下,可以看看结果;(你可以把你的点整到NX,然后手工拟合,看看与我动画的曲线形状是不是一样的。% p# w, E2 K& f" u/ J4 o; n
二次开发相关的资料目前在网络上少得可怜,能找到的也是一些老的MFC在搞,那些代码:) V. E6 p% N7 ]. O0 j
1、教授也是乱抄的,拿过来直接编译都是不通过的;+ K8 g/ Y( u4 f) C
2、已经过时,建议不要学了;
# g0 b8 x& x9 R6 D1 w3、要学就学最新版的UI界面来做二次开发。. H. T* b7 C; W# }
在整个网络上,目前能将二次开发,从入门讲解做到高级的二次开发工具做出来的教程,只有我做过。" P# }+ X: V! n6 ?- N8 c, P4 A
有兴趣关注一下:(可以看目录,还有前面的试看教程)5 p6 [4 [5 L# N' a
http://www.chuanke.com/3405460-153615.html
5 D4 ~0 k2 @1 O, y& ]( Z7 M& ? 拟合曲线.gif
/ J, Z' l" ]+ k/ c$ B( F
7 o: I$ J  l* c* i$ x9 p
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-27 21:36 , Processed in 0.237231 second(s), 28 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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