iCAx开思工具箱

标题: 将 2处不一样大小的3个点.使其2处的中心位置重叠! [打印本页]

作者: vvg87    时间: 2005-9-11 20:27
标题: 将 2处不一样大小的3个点.使其2处的中心位置重叠!
因为老师要我们做 UG的API程序..虽然我有学过一点点的 vb.但是我会用 UG. 但对于老师的题目真是"头痛"  
  
题目是:  
先求出3点的中心,然后求出另外3个点的中心,再做变换使两个中心重合?
救一下快不能毕业的晚辈吧!......感恩大家喔!
作者: zzz    时间: 2005-9-12 08:20
已知点的tag,求点的坐标,函数在uf_curve.h中,UF_CURVE_ask_point_data()。
每一个点的坐标得到后,可以求出它们的中心,
两组点的中心得到后,相减可以得到变换的矢量。
  
使用uf_trns.h里面的uf5943_ (
double * rp1,  
double * rr2 ); 得到变换矩阵,使用uf5947()变换。
作者: vvg87    时间: 2005-9-13 08:48
ZZZ版主前辈!
昨天做了一晚还是不懂喔!
因为我用 UIStyler  把程序介面作好!..但是不知如何套用耶!...试了又试! 可能我真的太笨了!
...是不是如 "手把手教你做UG二次开发" 中一样  把大大您给的函数 套用如"手把手教你做UG二次开发" 一样?
可以将流程 大致讲一下吗?
  面临 黑色星期四  又要面对专题老师了!...如果还没有成果  老师又会叫我们加再做一些别的!...真命苦呀!
但是我还是 要努力去向 大大们 学习喔!.....感恩您!
  
下图是用 UIStyler 做出来的介面喔!...
作者: zzz    时间: 2005-9-13 13:24
从你的图上看,就是一个纯粹数学的问题嘛,现在所要做的工作是要把坐标值从对话框的各个域中读出来。
从real里面读数值的方法,以前的帖子里面应该有。https://www.icax.org/viewthread. ... %3D1&page=#pid=
作者: vvg87    时间: 2005-9-13 23:17
标题: ZZZ版主前辈!
我程序介面做错了!...  因该是先将程序开启来..再用 鼠标器点选要移动的 3个点...再点选目标位置的3个点......
不过介面也不知如何设计!    可以麻烦 ZZZ前辈指导吗?  感恩~~~
作者: vvg87    时间: 2005-9-13 23:43
标题: 可能大大会觉得我很罗唆!...但是学习要有 "不耻下问" 的精神!....
看了那一篇还是不懂!...函数要加在哪里呢?
用 UIStyler 做好存档后 会生成 3个档.......是加在其中一个上吗?
又要如何生成 dll 档呢!..............
  可能大大会觉得我很罗唆!...但是学习要有 "不耻下问" 的精神!....前辈可以再帮我吗? 感恩~~
作者: vvg87    时间: 2005-9-14 07:46
标题: 看过很多 前辈的作品!..设计流程大概有点懂了!
"编译连接" 是如何使用呢?  是生成 DLL档的步骤吗?
UG/OPEN API 书中都是讲大要而已! 细节都简单带过!(太专业了)
因为新学习的我..都会"摸不着头绪" 不知如何是好!
明天又是 "黑色星期四"..又要面对专题老师了!
....希望ZZZ前辈是否可以指导!...让晚辈能顺利做出来喔!.....感恩您!


作者: zzz    时间: 2005-9-14 16:37
原帖由  于 2005-9-13 23:43 发表
看了那一篇还是不懂!...函数要加在哪里呢?
用 UIStyler 做好存档后 会生成 3个档.......是加在其中一个上吗?
又要如何生成 dll 档呢!..............
  可能大大会觉得我很罗唆!...但是学习要有 "不耻下问 ...


加在OK或Apply的callback中啊。
作者: zzz    时间: 2005-9-14 16:39
原帖由  于 2005-9-14 07:46 发表
"编译连接" 是如何使用呢?  是生成 DLL档的步骤吗?
UG/OPEN API 书中都是讲大要而已! 细节都简单带过!(太专业了)
因为新学习的我..都会"摸不着头绪" 不知如何是好!
明天又是 &quo ...


是的
作者: zzz    时间: 2005-9-14 16:42
建议在你的对话框中设计两个按钮,点第一个选择三个点,点第二个选择另外三个点,然后点击OK或Apply完成移动。
作者: vvg87    时间: 2005-9-14 21:08
标题: 明天要被 "剥皮了"...救命阿~~~~~....
ZZZ前辈.....
还是没有办法  生出DLL档........
而  【已知点的tag,求点的坐标,函数在uf_curve.h中,UF_CURVE_ask_point_data()。
每一个点的坐标得到后,可以求出它们的中心,
两组点的中心得到后,相减可以得到变换的矢量。

使用uf_trns.h里面的uf5943_ (
double * rp1,
double * rr2 ); 得到变换矩阵,使用uf5947()变换。】

还是不知放哪里!...试过好多..还是不行喔!
...过程跟 前辈您的范本~...不太一样( VC++时)....

啊~~~~~~~ 明天要被  "剥皮了"...救命阿~~~~~....
作者: zzz    时间: 2005-9-15 11:44
定义了对话框后,dll没有生成?前面我不是写了一个“手把手”吗?
作者: vvg87    时间: 2005-9-18 20:33
标题: 有不一样的地方..但是就是不知如何是好啊~~
...不知何时才能如愿啊~~~~~
下图是我的制作过程!..但是和 ZZZ前辈的..有不一样的地方..但是就是不知如何是好啊~~
...... 祝前辈们  中秋节 大家都团圆啦!
作者: vvg87    时间: 2005-9-18 20:38
标题: 有不一样的地方..但是就是不知如何是好啊

作者: zzz    时间: 2005-9-19 17:53
前面这些步骤就是一个建造project的过程,和其它的project没有什么区别,UG的project就是要把libugopenint.lib 和libufun.lib连接进来而已。
作者: vvg87    时间: 2005-9-19 20:00
标题: 要如何用呢?
因为有看到 前辈您在 手把手的 VC++上有做到...

但是我不会用!
因为没有看到 libugopenint.lib 和libufun.lib 档啊~

..可请前辈 教导吗?   感恩您喔!
作者: zzz    时间: 2005-9-20 17:39
这两个文件在$UGII_BASE_DIR\UGOPEN\下啊
作者: 深夜摔键盘    时间: 2005-9-20 18:51
出于好奇,灌水。

vvg87不是大陆的吧?
作者: vvg87    时间: 2005-9-20 19:14
标题: 晚辈来自台北~
晚辈来自台北~
因为台湾对这方面根本没有任何参考之料!
自从专题老师 定题目开始..就花了半年找资料..直到今年初 从网络 向祖国订一本 UG OPEN/API  但是没接触过
所以看有些懂而已!.....   后来幸好 贵站的 前辈们 帮助晚辈~....感恩喔!

因为我们全台湾只有不到5间的学校有教!  而且 只有UG 旧版的英文介面的2本书(CAD.CAM)..
而教我们的老师就是我们 毕业专题的老师!......
起初对 API都不懂!....但是由于老师的压力..使得我们要利用仅剩的时间去找相关资料.
  多谢 ZZZ前辈的救命之恩!.....及前辈们的指导  感恩喔!~~~~~
作者: 深夜摔键盘    时间: 2005-9-20 21:23
同感,资料太少。UG的文档也有很多地方都讲得不明白。参考书,以前也就两本,基本上是文档的中文版,一本GRIP,一本OPEN/API。现在pztony说的那本,一直也没机会见,不知怎样。去年接题后的第4天,如果不是误打误撞找到了这里,也不知道要摸索多久。

看老兄的贴,觉得你们那边的人比较肯钻研东西。能交个朋友吗?
作者: vvg87    时间: 2005-9-20 21:58
标题: 大家都是一家人啊!
大家都是一家人啊!
作者: vvg87    时间: 2005-9-20 22:41
标题: ZZZ前辈~~~~~ 我又来了!
ZZZ前辈~~~~~  我又来了!
还是在C++卡住了喔!
如何将  libufun.lib   libugopenint.lib   带入(如下图)..

而前辈您 给的 :
[已知点的tag,求点的坐标,函数在uf_curve.h中,UF_CURVE_ask_point_data()。
每一个点的坐标得到后,可以求出它们的中心,
两组点的中心得到后,相减可以得到变换的矢量。

使用uf_trns.h里面的uf5943_ (
double * rp1,
double * rr2 ); 得到变换矩阵,使用uf5947()变换。]

是不是指:
extern UFUNEXPORT void FTN(uf5943)(
double *rp1,             /* <I>
                         Distance To Translate
                         rp1[0-2] contains Dx, Dy and Dz respectively.
                         */
double *rr2              /* <O>
                         Translation Matrix.  This must be a 16 element
                         array.
                         */
);  





extern UFUNEXPORT void FTN(uf5947)(
const double *rp1,            /* <I>
                              Defined Transformation Matrix.  This must be
                              a 16 element array.  This array should be
                              initialized using the functions uf5942-uf5946
                              to produce the required transformation.
                              */
const tag_t *np2,            /* <I>
                             Array of object identifiers.
                             */
const int *ip3,               /* <I>
                              Number of objects in np2 array.
                              */
const int *ip4,               /* <I>
                              Move/Copy Status
                                  1 - Move
                                  2 - copy.
                              */
const int *ip5,               /* <I>
                              Destination Layer,
                                  0       - the original layer,
                                  -1      - the work layer
                                  1 - 256 - the specified layer
                              */   
const int *ip6,               /* <I>
                              Trace Curve Status, 1 means on, 2 means off.
                              */
tag_t *nr7,                /* <O>
                           List of copied object identifiers.  This is
                           not used when ip4 = 1.  When ip4 is 2, this must
                           be dimensioned by the caller as large enough to
                           contain the same number of objects that are in np2.
                           */
tag_t *nr8,                /* <O>
                           Group of trace curves.  This is not used when
                           ip6 is set to 2.
                           */
int *ir9                   /* <O>
                           Status Code
                             0 - Success
                             1 - Too Many Or Too Few Entities To
                                 Transform
                             2 - Invalid Parameter
                             3 - Invalid Object (Not Alive Or Not
                                 Transformable)
                             4 - Shear Matrix With Non-shearable
                                 Objects In The List
                             5 - Modeling update error
                             6 - Error adding modeling data to copied solid
                             7 - Cannot scale parametric solid
                             8 - Transformation is unsuitable for the object
                             9 - Cannot scale developed curve
                            10 - Cannot mirror solid
                            11 - Cannot transform occurrence
                            12 - Cannot transform sketches or sketch curves
                           */
);      

#ifdef __cplusplus
}
#endif

#undef EXPORTLIBRARY

#endif    /*  END UF_TRNS_INCLUDED  */




extern UFUNEXPORT int UF_CURVE_ask_point_data(
tag_t point ,/* <I>
             Object identifier of point to inquire about
             */
double point_coords[3]  /* <O>
                        Coordinates of point in absolute space
                        */
);



这些是吗?......要如何加在 OK或Apply的callback中啊!<有看到但是不知道在哪个里面!>


哎呀!....星期4 又要到了......
ZZZ前辈... 因为我的资质太~~~~~~低了!
  步骤可以仔细一点吗?(如果时间可以的话!)
.....感恩您 喔!....
作者: zzz    时间: 2005-9-21 15:33
回调函数的定义是这样的,首先定义两个选择按钮的回调函数。
作者: zzz    时间: 2005-9-21 15:37
然后定义ok和apply的回调函数。
作者: zzz    时间: 2005-9-21 15:41
保存对话框,生成3个文件

my_first.dlg
my_first.h
my_first_template.c

这三个文件都是有用的,my_first.h和my_first_template.c用来创建vc的project。


作者: zzz    时间: 2005-9-21 15:49
打开my_first_template.c,可以找到几个相关的回调函数的位置。

int CHANGE_selection0_cb ( int dialog_id,
             void * client_data,
             UF_STYLER_item_value_type_p_t callback_data)

int CHANGE_selection1_cb ( int dialog_id,
             void * client_data,
             UF_STYLER_item_value_type_p_t callback_data)

是两个按钮的回调函数,需要在里面加上选择函数UF_UI_select_with_class_dialog(),用来选择和保存三个点。
作者: zzz    时间: 2005-9-21 15:55
int CHANGE_ok_cb ( int dialog_id,
             void * client_data,
             UF_STYLER_item_value_type_p_t callback_data)

int CHANGE_apply_cb ( int dialog_id,
             void * client_data,
             UF_STYLER_item_value_type_p_t callback_data)

是ok和apply的回调函数,利用上面两个选择得到的点,使用 UF_CURVE_ask_point_data(),得到点的坐标,经过一番数学计算,得到需要平移的距离,然后利用FTN(uf5943)()得到平移矩阵,使用FTN(uf5947)()平移。
作者: zzz    时间: 2005-9-21 15:56
这下说的很详细了,你该清楚了吧。
作者: vvg87    时间: 2005-9-22 07:58
标题: 奇怪! 问题总是补不完!
奇怪!..怎么还是没有转出 my_first.dll 档呢?
因该是以下的步骤有问题!
""这三个文件都是有用的,my_first.h和my_first_template.c用来创建vc的project""

可是对照 的前辈 手把手的范例!.....我的会有一些瑕疵!..但是又不知何处!.....
真的是 "快疯了!"....

是否可以请前辈 将整个全部制作过程晚辈要来对照我的错误的地方!)
从 UG对话框开始..... 到如何编译与连接,生成了DLL......最后 如何将它在 UG里 调出来使用!
  如有时间允许的话! .....这要求可能对前辈造成困扰!......晚辈在此 感恩您!.....辛苦了!
作者: zzz    时间: 2005-9-22 09:04
ok。
作者: zzz    时间: 2005-9-22 10:31
你的complie和link都通过了吗?
看看你22楼的帖子,你的输出是Debug/my_first.dll嘛,那你到Debug目录下看一下有没有dll。
我也看了一下你前面做的,和我的手把手还是不一样嘛,我的文件是c文件,不是C++,而且我的project里面没有stdafx.cpp和stdafx.h,我不知道使用C和C++有什么不同。
作者: vvg87    时间: 2005-9-22 19:19
标题: !...但是也是没有生成喔!都找不到!
Debug/my_first.dll 和 D:\my_first_UG\application\my_first.dll     都用过好几次了!...但是也是没有生成喔!都找不到!

"也看了一下你前面做的,和我的手把手?是不一?嘛,我的文件是c文件,不是C++,而且我的project里面?有stdafx.cpp和stdafx.h"
我也不知道怎么会这样耶!  可是不会出现 前辈的first_dlg.c及first_dlg.h耶!

我是用 UG NX3  及VC++6.0   喔!

...又被操到感冒了!....
作者: zzz    时间: 2005-9-23 08:55
first_dlg.c和first_dlg.h要自己加入到工程中去的。
作者: vvg87    时间: 2005-9-23 14:17
标题: first_dlg.c和first_dlg.h要如何加入到工程中去呢?
first_dlg.c和first_dlg.h要如何加入到工程中去呢? 因为晚辈对这方面是第一次喔!
作者: zzz    时间: 2005-9-25 21:16
这是VC里面建立project最基本的东西啊。source files,按鼠标右键,Add->Add Existing Items...。Header files,右键,Add->Add Existing Items...。


作者: vvg87    时间: 2005-9-26 23:16
标题: 哎呀!..一边做 一边咳! ..都快咳挂了!...dll档还是不出现!..
哎呀!..一边做 一边咳!  ..都快咳挂了!...dll档还是不出现!..

因为都好像一样但是步骤不知有错吗?..还是生不出 dll档!.....
zzz前辈..如果有时间时..可以将流程讲细一点吗?..从无到有喔!..
如果能比"手把手" 那篇一样就太~~~感恩了~.
要不然都快咳挂了!..dll档还是不给出喔!...........感恩ZZZ前辈!
作者: zzz    时间: 2005-9-27 08:27
找VC的书看一下吧,我的“手把手”其实就是一个建立project的过程。
作者: zzz    时间: 2005-9-27 08:27
找VC的书看一下吧,我的“手把手”其实就是一个建立project的过程。
作者: vvg87    时间: 2005-9-27 23:10
标题: 终于做出前半段了!...但是dll档还是 没有出现!.......
今天在书店 找了 C++的书..但是没有很多关于建立project的过程...所以上网找了一下!
  终于做出前半段了!...但是dll档还是 没有出现!.......
libufun.lib  及 libugopenint.lib 要如何将它 输入 Project -> Settings -> Link 中?

ZZZ前辈 可以协助吗?  感恩您喔!
作者: vvg87    时间: 2005-9-27 23:14
标题: 但是dll档还是 没有出现!.......
但是dll档还是 没有出现!.......
作者: zzz    时间: 2005-9-28 08:41
在这加。
作者: zzz    时间: 2005-9-28 08:44
你的obj文件在哪?compile都没有完成吧。
作者: vvg87    时间: 2005-9-29 08:06
标题: ZZZ前辈.....我有将制作过程 用图文纪录下来了喔!如附件!
ZZZ前辈.....我有将制作过程 用图文纪录下来了喔!如下!
还是没DLL档....因为我会的步骤都用在里面了!....
找过 书店里的 vc++ 6.0  关于这部份的资料都很少..
上网找了一大夜..还是没有帮助!....

随着学校专题期限到来!老师又盯的很死!.....还有许多科都要交报告!实习!......压力越来越大了!

希望ZZZ前辈能拉 晚辈一把!....协助晚辈能在1星期之内把它完成喔!  感恩喔!

https://www.tianren.org.tw/1/1.htm
作者: zzz    时间: 2005-9-29 08:32
访问不到?


作者: vvg87    时间: 2005-9-30 23:43
标题: 把网址 copy 下来.再开启新的流览器.再将网址贴上.即可.....因为服务器 怪怪的!
把网址 copy 下来.再开启新的流览器.再将网址贴上.即可.....因为服务器 怪怪的!
作者: zzz    时间: 2005-10-1 23:39
看到了,我都是用Build,Build菜单里面的第二个,不是用第一个Compile,是不是这个原因。
作者: vvg87    时间: 2005-10-2 23:08
标题: 还是不行耶! 是有些没设定到吗?.....
还是不行耶!  是有些没设定到吗?.....
如 .c 或 .h 里要加上什么吗?
作者: zzz    时间: 2005-10-4 20:04
build过程中没有出错吗?
把你build过程中的output贴上来看看。


作者: vvg87    时间: 2005-10-4 22:15
标题: 环境变量 我的这段好像有错喔!
UGII_USER_DIR=E:\my_first_UG
环境变量  我的这段好像有错喔!...""E:\my_first_UG"" 这是指什么呢?

今天一下午去逛了很多书店!....但是 VC++ 的这部份全都轻松带过!.....但是好像是这部份也有问题喔!
作者: vvg87    时间: 2005-10-4 22:28
标题: .c和.h编译生成可调用的 DLL文件
.c和.h编译生成可调用的 DLL文件........这个部份 可以请前辈 讲一下嘛!
作者: vvg87    时间: 2005-10-5 23:04
标题: 在 build过程中 出现错误喔?
在 build过程中 出现错误喔?   看了 "论文" 那篇..还是这样...是.C档里的 回调?...而调用函数 UF_terminate() 要设定吗? 如何使用呢?

  感恩ZZZ前辈~~


--------------------Configuration: my_first - Win32 Debug--------------------
Compiling...
first_dlg.c
d:\my_source\my_first\first_dlg.c(81) : fatal error C1083: Cannot open include file: 'my_first.h': No such file or directory
Error executing cl.exe.

my_first.dll - 1 error(s), 0 warning(s)
作者: zzz    时间: 2005-10-5 23:40
是嘛,在compile时找不到头文件。有两种方法解决,一种是在红框的位置添入d:\my_source\my_first\,我是在vc 2003里面做的,vc6.0也有相应的位置。
作者: zzz    时间: 2005-10-5 23:43
另一种是直接在这加:
作者: vvg87    时间: 2005-10-6 23:07
标题: 用了第2个做法~~~还是不行喔!
用了第2个做法~~~还是不行喔!
....第一个做法 不知再何处选取!
作者: zzz    时间: 2005-10-7 21:45
找你们VC的老师,把他打一顿,然后让他告诉你怎样建一个project。

加了这个路径不行,说明你的.h文件不在这个路径下面,看看它在哪,再把那个路径加进来。


作者: vvg87    时间: 2005-10-7 22:28
标题: 好主意!..我早就想这么做啦! 等我好消息吧!
好主意!..我早就想这么做啦! 等我好消息吧!
作者: vvg87    时间: 2005-10-12 00:47
标题: 终于 生出 DLL档了!
终于 生出 DLL档了!
经过 抓资料比对很多后....发现 我对ZZZ前辈的"手把手" 那篇会错意了和后面别人回复的 混乱了!
....终于生出 DLL档了!......但是在 编译连接UG时出现 " 没有登记该按钮上的操作" 的小窗口....入下图!..
  
  ZZZ前辈 可以请您帮晚辈 看一下  .C档的内容吗!.......都按照 给晚辈的函数用的喔!
作者: vvg87    时间: 2005-10-12 01:00
标题: 整个资料夹文件 压缩档
.C档的内容
ZZZ前辈 可以请您帮晚辈 看一下喔!
作者: zzz    时间: 2005-10-12 11:44
你的dll放在哪?把你的.men文档贴上来看一下。
作者: vvg87    时间: 2005-10-12 22:12
标题: "压缩档\my_first_UG\application\libmy_first.dll " 喔!
dll档 在 上一篇的附件上喔!      "压缩档\my_first_UG\application\libmy_first.dll "  喔!

  因为论坛上无法贴上 .men 的文件喔!....
而.men文件 在  "压缩档\my_first_UG\startup\first.men "里喔!....感恩~~~~~
作者: zzz    时间: 2005-10-13 09:07
你的Actions指定的是dlg,一般是指定为dll。
如果要指定为dlg文件的话,那你的dlg文件要放在startup下。
作者: vvg87    时间: 2005-10-13 14:30
标题: ZZZ前辈..晚辈有问题发问喔!
ZZZ前辈..晚辈有问题发问喔!
  因为今天把整个档案拿去学校给老师看!....但是开不起来耶!
显示" 找不到使用者介面式样编辑器档案" 喔!
我有将dll及dlg档 移到别的资料夹!也是不行喔!
...而且很多电脑都试不行喔?.........
作者: vvg87    时间: 2005-10-13 14:35
标题: 晚辈用这种方法对吗?
晚辈用这种方法对吗?
下图是上篇的结果喔!
作者: zzz    时间: 2005-10-13 20:15
对不起前面忘了加附件。

你的menu文件定义得不对嘛,根本就没有libmy_first.dlg这个文件,而且如果用dlg的话,dlg文件要放在startup下。
你就写成:Actions     libmy_first 就好了。


作者: vvg87    时间: 2005-10-19 08:09
标题: ZZZ前辈可以帮晚辈看一下 .C 档里面的函数吗?
ZZZ前辈可以帮晚辈看一下 .C 档里面的函数吗?
  如: ok的位置...
int CHANGE_selection0_cb 的位置
int CHANGE_selection1_cb 的位置
     还有该修改处的位置!
..因为前辈之前要我修改的地方加进函数...但是 有些地方可能放错了!

             可以请前辈看一下吗?    感恩喔!
作者: vvg87    时间: 2005-10-23 10:32
标题: ZZZ前辈在吗?
ZZZ前辈在吗?
作者: zzz    时间: 2005-10-25 17:15
不知道你要让我看什么。




欢迎光临 iCAx开思工具箱 (https://t.icax.org/) Powered by Discuz! X3.3