AVEVA PDMS PML 二次开发之模糊查找工具

AVEVA PDMS PML 二次开发之模糊查找工具FuzzySearch

在AVEVA Plant(PDMS)/AVEVA Marine中,要查找一个不是很清楚的元素可能有些不便,使用PML开发了一个模糊查找的小工具,如下图所示:

使用方法:

1. 在key word中输入需要查找的部件的名字或名字的一部分;

2. 也可输入通配符,如*表示求知的任意几个字符, ?表示求知的一个字符;

3. 查找到的元素将会在列表中显示出来,在列表中选择,将会在模型中定位到选择的元素;

 


2012.12.6
看很多人比较喜欢这个工具,将其源代码陈列如下:

  1 -------------------------------------------------------------------------------
  2 -- Copyright (C) 2010 eryar@163.com All Rights Reserved.
  3 --
  4 -- File:            FuzzySearch.pmlfrm
  5 --   Type:          Form Definition
  6 --   Group:         Application
  7 --     Keyword:     MDS
  8 --   Module:        DESIGN
  9 --
 10 -- Author:          eryar@163.com
 11 -- Created:         2012-8-15 19:22
 12 --
 13 -- Description:     Fuzzy search element.
 14 --
 15 -------------------------------------------------------------------------------
 16 setup form !!fuzzysearch
 17     !this.formtitle     = 'Fuzzy Search'
 18     !this.cancelCall    = '!this.OnCancel()'
 19     !this.formRevision  = '0.1v'
 20 
 21     frame .fuzzySearchFrame
 22         text    .tKeyWord   'Key Word:' width 18 is string
 23         button  .bGo        'Go'    callback    '!this.OnOk()'
 24         button  .bHelp      '?'     callback    '!this.OnHelp()'
 25         list    .lResult    at xmin.tKeyWord ymax+0.2    width 36 height 16
 26     exit
 27 
 28     path down
 29 
 30     button  .bCancel    'Cancel'    callback    '!this.OnCancel()'
 31 
 32 exit
 33 -------------------------------------------------------------------------------
 34 --
 35 -- Method:      fuzzySearch()
 36 --
 37 -- Description: default constructor.
 38 --
 39 -- Method Type: Function/Procedure
 40 -- Arguments:
 41 --   [#] [R/RW] [Data Type] [Description]
 42 -- Return:
 43 --   [Data Type] [Description]
 44 --
 45 -------------------------------------------------------------------------------
 46 define method .fuzzysearch()
 47     !this.lResult.callback  =   '!this.zoomSelection()'
 48 endmethod
 49 -------------------------------------------------------------------------------
 50 --
 51 -- Method:      apply()
 52 --
 53 -- Description: apply the operation.
 54 --
 55 -- Method Type: Function/Procedure
 56 -- Arguments:
 57 --   [#] [R/RW] [Data Type] [Description]
 58 -- Return:
 59 --   [Data Type] [Description]
 60 --
 61 -------------------------------------------------------------------------------
 62 define method .OnOk()
 63     -- 1. Check the input name;
 64     if(!this.tKeyWord.val.Empty()) then
 65         !!alert.message('Please input the key word!')
 66         return 
 67     endif
 68 
 69     -- 2. Collect all elements for the whole world;
 70     var !allElements collect all for world
 71 
 72     -- 3. Search the element include the keyword;
 73     -- If include the keyword, add the element to
 74     -- the result list.
 75     !dtext  = array()
 76     !rtext  = array()
 77     !strName= string()
 78     !strKeyWord = !this.tKeyword.val
 79 
 80     do !element values !allElements
 81         -- 
 82         !current    = object dbref(!element)
 83         !strName    = !current.namn
 84         
 85         if(!strName.MatchWild(!strKeyWord)) then
 86             !dtext.append(!strName)
 87             !rtext.append(!element)
 88         endif
 89         
 90     enddo
 91 
 92     -- 4. Add to the result list.
 93     !this.lResult.dtext = !dtext
 94     !this.lResult.rtext = !rtext
 95 
 96 endmethod
 97 -------------------------------------------------------------------------------
 98 --
 99 -- Method:      ZoomSelection()
100 --
101 -- Description: Zoom to the selected element.
102 --
103 -- Method Type: Function/Procedure
104 -- Arguments:
105 --   [#] [R/RW] [Data Type] [Description]
106 -- Return:
107 --   [Data Type] [Description]
108 --
109 -------------------------------------------------------------------------------
110 define method .ZoomSelection()
111     !selection  = !this.lResult.Selection()
112     !selected   = object dbref(!selection)
113     
114     -- Zoom to selection.
115     add $!selected
116     auto $!selected
117 
118 endmethod
119 -------------------------------------------------------------------------------
120 --
121 -- Method:      OnCancel()
122 --
123 -- Description: 
124 --
125 -- Method Type: Function/Procedure
126 -- Arguments:
127 --   [#] [R/RW] [Data Type] [Description]
128 -- Return:
129 --   [Data Type] [Description]
130 --
131 -------------------------------------------------------------------------------
132 define method .OnCancel()
133     !this.hide()
134 endmethod
135 -------------------------------------------------------------------------------
136 --
137 -- Method:      OnHelp()
138 --
139 -- Description: Show how to use information.
140 --
141 -- Method Type: Function/Procedure
142 -- Arguments:
143 --   [#] [R/RW] [Data Type] [Description]
144 -- Return:
145 --   [Data Type] [Description]
146 --
147 -------------------------------------------------------------------------------
148 define method .OnHelp()
149     !!alert.message('In the KeyWord * for any number of characters and ? for any single chararcter.')
150 endmethod
151 -------------------------------------------------------------------------------

时间: 2024-10-03 03:52:18

AVEVA PDMS PML 二次开发之模糊查找工具的相关文章

PDMS PML二次开发-Pipe Flow Indicator

PDMS PML二次开发-Pipe Flow Indicator AVEVA PDMS中管路流向显示程序:   PML程序源代码如下: ------------------------------------------------------------------------------------- (c) Copyright 2010 to Current Year -- Shanghai Hoto Petrochemical Engineering Co., Ltd-- eryar A

AVEVA PML二次开发之标注样式设置

AVEVA Draft Dimension Style eryar@163.com 在AVEVA Draft中可以标注尺寸,尺寸的标注也有一些样式.通过PML二次开发的小程序可以方便设置尺寸标注的样式.设置内容与AutoCAD中的大致相同,肯定没有AutoCAD中那么多,如下图所示: 使用方法: 选中需要设置的尺寸标注,可以是一个DEPT,REGI,DRWG,SHEE,也可以是单独的一个标注: 设置样式: 确定.   源码下载: DimensionStyle.pmlfrm

AVEVA Draft自动出图二次开发

AVEVA Draft Auto Drawing Customisation AVEVA Draft自动出图二次开发 eryar@163.com 摘要Abstract:本文简要描述了CAD软件自动出图的意义,详细说明AVEVA Draft模块的PML二次开发步骤,并给出了PML实例,便于理解及工程应用.通过对Draft的二次开发,可以根据需要对指定模型进行自动出图,提高工作效率. 关键字Key Words:AVEVA Draft.PDMS.PML.Automatical Drawing 一.引言

AVEVA PDMS数据接口开发

AVEVA PDMS数据接口的开发 eryar@163.com          摘要:本文简要介绍AVEVA Plant/PDMS数据接口的开发方式.        关键字:AVEVA Plant.PDMS.DARs.二次开发.数据接口   一.概述 Overview AVEVA提供了三种二次开发的方式:DAR(Data Access Routines).C#.PML(AVEVA Programmable Macro Language). DARs是FORTAN77的一些函数,可用于创建与其它

PcfTranslator - Translate AVEVA PDMS to PCF

PcfTranslator - Translate AVEVA PDMS to PCF eryar@163.com Abstract. The Piping Component File(PCF) are text files containing component and routing information. The PCF format was originally developed as an easy way to drive Isogen, the syntax is simp

Zoom to Point by PDMS PML

Zoom to Point by PDMS PML eryar@163.com 在PDMS中Centre on Selection的功能一定要选择一个有position属性的element,有人想不选择element直接缩放到指定的坐标点,通过打开跟踪其代码,实现了这个一样函数z2p,直接调用此函数,并输入需要缩放的坐标值,就可以将指定点作为视图中心啦. Figure 1.1 Centre on Selection PML实现代码如下图所示,PML程序的配置方法可以通过搜索<AVEVA PML快

长连接-c#腾讯企业邮箱二次开发实现新邮件提醒

问题描述 c#腾讯企业邮箱二次开发实现新邮件提醒 新邮件提醒,需要维持长连接,图片是API文档关于长连接的描述, 但是我获取到token,传入参数ver=0,返回错误,无效的请求,有做过这个功能的吗,求助啊!! private bool GetPostData(string url, string pars, ref string json) { System.GC.Collect(); //url=请求的地址,pars= "var=0" string ret = "&quo

cad-CAD二次开发如何与Excel之间通信

问题描述 CAD二次开发如何与Excel之间通信 AutoCad中利用Ole已经包含了导入Excel表格功能,但我想自己编写一个小软件导入Excel表格,请问如何利用CAD提供的接口去开发?

ae-AE 二次开发 请问:已经有个feature,怎么找离它最近的点要素?求帮助,急需。新手,求代码

问题描述 AE 二次开发 请问:已经有个feature,怎么找离它最近的点要素?求帮助,急需.新手,求代码 AE+C# 二次开发 请问:已经有个feature,怎么找离它最近的点要素?求帮助,急需.或者说:怎么找距离某个面要素最近的那个点要素.求代码~~ 解决方案 http://bbs.csdn.net/topics/391078057?page=1