'---------------------------------------------- '---------Creation Information----------------- '---------------------------------------------- ' 'Name: OSBLCONN 'Author: Cindy How 'Date: 6/97 ' '---------------------------------------------- '------------Purpose/Description--------------- '---------------------------------------------- ' 'This script will use the node and branch 'theme of the OSBL system and continue to 'create the input file by describing the 'connectivity as naUTilus requires. ' 'The connectivity carried over from AutoCad makes 'this script possible, as each line has a preserved 'direction. ' ' '----------------------------------------------- '-------------------Input----------------------- '----------------------------------------------- ' '1. Attribute table for the theme onodes '2. Attribute table for the theme obranch ' '----------------------------------------------- '------------------Output----------------------- '----------------------------------------------- ' '1. New table called osblcon.dbf holding the information ' on branch/node connectivity needed to create ' part of the naUTilus input file. ' ' '----------------------------------------------- '---------Get Initial Information--------------- '----------------------------------------------- TheView = av.getActiveDoc TheTheme = theView.FindTheme("onode.shp") NodeTab = theTheme.GetFtab BrTheme = theView.Findtheme("obranch.shp") BrTab = BrTheme.GetFtab 'Find Fields: FNdFld = BrTab.FindField("Fnode_") TNdFld = BrTab.FindField("Tnode_") BranchFld = BrTab.FindField("osbl_") NumFld = NodeTab.FindField("Node") NodeFld = NodeTab.FindField("onode") JuncFld = NodeTab.findField("Junction") AdBrFld = NodeTab.FindField("Ex_br") '---------------------------------------------- '----------Create New input table-------------- '---------------------------------------------- NewName = "osblcon.dbf".asFilename NewTable = VTab.MakeNew(NewName,dBase) FldA = Field.Make("ColA",#Field_Short,4,0) FldB = Field.Make("ColB",#Field_short,4,0) NewTable.AddFields({FldA,FldB}) NewTable.SetEditable(true) '---------------------------------------------- '-----------Input data to table---------------- '---------------------------------------------- TNodeList = List.Make 'List of all ToNodes NumConList = List.Make 'list holding number of connections for each node NaUTList = List.Make 'list holding node numbers (as numbered in naUTilus) n = 1 m = 0 For each rec in NodeTab check = NodeTab.ReturnValue(NumFld,rec) naUTlist.Add(check) NumCon = 0 if (check > 0) then NewTable.AddRecord 'for line with #of connections, connection type NewTable.AddRecord 'for line of output branch data for each recnum in BrTab 'Fill TNodeList ToNode = BrTab.ReturnValue(TNdFld,recnum) TnodeList.Add(ToNode) end test = TNodeList.FindByValue(n) 'Find ToNode in TNodelist numcon = 1 while (test > -1) NumCon = NumCon + 1 NewTable.AddRecord 'one for each inflowing branch TNodeList.Remove(test) test = TNodeList.FindByValue(n) end NumConList.Add(NumCon) else end n = n + 1 TNodeList.Empty m = m + 1 end nodenum = NumConList.Count msgbox.Info("Number of nodes by naUTilus system = "+nodenum.AsString,"test") FNodeList = List.Make for each recnum in BrTab 'Refill TNodeList and fill FNodeList ToNode = BrTab.ReturnValue(TNdFld,recnum) TnodeList.Add(ToNode) FromNode = BrTab.ReturnValue(FNdFld,recnum) FNodeList.Add(FromNode) end rec = 0 For each i in 1..nodenum 'Loop for each node flag = 0 indx = i -1 num = NumConList.Get(indx) if (num = 1) then NewTable.AddRecord num = num + 1 flag = 1 else end NewTable.SetValue(FldA,rec,num) 'records number of branches in or out of node AVnum = NaUTList.FindByValue(i) NewTable.SetValue(FldB,rec,0) rec = rec + 1 AvNode = AvNum AVnum = AVnum + 1 'Node number by AV system for each j in 1..num 'Loop for each inflowing branch of each node nd = TNodeList.FindbyValue(AVnum) if (nd > -1) then branch = BrTab.ReturnValue(BranchFld,nd) NewTable.SetValue(FldA,rec,branch) 'Records inflowing branch NewTable.SetValue(FldB,rec,1) 'indicates inflowing branch (-1 for outflowing) rec = rec + 1 TnodeList.Set(nd,0) else 'For outflowing branch of each node if (flag = 1) then branch = NodeTab.ReturnValue(AdBrFld,AvNode) NewTable.SetValue(FldA,rec,branch) NewTable.SetValue(Fldb,rec,1) flag = 0 else BrIndx = FNodeList.FindByValue(AVnum) OutBranch = BrTab.ReturnValue(BranchFld,BrIndx) NewTable.SetValue(FldA,rec,Outbranch) 'Records outflowing branch NewTable.SetValue(FldB,rec,-1) 'indicates outflowing branch end rec = rec + 1 end end end TheTable = Table.Make(NewTable) TheTable.SetName("osblcon.dbf")