iCAx开思工具箱

标题: 关于使用NX UGII 目录中DLL文件的内部函数 [打印本页]

作者: jin_chun_ning    时间: 2008-4-26 10:19
标题: 关于使用NX UGII 目录中DLL文件的内部函数
NX UGII 目录中有很多DLL文件,其中包含了不少有用的内部函数。
关于这些函数的命名和定义,可以用VC目录中的depends.exe 查看,当然你要能望文生义才行,需要根据函数名推测它们的功用。

例如,在libugui.dll中包含了一个函数MACRO_playback_from_usertool,它的标准C的命名是 ?MACRO_playback_from_usertool@@YAXPBD@Z ,这个函数是运行宏命令(macro)的函数。
使用它,就可以从UFUN程序中直接运行NX的宏命令。

例如:

    {
        typedef void (WINAPI *MyFun )( char const * );

        MyFun fun = NULL;
        HINSTANCE hHandle = NULL;
        hHandle = LoadLibraryA( "D:\\nx5.1.4\\ugii\\libugui.dll" );
        fun = (MyFun)::GetProcAddress(hHandle, "?MACRO_playback_from_usertool@@YAXPBD@Z" );

        if( fun != NULL )
        {
            fun( "f:\\my_macro.macro" );
        }

    }

作者: jin_chun_ning    时间: 2008-4-26 10:38
可以在类似 C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\Bin 的位置找到depends工具
作者: zjs    时间: 2008-4-26 11:44
高手啊!!!
作者: nwpufox    时间: 2008-4-26 19:29
果然高手啊,学习中
作者: XUSIR98    时间: 2008-4-27 13:28
不是一般的高手,LZ是UGS的?
UG NX 带有很强的调试工具是你发的吧?2003年就有这内部的资料了!
作者: XUSIR98    时间: 2008-4-28 17:51
试了一下,没成功!
作者: zzz    时间: 2008-4-29 15:59
这样做可以,可问题是很多函数你不知道带多少参数,每个参数什么意义。
作者: jin_chun_ning    时间: 2008-5-1 20:30
在depends窗口中选择“Undecorate C++ Functions”就可以得到参数列表和类型
作者: fourwood    时间: 2008-5-2 09:26
jin_chun_ning厉害,以后写本《Undocumented UG/Open API 》,绝对畅销
作者: gnauh    时间: 2008-5-16 14:53
不好意思 小妹也在做相关的课题遇到一些疑问

想请问 我可以跟你请求一个完整例子吗?

因为小妹在自己本身在试 实在是有问题

希望能有您的帮忙
作者: begtostudy    时间: 2008-5-22 15:04
晕,你试这个干什么

你有不做Crack,

用Open或者NXOpen不够用吗?
作者: 春泉    时间: 2008-5-22 21:43
...............................................


作者: supergirl    时间: 2008-5-24 18:32
这样用是比较危险滴,因为这个不是开放的API,是内部函数,可能某一天该函数可能会被去掉,或者参数更改,会对你的开发造成很大问题,不像API是有保障的。
作者: supergirl    时间: 2008-5-24 18:41
再补充一句,如果内部函数的参数改变,C++输出的后面的字符(@@YAXPBD@Z)也会跟着改变,这样,你的程序也要改变,如果是自己开发玩玩尚可接受,做商业开发,这样是比较不可靠的。
作者: thriller    时间: 2008-5-24 21:15
又有谁能保证所有的API函数在下一个版本中不会被改变呢?
作者: supergirl    时间: 2008-5-25 08:45
API函数是不会改变的,只会增加。你可以看一下UGOpen或者NXOpen。
作者: thriller    时间: 2008-5-25 19:40
你好好查查,从ug18到NX5有多少API函数消失了。
作者: 春泉    时间: 2008-5-25 20:31
......................................................


作者: supergirl    时间: 2008-5-25 20:41
thriller,恕我孤陋寡闻了,请麻烦告诉我一下,哪个API函数消失了?

春泉,说话请客气一点,大家都是讨论技术问题,我只是觉得这样不太好用,说一个最简单的,有很多内部的函数,输入参数的是结构体指针,这种情况,你如何用内部的函数?除非你认识做NX开发的人,别人告诉你那个结构体是怎么定义的。如果要做商业软件,这种用法是非常危险滴。因为UGOPEN和NXOPEN的函数,如果出现了问题,客户可以给NX开PR,会有人来维护和解决这个问题。据我所知,NX大概有4千万行代码,内部有很多函数是非常老的版本,甚至是不用的废的函数,如果出了问题,报给NX,相信没有人来理你。
作者: 春泉    时间: 2008-5-25 21:03
算了,你的话也有点道理,跟你道歉!

我们的痛苦你没有体会过,有时候到了瓶颈,就不停的再去发掘函数,
API的函数就那么点,不用变态的方法就解决不了问题,可有时候连
变态的方法都行不通了!
作者: sincosxu    时间: 2008-5-25 21:58
如果有能力,希望看到你们自己做的软件,局限于API是没多大意思。
作者: supergirl    时间: 2008-5-26 11:03
春泉,我能理解你说的痛苦。
所以我觉得用NXOPEN比UGOPEN好,尤其是在NX5以后的版本,NX的绝大部分功能都支持journal了,所以可以说NXOPEN可以涵盖绝大部分的NX的功能,所提供的API函数也相当的全面了。

而且NX中支持journal的功能,和NXOPEN的入口是一样的,不像UGOPEN(UF)和实际NX里面call的函数还是有区别的。

据说UGOPEN(UF)是专门有小组来维护,但是NXOPEN是由NX中各开发功能的小组自己来维护,所以也应该会好很多的。
作者: 春泉    时间: 2008-5-26 20:59
UGOPEN实现不了的,我也找过NXOPEN,都是实现不了,
而且做开发,能支持UG版本越低越好!
如果你有兴趣,可以QQ交流!
719967890
作者: zzz    时间: 2008-5-26 21:19
原帖由  于 2008-5-25 20:31 发表
supergirl 和begtostudy都是在学校打混的吧,做过点入门东西就开始瞎指手划脚抨击楼主和他人,
你们要真牛比,我随便让你们做个东西都做到你们吐血!技术在人家UGS家里,
不开放函数给你,你牛的起来?不要以为API ...


楼主好像也是在学校混的,俺也是在学校混的,这里有很多人在学校混的,在你眼里学校就只做点入门的东西吗?
作者: supergirl    时间: 2008-5-27 09:43
原帖由  于 2008-5-26 20:59 发表
UGOPEN实现不了的,我也找过NXOPEN,都是实现不了,
而且做开发,能支持UG版本越低越好!
如果你有兴趣,可以QQ交流!
719967890


这种观点,不敢苟同,不要说NX每个版本都会新增加很多功能,开放很多新的API,而且很多老版本解决不了的问题或者bug,都会在新版本中解决。当然做开发要考虑客户的需求,看他们需要的版本是什么,但是我的建议还是在你可以用的最新的版本上做。

对于API的问题,当然我不知道你是具体到哪个功能API实现不了,但是我遇到的大部分情况是,其实API是有的,但是有很多人找不到。
作者: 春泉    时间: 2008-5-27 22:52
比如snap point
作者: 春泉    时间: 2008-5-27 22:57
CAM里,平移刀轨
作者: 春泉    时间: 2008-5-27 23:01
如果你是帮UGS开发,当然是用越新的技术越好,
但是很多使用UG的习惯于老版本,如果是开发通用的程序,
肯定是要照顾这部分人,只有针对性开发才可以象你所说的!
作者: supergirl    时间: 2008-5-28 13:36
snap point可以做到的,NX5里面已经把标准的point的控件开放出来了。但是这种控件(UI Block)目前只能在KF里面用,所以我知道的很多人是用KF来做UI,这样就可以做出完全和NX5风格一样的UI(Block Style UI),NX6已经开放了一部分,据说NX7里面会把UI的标准控件完全开放出来。

我做二次开发比较少,具体也不是非常清楚,但是我见过有人在NX5上这样做的二次开发UI,包括select point的。
作者: zzz    时间: 2008-5-28 16:36
请教一下supergirl,KF怎么做新UI,要自己生成UI stlyer 对话框吧,新的不用吗?
作者: liangalan    时间: 2008-9-25 16:01
这个理论上是对的,但是这个太劳神了吧
作者: jackie2003    时间: 2008-9-26 14:17
NX5之后,添加了UI_COMP类库,专门用来做和NX风格一致的UI.

NX6做了更多地加强

详细可以参考%ugii_root_dir%\dfa\uicomp\hostlib

实例可参考%ugii_root_dir%\dfa\examples\uicomp

KF的UI Comp可以实现很多的功能,在UI设计方面也提供了很好用的工具,至少比UI Styler要好用。

NX6的Block Styler才刚刚开放出来,个人觉得功能还不是很完善,期待着NX7能更完善把。

顺便说一句,NX6的NXOpen提供了很多的功能,很多原来UFUN实现不了的功能,NXOpen都可以提供解决方法的。可惜不好的是,NXOpen还不是很稳定了,还在不停的更新完善之中。
作者: whm6521427    时间: 2010-12-21 23:09
能不能利用grip调用UG录制的Macro
作者: qqqq1398520    时间: 2011-1-28 08:45
谢谢谢谢谢谢谢谢
作者: zhangguangyang    时间: 2011-7-20 13:44
从头到尾的看了一遍
很模糊
感觉自己差远了
作者: wwwugsnxjxl    时间: 2011-7-23 10:37


不就是反编译么?计算机软件反向工程(Reversepengineering)。。。

托管代码编译出来就是让别人看的

反汇编,使用宏的这个函数肯定是西门子内部的人员自己透露的,没有人无聊到去那里找。

在历史的车轮下,面向过程必将被淘汰!

随着新版本的发布,旧版本必将会消失!






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