石狮市建设局网站普通小程序开发者工具

news/2025/9/28 2:55:40/文章来源:
石狮市建设局网站,普通小程序开发者工具,怎么自己开发网站,深圳网络推广收费标准文章目录 基于C/C的UG二次开发流程1 环境搭建1.1 新建工程1.2 项目属性设置1.3 添加入口函数并生成dll文件1.4 执行程序1.5 ufsta入口1.5.1 创建程序部署目录结构1.5.2 创建菜单文件1.5.3 设置系统环境变量1.5.4 制作对话框1.5.5 创建代码1.5.6 部署和执行 基于C/C的UG二次开发… 文章目录 基于C/C的UG二次开发流程1 环境搭建1.1 新建工程1.2 项目属性设置1.3 添加入口函数并生成dll文件1.4 执行程序1.5 ufsta入口1.5.1 创建程序部署目录结构1.5.2 创建菜单文件1.5.3 设置系统环境变量1.5.4 制作对话框1.5.5 创建代码1.5.6 部署和执行 基于C/C的UG二次开发流程 1 环境搭建 UG/Open APIUG 开放应用程序接口也称 User Function用户函数简称 UF。 UF 的编程可以采用标准 C 或 C两种方式作为开发语言这里我们使用C。 针对程序运行的环境不同UF 程序又分为外部 UF 和内部 UF 两种形式。 外部 UF 程序是可执行程序*.EXE。优点是不必启动 UG属于后台运行缺点是不能实现用户的交互操作。一般多用于 Part 文件大量创建、存取和管理或控制出图而不适用于用户交互性的几何建模和修改。 内部 UF 是以**动态链接库*.DLL**的形式创建并编译的。UG 调用内部 UF 的方式有两种一种是启动 UG 后点击菜单【文件】→【执行】→【NX 打开】从中选择需要执行的 DLL 文件程序入口点ufusr另一种则是从用户创建的菜单中Menu Script调出用户定制的界面UI Styler来运行程序入口点ufsta。内部 UF在用户的交互、屏幕选取等的复杂操作上具有优势。 下文中我们主要介绍内部UF程序的开发。 1.1 新建工程 启动VS2022由于是内部UF的开发新建动态链接库DLL项目。 1.2 项目属性设置 libufun.lib libugopenint.lib libvmathpp.lib libnxopencpp.lib libnxopenuicpp.lib1.3 添加入口函数并生成dll文件 新建项目后VS2022会默认生成framework.h、pch.h、pch.cpp、dllmain.cpp文件。接下来我们只需要修改dllmain.cpp修改后内容如下 // dllmain.cpp : 定义 DLL 应用程序的入口点。 #include pch.h #include uf.h // 包含常用 UF 函数的声明 #include uf_modl.h // 包含建模相关的 UF 函数声明 #include uf_ui.h // 包含界面操作相关的 UF 函数声明 #include stdio.h#define UF_CALL(X) (report( __FILE__, __LINE__, #X, (X)))// 用于程序调试 static int report(char* file, int line, char* call, int irc) {if (irc){char msg[133];printf(%s, line %d: %s\n, file, line, call);(UF_get_fail_message(irc, msg)) ?printf(returned a %d\n, irc) :printf(returned error %d: %s\n, irc, msg);}return(irc); }// 实际工作函数 static void do_ugopen_api(void) {/* 用户在此编写自己的 UF 程序 *//* 下面示例为创建长方体 */UF_FEATURE_SIGN sign UF_NULLSIGN;double block_orig[3] { 0.0,0.0,0.0 }; // 原点char* block_len[3] { 1,2,3 }; // 三边长tag_t blk_obj;UF_CALL(UF_MODL_create_block1(sign, block_orig, block_len, blk_obj)); // 调用UF_MODL_create_block1函数创建长方体 }void ufusr(char* param, int* retcode, int paramLen) {if (!UF_CALL(UF_initialize()))//获取二次开发许可 {do_ugopen_api();//实际工作函数 UF_CALL(UF_terminate());//释放二次开发许可 }else{uc1601(获取开发许可失败退出, 1);//获取二次开发许可失败提示用户 } }// 卸载函数 int ufusr_ask_unload(void) {return (UF_UNLOAD_IMMEDIATELY);//完成操作后立即从内存中卸载 }修改属性页将符合模式改为否防止编译运行报错“const char *“ 类型的实参与 “char *“ 类型的形参不兼容。 参考文章「VS」“const char *“ 类型的实参与 “char *“ 类型的形参不兼容 最后点击运行即可得到内部UF的dll文件。 1.4 执行程序 打开UG新建一个part文件。CtrlU打开上一步生成的DLL文件test.dll。UG 会执行此动态库中的入口函数ufusr在 UG 建模工作区中生成一个长方体。 1.5 ufsta入口 在上面我们执行内部UF程序的方法是从ufusr入口进入即CtrlU执行DLL文件接下来我们介绍从ufsta入口进入的方法即UI交互执行对应回调函数。 1.5.1 创建程序部署目录结构 首先创建一个工作目录其中分别再创建两个子目录“startup”和“application”。前者用来存放菜单文件(*.men)和动态库文件(*.dll)后者存放对话框文件(*.dlg)。 - 1.5.2 创建菜单文件 在startup目录下创建一个菜单文件test_ufsta.men内容如下 VERSION 120 EDIT UG_GATEWAY_MAIN_MENUBAR HIDE UG_HELP !一级菜单编辑在帮助菜单后 BEFORE UG_HELPCASCADE_BUTTON MENU_TestUfstaLABEL TestUfsta END_OF_BEFORE !二级菜单编辑 MENU MENU_TestUfsta BUTTON BUTTON_TestUfsta LABEL 测试ufsta ACTIONS TestUfsta.dlg END_OF_MENU1.5.3 设置系统环境变量 新建一个环境变量UGII_USER_DIR将上面的程序工作目录作为值。 新建完成后打开UG点击菜单即可得到我们想要的效果。 如果出现中文乱码的问题将men文件采用ANSI编码保存即可解决。 1.5.4 制作对话框 UG中提供了UI Styler模块用于制作对话框UI支持图形化操作自动生成代码框架类似于Qt Designer。该模块的打开方式如下需要先打开一个部件 我们便可以得到一个最基础的对话框左下角为预览效果左上角为控件对象层级树右边为控件对象属性。 点击界面上方工具栏中的按钮即可在对话框中添加一个按钮。 接着我们将按钮的标签更改成一个我们想要名称最后点击保存选择使用的语言这里选择C文件名为TestUfsta.dlg保存到application目录下 xxx.dlg。对话框资源文件。 xxx.hxx。对此对话框编程使用的头文件。 xxx_template.c。对此对话框编程使用的代码框架。 1.5.5 创建代码 和ufusr入口一样新建一个命名为TestUfsta的DLL工程将上一步生成的xxx.h文件拷贝到工程目录下再将xxx_template.c文件中的一个宏定义和两个静态变量以及ufstaUF 的入口点、CHANGE_apply_cb对话框上【apply】按钮的回调函数、CHANGE_action_0_act_cb对话框上用户定制的【创建长方体】按钮的回调函数三个函数复制到TestUfsta.cpp中。修改后内容如下 #include stdio.h #include uf.h #include uf_defs.h #include uf_exit.h #include uf_ui.h #include uf_styler.h #include uf_mb.h #include stdio.h #include uf_modl.h #include TestUfsta.h#define CHANGE_CB_COUNT ( 2 1 ) /* Add 1 for the terminator */ #define UF_CALL(X) (report( __FILE__, __LINE__, #X, (X)))// 用于程序调试 static int report(char* file, int line, char* call, int irc) {if (irc){char msg[133];printf(%s, line %d: %s\n, file, line, call);(UF_get_fail_message(irc, msg)) ?printf(returned a %d\n, irc) :printf(returned error %d: %s\n, irc, msg);}return(irc); }// 实际工作函数 static void do_ugopen_api(void) {/* 用户在此编写自己的 UF 程序 *//* 下面示例为创建长方体 */UF_FEATURE_SIGN sign UF_NULLSIGN;double block_orig[3] { 0.0,0.0,0.0 }; // 原点char* block_len[3] { 1,2,3 }; // 三边长tag_t blk_obj;UF_CALL(UF_MODL_create_block1(sign, block_orig, block_len, blk_obj)); // 调用UF_MODL_create_block1函数创建长方体 }static UF_STYLER_callback_info_t CHANGE_cbs[CHANGE_CB_COUNT] {{UF_STYLER_DIALOG_INDEX, UF_STYLER_APPLY_CB , 0, CHANGE_apply_cb},{CHANGE_ACTION_0 , UF_STYLER_ACTIVATE_CB , 0, CHANGE_action_0_act_cb},{UF_STYLER_NULL_OBJECT, UF_STYLER_NO_CB, 0, 0 } };static UF_MB_styler_actions_t actions[] {{ TestUfsta.dlg, NULL, CHANGE_cbs, UF_MB_STYLER_IS_NOT_TOP },{ NULL, NULL, NULL, 0 } /* This is a NULL terminated list */ };extern void ufsta(char* param, int* retcode, int rlen) {int error_code;if ((UF_initialize()) ! 0)return;if ((error_code UF_MB_add_styler_actions(actions)) ! 0){char fail_message[133];UF_get_fail_message(error_code, fail_message);printf(%s\n, fail_message);}UF_terminate();return; }int CHANGE_apply_cb(int dialog_id,void* client_data,UF_STYLER_item_value_type_p_t callback_data) {/* Make sure User Function is available. */if (UF_initialize() ! 0)return (UF_UI_CB_CONTINUE_DIALOG);/* ---- Enter your callback code here ----- */UF_terminate();/* Callback acknowledged, do not terminate dialog *//* A return value of UF_UI_CB_EXIT_DIALOG will not be accepted *//* for this callback type. You must respond to your apply button.*/return (UF_UI_CB_CONTINUE_DIALOG);}int CHANGE_action_0_act_cb(int dialog_id,void* client_data,UF_STYLER_item_value_type_p_t callback_data) {/* Make sure User Function is available. */if (UF_initialize() ! 0)return (UF_UI_CB_CONTINUE_DIALOG);/* ---- Enter your callback code here ----- */do_ugopen_api();UF_terminate();/* Callback acknowledged, do not terminate dialog */return (UF_UI_CB_CONTINUE_DIALOG);/* or Callback acknowledged, terminate dialog. *//* return ( UF_UI_CB_EXIT_DIALOG ); */}运行生成DLL。 对于VS2022新建DLL工程后会默认生成和使用pch.h作为预编译头文件为了不必要的麻烦我们将工程属性设置为不使用预编译头文件即可删除pch相关的文件。 1.5.6 部署和执行 将所生成的DLL文件拷贝到startup目录下打开UG即可成功运行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/920196.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

成都市金堂县网站建设微信平板专用版ipad版

多继承(Multiple Inheritance)是指从多个直接基类中产生派生类的能力,多继承的派生类继承了所有父类的成员。尽管概念上非常简单,但是多个基类的相互交织可能会带来错综复杂的设计问题,命名冲突就是不可回避的一个。 多继承时很容易产生命名冲突,即使我们很小心地将所有类…

如何自己做淘宝客推广网站外国人的做视频网站

一、pandas介绍 1、2008年Wes McKinney(韦斯麦金尼)开发出的库 2、专门用于数据分析的开源python库 3、以numpy为基础,借力numpy模块在计算方面性能高的优势 4、基于matplotlib能够简便的画图 5、独特的数据结构 6、也是三个单词组合而…

口碑好的专业网站建设天河网站建设推广

换肤其实也属于插件化专题的一个子话题,之所以单独拿出来,是因为它的处理方式比较特殊,相比插件化而言较简单一些。 系统内置的换肤功能支持 - Theme Android 系统中如果想修改应用的背景色,最简单的就是利用以下Theme相关的属性: 使用这些内置的属性可以实现一定程度上…

做软件赚钱的网站php中网站不同模板后台逻辑代码怎么管理

文章目录前言InterceptorChain保存所有的Interceptor创建四大对象都走ConfigurationInterceptorChain增强对象方法Plugin封装动态代理,让你使用Mybatis拦截器更简单Invocation,让我们能在拦截器中使用动态代理类中的invoke方法中的对象调用时序图小结前言…

基层建设 官方网站WordPress潮流媒体主题

在/ l o g s目录中查找更改时间在7日以前的文件并删除它们: $ find logs/ -type f -mtime 7 -exec rm -f {} \; 在/ l o g s目录中查找更改时间在7日以内的文件并删除它们: $ find logs/ -type f -mtime -7 -exec rm -f {} \; 然后加入的计划任务中每日执…

大连做网站不错的公司信息管理网站开发实验体会

亲爱的小伙伴,在您浏览之前,烦请关注一下,在此深表感谢! 课程主题:横向菜单高级交互 主要内容:横向菜单左右拖动、选中效果 应用场景:app横向菜单、pc后台动态区域 案例展示: 演…

企业网站源码哪个最好暖色网站

IdentityServer4是什么?IdentityServer4是基于ASP.NET Core实现的认证和授权框架,是对OpenID Connect和OAuth 2.0协议的实现。OpenID Connect 和 OAuth2.0是什么OpenID Connect:OpenID Connect由OpenID基金会于2014年发布的一个开放标准, 是建立在OAuth …

沧州网站建设方案咨询万网主机建wordpress

作者:朱金灿 来源:http://blog.csdn.net/clever101/ 同事问我一个奇怪的问题:程序在他的机子上运行的好好的,但是其它人下载了源码之后可以编译通过,但是debug模式下调试运行到应用程序类中的InitInstance函数中的 i…

做网站收录的网站有哪些自己在线制作logo免费广告招牌

摘 要 如今社会上各行各业,都喜欢用自己行业的专属软件工作,互联网发展到这个时候,人们已经发现离不开了互联网。新技术的产生,往往能解决一些老技术的弊端问题。因为传统物流配送人员车辆调度信息管理难度大,容错率低…

网页设计公司建设网站小程序网站app定制开发

美国股市昨日先抑后扬终结两连跌,开启反弹,道指、标普、纳指纷纷翻红。10月3日晚,美东时间周四,美股集体低开,盘初受宏观经济数据不及预期影响,三大指数大幅跳水跌逾1%,道指跌超300点。此后美股…

给喻家山下的投稿

给喻家山下的投稿隔山隔海回头望,最远最近是家乡。——《天知河》【图1:归途】 常常是在傍晚悄然离开,在摇摇晃晃的睡梦里穿越中原大地。醒来望向窗外,自己已然回到久违的华北平原——朦胧的天色里,平坦,辽阔,一…

什么网站可以自己做名片logo设计文案范例

解决问题的过程:1)查看服务器CPU使用情况输入top会发现排在前面的都是oracle的进程,而且CPU占用率都是50以上。$toptop - 16:28:41 up 4 days, 22:35, 1 user, load average: 21.49, 22.14, 22.05Tasks: 299 total, 31 running, 268 sleeping, 0 st…

网站首页的head标签内湖南室内设计公司排名

这篇文章,主要介绍Vue3项目工程中如何使用axios网络请求库实现前后端数据通信【知识星球】。 目录 一、axios依赖 1.1、下载axios依赖 1.2、创建axios工具类

经典企业网站模板青岛网站公司

注:这是一篇没有技术含量的水文,主要是看有人下载下来,居然当成资源需要积分才能下载。我觉得不行,故提供原始下载地址供查阅使用。 链接: 上述图片所示网址:链接直达

上海网站设计厂家考试培训

文章目录 一、MySQL和Oracle1.1 基本差别1.2 使用区别 二、MySQL和PostgreSQL2.1 基本差别2.2 使用差别 本系列文章: MySQL(一)SQL语法、数据类型、常用函数、事务 MySQL(二)MySQL SQL练习题 MySQL(三&…

有哪些免费推广网站网站建设用到什么

参展企业介绍 山东润德生物科技有限公司成立于2014年10月17日,是一家围绕生物制品的研发、生产、营销、国际贸易、技术服务为核心业务的国家高新技术企业,近年来荣获国家制造业单项冠军示范企业、国家级绿色工厂、国家知识产权优势企业、国家工业产品绿…

网站设计网站维护dedecms 食品网站模板

目录 一、C语言的语句有哪些 1.1 空语句 1.2 表达式语句 1.3 函数调用语句 1.4 复合语句 1.5 控制语句 二、分支语句(两种) 1.1 if语句 1.1.1 普通分支语句(if、if_else) 1.1.2 嵌套if语句 1.1.3 else嵌套if两种写法的比较 1.1.4 else悬空问题 1.1.…

找做企业网站周口市城乡建设局网站

函数进阶 函数进阶1.参数的补充1.1 参数内存地址相关【面试题】1.2 函数的返回值是内存地址1.3 参数的默认值【面试题】1.4 动态参数 2. 函数和函数名2.1 函数做元素2.2 函数名赋值2.3 函数名做参数和返回值 3.返回值和print4. 作用域4.1 函数为作用域4.2 全局和局部4.3 global…

维生素D,毛姆,我,还有停滞的3年

好久没写博文了,想把最近的一些想法post在这里。 今年11月中旬之后,就满26岁了,而且毕业3年,自己的工作没啥进展。有些怀疑自己是不是不太适合这个岗位,没给我太多成就感。 直到我的身体“宕机”了。 从大四实习结…

唐山地方志网站建设重庆网络推广培训

【力扣】416. 分割等和子集 给你一个 只包含正整数的非空数组 nums 。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。 示例 1: 输入:nums [1,5,11,5] 输出:true 解释:数组可以分割成 [1, 5,…