You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
455 lines
21 KiB
455 lines
21 KiB
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Data;
|
|
using System.Drawing;
|
|
using System.Text;
|
|
using System.Windows.Forms;
|
|
|
|
using ZwSoft.ZwCAD.DatabaseServices;
|
|
using ZwSoft.ZwCAD.Runtime;
|
|
using ZwSoft.ZwCAD.Geometry;
|
|
using ZwSoft.ZwCAD.ApplicationServices;
|
|
using ZwSoft.ZwCAD.EditorInput;
|
|
|
|
using Teamcenter.Hello;
|
|
using Teamcenter.Soa.Client;
|
|
using Teamcenter.ClientX;
|
|
using Teamcenter.Services.Strong.Core;
|
|
using Teamcenter.Soa.Client.Model;
|
|
using Teamcenter.Soa.Exceptions;
|
|
using Teamcenter.Services.Strong.Query;
|
|
|
|
using Teamcenter.Services.Strong.Core._2007_06.DataManagement;
|
|
|
|
|
|
using User = Teamcenter.Soa.Client.Model.Strong.User;
|
|
using Folder = Teamcenter.Soa.Client.Model.Strong.Folder;
|
|
using WorkspaceObject = Teamcenter.Soa.Client.Model.Strong.WorkspaceObject;
|
|
using Item = Teamcenter.Soa.Client.Model.Strong.Item;
|
|
using ItemRevision = Teamcenter.Soa.Client.Model.Strong.ItemRevision;
|
|
using ImanQuery = Teamcenter.Soa.Client.Model.Strong.ImanQuery;
|
|
using DataSet = Teamcenter.Soa.Client.Model.Strong.Dataset;
|
|
|
|
|
|
public struct ALLOBJECT
|
|
{
|
|
public TreeNode treenode;
|
|
public WorkspaceObject workobject;
|
|
public string name;
|
|
public string uid;
|
|
}
|
|
|
|
namespace HelloTeamcenter.form
|
|
{
|
|
public partial class OpenFromTC : Form
|
|
{
|
|
public List<ALLOBJECT> alllist = new List<ALLOBJECT>();
|
|
public List<ALLOBJECT> folderlist = new List<ALLOBJECT>();
|
|
public List<ALLOBJECT> itemlist = new List<ALLOBJECT>();
|
|
public List<ALLOBJECT> itemvisionlist = new List<ALLOBJECT>();
|
|
public List<ALLOBJECT> datasetlist = new List<ALLOBJECT>();
|
|
public OpenFromTC()
|
|
{
|
|
InitializeComponent();
|
|
}
|
|
public Document appodc;
|
|
public User user;
|
|
public bool first = true;
|
|
public Folder home = null;
|
|
Editor ed;
|
|
private void OpenFromTC_Load(object sender, EventArgs e)
|
|
{
|
|
ed = appodc.Editor;
|
|
treeView1.Nodes.Clear();
|
|
TreeNode rootnode = new TreeNode("Home", 7, 7);
|
|
treeView1.Nodes.Add(rootnode);
|
|
|
|
WorkspaceObject[] contents = null;
|
|
DataManagementService dmService = DataManagementService.getService(Session.getConnection());
|
|
try
|
|
{
|
|
home = user.Home_folder;
|
|
}
|
|
catch (NotLoadedException ex)
|
|
{
|
|
ed.WriteMessage(ex.Message);
|
|
return;
|
|
}
|
|
try
|
|
{
|
|
ModelObject[] objects = { home };
|
|
String[] attributes = { "contents" };
|
|
dmService.RefreshObjects(objects);
|
|
dmService.GetProperties(objects, attributes);
|
|
contents = home.Contents;
|
|
}
|
|
catch (NotLoadedException ex) { ed.WriteMessage(ex.Message); }
|
|
//ALLOBJECT topobject = new ALLOBJECT();
|
|
//topobject.treenode = rootnode;
|
|
//topobject.workobject = home;
|
|
//alllist.Add(topobject);
|
|
//folderlist.Add(topobject);
|
|
for (int i = 0; i < contents.Length; i++)
|
|
{
|
|
WorkspaceObject childobj = contents[i];
|
|
ModelObject[] objects = { childobj };
|
|
String[] attributes = { "object_string" ,"object_type" };
|
|
dmService.RefreshObjects(objects);
|
|
dmService.GetProperties(objects, attributes);
|
|
string name = childobj.Object_string;
|
|
string type = childobj.Object_type;
|
|
if (type == "Folder" || type == "Newstuff Folder" || type == "Mail Folder")
|
|
{
|
|
ALLOBJECT perobject = new ALLOBJECT();
|
|
perobject.workobject = childobj;
|
|
Folder fl = childobj as Folder;
|
|
if (type == "Folder")
|
|
{
|
|
TreeNode childnode = new TreeNode(name, 1, 1);
|
|
perobject.treenode = childnode;
|
|
perobject.name = name;
|
|
perobject.uid = childobj.Uid;
|
|
rootnode.Nodes.Add(childnode);
|
|
}
|
|
else if (type == "Newstuff Folder")
|
|
{
|
|
TreeNode childnode = new TreeNode(name, 6, 6);
|
|
perobject.treenode = childnode;
|
|
perobject.name = name;
|
|
perobject.uid = childobj.Uid;
|
|
rootnode.Nodes.Add(childnode);
|
|
}
|
|
else if (type == "Mail Folder")
|
|
{
|
|
TreeNode childnode = new TreeNode(name, 5, 5);
|
|
perobject.treenode = childnode;
|
|
perobject.name = name;
|
|
perobject.uid = childobj.Uid;
|
|
rootnode.Nodes.Add(childnode);
|
|
}
|
|
alllist.Add(perobject);
|
|
folderlist.Add(perobject);
|
|
}
|
|
else if (type == "Item" || type == "D5Product"
|
|
|| type == "D5AsmPart" || type == "D5Part"
|
|
|| type == "D5StdFasteners" || type == "D5CommonParts")
|
|
{
|
|
ALLOBJECT perobject = new ALLOBJECT();
|
|
perobject.workobject = childobj;
|
|
Item item = childobj as Item;
|
|
TreeNode childnode = new TreeNode(name, 3, 3);
|
|
perobject.treenode = childnode;
|
|
perobject.name = name;
|
|
perobject.uid = childobj.Uid;
|
|
rootnode.Nodes.Add(childnode);
|
|
alllist.Add(perobject);
|
|
itemlist.Add(perobject);
|
|
}
|
|
}
|
|
foreach(TreeNode ch in rootnode.Nodes)
|
|
{
|
|
ch.EnsureVisible();
|
|
}
|
|
}
|
|
|
|
private void treeView1_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e)
|
|
{
|
|
//MessageBox.Show("获得");
|
|
TreeNode nownode = this.treeView1.SelectedNode;
|
|
|
|
getChild(nownode);
|
|
foreach (TreeNode ch in nownode.Nodes)
|
|
{
|
|
ch.EnsureVisible();
|
|
}
|
|
}
|
|
|
|
private void getChild(TreeNode nownode)
|
|
{
|
|
nownode.Nodes.Clear();
|
|
DataManagementService dmService = DataManagementService.getService(Session.getConnection());
|
|
WorkspaceObject[] contents = null;
|
|
//dmService.GetProperties(objects, attributes);
|
|
string nodetext = nownode.Text;
|
|
int imageindex = nownode.SelectedImageIndex;
|
|
List<ALLOBJECT> templist = new List<ALLOBJECT>();
|
|
if (imageindex == 1)
|
|
{
|
|
foreach (ALLOBJECT perobject in folderlist)
|
|
{
|
|
if (perobject.treenode.Equals(nownode))
|
|
{
|
|
Folder fl = perobject.workobject as Folder;
|
|
ModelObject[] objects = { fl };
|
|
String[] attributes = { "contents" };
|
|
dmService.RefreshObjects(objects);
|
|
dmService.GetProperties(objects, attributes);
|
|
contents = fl.Contents;
|
|
for (int i = 0; i < contents.Length; i++)
|
|
{
|
|
WorkspaceObject childobj = contents[i];
|
|
ModelObject[] objects1 = { childobj };
|
|
String[] attributes1 = { "object_string", "object_type" };
|
|
dmService.RefreshObjects(objects1);
|
|
dmService.GetProperties(objects1, attributes1);
|
|
string name = childobj.Object_string;
|
|
string type = childobj.Object_type;
|
|
if (type == "Folder" || type == "Newstuff Folder" || type == "Mail Folder")
|
|
{
|
|
ALLOBJECT inperobject = new ALLOBJECT();
|
|
inperobject.workobject = childobj;
|
|
Folder infl = childobj as Folder;
|
|
|
|
if (type == "Folder")
|
|
{
|
|
TreeNode childnode = new TreeNode(name, 1, 1);
|
|
inperobject.treenode = childnode;
|
|
nownode.Nodes.Add(childnode);
|
|
}
|
|
else if (type == "Newstuff Folder")
|
|
{
|
|
TreeNode childnode = new TreeNode(name, 6, 6);
|
|
inperobject.treenode = childnode;
|
|
nownode.Nodes.Add(childnode);
|
|
}
|
|
else if (type == "Mail Folder")
|
|
{
|
|
TreeNode childnode = new TreeNode(name, 5, 5);
|
|
inperobject.treenode = childnode;
|
|
nownode.Nodes.Add(childnode);
|
|
}
|
|
templist.Add(inperobject);
|
|
folderlist.Add(inperobject);
|
|
}
|
|
else if (type == "Item" || type == "D5Product"
|
|
|| type == "D5AsmPart" || type == "D5Part"
|
|
|| type == "D5StdFasteners" || type == "D5CommonParts")
|
|
{
|
|
ALLOBJECT inperobject = new ALLOBJECT();
|
|
inperobject.workobject = childobj;
|
|
Item item = childobj as Item;
|
|
TreeNode childnode = new TreeNode(name, 3, 3);
|
|
inperobject.treenode = childnode;
|
|
nownode.Nodes.Add(childnode);
|
|
templist.Add(inperobject);
|
|
itemlist.Add(inperobject);
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
if (templist.Count > 0 && templist != null)
|
|
{
|
|
alllist.AddRange(templist);
|
|
templist.Clear();
|
|
}
|
|
return;
|
|
|
|
}
|
|
else if (imageindex == 3)
|
|
{
|
|
foreach (ALLOBJECT perobject in itemlist)
|
|
{
|
|
if (perobject.treenode.Equals(nownode))
|
|
{
|
|
Item item = perobject.workobject as Item;
|
|
ModelObject[] itemrevisionlist = null;
|
|
ModelObject[] objects = { item };
|
|
String[] attributes = { "revision_list" };
|
|
dmService.RefreshObjects(objects);
|
|
dmService.GetProperties(objects, attributes);
|
|
itemrevisionlist = item.Revision_list;
|
|
for (int i = 0; i < itemrevisionlist.Length; i++)
|
|
{
|
|
ItemRevision itemrevision = itemrevisionlist[i] as ItemRevision;
|
|
ModelObject[] objects1 = { itemrevision };
|
|
String[] attributes1 = { "object_string", "object_type" };
|
|
dmService.RefreshObjects(objects1);
|
|
dmService.GetProperties(objects1, attributes1);
|
|
string name = itemrevision.Object_string;
|
|
string type = itemrevision.Object_type;
|
|
|
|
ALLOBJECT inperobject = new ALLOBJECT();
|
|
inperobject.workobject = itemrevision;
|
|
TreeNode childnode = new TreeNode(name, 4, 4);
|
|
inperobject.treenode = childnode;
|
|
nownode.Nodes.Add(childnode);
|
|
templist.Add(inperobject);
|
|
itemvisionlist.Add(inperobject);
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
if (templist.Count > 0 && templist != null)
|
|
{
|
|
alllist.AddRange(templist);
|
|
templist.Clear();
|
|
}
|
|
return;
|
|
}
|
|
else if (imageindex == 4)
|
|
{
|
|
foreach (ALLOBJECT perobject in itemvisionlist)
|
|
{
|
|
if (perobject.treenode.Equals(nownode))
|
|
{
|
|
ItemRevision itemrevision = perobject.workobject as ItemRevision;
|
|
ExpandGRMRelationsPref myPref = new ExpandGRMRelationsPref();
|
|
RelationAndTypesFilter2 myFilter = new RelationAndTypesFilter2();
|
|
myFilter.RelationName = "IMAN_specification";
|
|
String[] typeVec = { "D5DWG", "Folder" };
|
|
myFilter.ObjectTypeNames = typeVec;
|
|
myPref.ExpItemRev = false;
|
|
RelationAndTypesFilter2[] myfilter = { myFilter };
|
|
myPref.Info = myfilter;
|
|
ModelObject[] objects1 = { itemrevision };
|
|
|
|
ExpandGRMRelationsResponse myResp = dmService.ExpandGRMRelationsForPrimary(objects1,myPref);
|
|
ExpandGRMRelationsOutput[] myoutput = myResp.Output;
|
|
for (int i = 0; i < myoutput.Length; i++)
|
|
{
|
|
ExpandGRMRelationsOutput one_out = myoutput[i];
|
|
for (int j = 0; j < one_out.OtherSideObjData.Length; j++)
|
|
{
|
|
ExpandGRMRelationsData otherSideData = one_out.OtherSideObjData[j];
|
|
for (int k = 0; k < otherSideData.OtherSideObjects.Length; k++)
|
|
{
|
|
Type typeinfo = otherSideData.OtherSideObjects[k].GetType();
|
|
string typename = typeinfo.Name;
|
|
if (typename == "Folder")
|
|
{
|
|
Folder infold = otherSideData.OtherSideObjects[k] as Folder;
|
|
|
|
ModelObject[] objects = { infold };
|
|
String[] attributes = { "object_string", "object_type" };
|
|
dmService.RefreshObjects(objects);
|
|
dmService.GetProperties(objects, attributes);
|
|
string name = infold.Object_string;
|
|
string type = infold.Object_type;
|
|
|
|
ALLOBJECT inperobject = new ALLOBJECT();
|
|
inperobject.workobject = infold;
|
|
TreeNode childnode = new TreeNode(name, 1, 1);
|
|
inperobject.treenode = childnode;
|
|
nownode.Nodes.Add(childnode);
|
|
templist.Add(inperobject);
|
|
folderlist.Add(inperobject);
|
|
}
|
|
else
|
|
{
|
|
DataSet dateset = otherSideData.OtherSideObjects[k] as DataSet;
|
|
ModelObject[] objects = { dateset };
|
|
String[] attributes = { "object_string" };
|
|
dmService.RefreshObjects(objects);
|
|
dmService.GetProperties(objects, attributes);
|
|
string name = dateset.Object_string;
|
|
|
|
ALLOBJECT inperobject = new ALLOBJECT();
|
|
inperobject.workobject = dateset;
|
|
inperobject.name = name;
|
|
TreeNode childnode = new TreeNode(name, 0, 0);
|
|
inperobject.treenode = childnode;
|
|
nownode.Nodes.Add(childnode);
|
|
templist.Add(inperobject);
|
|
datasetlist.Add(inperobject);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
if (templist.Count > 0 && templist != null)
|
|
{
|
|
alllist.AddRange(templist);
|
|
templist.Clear();
|
|
}
|
|
return;
|
|
}
|
|
else if (imageindex == 6)
|
|
{
|
|
|
|
}
|
|
else if(imageindex == 7)
|
|
{
|
|
alllist.Clear();
|
|
folderlist.Clear();
|
|
itemlist.Clear();
|
|
itemvisionlist.Clear();
|
|
datasetlist.Clear();
|
|
try
|
|
{
|
|
ModelObject[] objects = { home };
|
|
String[] attributes = { "contents" };
|
|
dmService.RefreshObjects(objects);
|
|
dmService.GetProperties(objects, attributes);
|
|
contents = home.Contents;
|
|
}
|
|
catch (NotLoadedException ex) { ed.WriteMessage(ex.Message); }
|
|
for (int i = 0; i < contents.Length; i++)
|
|
{
|
|
WorkspaceObject childobj = contents[i];
|
|
ModelObject[] objects = { childobj };
|
|
String[] attributes = { "object_string", "object_type" };
|
|
dmService.RefreshObjects(objects);
|
|
dmService.GetProperties(objects, attributes);
|
|
string name = childobj.Object_string;
|
|
string type = childobj.Object_type;
|
|
if (type == "Folder" || type == "Newstuff Folder" || type == "Mail Folder")
|
|
{
|
|
ALLOBJECT perobject = new ALLOBJECT();
|
|
perobject.workobject = childobj;
|
|
Folder fl = childobj as Folder;
|
|
if (type == "Folder")
|
|
{
|
|
TreeNode childnode = new TreeNode(name, 1, 1);
|
|
perobject.treenode = childnode;
|
|
perobject.name = name;
|
|
perobject.uid = childobj.Uid;
|
|
nownode.Nodes.Add(childnode);
|
|
}
|
|
else if (type == "Newstuff Folder")
|
|
{
|
|
TreeNode childnode = new TreeNode(name, 6, 6);
|
|
perobject.treenode = childnode;
|
|
perobject.name = name;
|
|
perobject.uid = childobj.Uid;
|
|
nownode.Nodes.Add(childnode);
|
|
}
|
|
else if (type == "Mail Folder")
|
|
{
|
|
TreeNode childnode = new TreeNode(name, 5, 5);
|
|
perobject.treenode = childnode;
|
|
perobject.name = name;
|
|
perobject.uid = childobj.Uid;
|
|
nownode.Nodes.Add(childnode);
|
|
}
|
|
alllist.Add(perobject);
|
|
folderlist.Add(perobject);
|
|
}
|
|
else if (type == "Item" || type == "D5Product"
|
|
|| type == "D5AsmPart" || type == "D5Part"
|
|
|| type == "D5StdFasteners" || type == "D5CommonParts")
|
|
{
|
|
ALLOBJECT perobject = new ALLOBJECT();
|
|
perobject.workobject = childobj;
|
|
Item item = childobj as Item;
|
|
TreeNode childnode = new TreeNode(name, 3, 3);
|
|
perobject.treenode = childnode;
|
|
perobject.name = name;
|
|
perobject.uid = childobj.Uid;
|
|
nownode.Nodes.Add(childnode);
|
|
alllist.Add(perobject);
|
|
itemlist.Add(perobject);
|
|
}
|
|
}
|
|
foreach (TreeNode ch in nownode.Nodes)
|
|
{
|
|
ch.EnsureVisible();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|