VC中嵌入MAPX进行二次开发的过程
VC++的UG二次开发技术

基于VC++的UG二次开发技术胡道钟(东风汽车模具厂)摘要本文叙述了如何在以Windows NT 4.0为操作系统的微机工作站上进行基于VC++6 0的UG(V14.0)二次开发,并对UG的开发模块和UG/Open API的编程方法作了介绍。
关键词 VC++UG UG/Open API 二次开发编程1 概述UG是一个功能强大的通用3D机械CAD/CAM软件系统,用户若要以它为平台进行二次开发,实现大型的机械设计系统(如模具智能化专家系统CAD软件),就必须利用UG的开发模块,借助C/C++,在以UNIX为操作系统的工作站上或以Windows为操作系统的微机工作站上编写C程序,进而生成可执行文件。
本文的目的就在于叙述如何在以Windows NT 4 0为操作系统的微机工作站上进行基于VC++6 0的UG(V14 0)二次开发,并对UG的开发模块和UG/Open API的编程方法作了介绍。
1.1 UG/Open它通过一个开放的平台包含一系列的基于UG的应用软件的柔性集成。
其目的是为了计算机集成应用,支持第三方和UG的应用,使基于不同的计算机平台从不同的场所(不同的网络)实现数据共享,甚至通过Internet访问它的内容。
它在注重于集成化和本地化的软件应用的同时,还致力建立一个能供各方利用的开放体系机构。
UG/Open提供了一种使顾客能够完成下列工作的应用软件和工具:(1)通过UG/Open API 或UG/Open GRIP 提供了与UG对象模型(UG Object Model)的接口;(2)生成和管理用户自定义对象(User Defined Objects或Custom Objects),包括管理它们与U对象的相关性,提供一种刷新和显示用户自定义对象的方法;(3)提供反映第三方应用软件的UG图形界面本地化方法;(4)利用相关产品如 IMAN ITK和Parasolid;(5)利用和集成新的UG/Open技术并使之成为应用可能。
MapInfo技术在轨道交通仿真驾驶系统中的应用

MapInfo技术在轨道交通仿真驾驶系统中的应用[摘要]介绍了mapinfo二次开发技术在轨道交通仿真驾驶系统研发中的应用,阐述了线路仿真模块的设计过程,实验证明,mapinfo技术能直观、方便的解决线路仿真的设置、更新和辅助运算等功能。
[关键词]mapinfo;mapx;城市轨道交通仿真驾驶系统中图分类号:tp391.9 文献标识码:a 文章编号:1009-914x (2013)23-0066-011 引言随着经济社会的发展和快速发展的城市化进程,轨道交通运营速度越来越快,同时轨道车辆自身的系统也日益复杂,这对列车司机和随车机械师的业务素质提出了很高的要求[1],采用实车操作的方式对列车司机进行培训耗时长、花费多、存在时间和场地限制、设备不足、训练成本高、装备易损坏和安全事故隐患等问题[1]。
利用仿真驾驶培训系统对司机和随车机械师进行培训是最好的选择。
列车驾驶仿真系统需要模拟列车的不同运行模式:牵引、制动、堕行等模式,系统运行仿真模型在计算车辆运行模式时,需要线路长度、线路坡度、道岔、曲线半径(弯道)、站台数据、信号灯等参数信息,以计算车辆在地面、高架、隧道内等不同路段的牵引力、运行阻力等。
同时,车辆运行过程中,根据选择线路的不同,需要进行道岔处理和线路设置。
这就需要一种直观、方便的方式来处理相关问题。
而采用mapinfo技术及其二次开发技术能有效的管理车辆运行线路信息,方便的对车辆运行线路信息进行建模,以及对系统运行中线路信息的设置、更新等。
2 mapinfo及mapx二次开发技术mapinfo具有地理信息图形化、数据分析可视化、数据查询灵活化等特点。
具有很强的获取、描述、操纵展示地图数据的能力,且具有图形输入与编辑、图形查询与显示、数据库操作、空间分析和图形的输出等基本操作[2]。
mapinfo的地图均以图层的方式进行存储与显示[2],对部分或者整个图层空间中的相关的图形数据进行采集、管理、分析、运算、存储、描述以及显示。
如何在vc程序中嵌入脚本语言(初稿)

如何在vc程序中嵌⼊脚本语⾔(初稿)如何在vc程序中嵌⼊脚本语⾔今天很多⼤型程序中都能够见到内嵌脚本进⾏⼆次开发的功能,例如ms word,excel,visual studio 等。
⼀直以来我都希望能在⾃⼰的程序中加⼊同样的功能,经过前⼀段时间的研究,终于有所⼼得与⼤家分享。
在研究过程中,我查找了发现⼀篇⽐较有价值的⽂章(/com/mfcscripthost.asp),其中描述了在vc程序中加⼊脚本语⾔的过程。
其原理如下1.⾸先使⽤CoCreateInstance()创建某种脚本语⾔(javascript,vbscript)的引擎,获得某种语⾔的脚本引擎的接⼝IActiveScript。
2.实现回调站点接⼝IActiveScriptSite通过IActiveScript->SetScriptSite()交由脚本引擎回调,在site中可以取得引擎的状态信息,并提供⽤户的⾃定义变量的⾃动化对象。
3.通过IActiveScript->QueryInterface()取得IActiveScriptParse接⼝,IActiveScriptParse⽤于解释执⾏⽤户的脚本代码。
幸运的是这⼀系列接⼝和操作已经被⽂章的作者封装成CActiveScriptHost类,只需要掌握CreateEngine()(创建脚本引擎),AddScriptCode()(加⼊⽤户脚本代码),AddScriptItem ()(加⼊⽤户⾃定义变量)四个常⽤的⽅法即可。
下⾯描述如何在⾃⼰mfc程序中使⽤上述类嵌⼊脚本和⾃定义脚本对象的过程,步骤如下。
1.⾸先将⽂章所附例⼦⼯程中ActiveScriptHost.cpp,ActiveScriptHost.h,Host_Proxy.cpp,Host_Proxy.h,MFCScriptHost.odl拷贝到当前⼯程中。
2.在当前⼯程的xxx.rc中加⼊以下内容,即将类型库加⼊到程序资源⽂件中#ifdef _DEBUG1 TYPELIB "Debug\\MFCScriptHost.tlb"#else1 TYPELIB "Release\\MFCScriptHost.tlb"#endif3.在需要使⽤的类成员中加⼊CHost_Proxy m_ScriptProxy;成员,在OnCreate或OnInitDialog中加⼊m_ScriptProxy.CreateEngine( L"JavaScript" );//创建脚本引擎m_ScriptProxy.AddScriptItem(L"test",m_ptestObject->GetUnknown());//加⼊名称为test的IDispatch对象对象的⽣成有两种⽅案,⼀种是使⽤MFC⽅式⽣成,即对象从CmdTarget继承,并选中automation的radio button(如图表1),并通过Class Wizard中的⾃动化标签加⼊⽅法和属性(如图表2)。
二次开发方案范文

二次开发方案范文二次开发是指对已有软件或系统进行二次开发或功能扩展的过程。
在进行二次开发之前,首先需要明确开发的目标和需求,然后选择适合的开发平台和工具,制定详细的开发计划和任务,最后进行开发和测试工作。
下面是一个关于二次开发方案的具体内容,包括目标和需求分析、平台和工具选择、开发计划和任务制定、开发和测试工作。
一、目标和需求分析在进行二次开发之前,需要明确开发的目标和需求,确保开发的方向明确,确保二次开发能够满足用户的需求。
在目标和需求分析阶段,需要与用户进行充分的沟通和交流,以了解他们的需求和期望。
二、平台和工具选择在选择平台和工具时,需要考虑以下几个方面:1. 开发语言:根据项目需求和开发人员的技术背景选择合适的开发语言,常用的开发语言有Java、C#、Python等。
3. 数据库:根据项目需求选择合适的数据库,常用的数据库有MySQL、Oracle等。
4. 开发工具:选择合适的开发工具能够提高开发效率,例如Eclipse、Visual Studio等。
三、开发计划和任务制定在确定了目标和需求以及选择了合适的平台和工具后,需要制定详细的开发计划和任务,包括开发的阶段、时间和人力资源的分配等。
在制定开发计划和任务时,需要充分考虑项目的复杂度和开发人员的技术水平,确保开发进度和质量。
四、开发和测试工作在进行开发和测试工作时,需要按照开发计划和任务进行组织和安排,充分利用已有的资源和工具,以确保开发的进度和质量。
开发过程中需要遵循良好的开发规范和设计原则,编写高质量的代码和文档,进行充分的测试和调试工作,以确保开发的质量和可靠性。
五、验收和部署在开发完成后,需要进行验收和部署工作。
验收工作主要是对开发的软件或系统进行功能和性能测试,以确保满足用户的需求。
部署工作主要是将开发的软件或系统部署到生产环境中,确保能够正常运行和使用。
总结:二次开发是对已有软件或系统进行二次开发或功能扩展的过程,需要明确目标和需求,选择合适的开发平台和工具,制定详细的开发计划和任务,进行开发和测试工作,最后进行验收和部署。
车载导航电子地图设计和实现

车辆远程诊断仪的主要功能是导航。
导航功能的重点是行车路线设计、自动车辆定位、综合信息服务、路径引导服务等。
导航功能是GIS技术、通讯技术、嵌入式技术和GPS定位等技术相结合的综合应用系统。
系统通过对GPS定位全天候、高精度、实时性强的特点,可实现对车辆准确实时的跟踪,通过应用GLS 技术,则可在电子地图上显示车辆的定位信息,明确用户所在的准确位置。
文中在介绍了典型的导航系统软硬件构成的基础上,重点探讨了车载导航电子地图设计和实现,对于车载导航的进一步优化具有现实意义。
1 车载导航电子地图的体系结构1.1 系统硬件设计方案嵌入式系统作为电子地图的载体时,硬件系统需采用32位的微处理器,工作频率在400 HMz以上,以便能够处理大量的数据和流畅的运行操作系统。
硬件系统需能够支持多媒体功能,支持LCD触摸屏输入、具有大容量SD卡的加载功能,所选取的操作系统应具有信息数据库和地图数据库的管理功能。
SH7764作为诊断仪的核心处理器,其最高工作频率为324MHz,可实现583MI/S的处理性能。
FPU支持单、双精度运算,可实现2.3GFLOPS的最高性能。
并具有丰富的硬件资源,包括硬件音频解码功能、正玄/余玄操作以及向量元算操作功能。
外设执行存储功能包括NAND闪存控制器和存储卡控制器、以太网控制器(10/100BASE—T)、USB接口(全速/高速)、I2C总线接口、带有FIFO的串行通讯接口,显示支持功能是由2D图形引擎、LCD控制器和数字RGB输出功能提供的。
SH7764高速的数据处理性能和丰富的外设功能,使得SH7764处理器可以低廉的成本构成一个高性能的车载诊断处理系统。
使用SH7764构成车载远程诊断仪时,电路框图如图1所示。
图1 使用SH7764构成车载远程诊断仪时的电路框图1.2 操作系统WinCE操作系统是一个功能强、可裁剪、易移植的系统,且具备了系统所必须的用户信息数据库和数字地图数据库的存储及管理功能。
C#二次开发说明(MenuScript)

C#二次开发说明(MenuScript)——创建一个块1. 开发环境使用此说明书的用户需安装Microsoft Visual Studio 2010开发环境。
2. 文件配置创建工作目录如路径如F:\CreateBlock在该路径下新建两个文件夹application及startup。
注意:创建的路径不能包含中文字符,如“F:\新建文件夹\CreateBlock”。
在上一步创建的“startup”目录下创建一个菜单文件(CreateBlock.men),名字可以自己定义,扩展名必须是men。
使用纯文本编辑软件(例如NotePad 或UltraEdit 等)打开此文件,输入菜单定义,如代码示例2-1所示:VERSION 120EDIT UG_GATEWAY_MAIN_MENUBARBEFORE UG_HELPCASCADE_BUTTON creatLABEL 创建END_OF_BEFOREMENU creatBUTTON CreateBlockLABEL 创建一个块ACTIONS CreateBlock.dllEND_OF_MENU代码示例2-13. 环境变量的设定1) 操作系统为Windows 7的用户,单击【我的电脑】,右键单击【属性】一栏,如图3-1所示。
图3- 12) 出现【系统属性】对话框,如图3-2所示,选择【高级系统设置】选项,单击【环境变量】,进入环境变量更改界面,如图3-3所示。
图3- 2图3- 33) 找到【环境变量】中,选择【UGII_USER_DIR】一项,点击【编辑】按钮,如图3-4所示。
如果第一次编辑中则【环境变量】中没有【UGII_USER_DIR】选项,则单击【新建】,在【变量名】中输入UGII_USER_DIR,在【变量值】中输入第2步中用户指定路径(如F:\Block),如图3-5所示,完成此操作即可跳过第四步直接到第5步。
图3- 4图3- 54) 对【变量值】进行更改。
udf二次开发手册

udf二次开发手册一、简介UDF(User-Defined Functions)二次开发指的是在现有的UDF基础上进行进一步的自定义开发。
UDF是一种自定义函数,用于通过在数据库中嵌入自定义代码来扩展其功能。
本手册旨在为开发人员提供UDF二次开发的具体步骤和技巧,以实现更多个性化需求。
二、开发环境准备在进行UDF二次开发之前,需要准备以下开发环境:1. 操作系统:支持的操作系统包括Windows、Linux、MacOS等,根据实际需求选择合适的操作系统。
2. 开发工具:常用的开发工具有Visual Studio、Eclipse等,选择适合自己开发需求和编程语言的开发工具。
3. 数据库系统:UDF二次开发一般是在特定的数据库系统中进行,如MySQL、Oracle等,请确保已安装和配置好相应的数据库系统。
三、UDF二次开发步骤UDF二次开发的一般步骤如下:1. 确定需求:明确自定义函数的功能和使用场景,例如是否需要输入参数、返回值的类型等。
2. 编写代码:根据需求,在开发工具中编写自定义函数的代码,可以使用支持的编程语言,如C++、Java等。
3. 进行编译:使用开发工具将代码进行编译,生成可执行代码或库文件。
4. 导入UDF:将编译生成的代码导入到数据库系统中,具体方法可以参考相应数据库的官方文档。
5. 测试和优化:在数据库中使用自定义函数进行测试,根据需求和性能进行优化和调整。
6. 文档整理:整理UDF的使用方法和说明,编写相应的文档,方便其他开发人员使用和维护。
四、UDF二次开发技巧1. 参数输入:根据实际需求,自定义函数可以接受不同类型和个数的参数输入,可以在代码中进行相应的参数类型检查和处理。
2. 返回值类型:根据函数的功能和需求,选择合适的返回值类型,例如整数、字符串、浮点数等。
3. 错误处理:在自定义函数中,对于可能出现的错误情况进行适当的异常处理,提高函数的健壮性和稳定性。
4. 性能优化:对于复杂的自定义函数,可以进行性能优化,如缓存计算结果、使用合适的算法等,提高函数的执行效率。
基于VB和MapX二次开发的网络拓扑设计

应用技 术 。 Mp a X是 MaIf 公 司 G S产 品成员 之 一 L , pno I l 相 J
比其他 GS产 品 , I 它小 巧 灵 活 、 编 程可 扩 展 、 可 价格
图, 网元的地理位置和 逻辑关系结合起 来 , 户 将 用
能在 一 张 电 子 地 图 上 实 现 对 全 网 网 元 的 创 建 、 删
便宜、 无需 GS专业知识 , I 可选择任意高级 编程语 言 , c , c +, B以及 D L H 等进 行 GS应用 如 #V + V EP I I 开 发 , 支 持 Widw20 / P S N 或 H 并 n o s00 X 、 U P等 多 种 软 硬件平 台 J 。在 可视 化 的集 成开 发 环境 中 , 只需
@
2 1 S i eh E g 0 2 c T c. nr . f
基于 V B和 Ma X二 次 开 发 的 网络 拓 扑设 计 p
苏 婷 祝 小平 周 洲
( 西北工业大学 无人机特种技术重点实验室 , 无人 机研究所 西安 7 07 ) , 10 2
摘
要
针 对网络管理软件 中电子地 图的应用 , 出基于 V 提 B技 术和组 件技术 的 MaX在地理信 息 系统 中的二 次开发模 型。 p
通过 MaX创建 网络拓扑 图, p 用户能在指定 的地理 区域 内直观 、 方便地管理各种 网络设备 以及链路 , 形成 一套完整 的网络拓 扑 图, 组 网更加贴近真实 网络 , 使 界面更加友好 , 结合 网管软件 中的其它模块 , 再 可实现全 网的运行监 测、 资源 配置 管理、 告警 定
在设 计 阶段将 MaX控 件 引 入 程 序 , p 对其 进行 属 性 设 置 、 法 调用 和 二 次 开 发 , 能 实 现 地 图数 据 显 方 就 示, 地理 信息分 析 查 询 以及 地 图 绘制 和 导 出 等各 种 操作 , 文 以 V 本 B语 言 为 基 础 介 绍 网 络 拓 扑 的
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
结合GIS工具软件与当今可视化开发语言的集成二次开发方式是GIS应用开发的主流。
它的优点是既可以充分利用GIS工具软件对空间数据库的管理、分析功能,又可以利用其它可视化开发语言具有的高效、方便等编程优点,集二者之所长……
MapX是MapInfo公司向用户提供的具有强大地图分析功能的ActiveX控件产品。
由于它是一种基于Windows操作系统的标准控件,因而能支持绝大多数标准的可视化开发环境如Visual C++、Visual Basic、Delphi、PowerBuilder等。
编程人员在开发过程中可以选用自己最熟悉的开发语言,轻松地将地图功能嵌入到应用中,并且可以脱离MapInfo的软件平台运行。
这里谈到的VC++嵌入MapX进行二次开发可分为以下几个步骤来实现:
1对应用工程的预设置
在创建MapX控件之前,必须将MapX.h和MapX.cpp文件加入到工程中。
对于Visual C++5.0及以上版本,从Project菜单中选择Add To Project -> Files命令,打开InsertFiles into Project对话框,选择MapX.cpp和MapX.h文件加入到工程中(在MapX自带的C++例子中有这两个文件)。
注意:不要选择Project菜单中的Add TO Project->Components And Controls命令。
如果选择该命令加入MapX控件,将创建一新的.cpp文件,但是该文本没有包括所有的MapX对象。
2对MapX属性的操作
对于C++程序来说,每个MapX对象(Objects)都在MapX.h 和MapX.cpp中用一个类来实现,类的名字和MapX对象的名字相同,且已经在CmapX中定义了。
例如,DataSet对象用类CmapXDataset实现。
这和C++类的定义相一致。
而每个MapX对象的属性(Properties)是用类的成员函数来实现的。
比如DataSet对象的名字(Name),就是用Name()函数来实现的,不过,Name()有两种使用方法,即Get和Set。
如:
CString GetName();//获取对象名字
void SetName(LPCTSTR);//设置对象名字
3 部分MapX工具的应用
(1) “全图”工具的改进
一般全图工具的代码为:
m_ctrlMapX.SetZoom(m_ctrlMapX.GetGeoSetWidth());
此方法的缺点是重新显示全图后,实际上是以上一个视图的中心作为屏幕中心进行显示,如果上一个视图在全图中的边缘位置,点击全图工具后实际上不是初始设置的全图。
因此可以用如下代码实现:
CString mapname=m_ctrlMapX.GetGeoSet();//取得当前地图的名字
m_ctrlMapX.SetGeoSet(mapname);//设置该地图为主视区显示图
(2) 创建“信息”工具
MapX没有提供信息工具,该工具是自定制工具。
有两种实现方法,其基本思想是:
(1)创建工具的鼠标指针类型(一般为“+”),当在工具栏上选择此工具后,设置为当前工具,然后跟踪鼠标在地图上点击的位置,触发ToolUsed事件,根据位置信息确定相应的对象,然后读取对象属性或绑定的数据库,弹出对话框,实现信息显示。
此种方法只适用于显示地图的最上层对象(在MapX自带的C++例子“Buffer”中有具体实现代码)。
(2)用选择工具选中地图上所要显示信息的对象,然后再点击工具栏上的信息工具,弹出对话框,实现信息显示。
此信息工具的实现代码与(1)不同,没有鼠标指针,实际上就是读取选中对象的属性或绑定的数据库的操作。
此方法适合显示地图上的任意图层。
两种方法各有特点,第一种方法直接,但在实际应用中容易出现异常,第二种方法要多点击一次,但应用稳定,而且适用地图上的任意图层。
(3) “测距”工具的使用注意事项
MapX的Distance()函数是针对地球地图的,在非地球地图中使用要注意数值转换。
否则测出的数据与实际相差甚远。
4用MapX进行GIS二次开发
(1) 创建数据库
空间数据库可以通过两种方法创建,一种是通过MapX的图层生成功能创建。
MapX生成的每一图层都对应一张表(table),该表中除了存有地理对象的位置坐标以外,还可以包含其他属性字段;另一种方法是通过导入带有地理位置信息的其他数据库生成。
MapX可以通过数据绑定把这些数据库中的地理信息映射到地图图层上,MapX支持对多种常用数据库的访问。
(2) 设置图层控制和地图投影
在把地图加入到MapX之前,我们可以使用MapX附带的图层管理工具Geoset Manager把要加入的图层匹配在一起,建成一个图层组,该图层组规定了其中各个图层的名称、内容、属性及各图层之间的显示顺序。
MapX中可以给图层设置四种属性:可显示、可选择、可编辑和自动标注。
一般图层的属性是可显示的,需要查询的图层设置为可选择,需要修改的图层设置为可编辑,而自动标注可以自动显示图层中地理对象的标签。
合理地设置这些属性将有助于系统实现地理信息的维护和查询功能。
在匹配各个图层时,应该注意各个图层投影的设置。
全部图层必须使用一致的投影方法才能精确匹配。
MapX中的地图分为地球地图和非地球地图,地球地图中对象的坐标用经纬度来表示,非地球地图中对象的坐标通常是相对坐标,
是相对于图中的某个基准点来设置的。
如果图层的坐标不一致的话,必须先转换坐标才能进行匹配。
(3) 设计编辑功能
MapX提供标准的地理对象类型定义,在MapX所提供的点、线、面类型选择对话框中可以方便地选择地理对象的类型,包括所使用的符号的形状、颜色、大小等属性。
利用MapX提供的画图工具,可以为用户设计出多种多样的地理对象生成工具。
利用MapX提供的多种地理信息对象的选择工具(如矩形、圆形选择工具),用户可以调用这些选择工具并和MapX所提供的编辑(删除、修改等)地理对象功能相结合,以完成地理信息系统中地理对象的编辑操作。
但要注意,对于地理数据和非地理数据要分别对待。
(4) 设计查询功能和分析统计功能
对于地理信息系统中所要求的有关地理信息查询功能和分析统计功能,MapX提供了一定的查询和分析手段,如MapX可以根据图层表中的字段值查询相对应的地理对象;可以提供对应于图层表中某个或某几个字段的分析饼图等。
对于非地理信息,就要依据系统的具体要求用面向对象的语言设计查询和分析统计功能。