3dmax 中使用dotnet 对数据保存读取 (bip工具数据一部分)

 1 struct gt_cl_hp_bipxml 
 2 (
 3     -- 把数据保存成 xml 格式
 4     fn  bipXml   bipPaths   frames    filePath= 
 5         
 6     (
 7         if bipPaths.count >0 then 
 8         (
 9             XmlDocumentXDoc =  dotNetobject    "System.Xml.XmlDocument"
10             dotnetPath = dotNetClass "System.IO.Path" 
11             dotnetDirectory =dotNetClass "System.IO.Directory"
12             dotnetFile = dotNetClass "System.IO.File"
13             DirFile =dotnetPath.GetDirectoryName (filePath)
14             
15             if dotnetDirectory.Exists (DirFile) then   --尊在不存在都要进行  这里应该判断目录是不是存在 
16             (
17                 --- 第一个节点在外边建立
18                 dotnetNode =  XmlDocumentXDoc.CreateNode  ((dotNetClass "System.Xml.XmlNodeType").Element)   "Url:bipdate"   "Url:date"
19                 dotnetNode.InnerText =""
20                 XmlDocumentXDoc.AppendChild (dotnetNode)
21         
22                 --fileName = dotnetPath.GetFileName(filePath) 这里不是用于到这里 而是加入bipPaths 数据
23                 for i in 1 to  bipPaths.count  do 
24                 (
25                     --- 在这里建立字符串 
26                     
27                     
28                     ---建立元素
29                     dotnetXmlElement = XmlDocumentXDoc.CreateElement("node")
30                     dotnetXmlElement.InnerText = bipPaths[i]--- 元素的数据进行保存处理 
31                     --- 建立属性
32                     ---1. bip的名称 2.开始的帧数 
33                     bipFileName = dotnetPath.GetFileName(bipPaths[i])
34                     XmlAttributer = XmlDocumentXDoc.CreateAttribute ("bipname")
35                     XmlAttributer.InnerXml = bipFileName ---建立第一个属性
36                     
37                     -- 元素加入第一个属性
38                     dotnetXmlElement.SetAttributeNode  (XmlAttributer)
39                     
40                     ---建立第二个属性帧数 //该属性可写入0 帧 可以不写
41                     if frames.count ==0 then 
42                     (
43                         XmlAttributerFrame = XmlDocumentXDoc.CreateAttribute("frame")
44                         XmlAttributerFrame.InnerXml = "0" 
45                         dotnetXmlElement.SetAttributeNode   XmlAttributerFrame  
46                         
47                     )else 
48                     (
49                         XmlAttributerFrame = XmlDocumentXDoc.CreateAttribute("frame")
50                         XmlAttributerFrame.InnerXml = frames[i] as string 
51                         dotnetXmlElement.SetAttributeNode   XmlAttributerFrame  
52                     )
53                     --- 上面是一个元素两个属性建立模型完成 下面就是把 节点元素 插入到 根节点中
54                     ---上面一键加入了子 应该是在第一个元素下加入 DocumentElement
55                     XmlDocumentXDoc.DocumentElement.AppendChild (dotnetXmlElement)
56                         
57                 )
58                 
59                 --- 组后对根节点进行保存处理
60                 XmlDocumentXDoc.save(filePath)
61             )
62 
63         )
64         
65     ),
66     fn outXml  filePath =  --- 返回最好是三个数组 一个是
67     (
68         bipname =#()
69         bipFrame =#()
70         bipFilePath =#()
71         --- 返回节点名称组 返回帧的数组 返回全部路径
72         XmlDocumentXDoc = dotNetObject  "System.xml.XmlDocument"
73          XmlDocumentXDoc.load  filePath
74          root = XmlDocumentXDoc.DocumentElement;
75         if root.HasChildNodes then 
76         (
77              SysXmlNodeList = root.ChildNodes  ;
78             for i in 0 to SysXmlNodeList.count-1 do 
79             (
80                     Append bipname  ((SysXmlNodeList.Item(i)).GetAttribute "bipname")
81                     append  bipFrame (((sysXmlNodeList.Item(i)).GetAttribute "frame") as Integer)
82                         Append  bipFilePath      ((sysXmlNodeList.Item(i)). InnerText )
83                 
84             )
85         )
86 
87         return #( bipname ,bipFrame ,bipFilePath)    
88             
89         
90     )
91 )

 使用方法:

 

op= gt_cl_hp_bipxml()

  op.bipxml ui #()"d://op.xml"

undefined

op.outxml "d://op.xml"

#(#("ceshi04.max", "ceshi05.max", "ceshi06.max"), #(0, 0, 0), #("j:\技术组沙龙\大话导出测试文件\ceshi04.max", "j:\技术组沙龙\大话导出测试文件\ceshi05.max", "j:\技术组沙龙\大话导出测试文件\ceshi06.max"))

 

posted on 2013-03-08 14:07  盖天00  阅读(835)  评论(0编辑  收藏  举报

导航