青华模具培训学校

 找回密码
 注册

QQ登录

只需一步,快速开始

青华模具培训学院
查看: 2292|回复: 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
" [- k8 \7 F. P4 h9 |; M, f你好歹得把你的源代码放上来才能看你到底错在哪里了
% b1 ^' o4 i) z3 ^* V! I3 v
哦,多谢高手关注,我贴上代码求指导!!
2 i& d5 v- E: \+ R8 J/ a0 e( `0 `7 @. o1 x& Q
#include <stdio.h>
3 E0 s0 m+ _$ o( @+ S; A; j( j#include <uf.h>
5 v, m! y1 h$ j6 u#include <uf_ui.h>7 R: _3 O# ?% f0 P
#include <uf_modl.h>
8 }0 b% X. b' T8 G# W: g5 J#define ptnum 5% w* {4 j. J, w5 f2 c; d
#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))
$ ]( _  e* a/ V/ s: r
: d! t  a7 M: H9 N, nstatic int report_error( char *file, int line, char *call, int irc)
4 W& Z* L/ L- i% K4 O{+ `4 }1 g8 O7 @
    if (irc)
. C% A; L9 a) y5 p# k4 b9 I6 ~3 q: |    {
/ `. |) x* Y! g4 m        char err[133],0 h2 z/ D& ?* o- q- F& h
             msg[133];
( Z  Z4 R! \9 k* |- ?# G9 q2 ]1 `% d: d" f
        sprintf(msg, "*** ERROR code %d at line %d in %s:\n+++ ",& s$ h8 O& r! R. ~" S
            irc, line, file);
2 ]) _7 P! u& G" p        UF_get_fail_message(irc, err);
: G* o& v. O9 ^. E9 Z& M! u* a: B
  c/ K. G0 O" d+ q% m        UF_print_syslog(msg, FALSE);
3 l' m; v5 a- A        UF_print_syslog(err, FALSE);
# x% J9 Y/ J1 u7 Y; U        UF_print_syslog("\n", FALSE);
( m6 u0 w5 c$ c4 N2 e9 B        UF_print_syslog(call, FALSE);* T, L8 q, \) b: u1 n/ q* H
        UF_print_syslog(";\n", FALSE);
! ~& ?: E" D% Y" U2 q- P/ l8 A, g; ^! C/ L4 f: O  ~" M8 @4 _
        if (!UF_UI_open_listing_window())% U3 N" e: e0 U9 i! J
        {
6 k: _# H2 s+ F            UF_UI_write_listing_window(msg);
7 h* U  h" R) e+ ~% H5 F            UF_UI_write_listing_window(err);
% s7 T1 |" s: h2 J9 E            UF_UI_write_listing_window("\n");
; p! r. e/ k7 M" n4 C& l            UF_UI_write_listing_window(call);
5 G4 u/ t7 ~, Z  m7 e6 b            UF_UI_write_listing_window(";\n");
. _; k5 P# X' ?% h        }3 M  [8 d) `, ?$ C
    }
& y, h0 ?* ~9 s5 y/ d' T" l  h2 M# |* I* b# v7 H, S
    return(irc);! y6 p# p7 R4 N0 y' W5 q- X; p9 T
}
* {' z0 ]. c+ w! Y% y* o- E1 [9 B  E* J- m2 [: t3 A

: [! e# J# A. }! [. astatic void do_creat_spline()  M8 f! k: }  S3 X# |; n
{% I) {8 n( R$ g: U' X& l  j3 L
        SPLINE_FIT_p_t spdata;
) N$ T- Y! a& Q' a# C3 z4 @# w        double sp1,
4 _6 |% Q0 v' _4 H5 k* e" b4 z' F                pt[3*ptnum]={1.1000,  0.5320,  2.0000,
/ b6 n9 W8 X0 u6 _- h% K                      1.5240,  0.6789,  2.3000,# i# K) K0 ]7 n9 ]* U
                      2.0000,  0.9000,  3.5956,' P8 C! c0 `" D5 d# \
                      2.3456,  1.3456,  3.7890,
3 e7 H, z' b2 e: j: t: j                      3.1000,  2.4567,  3.3214};
) Z$ H/ \2 d4 g8 b1 R% T        int poit,i;
2 A8 U& ^$ y+ c8 v' s2 Y7 ]3 a. C        tag_p_t curve_id;3 ~# u- p2 {  c7 t6 `
        spdata->degree=3;
: |/ h! U$ T- x) s* g        spdata->num_of_points=ptnum;) M2 N' {4 r/ }8 M+ ^
        spdata->num_of_segments=1;
  M& m3 F! X0 ~" H8 o        for (i=0;i<ptnum;i++)
- z8 L4 q3 Y! `3 ?        {) E& C9 p2 p6 }% W
                spdata.points[0]=pt;
, z3 q8 G& L6 Z) Z                spdata.points[1]=pt[i+1];
+ |9 X& d, s) |( u2 ]                spdata.points[2]=pt[i+2];1 c6 |. a! m0 W
        }
8 T. `9 N7 u2 q% @; |+ T3 P$ C        UF_CALL(UF_MODL_create_fitted_spline(spdata,&sp1,&poit,curve_id));7 z; L2 O. N7 ^. p$ a
}
# ~4 q+ C1 {, p: w6 `' w) T- x, V3 m
  X0 t' {; \* V! Nextern DllExport void ufusr( char *parm, int *returnCode, int rlen )
8 l1 o3 Q3 H4 d: S, W% I* F{
6 W$ o: Z. g. K% p. q    if( UF_CALL(UF_initialize()) ) # N6 d; u# x* d& r4 H) `
    {9 G7 d/ O& U- _+ g, B
        return;1 D- H2 c, V) z
    }
$ v5 V1 p, G/ c5 _/ {4 s  x* l    do_creat_spline();$ [5 X" w; M3 U7 [  c7 N) P( N' U1 k  @
    UF_CALL(UF_terminate());4 R) Q) d3 t& W4 h( A9 ~, X/ l
}/ l4 W' S1 m# H. Z" X; d  Q& P
* l8 B+ D! l+ q) D9 o

" _5 _6 R5 a. X# z; i$ l* Sextern int ufusr_ask_unload( void ); j) e% a. }% z( G1 W+ w
{5 {  M* b: ~# b/ L( Y7 `
    return( UF_UNLOAD_UG_TERMINATE );) ?6 t, q" c# l# S
}- m4 n+ \2 ^! `3 F  [2 q
8 s* F) M% t/ P, P. T% f9 D! Y
回复 支持 反对

使用道具 举报

发表于 2012-4-10 14:16 | 显示全部楼层
本帖最后由 samfkkkk 于 2012-4-10 14:45 编辑 6 [% V3 Z4 ~! P0 S! ^
. N9 m6 }/ f7 {5 i& K
double pt[ptnum][3]={1.1000,  0.5320,  2.0000,3 l' N: ?4 x! u2 Q
                      1.5240,  0.6789,  2.3000,
6 @+ y% M5 ]2 c: l! m                      2.0000,  0.9000,  3.5956,; M7 `7 Z; S3 R( X* W
                      2.3456,  1.3456,  3.7890,6 x+ \1 R; N" \6 t7 [
                      3.1000,  2.4567,  3.3214 };
+ [) L& O) X& g- X  Z2 Jfor (i=0;i<ptnum;i++)8 h( W" C  Q/ `. [
        {     4 m( W, ], K8 o  q& N  _
         spdata->points【i*3]=pt【i] [0];
, A+ N2 [+ H( N  W. u1 Z+ I! m         spdata->points【i*3+1]=pt【i] [1];
  ^- c0 ?3 ~- b1 J7 Y( U. p& z         spdata->points【i*3+2]=pt 【i][2];! J$ Z/ h' R) k* L6 q5 v
        }( W  O* m. K: k7 o

" O% ]5 ?5 F. f+ {9 [8 d2 ~1 e$ L
" S& o9 r$ G  w( L( d" M试试

. i0 \/ ?/ L# l' M0 P  N* B4 z' Z* D1 N6 ]7 w
1 p, R) J$ I* R: }& U) }6 ]
补充内容 (2012-4-11 08:46):
) m( g) W4 Q- T1 ~( B7 o回家试了一下,貌似不行。。。我再想想

点评

你问的问题,是一些非常基础和简单的问题,看你的代码就知道,你根本就没有理解输入的参数是什么。 拿你的数据做了一下,可以看看结果;(你可以把你的点整到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 F4 B% r. N! s" {+ g, B7 Hdouble pt[3]={1.1000,  0.5320,  2.0000,
# M/ L! ~( }! b! L                      1.5240,  0.6789,  2.3000,
9 Z1 l$ f" i( M" h, U: L           ...
  T0 {6 `3 \+ V$ R" D. g
你问的问题,是一些非常基础和简单的问题,看你的代码就知道,你根本就没有理解输入的参数是什么。
" M0 X! }' i. M- W+ B  y4 t6 w 拿你的数据做了一下,可以看看结果;(你可以把你的点整到NX,然后手工拟合,看看与我动画的曲线形状是不是一样的。" t. D! b! N4 X3 P; _7 E1 G
二次开发相关的资料目前在网络上少得可怜,能找到的也是一些老的MFC在搞,那些代码:* X8 ~1 `  e3 c; O& G: d1 i% P7 j
1、教授也是乱抄的,拿过来直接编译都是不通过的;
! U/ U. I3 |* Y  O6 t) n2、已经过时,建议不要学了;/ E0 Z# _% d9 T" R( K4 w1 \
3、要学就学最新版的UI界面来做二次开发。
% c' c& G6 n4 B: ?4 p$ A& f 在整个网络上,目前能将二次开发,从入门讲解做到高级的二次开发工具做出来的教程,只有我做过。
/ b$ y8 y  h. s: V( L 有兴趣关注一下:(可以看目录,还有前面的试看教程)
: q! v: u% A) h3 ~. v( C7 d- Hhttp://www.chuanke.com/3405460-153615.html$ a+ a: G' W0 j4 Q, {) ?2 x" I) {& Z
拟合曲线.gif
! I* T# A9 m4 D' [' i9 {8 n. V3 y' P6 h
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-16 09:52 , Processed in 0.053491 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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