UIDL二次开发步骤
- 格式:doc
- 大小:561.00 KB
- 文档页数:5
第1章二次开发应用初步UG/NX是当今世界上最先进和高度集成的、面向制造行业的CAD/CAE/CAM软件系统,可用于产品的整个开发过程,包括产品概念设计、建模、分析和加工。
UG/NX以其强大的设计和加工功能而著称,可以支持目前市场上销售的不同厂家的所有工作站及微机平台,广泛应用于通用机械、模具、汽车及航空航天领域,被很多世界著名公司选定为企业计算机辅助设计、分析、制造的标准。
从20世纪60年代起UG就一直代表着工程制造业CAD/CAM软件产品的最高水平。
20世纪90年代,UG进入中国市场,受到广大CAD/CAM用户的欢迎。
UG在中国的用户已超过1000多家,装机量达到350 多套。
这是因为UG是一个集成化、全面、一体的软件,它包括设计、加工、分析和最流行的产品数据管理(PDM),给企业提供了一个全面的解决方案。
1.1 CAD软件的二次开发随着CAD应用领域的不断扩大和应用水平的不断提高,用户需求与CAD系统规模之间的矛盾日益增加,没有一个CAD系统能够完全满足用户的各种需求。
作为商品化的CAD软件产品,是否拥有一个开放的体系结构,是衡量该软件的优劣性、适用性和生命力的重要标志,而是否拥有一个开发简便、运行高效的二次开发平台又是开放式体系结构的核心和关键。
目前,主流的CAD软件都具有用户定制功能并提供二次开发工具。
通过CAD软件的二次开发工具可以把商品化、通用化的CAD系统用户化、本地化、即以CAD系统为基础平台,在软件开发商所提供的开发环境与编程接口基础之上,根据自身的技术需要研制开发符合相关标准和适合企业实际应用的用户化、专业化、知识化、集成化软件,以进一步提高产品研发的效率。
在通用CAD基础上融入专业知识构建专用CAD系统是当前深化CAD应用的潮流。
把用户的设计思想转化为特定的新功能需要以下基本要素,这些基本要素构成了CAD软件二次开发平台的基本结构:(1)通用CAD软件——管理层。
通用CAD软件是整个开发的基础,是二次开发应用程序的宿主。
ANSYS的二次开发技术ANSYS 的二次开发技术ANSYS 提供的二次开发工具有三个:参数化设计语言(ANSYS Parametric Design Language,APDL),用户界面设计语言(User Interface Design Language,UIDL)以及用户可编程特性(User Programmable Features,UPFs)。
其中,前两种可归类为标准使用特性,后一种为非标准使用特性。
ANSYS 参数化设计语言(APDL)APDL 扩展了传统有限元分析范围之外的能力,提供了建立标准化零件库、序列化分析、设计修改、设计优化以及更高级的数据分析处理能力,包括灵敏度研究等。
ANSYS 用户可编程特性(UPFs)利用UPFs,用户可以开发下列方面的功能程序:(1) 开发用户子程序实现从ANSYS 数据库中提取数据或将数据写入ANSYS 数据库。
该种子程序可以编译连接到ANSYS 中,此时ANSYS 提供了10 个数据库操作命令;如果作为外部命令处理,可以在ANSYS 的任何模块中运行;(2) 利用ANSYS 提供的子程序定义各种类型的载荷,其中包括BF 或BFE 载荷、压力载荷、对流载荷、热通量和电荷密度等;(3) 利用ANSYS 提供的子程序定义各种材料特性,包括塑性、蠕变、膨胀、粘塑性、超弹、层单元失效准则等;(4) 利用ANSYS 提供的子程序定义新单元和调整节点方向矩阵,ANSYS 最多可以有6 个独立的新单元USER100-USER105;( 5) 利用ANSYS 提供的子程序修改或控制ANSYS 单元库中的单元;(6) 利用UEROP 创建用户优化程序,可以用自己的算法和中断准则替换ANSYS 优化过程。
(7) ANSYS 程序作为子程序在用户程序中调用,如用户自定义的优化算法。
ANSYS 软件本身是通过FORTRAN 和C 语言开发的。
使用UPFs 进行二次开发,在安装ANSYS 的基础上,还需要Compaq Visual FORTRAN 和MS Visual C++的支持。
dolphinscheduler源码二次开发摘要:I.引言- 介绍dolphinscheduler- 为什么进行源码二次开发II.dolphinscheduler 源码二次开发的意义- 提高dolphinscheduler 的性能- 增加新的功能- 修复已知的问题III.如何进行dolphinscheduler 源码二次开发- 获取dolphinscheduler 源码- 熟悉源码结构- 修改源码- 测试和调试IV.源码二次开发中可能遇到的问题及解决方案- 编译问题- 运行时问题- 代码冲突V.总结- 总结dolphinscheduler 源码二次开发的经验- 展望未来的发展方向正文:I.引言Dolphinscheduler 是一个分布式调度系统,具有高可用性、高并发性和低延迟等特点。
在实际应用中,可能需要对dolphinscheduler 进行源码二次开发,以满足特定的需求。
本文将详细介绍dolphinscheduler 源码二次开发的相关内容。
II.dolphinscheduler 源码二次开发的意义dolphinscheduler 源码二次开发的主要意义如下:1.提高dolphinscheduler 的性能:通过对源码的优化,可以提高dolphinscheduler 的性能,使其在处理大量任务时更加稳定高效。
2.增加新的功能:根据实际需求,可以在源码中添加新的功能,提高系统的灵活性和可扩展性。
3.修复已知的问题:在开发过程中,可能会遇到一些已知的问题。
通过对源码的修改,可以修复这些问题,提高系统的稳定性。
III.如何进行dolphinscheduler 源码二次开发进行dolphinscheduler 源码二次开发的具体步骤如下:1.获取dolphinscheduler 源码:首先需要从GitHub 或其他代码托管平台下载dolphinscheduler 源码。
2.熟悉源码结构:在开始修改源码之前,需要熟悉dolphinscheduler 的源码结构,了解各个模块的功能和相互之间的关系。
二次开发流程一、概述二次开发是指在现有的软件或系统的基础上,根据实际需求进行定制化开发的过程。
在二次开发过程中,开发人员需要根据客户的需求进行功能扩展、界面定制、业务逻辑调整等工作,以满足客户的特定需求。
二、需求分析在开始二次开发之前,首先需要进行需求分析。
通过与客户充分沟通,了解客户的具体需求和期望,明确二次开发的目标和范围。
在需求分析阶段,开发人员需要与客户一起讨论并确定二次开发的功能、界面、流程等方面的需求。
三、设计与规划在需求分析的基础上,开发人员需要进行系统的设计与规划。
这包括确定系统的整体架构、模块划分、数据流程、界面设计等。
在设计与规划阶段,开发人员需要考虑系统的可扩展性、稳定性和安全性,以确保二次开发的质量和稳定性。
四、编码与测试在完成设计与规划后,开发人员可以开始进行具体的编码工作。
根据需求和设计文档,开发人员编写相应的代码,并进行测试。
测试阶段包括单元测试、集成测试和系统测试,以保证开发的功能与原系统的兼容性和稳定性。
五、部署与上线在开发和测试完成后,开发人员需要将二次开发的系统部署到生产环境中,并进行上线。
在部署与上线阶段,开发人员需要确保系统的稳定运行,同时与客户进行沟通,确保客户能够顺利地使用二次开发的系统。
六、维护与支持二次开发完成后,开发人员需要对系统进行维护与支持。
这包括对系统进行定期的维护与更新,以保证系统的稳定性和安全性。
同时,开发人员还需要提供技术支持,解决客户在使用过程中遇到的问题和困惑。
七、总结与反馈在二次开发完成后,开发人员需要与客户进行总结与反馈。
通过与客户的沟通,了解客户对二次开发的满意度和反馈意见,以便在后续的开发工作中不断改进和优化。
总结:二次开发是根据客户需求进行的定制化开发过程。
在二次开发的流程中,需求分析、设计与规划、编码与测试、部署与上线、维护与支持以及总结与反馈是必不可少的环节。
通过严谨的流程和规范的操作,可以确保二次开发的质量和稳定性,满足客户的特定需求。
传感器二次开发流程
传感器二次开发流程包括以下步骤:
1. 需求分析:明确需求并确定传感器的功能、性能、接口等需求。
2. 选型:根据需求,选择合适的传感器,并获取相应的开发工具和文档。
3. 接口设计:根据传感器的接口和通信协议,设计传感器与外部设备的连接方式和通信协议。
4. 硬件设计:根据需求和接口设计,设计传感器的电路和硬件布局,包括传感器的供电电路、信号处理电路、防护措施等。
5. 软件开发:根据需求和接口设计,开发传感器的驱动程序和相关的应用软件。
6. 调试和测试:对传感器进行调试和测试,包括硬件的功能验证和软件的逻辑验证。
7. 优化和改进:根据测试结果和用户反馈,对传感器进行优化和改进,提高性能和稳定性。
8. 生产和批量制造:根据最终的设计和测试结果,进行传感器的批量生产和制造。
9. 售后支持:提供传感器的售后支持,包括用户培训、故障排查和维修等。
10. 更新和升级:根据用户需求和技术发展,对传感器进行更新和升级,提供更多的功能和性能。
solidworks二次开发全教程系列之答禄夫天创作solidworks二次开发-01-录制一个宏第一步:我们需要自己录制一个宏,然后看看法式发生了什么代码.现在学习excel时候就是这么干的.只是,solidworks要复杂一些,直接录制的宏不能使用,需要做一些调整.在没有经验的时候我们最好依照下面的建议来做.Edit or Debug SolidWorks MacroEdit or debug SolidWorks macros using Microsoft VBA. 使用Microsoft VBA编纂或调试宏To edit or debug a SolidWorks macro:Click Edit Macro on the Macro toolbar, or click Tools, Macro, Edit.NOTES: 注意:To automatically edit a macro after recording it, click Tools, Options, Systems Options. On the General tab, select Automatically edit macro after recording and click OK. This setting is persistent across SolidWorks sessions.此选项Automatically edit macro after recording 顾名思义是在记录宏完毕后自动翻开编纂界面.If you recently edited the macro, you can select it from the menu when you click Tools, Macro. This menu lists the last nine macros that you edited.已经编纂了宏,菜单中会有最近的9个宏法式列表供选择.In the dialog box, select a macro file (.swp) and click Open. 选择一个宏swp文件NOTE: You can also edit .swb files, which are older-style SolidWorks macro files. When you run or edit a .swb file, it is automatically converted to a .swp file. 旧的宏文件后缀为swb,你也可以翻开swb,那么会自动保管为swp.Edit or debug the macro. If it is a new macro, be sure to:如果是新的宏Delete extra lines of code: 删除一些过剩的代码:The following variables are declared automatically in a SolidWorks macro. Delete any variables not used in the macro. 这些对象的声明是自动发生的,可以将没用的删除 Dim swApp As ObjectDim Part As ObjectDim boolstatus As BooleanDim longstatus As Long, longwarnings As LongDim FeatureData As ObjectDim Feature As ObjectDim Component As ObjectDelete all lines of code that change the view. 删除切换试图的代码译者注:像这样的Part.ActiveView().RotateAboutCenter 0.0662574, 0.0346621 无情的删失落吧Delete all ModelDocExtension::SelectByID2 calls appearing immediately before ModelDoc2::ClearSelection2 calls. However, do not delete ModelDocExtension::SelectByID2 calls appearing immediately after ModelDoc2::ClearSelection2 calls.Delete all ModelDoc2::ClearSelection2 calls appearing immediately before ModelDocExtension::SelectByID2. solidworks二次开发-02-用来访问特征的两个API来学习两个api:SelectByID2和GetSelectedObject5.这两个函数,第一个通过给出对象的name选择对象.第二个通过启用法式前已经选择的索引获得对象.看下面法式:Option ExplicitDim Model As ModelDoc2Dim feature As featureDim boolstatus As VariantSub main()' 选择叫"拉伸1"的特征boolstatus = Model.Extension.SelectByID2("拉伸1", "BODYFEATURE", 0, 0, 0, False, 0, Nothing,swSelectOptionDefault)'主要就是这一句话,在写Option Explicit后函数的最后一个参数swSelectOptionDefault可以使用0来取代' If the selection was successful, that is, "Extrude1" was' selected and it is a "BODYFEATURE", then get that feature; otherwise,' indicate failureIf boolstatus = True Then '如果有“拉伸1”这个特征下面的代码将其选中Dim SelMgr As SelectionMgrSet feature = SelMgr.GetSelectedObject5(1) '此处使用一个索引来获得特征ElseDebug.Print "Error"End IfEnd Sub最后列出这两个函数的VB语法:ModelDocExtension::SelectByID2DescriptionThis method selects the specified entity.Syntax (OLE Automation)retval = ModelDocExtension.SelectByID2 ( Name, Type, X, Y, Z, Append, Mark, Callout. SelectOption )Input:(BSTR) NameName of object to select or an empty stringInput:(BSTR) TypeType of object (uppercase) as defined in swSelectType_e or an empty stringInput:(double) XX selection location or 0Input:(double) YY selection location or 0Input:(double) ZZ selection location or 0Input:(VARIANT_BOOL) AppendIf...And if entity is...Then...TRUENot already selectedThe entity is appended to the current selection list Already selectedThe entity is removed from the current selection list FALSENot already selectedThe current selection list is cleared, and then the entity is put on the listAlready selectedThe current selection list remains the sameInput:(long) MarkValue that you want to use as a mark; this value is used by other functions that require ordered selectionInput:(LPCALLOUT) CalloutPointer to the associated calloutInput:(long) SelectOptionSelection option as defined in swSelectOption_e (see Remarks)Output:(VARIANT_BOOL) retvalTRUE if item was successfully selected, FALSE if not SelectionMgr::GetSelectedObject5DescriptionThis method gets the selected object.Syntax (OLE Automation)retval = SelectionMgr.GetSelectedObject5 ( AtIndex ) Input:(long) AtIndexIndex position within the current list of selected items, where AtIndex ranges from 1 to SelectionMgr::GetSelectedObjectCountOutput:(LPDISPATCH) retvalPointer to the Dispatch object as defined in swSelType_e; NULL may be returned if type is not supported or if nothing is selectedsolidworks二次开发-03-访问特征数据'coder arden'date :2005-03-22'used to get the simple hole infomation dep & dia'finished lucky !!'------------------------------------------------------------Option ExplicitDim Model As ModelDoc2Dim curfeature As featureDim boolstatus As BooleanDim featdata As SimpleHoleFeatureData2 '声明一个简单直孔对象Dim component As Component2Dim dep As DoubleDim dia As DoubleDim SelMgr As SelectionMgrDim ncount As IntegerSub getselected()Set curfeature = SelMgr.GetSelectedObject5(1) '获得以后选中的第一个特征Set featdata = curfeature.GetDefinition '获得特征的界说boolstatus = featdata.AccessSelections(Model, component) ' 可以对数据进行访问了ncount = featdata.GetFeatureScopeBodiesCount MsgBox ncountdep = featdata.DepthMsgBox dia & "*" & dep'MsgBox "error arden" '在solidworks中可以使用swAPP.sendmsgtouser2End Sub**********************************************上面法式运行前,假设你选择了一个简单直孔特征.然后获得这个孔德一些参数.孔深、直径等.solidworks的API虽然是e文的.介绍的还算详细,而且有很多的example.年夜家可以多看看代码.要访问一个特征,需要经历这样的步伐:界说一个特征对象: dim....as ...获得这个特征:比如使用GetSelectedObject5 还有SelectebyID等...获得界说:GetDefinition进行访问:AccessSelections上面的法式没有if选择的容错机制,需要添加上.solidworks二次开发-04-修改数据上次已经可以访问特征的各参数了,今天我们来修改它:要修改前面的步伐不能少,当我们已经可以读取一些特征时,我们就可以给他设定一些值.固然有时需要调用特定的参数.solidworks是ole和com的,所以要习惯这样.在修改完特征后需要调用函数modifydefinition()来实现变动.我们给一个例子,这个例子比前面的都要全面,它有很好的容错引导机制,可以直接拿来成为一个稳定的宏法式.Dim Model As ModelDoc2Dim Component As Component2Dim CurFeature As featureDim isGood As Boolean' Will become an ExtrudeFeatureData ObjectDim FeatData As ObjectDim Depth As DoubleDim SelMgr As SelectionMgrSub doubleBE()}}--> }}-->Set swApp = CreateObject("sldWorks.application")}}--> }}-->' Make sure that the active document is a part}}--> }}-->If Model.GetType <> swDocPART And Model.GetType <> swDocASSEMBLY Then‘这里的swDocPART 、swDocASSEMBLY 我的环境没有通过.我使用msgbox Model.GetType 的笨法子获得整数为1和2}}--> }}-->Msg = "Only Allowed on Parts or Assemblies" ' Define message}}--> }}-->Style = vbOKOnly ' OK Button only}}--> }}-->Title = "Error" ' Define title}}--> }}-->Call MsgBox(Msg, Style, Title) ' Display error message}}--> }}-->Exit Sub ' Exit this program}}--> }}-->End If}}-->}}-->}}--> }}-->' Get the Selection Manager}}-->}}-->}}--> }}-->' Get the selected object (first in the group if there are more than one)}}--> }}-->' Note that at this point CurFeature is just a Feature Object}}--> }}-->Set CurFeature =SelMgr.GetSelectedObject3(1)}}--> }}-->If CurFeature Is Nothing Then}}--> }}-->' Tell the user that nothing is selected}}--> }}-->swApp.SendMsgToUser2 "Please select the Base-Extrude", swMbWarning, swMbOk}}--> }}-->Exit Sub}}--> }}-->End If}}--> }}-->' Check the feature's type name}}--> }}-->' Make sure it is an extrusion}}--> }}-->If Not CurFeature.GetTypeName = swTnExtrusion Then’在这里使用swTnExtrusion我的环境没有通过,我改成了Extrusion才ok}}--> }}-->swApp.SendMsgToUser2 "Please select the Base-Extrude", swMbWarning, swMbOk}}--> }}-->Exit Sub}}--> }}-->End If}}--> }}-->' Get the Extrusion's Feature Data}}-->}}-->}}--> }}-->' Get the access selections for the feature data}}--> }}-->' Note that Component is NULL when accessing the selections of a standalone part. }}--> }}-->If we were calling AccessSelections from within an assembly, then model would refer to the top-level document in the assembly and component would refer to the actual part.}}--> }}-->isGood = FeatData.AccessSelections(Model, Component)}}-->}}-->}}--> }}-->' Inform the user of an error}}--> }}-->If Not isGood Then}}--> }}-->swApp.SendMsgToUser2 "Unable to obtain access selections", swMbWarning, swMbOk}}--> }}-->Exit Sub}}--> }}-->End If}}-->}}-->}}--> }}-->' Make sure the user has selected the base extrude}}--> }}-->If Not FeatData.IsBaseExtrude Then}}--> }}-->swApp.SendMsgToUser2 "Please select the Base-Extrude", swMbWarning, swMbOk}}--> }}-->Exit Sub}}--> }}-->End If}}-->}}-->}}--> }}-->' Change the depth of this extrusion to double its previous depth}}--> }}-->Depth = FeatData.GetDepth(True)}}--> }}-->FeatData.SetDepth True, Depth * 2}}-->}}-->}}--> }}-->' Implement the changes to the feature}}--> }}-->isGood = CurFeature.ModifyDefinition(FeatData, Model, Component) }}-->}}-->}}--> }}-->' If the modify definition failed}}--> }}-->If Not isGood Then}}--> }}-->swApp.SendMsgToUser2 "Unable to modify feature data", swMbWarning, swMbOk}}--> }}-->' Release the AccessSelections}}--> }}-->End If}}-->}}-->End Sub如果呈现特征呈现“退回”状态,我现在还没有找到问题的原因,只能在代码执行到最后调用Model.Rebuild这两个函数来自动更新.Solidworks二次开发---05--装配体中拔出零部件在往装配体中拔出零部件时,我们使用addcomponent 函数.如果需要选定零部件的配置,则需要使用addcomponent4.先学习下语法:addcomponent4:retval = AssemblyDoc.AddComponent4 ( compName, configName,x, y, z)Input: (BSTR) compName Pathname of a loaded part or assembly to add as a componentInput: (BSTR) configName Nameof the configuration from which to load the componentInput: (double) x X coordinate of the component centerInput: (double) y Y coordinate of the component centerInput: (double) z Z coordinate of the component centerOutput: (LPCOMPONENT2) retval Pointer to theComponent2 object需要注意的是:参数1为文件的全名(包括路径);参数2为文件的配置名称;当函数执行胜利购返回一个指向该零件的指针.于是我们可以如下写一个小法式,用来给装配体中插零件:‘‘write byarden2005-4-4‘this function add a part called “”in CurrentWorkingDirectory‘precondition is there has a part document called “”in CurrentWorkingDirectory‘and it has a configuration called “配置1”Dim Model As ModelDoc2Dim pth As StringDim strpath As StringSub insertPart()strpath = swApp.GetCurrentWorkingDirectory ‘以后工作路径pth = strpath & "零件 1.SLDPRT" ‘获得文件的FULLPATH全名Model.AddComponent4 pth, "配置1", 0, 0, 0 ‘添加零部件End Sub然而,这个法式比不是想象中那么好用.为什么呢??回头看addcomponent4的remark,上面这样写:The specified file must be loaded in memory. A file isloaded into memory when you load the file in yourSolidWorks session (SldWorks::OpenDoc6) or open anassembly that already contains the file.就是说你想指定的拔出的文件必需在调用函数之前已经在内存中加载了.不习惯,你就不能直接翻开多简单,没法子,我还没有找到好的方法,只能按人家的来:看看下面的函数Opendoc6,它翻开一个文档:Opendoc6:retval = SldWorks.OpenDoc6 ( filename, type, options, configuration, &Errors, &Warnings )Input: (BSTR) Filename Document name or full path if not in current directory,including extensionInput: (long) Type Document type as defined in swDocumentTypes_eInput: (long) Options Mode in which to open the document as defined in swOpenDocOptions_eInput: (BSTR) Configuration Model configuration in which to open this document:Applies to parts and assemblies, not drawingsIf this argument is empty or the specified configurationis not present in the model,the model is opened in the last-used configuration.Output: (long) Errors Load errors as defined in swFileLoadError_eOutput: (long) Warnings Warnings or extra information generated during the openoperation as defined in swFileLoadWarning_eReturn: (LPDISPATCH) retval Pointerto a Dispatch object, the newly loaded ModelDoc2, or NULLif failed to open这个函数参数1就是文档的全名,参数2是要拔出的类型描述,其中0123分别暗示:0 swDocNONE:不是sw文件1 swDocPART:零件2 swDocASSEMBLY:装配体3 swDocDRAWING:工程图如果想使用swDocNONE,需要界说:Public Enum swDocumentTypes_e}--> }-->swDocNONE = 0}--> }-->swDocPART= 1}--> }-->swDocASSEMBLY = 2swDocDRAWING=3End Enum参数3是翻开文档的模式,一般我们就选择swOpenDocOptions_Silent 用0 暗示,固然还有只读、只看等选项参数4是翻开选项,一般置空后面是两个OutPut,用来显示毛病翻开时的提示函数返回一个指向翻开文件的指针.依照上面的要求我们在向装配体中拔出一个零部件时,需要这样步伐:1、获得装配体2、使用opendoc6翻开需要拔出的零件3、使用addcomponent4拔出零件到装配体我们上面的法式需要这样来修改一下,添加了一个翻开文档的函数:'******************************************************************************' insertpart 03/21/05 byarden'拔出零件1'前提条件:在装配体所在文件夹中有零件“零件1”存在,而且零件1有配置“配置1”'********************************************************* *********************Dim Model As ModelDoc2Dim YSBmodel As ModelDoc2Dim pth As StringDim strpath As StringDim nErrors As LongDim nWarnings As LongSub insertpart()pth = strpath & "零件1.SLDPRT"openYSB (pth) ‘在添加零部件之前,先翻开它Model.AddComponent4 pth, "配置1", 0, 0, 0End Sub'这个函数翻开零件1Sub openpart(ByVal pth As String)Dim path As Stringpath = pthSet YSBmodel = newswapp.OpenDoc6(path, 1, swOpenDocOPtions_Silent, "", nErrors, nWarnings) YSBmodel.Visible = False ‘我不想看到零件1End Sub回复引用陈说道具 TOPSolidworks二次开发—06—在装配体中添加配合折腾了三天终于完成了计划中的功能模块.在一个装配体中自动判断拔出合适的零件,并添加配合.在前面几篇文章中我已经基本上说明了如何获得零部件的数据信息、如何拔出零部件、如何获得已经选择的特征等.下面只介绍怎样进行配合在做配合时,需要经常选择到零件的面、线等,这是一个问题,还有就是介绍一下addmate2函数的使用:一般进行配合我们依照下面的次第来进行:1-ModelDoc.ClearSelection2 ‘取消所有选择2-选择需要配合的实体(entity)3-使用AddMate2函数进行配合4-再次使用 ModelDoc.ClearSelection2 ‘取消所有选择主要的问题在于如何选择合适的面:由于面的命名没有什么规律,很多时候是法式自动来命名的,这样,不方便使用selectbyID来选择,我也不想使用坐标值来选择一个面,那样做更加糟糕.在获得一个组件(component)或者一个特征(feature)时,我们有getfaces、getfirstface、getnextface等方法,我们可以使用这些方法遍历一个组件或特征等的各个面,来到达选择面的目的,看下面法式:Private Function selectface(dcom As ponent2,tp As Integer) As BooleanSet swdowelbody = dcom.GetBody()If swdowelbody Is Nothing Then '毛病处置MsgBox "选择零件失败"selectface = FalseExit FunctionEnd IfSet swDCface = swdowelbody.GetFirstFace ‘获得第一个面Do While Not swDCface Is Nothing ‘遍历各个面Set swDsurface = swDCface.GetSurface ‘获得概况对象If swDsurface.IsCylinder Then ‘如果是圆柱面If tp = 0 Then 'means cylinderSet swDEnt = swDCfaceswDEnt.Select4 True, selDdataselectface = TrueExit FunctionEnd IfElse ‘如果是其它,固然实际中我们可能需要使用select来界说好多分支If tp = 1 Then 'means planeSet swDEnt = swDCfaceswDEnt.Select4 True, selDdataselectface = TrueExit FunctionEnd IfEnd IfSet swDCface = swDCface.GetNextFaceLoopEnd Function此函数接受两个参数,第一个是一个component对象,第二个用来标识选择类型:0暗示圆柱面,1暗示平面.此函数运行完成后将选择指定组件的指定类型的一个面.需要注意的是我们需要在判断面类型时候需要转换到surface对象.而且选择需要界说一个entity对象,用来select4,到达选择的目的.可能这个过程有些复杂,年夜家依照这个顺序多测试几次,就明白了它的工作原理.上面的函数写的其实欠好,是我从我的工程中截取的一段.下面介绍一下addmate2函数:Syntax (OLE Automation) OLE语法:pMateObjOut = AssemblyDoc.AddMate2 ( mateTypeFromEnum, alignFromEnum, flip, distance, distAbsUpperLimit, distAbsLowerLimit, gearRatioNumerator, gearRatioDenominator, angle, angleAbsUpperLimit, angleAbsLowerLimit, errorStatus )参数:Input:(long) mateTypeFromEnumType of mate as defined in swMateType_e配合类型Input:(long) alignFromEnumType of alignment as defined in swMateAlign_e对齐选项Input:(VARIANT_BOOL) flipTRUE to flip the component, FALSE otherwise是否翻转Input:(double) distanceDistance value to use with distance or limit mates 距离Input:(double) distAbsUpperLimitAbsolute maximum distance value (see Remarks)距离限制maxInput:(double) distAbsLowerLimitAbsolute minimum distance value (see Remarks)距离限制minInput:(double) gearRatioNumeratorGear ratio numerator value for gear mates齿轮配合分子值Input:(double) gearRatioDenominatorGear ratio denominator value for gear mates齿轮配合分母值Input:(double) angleAngle value to use with angle mates角度Input:(double) angleAbsUpperLimitAbsolute maximum angle value角度限制maxInput:(double) angleAbsLowerLimitAbsolute minimum angle value角度限制minOutput:(long) errorStatusSuccess or error as defined by swAddMateError_e毛病陈说Return:(LPMATE2) pMateObjOutPointer to the Mate2 object返回指向配合的指针RemarksTo specify a distance mate without limits, set the distAbsUpperLimit and distAbsLowerLimit arguments equal to the distance argument's value.指定一个没有限制的距离,设定距离限制的最年夜、最小值和距离值相等If mateTypeFromEnum is swMateDISTANCE or swMateANGLE when the mate is applied to the closest position that meets the mate condition specified by distance or angle, then setting flip to TRUE moves the assembly to the other possible mate position.如果是距离或角度配合,配合将从符合条件的最近端进行配合,我们可以设定flip为true,改变配合至另一个合适的位置Use:使用配合的步伐ModelDoc2::ClearSelection2(VARIANT_TRUE) before selecting entities to mate.ModelDocExtension::SelectByID2 with Mark = 1 to select entities to mate.ModelDoc2::ClearSelection2(VARIANT_TRUE) after the mate is created.If mateTypeFromEnum is swMateCAMFOLLOWER, then use a selection mark of 8 for the cam-follower face.如果配合类型为凸轮,在概况标示8. 注:这个我也不太明白哈哈If nothing is preselected, then errorStatus is swAddMateError_IncorrectSeletions and pMateObjOut is NULL/Nothing.如果实现没有限定实体来配合,将会抱错swAddMateError_IncorrectSeletions,函数返回NULL或者Nothing上面就是API帮手所说的话,下面给出一段示例法式,假设之前我们已经选择了两个半径一样的圆柱面,那么我们来界说一个同心配合:Set swmatefeat = swassy.AddMate2(1, 0, False, 0, 0, 0, 0, 0, 0, 0, 0, nErrors)其中的 Dim swassy As SldWorks.AssemblyDocDim swmatefeat As Object注:在编程中有时候不能实现确定一个对象的类型,我们可以声明一个Object对象,让VB自己去匹配.但这样做是影响了效率.要完成一个距离或者角度要麻烦一些,就像上面的remark中说明的:Set swmatefeat = swassy.AddMate2(5, 1, True, 0.001, 0.001, 0.001, 0, 0, 0, 0, 0, nErrors)在这里我们需要将min和max都设置成与距离值相等,要否则配合会认为我们设定了高级配合中的限制条件,会报错.而且第三个参数和第二个参数需要按实际情况来确定.最后我们列出AddMate2的类型:swMateType_e‘Specifies values for assembly-mate information. swMateCOINCIDENT 0 重合swMateCONCENTRIC 1 同心swMatePERPENDICULAR 2 垂直swMatePARALLEL 3 平行swMateTANGENT 4 相切swMateDISTANCE 5 距离swMateANGLE 6 角度swMateUNKNOWN 7 未知swMateSYMMETRIC 8 对称swMateCAMFOLLOWER 9 凸轮swMateGEAR 10 齿轮回复引用陈说道具 TOPSolidworks二次开发—07—控制草图对象Get All Elements of Sketch Example (VB)Solidwork中对草图的控制,下面的例子很详细.特征下的草图在solidwork中其实是特征的子特征,我们可以对特征进行GetFirstSubFeature、及GetNextSubFeature获得.如果有需要年夜家可以从中找到对直线、弧线、圆等对象的把持.代码是solidworks的示例文件,里面充满了debug.print,只是向用户显示法式执行的结果.This example shows how to get all of the elements of a sketch.'---------------------------------------------' Preconditions: Model document is open and a sketch is selected.' Postconditions: None'---------------------------------------------。
使用函数式或命令式进行二次开发的流程下载提示:该文档是本店铺精心编制而成的,希望大家下载后,能够帮助大家解决实际问题。
文档下载后可定制修改,请根据实际需要进行调整和使用,谢谢!本店铺为大家提供各种类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,想了解不同资料格式和写法,敬请关注!Download tips: This document is carefully compiled by this editor. I hope that after you download it, it can help you solve practical problems. The document can be customized and modified after downloading, please adjust and use it according to actual needs, thank you! In addition, this shop provides you with various types of practical materials, such as educational essays, diary appreciation, sentence excerpts, ancient poems, classic articles, topic composition, work summary, word parsing, copy excerpts, other materials and so on, want to know different data formats and writing methods, please pay attention!一、什么是函数式和命令式编程。
1.1 函数式编程。
A8二次开发平台应用软件开发指南版本2.1目录1. 简介 (4)2. 二次开发平台架构 (4)2.1驱动层 (5)2.2LINUX内核 (5)2.3MINIGUI库、中间件 (5)2.4应用程序 (5)3. 建立开发环境 (5)3.1安装VMW ARE (5)3.2安装L INUX (6)3.3安装VM WARE T OO L S (12)3.4共享WINDOWS 文件夹 (13)3.5交叉编译器安装 (14)3.6MINIGUI库安装 (15)4. 应用DEMO介绍 (15)4.1DEMO目录介绍 (15)4.1.1 PC 端目录结构 (15)4.1.2 A8 中目录结构 (16)4.2增加文件 (16)4.3增加文件夹 (16)4.4编译DEMO (17)4.5软件下载工具驱动安装 (19)4.6应用软件及相关资料下载 (23)4.7常用命令 (25)5. 中间件接口使用说明 (27)5.1卡类操作 (27)5.1.1 M1卡操作 (27)5.1.1.1设置卡片类型 (27)5.1.1.2寻卡 (27)5.1.1.3卡类型选择 (27)5.1.1.4读数据 (27)5.1.1.5写数据 (28)5.1.1.6权限控制 (28)5.1.1.7减值操作 (28)5.1.1.8加值操作 (29)5.1.1.9块拷贝 (29)5.1.2 PSAM/IC卡操作 (29)5.1.2.1 卡片上电操作 (29)5.1.2.2 卡片中文件选择 (30)5.1.2.3执行APDU命令 (30)5.1.2.4卡进行下电操作 (30)5.1.2.5 IC卡插入检测 (30)5.1.3 磁条卡操作 (31)5.1.3.1 启动磁卡读 (31)5.1.3.2 刷卡检测 (31)5.1.3.3读二磁道数据 (31)5.1.3.4读三磁道数据 (31)5.2打印机操作 (32)5.2.1 缺纸检测 (32)5.2.2 字体大小设置 (32)5.2.3 字间距设置 (32)5.2.4 行间距设置 (32)5.2.5 打印浓度设置 (32)5.2.6 开始打印一行字符 (33)5.2.7 停止打印 (33)5.2.8 打印黑白图片 (33)5.4时钟操作 (34)5.4.1驱动应用层接口函数索引表: (34)5.4.2应用层接口函数介绍: (34)5.5网络连接操作 (35)5.6蜂鸣器控制 (36)5.7LCD控制 (36)1. 简介A8 是本公司在多年专业技术积累的基础上开发出来的一个二次开发平台。
ANSYS二次开发手册UIDL解析APDL解析目录第二章解析UIDL篇 (1)2.1结识UIDL (1)2.2看看UIDL的模样 (1)2.3 Ansys调用UIDL的过程 (4)第三章UIDL实例解析一 (6)3.1问题描述: (6)3.2环境准备: (6)3.3添加菜单: (7)3.4结束语 (9)第四章UIDL实例解析二 (10)4.1问题描述: (10)4.2环境准备及构建对话框: (10)4.3参数提取杂谈 (12)4.4结束语 (13)附录 (13)第五章UIDL实例解析三 (15)5.1问题描述 (15)5.2环境准备及构建联机帮助: (15)5.3几点说明 (18)5.4 结束语 (19)第六章解析APDL (20)6.1 熟悉新朋友—APDL (20)6.2 二次开发工具之间的比较 (20)6.3 结束语 (20)第七章APDL综合实例 (21)7.1 问题说明 (21)7.2 解题思想 (22)7.3 构建步骤 (22)7.4 几点说明 (26)7.5 结束语 (26)第二章解析UIDL篇2.1结识UIDLUIDL是什么?Ansys二次开放语言的一种。
OK,那么它能带给我们什么?很多很多,如果你想让你在Ansys中制作的用户界面具有专业水准的话,请来结识一下我们的UIDL把。
●全称:UIDL的全名是User Interface Design Language,是Ansys中二次开发工具方面的三大金刚之一。
GUI方面几乎全部的二次开发功能都将由它运筹帷幄。
●功用:⏹组织我们自己强大的菜单系统。
想象一下我们在Ansys中也能轻松做出可以和VC,VB之类主流GUI开发工具媲美的菜单响应效果,Ansys的世界将是多么的亲切、友好。
⏹构建功能繁复的对话框。
Ansys中美观易用的ContactWizard对话框级联界面一定让你印象很深把,有了它,即使是最菜鸟的门外汉也能构建一流的工程算例,Ansys5.7中的DesignSpace应该就是无可争辩的例证之一。
基于APDL 和U IDL 的ANS YS二次开发技术及其应用张建业1,杨甫勤2,钱继锋2(1.天津工业大学机械电子学院,天津300160(2.军事交通学院装运机械系,天津300161摘要:以渐开线圆柱齿轮为例,介绍了在有限元软件ANSYS 中,运用U IDL 进行图形界面设计和运用APDL 语言进行参数化实体建模的方法,提高了ANSYS 软件的用户接受程度和分析效率。
关键词:ANSYS ;APDL ;U IDL ;二次开发中图分类号:TH 132文献标识码:B 文章编号:1672-1616(200623-0079-03ANSYS 是我国工程界广泛使用的大型通用有限元分析软件之一,具有良好的开放性、可定制性,提供多种二次开发途径,用户可根据自身的需要在标准ANSYS 版本上进行功能扩充和系统集成,生成具有行业分析特点和符合用户需要的用户版本的ANSYS 程序,从而实现设计和分析的易用性、高效性。
ANSYS 的二次开发功能包括4个组成部分:用户界面设计语言(U IDL 、参数化程序设计语言(APDL 、用户程序特性(U PFs 、ANSYS 数据接口,其中U IDL 和APDL 是目前常用的2种二次开发功能,U IDL 可完成主菜单系统及菜单项、对话框和拾取对话框、帮助系统的图形界面的设计,APDL 可编写参数化的用户程序。
1用户界面设计语言(U IDLU IDL (User Interface Design Language 是ANSYS 为用户提供专门进行程序界面设计的语言,允许用户改变ANSYS 的图形界面(GU I 中的一些组项,提供了一种允许用户灵活使用、组织设计ANSYS 图形界面的强有力工具。
U IDL 控制文件由一个控制文件头和几个构造块组成,一个构造块对应着GU I 的一个元件,每个构造块是一系列的U IDL 命令,构造块分为菜单块和功能块两个类型,控制文件结构如图1所示[1]。
dolphinscheduler源码二次开发DolphinScheduler 是一款分布式易扩展的可视化工作流任务调度系统,是一款非常适合用于企业级调度需求的开源项目。
它提供了完整的任务调度管理,支持并发执行任务,支持自定义任务类型以及任务依赖等功能。
对于 DolphinScheduler 的二次开发,可以基于其提供的接口和插件机制进行扩展和定制化,以满足特定的业务需求。
下面将简要介绍DolphinScheduler 的架构以及如何进行二次开发。
1. DolphinScheduler 的架构DolphinScheduler 采用分层架构,主要包含以下几个模块:- API 模块:提供 HTTP 接口,接受用户请求并将其转发给Scheduler 模块处理。
- Scheduler 模块:负责任务的调度和执行,包含调度器和执行器两部分。
- Master 模块:负责任务的管理,包括任务的创建、更新、删除等操作。
- Worker 模块:负责任务的实际执行,通过注册到 Master 上获取任务并执行。
- Alert 模块:用于任务执行状态的告警。
-DB模块:用于数据的持久化存储。
2. DolphinScheduler 的二次开发针对 DolphinScheduler 的二次开发,可以从以下几个方面入手:2.1.自定义任务类型DolphinScheduler 支持自定义任务类型,可以根据自己的需求进行扩展。
具体的步骤如下:- 实现 Task 接口并重写其中的方法,定义自己的任务逻辑。
- 在工程中创建一个名为 tasks 的子模块,并将实现的任务类型类放到此模块下。
- 在 project-ext.json 文件中配置自定义任务类型的信息,包括任务类型的标识、名称、描述等。
- 重新编译打包项目,将新的任务类型部署到 DolphinScheduler 中。
2.2.自定义插件DolphinScheduler 提供了插件机制,可以通过自定义插件来为系统增加一些特定的功能。
ANSYS的二次开发技术ANSYS提供的二次开发工具共有三个:参数化设计语言(ANSYS Parametric Design Language,APDL),用户界面设计语言(User Interface Design Language,UIDL)以及用户可编程特性(User Programmable Features,UPFs)。
其中,前两种可归类为标准使用特性,后一种为非标准使用特性。
ANSYS参数化设计语言(APDL)APDL扩展了传统有限元分析范围之外的能力,提供了建立标准化零件库、序列化分析、设计修改、设计优化以及更高级的数据分析处理能力,包括灵敏度研究等。
ANSYS用户可编程特性(UPFs)利用UPFs,用户可以开发下列方面的功能程序:(1)开发用户子程序实现从ANSYS数据库中提取数据或将数据写入ANSYS数据库。
该种子程序可以编译连接到ANSYS中,此时ANSYS提供了10个数据库操作命令;如果作为外部命令处理,可以在ANSYS的任何模块中运行;(2)利用ANSYS提供的子程序定义各种类型的载荷,其中包括BF或BFE载荷、压力载荷、对流载荷、热通量和电荷密度等;(3)利用ANSYS提供的子程序定义各种材料特性,包括塑性、蠕变、膨胀、粘塑性、超弹、层单元失效准则等;(4)利用ANSYS提供的子程序定义新单元和调整节点方向矩阵,ANSYS最多可以有6个独立的新单元USER100-USER105;(5)利用ANSYS提供的子程序修改或控制ANSYS单元库中的单元;(6)利用UEROP创建用户优化程序,可以用自己的算法和中断准则替换ANSYS优化过程。
(7)ANSYS程序作为子程序在用户程序中调用,如用户自定义的优化算法。
ANSYS软件本身是通过FORTRAN和C语言开发的。
使用UPFs进行二次开发,在安装ANSYS的基础上,还需要Compaq Visual FORTRAN和MS Visual C++的支持。
二次开发流程范文二次开发是指在现有软件或硬件基础上进行二次开发,以满足特定需求的一种软件开发方式。
在进行二次开发之前,需要明确的开发流程,以确保开发过程的顺利进行。
下面是一个1200字多的二次开发流程的详细介绍。
一、需求分析在二次开发之前,首先需要对需求进行分析。
这个阶段的目标是要明确用户的需求,并将其转化为具体的开发任务。
需求分析阶段包括以下几个步骤:1.收集用户需求:与用户进行沟通,了解他们的需求和期望,并记录下来。
2.需求分类和整理:对用户需求进行分类和整理,将其分为功能需求和非功能需求。
3.需求确认:与用户进行确认,确保对需求的理解没有偏差。
4.可行性分析:对需求进行可行性分析,评估需求是否能够实现,并提供给用户反馈。
二、设计阶段在需求分析完成后,需要进行详细的设计工作。
设计阶段的目标是要根据需求分析的结果,设计出满足需求的软件架构和功能模块。
1.系统架构设计:根据需求设计系统的整体架构,确定系统的主要组成部分和各部分之间的关系。
2.功能模块设计:根据系统架构设计,将系统功能划分为多个模块,并设计每个模块的功能和接口。
3.数据库设计:根据功能模块设计,设计数据库的结构和关系,确定数据的存储方式和访问方式。
4.用户界面设计:设计用户界面的布局、样式和交互方式,使用户能够方便地使用系统。
三、编码实现在设计完成后,需要进行编码实现。
编码实现阶段的目标是要将设计阶段的结果转化为具体的编码实现。
1.编码环境准备:搭建合适的开发环境,包括编译器、开发工具和测试工具。
2.编码规范定义:制定编码规范,确保编码风格的统一和代码的可读性。
3.编码实现:根据设计阶段的结果进行编码实现,使用合适的编程语言和开发工具。
4.单元测试:对每个编码模块进行单元测试,确保其功能的正确性和稳定性。
四、系统集成测试在编码实现完成后,需要对整个系统进行集成测试。
系统集成测试的目标是要检查系统各个模块之间的接口和数据传递是否正常,以及整个系统是否满足需求。
二次开发开发流程二次开发流程指的是在已有的软件或系统的基础上进行修改和扩展,以满足用户的特定需求。
下面将详细介绍二次开发的流程,并探讨其中的关键步骤和注意事项。
一、需求调研和分析在开始二次开发之前,首先需要进行需求调研和分析。
这一步通常包括与用户的沟通,明确用户的需求和期望,并分析现有软件或系统中的问题和不足之处。
通过需求调研和分析,可以为后续的开发工作提供指导和准备。
二、编写开发计划在需求调研和分析的基础上,编写开发计划是非常重要的一步。
开发计划应该明确开发的目标、范围、里程碑和交付日期等,以及需要的人力和物力资源。
同时,还要考虑风险管理和质量保证等方面的内容。
编写开发计划的目的是为了确保开发工作的顺利进行,并提高开发效率和质量。
三、系统设计和架构在有了清晰的开发计划之后,就可以进行系统设计和架构的工作了。
系统设计应该考虑到二次开发的目标和需求,并采用适当的设计模式和架构原则。
在系统设计中,可以涉及到数据模型的设计、业务逻辑的定义、页面布局和交互设计等方面。
通过系统设计和架构的工作,可以为后续的编码和测试工作提供指导和依据。
四、编码和测试编码和测试是二次开发流程中的关键步骤。
在编码阶段,开发人员需要根据系统设计和架构的要求,进行具体的编码工作。
编码应该遵循良好的编码规范和开发标准,并进行适当的模块化和复用。
在编码过程中,还需要进行代码的版本控制和文档的维护。
测试阶段是为了验证系统的正确性和稳定性。
测试工作可以分为单元测试、集成测试和系统测试等不同的层次。
在测试过程中,需要编写测试用例和测试脚本,并进行相应的测试工作。
测试结果应该被记录和分析,以便及时修复和改进。
五、部署和维护在完成编码和测试之后,就可以进行系统部署和维护的工作了。
部署工作包括将开发完成的代码和资源部署到实际的生产环境中,并进行必要的配置和调试。
维护工作包括对系统的运行状态进行监控和维护,以及进行必要的升级和补丁的更新。
在二次开发流程中,还有一些关键的注意事项需要特别关注:1.沟通与合作:在整个开发流程中,与用户和团队成员的有效沟通和合作是非常重要的。
UIDL二次开发工具在自卸车车厢设计中的实现
ANSYS调用UIDL的过程:
以下在ANSYS11.0环境下进行说明。
ANSYS在启动时会自动在其安装目录下的\ansys11.0\v110\ANSYS\gui\en-us\UIDL文件夹中搜寻menulist110.ans文件,并调用其指向的UIDL文件,包括UIMENU.GRN、UIFUNCl.GRN和UIFUNC2.GRN文件。
因此,只需将这4个文件复制到自己的工作目录中,并对其重新编辑,即可实现调用自己定制的GUI界面。
通常ANSYS按照以下顺序寻找menulist110.ans 文件:用户工作目录(可以在Interactive 启动方式中设定)->用户根目录->/ansys/docu 目录,可见只
要我们在用户工作目录中编辑自己的menulist110.ans 文件,ANSYS 将优先使用我们自己的menulist110.ans文件。
如果生成了自己的UIDL 控制文件,并
在我们自己的menulist110.ans文件中指向它们,我们就能实现对UIDL 的全
控制。
所以,menulist110.ans文件可以复制到自己的工作目录,也可以不复制到自己的工作目录上。
假设工作目录为E:\ansys,安装目录为D:\Program Files\ansys11.0\v110\ANSYS\gui\en-us\uidl,则可以有以下几种做法:1)将UIMENU.GRN、UIFUNCl.GRN和UIFUNC2.GRN文件复制到工作目录中,menulist110.ans 文件不复制,对这四个文件重新编辑,即可实现调用自己定制的GUI界面。
2)将UIMENU.GRN、UIFUNCl.GRN和UIFUNC2.GRN文件和menulist110.ans文件这四个文件都复制到工作目录中,对这四个文件重新编辑,即可实现调用自己定制的GUI界面。
这两种方法下的menulist110.ans文件中的内容均为:
3)新建一个文件夹,比如命名为ansys1,路径为E:\ansys1,将UIMENU.GRN、UIFUNCl.GRN和UIFUNC2.GRN文件复制到文件夹ansys1中,menulist110.ans 文件复制不复制均可,对这四个文件重新编辑,将工作目录改为E:\ansys1,启动ansys,即可实现调用自己定制的GUI界面。
方法3下的menulist110.ans文件中的内容为:
注意:不要直接在ANSYS 的安装目录下修改者四个文件,否则会导致ANSYS 无法正常启动。
定制的菜单及对话框分别如图1及图2所示。
该菜单是在主菜单系统中添加一项新的子菜单,命名为Dump Truck Analysis ,子菜单下又有一个子菜单Cargo Box ,其含义是对货厢进行操作,子菜单Cargo Box 下有一个功能项Modeling ,其实现的功能是建立货厢主体部分参数化几何模型。
1、主菜单定制
注意:用有效软件Text Pad 打开UIMENU.GRN 和UIFUNC2.GRN 。
1)英文菜单,英文对话框
默认的保存形式为ANSI ,UIMENU.GRN 和UIFUNC2.GRN 都保存为ANSI 编码格式,则菜单和对话框都为英文,如图1及图2所示;
2)主菜单中文,对话框中文,菜单底层英文
UIMENU.GRN 保存为UTF-8编码格式,UIFUNC2.GRN 保存为ANSI 编码格式。
(目前,ansys11.0好像无法实现全中文的菜单及对话框。
)
ANSYS 中主菜单的信息由UIMENU.GRN 文件提供。
首先在MenuRoot 结构块中适当位置添加自定制的菜单链接Men_MyProject ,代码如下: :N MenuRoot
:S 0, 0, 0
:T Menu
:A Main Menu
:D ANSYS ROOT MENU
Men_UVBA_Main_T1
Men_UVBA_Main_T2
Men_UVBA_Main_T3
Fnc_Preferences
Sep_
Men_MyProject
Sep_
Men_Preproc
Men_Solution
Men_GenlPost
Men_TimePost
……
然后在其他已有的任意菜单结构块之间添加Men_MyProject 的功能结构块代码如下: :N Men_MyProject
:S 0, 0,
0 图1 添加新子菜单后的主菜单
:T Menu
:A Dump Truck Analysis
:D Dump Truck Analysis
-Cargo Box-
Fnc_GEO
:E END
:!
删除行“:X INDEX ADDED BY ANSYS”以后的全部行。
2、结构块对话框定制
在UIFUNC2.GRN中的任意功能结构块中添加自定制的功能函数代码,代码如下::N Fnc_GEO
:S 0, 0, 0
:T Cmd
:A Modeling
:D Please Input the parameter Informations
:C)*Set,L1,6.204
:C)*Set,H1,2.146
:C)*Set,H2,1.51
:C)*Set,W,2.48
:C)*Set,A,0.4
:C)*Set,C1,0.087
:C)*Set,C2,0.063
:C)*Set,D,0.198
:C)*Set,E,0.196
:C)*Set,n1,3
:C)*Set,n2,6
:C)*Set,n3,12
:C)*Set,C3,0.25
:C)*Set,C4,0.147
:H Hlp_0_Contents
Inp_NoApply
Cmd_)*Cset,1,15
Fld_0
图2 货厢几何参数输入对话框
Typ_Lab
Prm_Please Input the parameter values of Cargo Box
Fld_0
Typ_Lab
Prm_(Recommended Values are shown in pane)
Fld_2
Prm_Please Input L1
Typ_REAL
Def_*PAR(L1)
Prm_Please Input L2 Typ_REAL
Def_*PAR(L2)
Fld_4
Prm_Please Input H1 Typ_REAL
Def_*PAR(H1)
Fld_5
Prm_Please Input H2 Typ_REAL
Def_*PAR(H2)
Fld_6
Prm_Please Input W Typ_REAL
Def_*PAR(W)
Fld_7
Prm_Please Input A Typ_REAL
Def_*PAR(A)
Fld_8
Prm_Please Input C1 Typ_REAL
Def_*PAR(C1)
Fld_9
Prm_Please Input C2 Typ_REAL
Def_*PAR(C2)
Fld_10
Prm_Please Input D Typ_REAL
Def_*PAR(D)
Fld_11
Prm_Please Input E Typ_REAL
Def_*PAR(E)
Fld_12
Prm_Please Input n1 Typ_REAL
Def_*PAR(n1)
Fld_13
Prm_Please Input n2 Typ_REAL
Def_*PAR(n2)
Prm_Please Input n3 Typ_REAL
Def_*PAR(n3)
Fld_15
Prm_Please Input C3 Typ_REAL
Def_*PAR(C3)
Fld_16
Prm_Please Input C4 Typ_REAL
Def_*PAR(C4)
Cmd_)/GO
Cmd_)*GET,C4,CPAR,15 Cmd_)*GET,C3,CPAR,14 Cmd_)*GET,n3,CPAR,13 Cmd_)*GET,n2,CPAR,12 Cmd_)*GET,n1,CPAR,11 Cmd_)*GET,E,CPAR,10 Cmd_)*GET,D,CPAR,9 Cmd_)*GET,C2,CPAR,8 Cmd_)*GET,C1,CPAR,7 Cmd_)*GET,A,CPAR,6 Cmd_)*GET,W,CPAR,5 Cmd_)*GET,H2,CPAR,4 Cmd_)*GET,H1,CPAR,3 Cmd_)*GET,L2,CPAR,2 Cmd_)*GET,L1,CPAR,1 Cmd_)Cargo_Box
:E END
:!。