用vbscript获取每个汉字中的首字母。脚本如下:
' 获得当前模型
Dim mdl
Set mdl = ActiveModel
If (mdl Is Nothing) Then
MsgBox "不存在活动模型! "
Else
ListObjects(mdl)
End If
' 列出所有的对象
Private Sub ListObjects(e)
output "实体名:" & e.code
Dim obj
For Each obj In e.children
TableSetNameToCode(obj)
Next
' 存在包时,递归包中的实体对象
Dim f
For Each f In e.Packages
ListObjects f
Next
End Sub
' 转换过程
Private Sub TableSetNameToCode(CurrentObject)
' 当对象是实体对象时执行转换
if not CurrentObject.Iskindof(cls_Entity) then exit sub
' 当实体为快捷方式时跳过
if not CurrentObject.isShortcut then
output CurrentObject.name
'T_ 为表头,可根据需要修改。
' 调用GetPy 子函数来完成实体名的转换
CurrentObject.code = "T_"&GetPy(CurrentObject.name)
Dim col ' running column
dim index1
index1 = 0
' 转换每个实体中属性的名称
for each col in CurrentObject.attributes
dim s
' 调用GetPy 子函数来完成属性名的转换
s = GetPy( col.name)
col.code = s
next
end if
End Sub
' 生成中文串首字母串
function GetPy(strxx)
dim i
dim getpy1
for i=1 to len(strxx)
getpy1=getpy1 & getpychar(mid(strxx,i,1))
next
GetPy = getpy1
End function
' 获取中文单字的首字母
Function getpychar(char)
'Asc 函数返回与字符串的第一个字母对应的ANSI 字符代码
' 数字、字母和下划线不予转换,直接返回
if ((asc(char) >= asc("0") and asc(char) <= asc("9")) or(asc(char) >= asc("A") and asc(char) <= asc("Z")) or (asc(char) >= asc("a") and asc(char) <= asc("z")) or asc(char) = asc("_") ) then
' 注意:在实际执行脚本时then 必须与if 在同一行
getpychar = char
else
dim tmpp:tmpp=65536+asc(char)
if(tmpp>=45217 and tmpp <=45252) then
getpychar= "A"
elseif(tmpp>=45253 and tmpp <=45760) then
getpychar= "B"
elseif(tmpp>=45761 and tmpp <=46317) then
getpychar= "C"
elseif(tmpp>=46318 and tmpp <=46825) then
getpychar= "D"
elseif(tmpp>=46826 and tmpp <=47009) then
getpychar= "E"
elseif(tmpp>=47010 and tmpp <=47296) then
getpychar= "F"
elseif(tmpp>=47297 and tmpp <=47613) then
getpychar= "G"
elseif(tmpp>=47614 and tmpp <=48118) then
getpychar= "H"
elseif(tmpp>=48119 and tmpp <=49061) then
getpychar= "J"
elseif(tmpp>=49062 and tmpp <=49323) then
getpychar= "K"
elseif(tmpp>=49324 and tmpp <=49895) then
getpychar= "L"
elseif(tmpp>=49896 and tmpp <=50370) then
getpychar= "M"
elseif(tmpp>=50371 and tmpp <=50613) then
getpychar= "N"
elseif(tmpp>=50614 and tmpp <=50621) then
getpychar= "O"
elseif(tmpp>=50622 and tmpp <=50905) then
getpychar= "P"
elseif(tmpp>=50906 and tmpp <=51386) then
getpychar= "Q"
elseif(tmpp>=51387 and tmpp <=51445) then
getpychar= "R"
elseif(tmpp>=51446 and tmpp <=52217) then
getpychar= "S"
elseif(tmpp>=52218 and tmpp <=52697) then
getpychar= "T"
elseif(tmpp>=52698 and tmpp <=52979) then
getpychar= "W"
elseif(tmpp>=52980 and tmpp <=53688) then
getpychar= "X"
elseif(tmpp>=53689 and tmpp <=54480) then
getpychar= "Y"
elseif(tmpp>=54481 and tmpp <=62289) then
getpychar= "Z"
else
getpychar=""
End if
end if
End Function