?'------------------------------------------------------------------------------
' BOM Generator for CATIA V3.3
' (c)WKQ
' [email protected]
' 2014.07.03
'------------------------------------------------------------------------------
Language="VBSCRIPT"
'------------------------------- Options --------------------------------------
gTitleBgColor = 33 '44
gContentBgColor = 34 '36
gLevelOneBgColor = 35 '45
gFontName = "微软雅黑"
gFontSize = 10
gHighlightLevelOne = true
gLevelDeepth = 6 'should>=product's deepest level
'-------------------------------- table defintion ----------------------------
const KW_INDEX = "Index"
const KW_LEVEL = "Level"
const KW_PN = "PartNumber" 'key word 必选参数'
const KW_QTY = "Quantity"
const KW_TYPE = "Type" 'for hide item'
gIndexCol = 0
gLevelOneCol = 0
gPnCol = 0
gQtyCol = 0
gTypeCol = 0
const gPropNameRow = 4 'save property's name
const gPropDefValRow = 5 'save property's default value
const gColWidthRow = 6 'save column's width of excel
const gAlignmentRow = 7 'save column's alignment
gReservedColNum = 1 + gLevelDeepth
gReservedRowNum = 4
valueSpliter = "="
propSpliter = vbNewLine
dim gTableDef() 'MUST stay at the last position?
dim gExtraProps()
'---------------------------- initional global data ---------------------------
sub initGlobalData()
maxPropNum = 100
maxCol = max(gReservedColNum + 9, maxPropNum + gLevelDeepth - 1)
redim gTableDef(7, maxCol)
redim gExtraProps(2, 100)
gExtraProps(1, 1) = "ExtraProp"
gExtraProps(2, 1) = ""
'gExtraProps(1, 2) = ""
'gExtraProps(2, 2) = ""
'------------------------------- table header -----------------------------
gTableDef(1, 1) = "结构件清单"
gTableDef(2, 1) = "Mechanical Part List"
gTableDef(1, gReservedColNum + 2) = "项目编号"
gTableDef(2, gReservedColNum + 2) = "ProjectCode"
gTableDef(1, gReservedColNum + 3) = "产品名称"
gTableDef(2, gReservedColNum + 3) = "ProductName"
gTableDef(1, gReservedColNum + 4) = "外观设计"
gTableDef(2, gReservedColNum + 4) = "IDesigner"
gTableDef(1, gReservedColNum + 6) = "结构设计"
gTableDef(2, gReservedColNum + 6) = "MDesigner"
gTableDef(1, gReservedColNum + 7) = "文件版本"
gTableDef(2, gReservedColNum + 7) = "Version"
gTableDef(1, gReservedColNum + 8) = "更新日期"
gTableDef(2, gReservedColNum + 8) = "UpdateDate"
gTableDef(1, gReservedColNum + 9) = "文件位置"
gTableDef(2, gReservedColNum + 9) = "见页脚"
'------------------------------- added Properties -------------------------
gTableDef(3,1) = "序号" 'property name in chinese also shown in excel
gTableDef(4,1) = KW_INDEX 'property name also shown in excel, Mandatory
gTableDef(5,1) = 1 'property default value
gTableDef(6,1) = 6 'column width of excel
gTableDef(7,1) = 2 'alignment of data, 2: left; 3: center
gTableDef(3,2) = "组装等级"
gTableDef(4,2) = KW_LEVEL
gTableDef(5,2) = "O"
gTableDef(6,2) = 2
gTableDef(7,2) = 3
'-------------------------------------------------leave above as what it is
gTableDef(3, gReservedColNum + 1) = "物料编号"
gTableDef(4, gReservedColNum + 1) = "Code"
gTableDef(5, gReservedColNum + 1) = "00-000-000"
gTableDef(6, gReservedColNum + 1) = 12
gTableDef(7, gReservedColNum + 1) = 3
gTableDef(3, gReservedColNum + 2) = "物料名称"
gTableDef(4, gReservedColNum + 2) = "Name"
gTableDef(5, gReservedColNum + 2) = "中文名"
gTableDef(6, gReservedColNum + 2) = 12
gTableDef(7, gReservedColNum + 2) = 2
gTableDef(3, gReservedColNum + 3) = "零件号"
gTableDef(4, gReservedColNum + 3) = KW_PN
gTableDef(5, gReservedColNum + 3) = ""
gTableDef(6, gReservedColNum + 3) = 25
gTableDef(7, gReservedColNum + 3) = 2
gTableDef(3, gReservedColNum + 4) = "用量"
gTableDef(4, gReservedColNum + 4) = KW_QTY
gTableDef(5, gReservedColNum + 4) = ""
gTableDef(6, gReservedColNum + 4) = 8
gTableDef(7, gReservedColNum + 4) = 3
gTableDef(3, gReservedColNum + 5) = "材质\规格"
gTableDef(4, gReservedColNum + 5) = "Material"
gTableDef(5, gReservedColNum + 5) = "PC?"
gTableDef(6, gReservedColNum + 5) = 15
gTableDef(7, gReservedColNum + 5) = 2
gTableDef(3, gReservedColNum + 6) = "描述"
gTableDef(4, gReservedColNum + 6) = "Description"
gTableDef(5, gReservedColNum + 6) = "颜色、工艺等"
gTableDef(6, gReservedColNum + 6) = 20
gTableDef(7, gReservedColNum + 6) = 2
gTableDef(3, gReservedColNum + 7) = "供应商"
gTableDef(4, gReservedColNum + 7) = "Supplier"
gTableDef(5, gReservedColNum + 7) = ""
gTableDef(6, gReservedColNum + 7) = 10
gTableDef(7, gReservedColNum + 7) = 2
gTableDef(3, gReservedColNum + 8) = "备注"
gTableDef(4, gReservedColNum + 8) = "Remarks"
gTableDef(5, gReservedColNum + 8) = ""
gTableDef(6, gReservedColNum + 8) = 15
gTableDef(7, gReservedColNum + 8) = 2
gTableDef(3, gReservedColNum + 9) = "类型"
gTableDef(4, gReservedColNum + 9) = KW_TYPE
gTableDef(5, gReservedColNum + 9) = "物料"
gTableDef(6, gReservedColNum + 9) = 8
gTableDef(7, gReservedColNum + 9) = 3
gIndexCol = searchRow(KW_INDEX, gTableDef, gPropNameRow)
gLevelOneCol = searchRow(KW_LEVEL, gTableDef, gPropNameRow)
gPnCol = searchRow(KW_PN, gTableDef, gPropNameRow)
gQtyCol = searchRow(KW_QTY, gTableDef, gPropNameRow)
gTypeCol = searchRow(KW_TYPE, gTableDef, gPropNameRow)
end sub
'========================================================================== DRY
function getObj(str)
objName = str
select case str
case "FSO"
objName = "Scripting.FileSystemObject"
case "SHELL"
objName = "Shell.Application"
case "WSHELL"
objName = "Wscript.Shell"
case "EXCEL"
objName = "Excel.Application"
case "WORD"
objName = "Word.Application"
case "PPT"
objName = "PowerPoint.Application"
case "IE"
objName = "InternetExplorer.Application"
case default
'objName = str
end select
err.clear
on error resume next
set getObj = getObject( ,objName)
if err.number <> 0 then
err.clear
set getObj = createObject(objName)
end if
if err.number <> 0 then
err.clear
set getObj = nothing
end if
end function
'------------------------------------------------------------------------------
function max(a, b)
max = a
if b>a then
max = b
end if
end function
'------------------------------------------------------------------------------
function colName (index)
const digits = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
ary = len(digits) + 1
if index <= 0 then
colName = ""
elseif index < ary then
colName = mid(digits, index, 1)
else
colName = colName(index\(ary-1)) & mid(digits, (index mod (ary-1)), 1)
end if
end function
'------------------------------------------------------------------------------
' return the index of the propName's value or 0
function findProp(str, propName)
findProp = 0
index = inStr(1, str, propName)
if index > 0 then 'propName found
vsIndex = inStr(index+len(propName), str, valueSpliter)
psIndex = inStr(index+len(propName), str, propSpliter)
if (vsIndex > 0) and ((psIndex>vsIndex) or (psIndex<=0)) then
if trim(mid(str, index, vsIndex-index)) = pr
评论5