在設(shè)計(jì)的時(shí)候經(jīng)常會(huì)碰到注釋和Name不統(tǒng)一,需要手工復(fù)制的問題。其實(shí)PD提供了很好的方法可以批量進(jìn)行調(diào)整。
我寫了一個(gè)遞歸的修改方法,如下所示:可做為參考。
1 '******************************************************************************
2 '* File: CommentVsName.vbs
3 '* Purpose: 把字段及表注釋為空的用name來代替
4 '* Title: 保證每個(gè)字段及表都有注釋
5 '* Category: 注釋
6 '* Author: lbq(buddy) liubiqu@sina.com
7 '* Created: 2008年3月24日
8 '* Modified: 2008年4月24日
9 '* Use: 打開PDM,運(yùn)行本腳本(Ctrl+Shift+X)
10 '* Version: 1.0
11 '* Comment: 遍歷PDM中的所有包,把數(shù)據(jù)表及字段的注釋為空的部分用Name來替換
12 '* Copyright (C) 2008 topsthink Inc.
13 '******************************************************************************
14
15 Option Explicit
16 ValidationMode = True
17 InteractiveMode = im_Abort
18
19
20 Dim mdl ' 定義當(dāng)前的模型
21
22 '通過全局參數(shù)獲得當(dāng)前的模型
23 Set mdl = ActiveModel
24 If (mdl Is Nothing) Then
25 MsgBox "沒有選擇模型,請(qǐng)選擇一個(gè)模型并打開."
26 ElseIf Not mdl.IsKindOf(PdPDM.cls_Model) Then
27 MsgBox "當(dāng)前選擇的不是一個(gè)物理模型(PDM)."
28 Else
29 ProcessFolder mdl
30 End If
31
32
33 '--------------------------------------------------------------------------------
34 '功能函數(shù)
35 '--------------------------------------------------------------------------------
36 Private Sub ProcessFolder(folder)
37 Dim Tab '定義數(shù)據(jù)表對(duì)象
38 for each Tab in folder.tables
39 if not tab.isShortcut then
40 if tab.comment = "" then tab.comment = tab.name '進(jìn)行判斷并賦值
41 Dim col '定義列對(duì)象
42 for each col in tab.columns
43 if col.comment = "" then col.comment = col.name '進(jìn)行判斷并賦值
44 next
45 end if
46 next
47
48 '對(duì)子包進(jìn)行遞歸,如果不使用遞歸只能取到第一個(gè)模型圖內(nèi)的表
49 dim subfolder
50 for each subfolder in folder.Packages
51 ProcessFolder subfolder
52 next
53
54 'msgbox "完成把comment為空的內(nèi)容用name代替"
55 End Sub
[2008年5月1日]如果需要對(duì)name 進(jìn)行賦值的時(shí)候可能會(huì)出現(xiàn)同名的錯(cuò)誤,所以可以利用 VBS中的
On Error Resume Next這個(gè)語(yǔ)句進(jìn)行跳過。如
1Private Sub ProcessFolder(folder)
2 Dim Tab '定義數(shù)據(jù)表對(duì)象
3 for each Tab in folder.tables
4 if not tab.isShortcut then
5 if tab.comment <> "" then tab.name = tab.comment&"(" &tab.name&")" '進(jìn)行判斷并賦值
6 Dim col '定義列對(duì)象
7 for each col in tab.columns
8 if col.comment <> "" then
9 On Error Resume Next '增加此句
10 col.name = col.comment '進(jìn)行判斷并賦值
11 end if
12 next
13 end if
14 next