//================================================== // // @@ // //================================================== using System; using System.Collections; using Teamcenter.ClientX; using Autodesk.AutoCAD.DatabaseServices; using Autodesk.AutoCAD.Runtime; using Autodesk.AutoCAD.Geometry; using Autodesk.AutoCAD.ApplicationServices; using Autodesk.AutoCAD.EditorInput; using Autodesk.AutoCAD.Windows; using HelloTeamcenter.hello; using HelloTeamcenter.form; using System.Windows.Forms; using System.IO; using System.Collections.Generic; using Teamcenter.Services.Strong.Core; using Teamcenter.Soa.Client.Model; using Teamcenter.Services.Strong.Core._2006_03.Reservation; using Teamcenter.Services.Strong.Core._2006_03.FileManagement; using Teamcenter.Services.Strong.Core._2006_03.DataManagement; using Teamcenter.Services.Strong.Core._2007_01.DataManagement; using Teamcenter.Services.Strong.Core._2007_06.DataManagement; using Teamcenter.Soa.Internal.Client.Model; using Teamcenter.Soa.Internal.Client; using Teamcenter.Soa.Client; using Teamcenter.Services.Strong.Query; //using Teamcenter.FMS.FCCProxy.ClientCache; using Teamcenter.Schemas.Soa._2006_03.Exceptions; using Teamcenter.Soa.Exceptions; using User = Teamcenter.Soa.Client.Model.Strong.User; using DataSet = Teamcenter.Soa.Client.Model.Strong.Dataset; using ImanFile = Teamcenter.Soa.Client.Model.Strong.ImanFile; using SavedQueryResults = Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryResults; 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 ReleaseStatus = Teamcenter.Soa.Client.Model.Strong.ReleaseStatus; using Form = Teamcenter.Soa.Client.Model.Strong.Form; using Dataset = Teamcenter.Soa.Client.Model.Strong.Dataset; using Folder = Teamcenter.Soa.Client.Model.Strong.Folder; using WorkspaceObject = Teamcenter.Soa.Client.Model.Strong.WorkspaceObject; [assembly: ExtensionApplication(typeof(Teamcenter.Hello.Hello))] [assembly: CommandClass(typeof(Teamcenter.Hello.Hello))] namespace Teamcenter.Hello { /** * */ public class Hello : Autodesk.AutoCAD.Runtime.IExtensionApplication { static User loginuser; Login loginfrom; OpenFromTC openfrom; Search searchfrom; SaveToTC savefrom; static Autodesk.AutoCAD.EditorInput.Editor ed; static Autodesk.AutoCAD.ApplicationServices.Document appodc; static DocumentCollection acdocmgr; static Teamcenter.ClientX.Session session; // bool islogin = false; bool hasRight = true; string serveraddress; string username; string password; string usergroup; string userrole; // public void Initialize() { //addComtextMenu(); } public void Terminate() { } [CommandMethod("LOGIN")] public void login() { appodc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument; acdocmgr = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager; //acdocmgr.DocumentToBeDestroyed+=new DocumentCollectionEventHandler(acdocmgr_DocumentToBeDestroyed); ed = appodc.Editor; ed.WriteMessage("==========login==========\n"); loginfrom = new Login(); loginfrom.appodc = appodc; loginfrom.button1.Click += new System.EventHandler(this.loginbutton1_Click); loginfrom.button2.Click += new System.EventHandler(this.loginbutton2_Click); loginfrom.Activate(); loginfrom.Show(); //ed.WriteMessage("==========here===========\n"); } //登陆 private void loginbutton1_Click(object sender, EventArgs e) { loginfrom.m_WebAddress = loginfrom.textBox1.Text.ToString(); loginfrom.username = loginfrom.textBox2.Text.ToString(); loginfrom.password = loginfrom.textBox3.Text.ToString(); loginfrom.usergroup = loginfrom.textBox4.Text.ToString(); loginfrom.userrole = loginfrom.textBox5.Text.ToString(); session = new Teamcenter.ClientX.Session(loginfrom.m_WebAddress); loginuser = session.mylogin(loginfrom.username, loginfrom.password, loginfrom.usergroup, loginfrom.userrole); if (loginuser != null) { serveraddress = loginfrom.m_WebAddress; username = loginfrom.username; password = loginfrom.password; usergroup = loginfrom.usergroup; userrole = loginfrom.userrole; Tool.Loginuser = loginuser; islogin = true; string tempdir = System.Environment.GetEnvironmentVariable("TEMP").ToString(); string loginfile = tempdir + "\\login.ini"; loginfrom.Hide(); //loginfrom.Dispose(); if (File.Exists(loginfile)) { StreamWriter sw = new StreamWriter(loginfile, false); sw.WriteLine(loginfrom.m_WebAddress + "|" + loginfrom.username + "|" + loginfrom.password + "|" + loginfrom.usergroup + "|" + loginfrom.userrole + "||"); sw.Close(); } else { FileStream fs = new FileStream(loginfile, FileMode.Create, FileAccess.Write); StreamWriter sw = new StreamWriter(fs); sw.WriteLine(loginfrom.m_WebAddress + "|" + loginfrom.username + "|" + loginfrom.password + "|" + loginfrom.usergroup + "|" + loginfrom.userrole + "||"); sw.Close(); fs.Close(); } } else { MessageBox.Show("对不起,登录失败,请确认"); //*************** Modified by Samsara May/03/2012 *************** //loginfrom.Dispose(); //清除原密码,其余保留 loginfrom.textBox3.Text = ""; } ed.WriteMessage("\n"); } //取消 private void loginbutton2_Click(object sender, EventArgs e) { loginfrom.Hide(); loginfrom.Dispose(); } bool hadlogin = false; [CommandMethod("OPEN_FROM_TC")] public void openformtc() { if (loginuser != null) hadlogin = true; else login(); if (hadlogin == true) { openfrom = new OpenFromTC(); openfrom.appodc = appodc; openfrom.user = loginuser; openfrom.button1.Click += new System.EventHandler(this.openbutton1_Click); openfrom.button2.Click += new System.EventHandler(this.openbutton2_Click); openfrom.Activate(); openfrom.Show(); } } private void openbutton1_Click(object sender, EventArgs e) { DataManagementService dmService = DataManagementService.getService(Session.getConnection()); Reservation res = ReservationService.getService(Session.getConnection()); Editor ed1 = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor; TreeNode nownode = this.openfrom.treeView1.SelectedNode; if (nownode.SelectedImageIndex == 0) { List datasetlist = this.openfrom.datasetlist; foreach (ALLOBJECT perobject in datasetlist) { if (perobject.treenode.Equals(nownode)) { this.openfrom.textBox1.Text = perobject.name; DialogResult isopen = MessageBox.Show("您是否确定打开该图纸?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (isopen == DialogResult.None || isopen == DialogResult.No) { return; } DataSet mydateset = perobject.workobject as DataSet; ModelObject[] objects = { mydateset }; String[] attributes = { "is_modifiable", "checked_out", "ref_list" }; dmService.RefreshObjects(objects); dmService.GetProperties(objects, attributes); if (mydateset.Is_modifiable == false || (mydateset.Checked_out == "Y")) { DialogResult moresult = MessageBox.Show("您没有修改权限或文件已经签出,是否以只读方式打开?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (moresult == DialogResult.Yes) { hasRight = false; } else { return; } } else if (mydateset.Is_modifiable) { DialogResult moresult = MessageBox.Show("是否签出?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (moresult == DialogResult.Yes) { //加锁安全机制,同步 ModelObject[] dataobj = { mydateset }; res.Checkout(dataobj, "", ""); ed1.WriteMessage("文件已签出\n"); } } ModelObject[] dsfilevec = mydateset.Ref_list; //明明引用检查 if ((dsfilevec == null) || (dsfilevec.Length == 0)) { MessageBox.Show("命名引用不存在,请确认!", "打开图纸", MessageBoxButtons.OK); return; } ed1.WriteMessage("长度:" + dsfilevec.Length); ed1.WriteMessage(dsfilevec[0].GetType().ToString()); ImanFile dsfile = dsfilevec[0] as ImanFile; ModelObject[] objects1 = { dsfile }; String[] attributes1 = { "relative_directory_path", "original_file_name" }; dmService.RefreshObjects(objects1); dmService.GetProperties(objects1, attributes1); ed1.WriteMessage("路径:" + dsfile.Relative_directory_path + "\n"); ed1.WriteMessage("文件名:" + dsfile.Original_file_name + "\n"); string newfilename = dsfile.Original_file_name; ed1.WriteMessage("Original_file_name : "+newfilename+"\n"); string tempdir = System.Environment.GetEnvironmentVariable("TEMP").ToString(); ed1.WriteMessage("TEMP:" + tempdir.ToString() + "\n"); FileManagementService fmService = FileManagementService.getService(Teamcenter.ClientX.Session.getConnection()); ImanFile[] objects2 = { dsfile }; FileTicketsResponse tickets = fmService.GetFileReadTickets(objects2); ed1.WriteMessage("tickets : " + tickets.Tickets.Count + "\n"); foreach (System.Collections.DictionaryEntry ticket in tickets.Tickets) { ed1.WriteMessage("键:" + ticket.Key + "\n" + "值:" + ticket.Value + "\n"); } Teamcenter.Soa.Client.FileManagementUtility fmu = new Teamcenter.Soa.Client.FileManagementUtility(Teamcenter.ClientX.Session.getConnection()); Teamcenter.Soa.Client.GetFileResponse getFileResponse = fmu.GetFiles(dsfilevec); FileInfo[] fileinfovec = getFileResponse.GetFiles(); ed1.WriteMessage("文件个数:" + fileinfovec.Length + "\n"); FileInfo file = fileinfovec[0]; //ed.WriteMessage("file.DirectoryName:" + file.DirectoryName + "\n"); //ed.WriteMessage("file.FullName" + file.FullName + "\n"); //string datestring = ""; //datestring = DateTime.Now.ToString("yyyy_MM_dd_hh_mm_ss");//19 string newtempfile = tempdir + "\\" + newfilename; ed1.WriteMessage("拷贝路径:" + newtempfile + "\n"); System.IO.File.Copy(file.FullName, newtempfile, true); System.IO.File.SetAttributes(newtempfile, FileAttributes.Normal); this.openfrom.Hide(); this.openfrom.Dispose(); if (File.Exists(newtempfile)) { DocumentCollection acdocmgr1 = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager; acdocmgr1.Open(newtempfile, false); //Object pdata = newtempfile; //acdocmgr.ExecuteInApplicationContext(c_back,pdata); //Teamcenter.ClientX.Session session = new Teamcenter.ClientX.Session(serveraddress); //loginuser = session.mylogin(username, password, usergroup, userrole); } else { ed1.WriteMessage("对不起,用户临时目录下不存在此文件\n"); } break; } } } else { ed1.WriteMessage("请选择正确的数据集类型\n"); MessageBox.Show("请选择正确的数据集类型"); return; } } private void openbutton2_Click(object sender, EventArgs e) { string[] enableTypes = this.openfrom.enableTypes; this.openfrom.Hide(); this.searchfrom = new Search(); this.searchfrom.appdoc = appodc; this.searchfrom.user = loginuser; this.searchfrom.enableTypes = enableTypes; this.searchfrom.Activate(); this.searchfrom.Show(); this.openfrom.Dispose(); } private void c_back(Object data) { DocumentCollection acdocmgr = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager; if (acdocmgr.IsApplicationContext) { acdocmgr.Open(Convert.ToString(data)); } } [CommandMethod("SAVE_AS")] public void saveas() { savetotc(); } [CommandMethod("SAVE_TO_TC")] public void savetotc() { //Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.SendStringToExecute(string.Format("{0}", "QSAVE"), true, false, true); if (loginuser != null) { hadlogin = true; } else login(); if (hadlogin) { //获取图纸信息 string titleName = "DFHM_CHS"; string detailName = "DFHM_CHS"; string filename = ""; DataManagementService dmService = DataManagementService.getService(Session.getConnection()); Editor ed1 = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor; Tool tool = new Tool(); //---------------------- 标题栏 -------------------- ed1.WriteMessage("\n开始获取标题栏信息...\n"); Dictionary titleInfo = new Dictionary(); titleInfo =tool.getBTL(titleName); showMap(titleInfo,ed1); //获取xml配置信息 string path = "c:\\title.xml"; string root = "titles"; string nodeName = "types"; Dictionary formInfo = new Dictionary(); ReaderCusXML xml = new ReaderCusXML(path, appodc); // 2012-05-16 临时取代用于测试。 //formInfo = xml.GetTitleInfo(root, titleName, titleInfo["类型"]); formInfo = xml.GetTitleInfo(root, titleName, "Item"); xml.close(); showMap(formInfo,ed1); //---------------------- 明细栏 -------------------- ed1.WriteMessage("开始获取明细栏信息...\n"); List> bomlist = new List>(); bomlist = tool.getMXL(detailName); ed1.WriteMessage("明细栏个数为:" + bomlist.Count); showMap(bomlist[0], ed1); // 2012-05-16 临时取代用于测试。 //SavedQueryResults found = tool.getSearchItem(titleInfo["图号"]); SavedQueryResults found = tool.getSearchItem("000126"); if ((found == null) || (found.NumOfObjects == 0)) //不存在则创建 { DialogResult upresult = MessageBox.Show("没有找到对应标题栏Item,是否创建?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (upresult == DialogResult.No || upresult == DialogResult.None) { ed1.WriteMessage("放弃创建。\n"); } if (upresult == DialogResult.Yes) { ed1.WriteMessage("============== 开始创建Item ===================\n"); this.savefrom = new SaveToTC(); this.savefrom.appdoc = appodc; //this.savefrom.ed = ed1; this.savefrom.user = loginuser; this.savefrom.btlinfo = formInfo; this.savefrom.bomlist = bomlist; this.savefrom.button1.Click += new EventHandler(savebutton1_Click); this.savefrom.Activate(); this.savefrom.Show(); } } else { if (found.NumOfObjects != 1) { ed.WriteMessage("Item不唯一。\n"); } DialogResult upresult = MessageBox.Show("找到对应标题栏Item,是否更新?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (upresult == DialogResult.No || upresult == DialogResult.None) { ed1.WriteMessage("放弃更新\n"); } if (upresult == DialogResult.Yes) { for (int i = 0; i < found.NumOfObjects; i++) { Item item = found.Objects[i] as Item; ModelObject[] objects = { item }; String[] attributes = { "item_id", "object_name", "object_string" }; dmService.RefreshObjects(objects); dmService.GetProperties(objects, attributes); string item_id = item.Item_id; string object_name = item.Object_name; Dataset dataset = null; GetItemFromIdInfo tempitem = new GetItemFromIdInfo(); tempitem.ItemId = item_id; GetItemFromIdInfo[] infos = new GetItemFromIdInfo[1]; infos[0] = tempitem; GetItemFromIdPref pref = new GetItemFromIdPref(); //这里可能要换成新的方式 GetItemFromIdResponse infoResp = dmService.GetItemFromId(infos, 1, pref); for (int j = 0; j < infoResp.Output.Length; j++) { //------------------------- ItemRevision ----------------------- ModelObject[] objects1 = { infoResp.Output[j].Item }; String[] attributes1 = { "revision_list", "is_modifiable" }; dmService.RefreshObjects(objects1); dmService.GetProperties(objects1, attributes1); ModelObject[] revlist = infoResp.Output[j].Item.Revision_list; dmService.RefreshObjects(revlist); ItemRevision itemRev = null; string rev_id = ""; //取得最新版本 itemRev = revlist[revlist.Length - 1] as ItemRevision; { ModelObject[] objects2 = { itemRev }; String[] attributes2 = { "item_revision_id", "is_modifiable" , "checked_out","item_id","release_status_list", "IMAN_master_form_rev"}; dmService.RefreshObjects(objects2); dmService.GetProperties(objects2, attributes2); //ReleaseStatus[] status =itemRev.reRelease_status_list; //if((status !=null)&&(status.Length>0)) //{ // MessageBox.Show("零组件最新版本已经发布,不能进行修改。"); // return ; //} } rev_id = itemRev.Item_revision_id; ReleaseStatus[] releaselist = itemRev.Release_status_list; if (!itemRev.Is_modifiable) { MessageBox.Show("ItemRevision为只读,您没有保存权限!"); return; } if (releaselist.Length > 0) { string message = "Item ID为" + itemRev.Item_id + "的最新版本已发布!"; MessageBox.Show(message); return; } //------------------------- Form ----------------------- FormInfo forminfo = new FormInfo(); FormInfo[] forminfo_vec = new FormInfo[1]; ModelObject[] form_vec; Form masterForm; form_vec = itemRev.IMAN_master_form_rev; masterForm = form_vec[0] as Form; { Hashtable formAttrs = new Hashtable(); formAttrs =updateFormProp(formInfo, titleInfo); ed1.WriteMessage("formAttrs:" + formAttrs.Count + "\n"); foreach (DictionaryEntry hash in formAttrs) { ed1.WriteMessage(hash.Key + ":" + Convert.ToString(hash.Value) + "\n"); } //forminfo.AttributesMap = formAttrs; //forminfo.ClientId = "1"; //forminfo.Description = ""; //forminfo.FormObject = (Form)masterForm; //forminfo.Name = item_id + "/" + rev_id; //forminfo.ParentObject = null; //forminfo.RelationName = "IMAN_master_form"; //forminfo.SaveDB = true; //forminfo.FormType = "ItemRevision Master"; //forminfo_vec[0] = forminfo; //try //{ // ed1.WriteMessage("开始更新\n"); // Teamcenter.Services.Strong.Core._2007_01.DataManagement.CreateOrUpdateFormsResponse formResp = // dmService.CreateOrUpdateForms(forminfo_vec); // ModelObject[] respon = { formResp.ServiceData.GetUpdatedObject(0) }; // dmService.RefreshObjects(respon); // ed1.WriteMessage("更新完成\n"); // break; //} //catch (ServiceException ex) //{ // ed1.WriteMessage(ex.Message); //} } //-------------------- 获取数据集 ------------------------- //获取xml信息 bool findDateset = false; //测试使用 string tempName = "图纸"; string dsType = "Sun7ThCAD"; string dsRefName = "Sun7SunThCAD"; Teamcenter.Services.Strong.Core._2007_06.DataManagement.ExpandGRMRelationsPref myPref = new Teamcenter.Services.Strong.Core._2007_06.DataManagement.ExpandGRMRelationsPref(); Teamcenter.Services.Strong.Core._2007_06.DataManagement.RelationAndTypesFilter2 myFilter = new Teamcenter.Services.Strong.Core._2007_06.DataManagement.RelationAndTypesFilter2(); myFilter.RelationName = "IMAN_specification"; string[] typeVec = new string[1]; //测试使用 typeVec[0] = dsType; myFilter.ObjectTypeNames = typeVec; myPref.ExpItemRev = false; Teamcenter.Services.Strong.Core._2007_06.DataManagement.RelationAndTypesFilter2[] myFilterVec = { myFilter }; myPref.Info = myFilterVec; //ed1.WriteMessage("=======&&数据集&&========="); ModelObject[] primaryObjects = { itemRev }; Teamcenter.Services.Strong.Core._2007_06.DataManagement.ExpandGRMRelationsResponse myResp = dmService.ExpandGRMRelationsForPrimary(primaryObjects, myPref); if (myResp.Output.Length > 0) { for (int k = 0; k < myResp.Output.Length; k++) { Teamcenter.Services.Strong.Core._2007_06.DataManagement.ExpandGRMRelationsOutput grmOutput = myResp.Output[k]; for (int l = 0; l < grmOutput.OtherSideObjData.Length; l++) { ExpandGRMRelationsData otherSideData = grmOutput.OtherSideObjData[l]; if (otherSideData.OtherSideObjects.Length > 0) { for (int m = 0; m < otherSideData.OtherSideObjects.Length; m++) { Dataset tempDataset; //Teamcenter.Soa.Client.Model.ServiceData sData; tempDataset = otherSideData.OtherSideObjects[m] as Dataset; string ds_name = tempDataset.Object_string; if (ds_name == tempName) { findDateset = true; dataset = otherSideData.OtherSideObjects[m] as Dataset; ed1.WriteMessage("找到数据集!\n"); break; } } } } } } if (findDateset) //数据集存在 { bool ischeckout = false; try { ModelObject[] objects2 = { dataset }; String[] attributes2 = { "is_modifiable", "checked_out", "checked_out_user" }; dmService.RefreshObjects(objects2); dmService.GetProperties(objects2, attributes2); if (!dataset.Is_modifiable) { MessageBox.Show("您打开的图纸状态为只读,将无法保存到到系统!"); return; } User checkuserinfo = dataset.Checked_out_user as User; if (checkuserinfo != null) { if (checkuserinfo.Uid != loginuser.Uid) { MessageBox.Show("该图纸已被其他用户签出,无法保存到系统!"); return; } } if (dataset.Checked_out == "Y") ischeckout = true; } catch (NotLoadedException ex) { ed1.WriteMessage(ex.Message); } Reservation res = ReservationService.getService(Session.getConnection()); //string comment = "", changeId = ""; //ModelObject[] ds_object = new ModelObject[1]; //ds_object[0] = dataset; ModelObject[] dsFileVec = null; //ed1.WriteMessage("=======22数据集22========="); try { ModelObject[] objects2 = { dataset }; String[] attributes2 = { "ref_list" }; dmService.RefreshObjects(objects2); dmService.GetProperties(objects2, attributes2); dsFileVec = dataset.Ref_list; } catch (NotLoadedException ex) { ed1.WriteMessage(ex.Message); } ImanFile dsfile = dsFileVec[0] as ImanFile; ModelObject[] objects3 = { dsfile }; String[] attributes3 = { "relative_directory_path", "original_file_name" }; dmService.RefreshObjects(objects3); dmService.GetProperties(objects3, attributes3); filename = dsfile.Original_file_name; //ed1.WriteMessage("=======33数据集33=========\n"); Teamcenter.Services.Loose.Core._2006_03.FileManagement.DatasetFileInfo[] fileInfos = new Teamcenter.Services.Loose.Core._2006_03.FileManagement.DatasetFileInfo[1]; Teamcenter.Services.Loose.Core._2006_03.FileManagement.DatasetFileInfo fileInfo = new Teamcenter.Services.Loose.Core._2006_03.FileManagement.DatasetFileInfo(); DocumentCollection inacdocmgr = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager; ed1.WriteMessage("当前文件:" + inacdocmgr.MdiActiveDocument.Name + "\n"); Document acdoc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument; acdoc.Database.SaveAs(acdoc.Name, true, DwgVersion.Current, acdoc.Database.SecurityParameters); string mdiactivefile = acdoc.Name; fileInfo.FileName = mdiactivefile; fileInfo.AllowReplace = true; fileInfo.IsText = false; fileInfo.NamedReferencedName = dsRefName; fileInfos[0] = fileInfo; Teamcenter.Services.Loose.Core._2006_03.FileManagement.GetDatasetWriteTicketsInputData inputData = new Teamcenter.Services.Loose.Core._2006_03.FileManagement.GetDatasetWriteTicketsInputData(); inputData.Dataset = dataset; inputData.CreateNewVersion = false; inputData.DatasetFileInfos = fileInfos; Teamcenter.Services.Loose.Core._2006_03.FileManagement.GetDatasetWriteTicketsInputData[] inputs = new Teamcenter.Services.Loose.Core._2006_03.FileManagement.GetDatasetWriteTicketsInputData[1]; inputs[0] = inputData; FileManagementUtility fMSFileManagement = new FileManagementUtility(Session.getConnection()); ServiceData response = fMSFileManagement.PutFiles(inputs); if (response.sizeOfPartialErrors() > 0) ed1.WriteMessage("FileManagementService upload returned partial errors:" + response.sizeOfPartialErrors()); ModelObject[] datasets = new ModelObject[1]; datasets[0] = dataset; if (ischeckout) res.Checkin(datasets); dmService.RefreshObjects(datasets); ed1.WriteMessage("DateSet check in successful\n"); } else //数据集不存在 { Teamcenter.Services.Strong.Core._2006_03.DataManagement.DatasetProperties oneDatasetProp = new Teamcenter.Services.Strong.Core._2006_03.DataManagement.DatasetProperties(); Teamcenter.Services.Strong.Core._2006_03.DataManagement.DatasetProperties[] dataset_vec = new Teamcenter.Services.Strong.Core._2006_03.DataManagement.DatasetProperties[1]; oneDatasetProp.ClientId = "datasetWriteTixTestClientId"; oneDatasetProp.Type = dsType; oneDatasetProp.Name = tempName; oneDatasetProp.Description = ""; oneDatasetProp.Container = null; dataset_vec[0] = oneDatasetProp; Teamcenter.Services.Strong.Core._2006_03.DataManagement.CreateDatasetsResponse dsResp = dmService.CreateDatasets(dataset_vec); Dataset createdataset = dsResp.Output[0].Dataset; //create relationship Teamcenter.Services.Strong.Core._2006_03.DataManagement.Relationship[] rela_vec = new Teamcenter.Services.Strong.Core._2006_03.DataManagement.Relationship[1]; Teamcenter.Services.Strong.Core._2006_03.DataManagement.Relationship one_rela = new Teamcenter.Services.Strong.Core._2006_03.DataManagement.Relationship(); one_rela.ClientId = ""; one_rela.PrimaryObject = itemRev; one_rela.SecondaryObject = createdataset; one_rela.RelationType = "IMAN_specification"; one_rela.UserData = null; rela_vec[0] = one_rela; Teamcenter.Services.Strong.Core._2006_03.DataManagement.CreateRelationsResponse reResp = dmService.CreateRelations(rela_vec); ed1.WriteMessage("数据集关系创建成功!\n"); Teamcenter.Services.Loose.Core._2006_03.FileManagement.DatasetFileInfo[] fileInfos = new Teamcenter.Services.Loose.Core._2006_03.FileManagement.DatasetFileInfo[1]; Teamcenter.Services.Loose.Core._2006_03.FileManagement.DatasetFileInfo fileInfo = new Teamcenter.Services.Loose.Core._2006_03.FileManagement.DatasetFileInfo(); DocumentCollection inacdocmgr = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager; //inacdocmgr.MdiActiveDocument.Database.SaveAs(inacdocmgr.MdiActiveDocument.Name, DwgVersion.Current); //inacdocmgr.MdiActiveDocument.SendStringToExecute("QSAVE", true, false, true); ed1.WriteMessage("当前文件:" + inacdocmgr.MdiActiveDocument.Name + "\n"); Document acdoc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument; acdoc.Database.SaveAs(acdoc.Name, true, DwgVersion.Current, acdoc.Database.SecurityParameters); string mdiactivefile = acdoc.Name; fileInfo.FileName = mdiactivefile; fileInfo.AllowReplace = true; fileInfo.IsText = false; fileInfo.NamedReferencedName = dsRefName; fileInfos[0] = fileInfo; Teamcenter.Services.Loose.Core._2006_03.FileManagement.GetDatasetWriteTicketsInputData inputData = new Teamcenter.Services.Loose.Core._2006_03.FileManagement.GetDatasetWriteTicketsInputData(); inputData.Dataset = createdataset; inputData.CreateNewVersion = false; inputData.DatasetFileInfos = fileInfos; Teamcenter.Services.Loose.Core._2006_03.FileManagement.GetDatasetWriteTicketsInputData[] inputs = new Teamcenter.Services.Loose.Core._2006_03.FileManagement.GetDatasetWriteTicketsInputData[1]; inputs[0] = inputData; FileManagementUtility fMSFileManagement = new FileManagementUtility(Session.getConnection()); ServiceData response = fMSFileManagement.PutFiles(inputs); if (response.sizeOfPartialErrors() > 0) ed1.WriteMessage("FileManagementService upload returned partial errors:" + response.sizeOfPartialErrors()); ed1.WriteMessage("DateSet check in successful\n"); ModelObject[] datasets = new ModelObject[1]; datasets[0] = createdataset; dmService.RefreshObjects(datasets); dataset = createdataset; } if (bomlist.Count > 0) { //测试使用 if (true) { DialogResult flushbomresult = MessageBox.Show("是否刷新BOM", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (flushbomresult == DialogResult.Yes) { Folder aimFolder = null; WorkspaceObject[] object_vec = new WorkspaceObject[1]; object_vec[0] = item; Teamcenter.Services.Strong.Core._2007_01.DataManagement.WhereReferencedResponse refResp = dmService.WhereReferenced(object_vec, 1); Teamcenter.Services.Strong.Core._2007_01.DataManagement.WhereReferencedOutput[] refOutput = refResp.Output; for (int u = 0; u < refOutput.Length; u++) { Teamcenter.Services.Strong.Core._2007_01.DataManagement.WhereReferencedInfo[] info = refOutput[u].Info; for (int p = 0; p < info.Length; p++) { Teamcenter.Services.Strong.Core._2007_01.DataManagement.WhereReferencedInfo it_info = info[p]; string type = it_info.Referencer.Object_type; if (type.Contains("Folder")) { aimFolder = it_info.Referencer as Folder; ed1.WriteMessage("找到目标文件夹\n"); break; } } } if (aimFolder == null) CreateBomStructure(itemRev, dataset, bomlist, null); else CreateBomStructure(itemRev, dataset, bomlist, aimFolder); } } } } } } } } else { MessageBox.Show("请选择真实的文件夹!"); return; } } public void savebutton1_Click(object sender, EventArgs e) { DataManagementService dmService = DataManagementService.getService(Session.getConnection()); Reservation res = ReservationService.getService(Session.getConnection()); Editor ed1 = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor; ed1.WriteMessage("==============\n"); Dictionary btlinfo = this.savefrom.btlinfo; List> bomlist = this.savefrom.bomlist; //ed1.WriteMessage("标题栏ITEM图号:" + btlinfo.Item_id + "\n"); //ed1.WriteMessage("明细栏个数:" + bomlist.Count + "\n"); Tool tool = new Tool(); TreeNode nownode = this.savefrom.treeView1.SelectedNode; if (nownode.SelectedImageIndex == 1) { foreach (ALLOBJECT perobject in this.savefrom.folderlist) { if (perobject.treenode.Equals(nownode)) { Folder folder = perobject.workobject as Folder; ModelObject[] objects = { folder }; String[] attributes = { "is_modifiable" }; dmService.RefreshObjects(objects); dmService.GetProperties(objects, attributes); if (!folder.Is_modifiable) { MessageBox.Show("您对目录没有写权限,请重新选择"); return; } ItemProperties oneItemProp = new ItemProperties(); CreateItemsResponse itemResp = new CreateItemsResponse(); Teamcenter.Hello.DataManagement hellomanagement = new Teamcenter.Hello.DataManagement(); string itemtype = this.savefrom.comboBox1.Text; ItemIdsAndInitialRevisionIds[] itemIds = hellomanagement.generateItemIds(1, itemtype); GetItemCreationRelatedInfoResponse relatedResponse = dmService.GetItemCreationRelatedInfo(itemtype, null); string[] formTypes = new string[relatedResponse.FormAttrs.Length]; for (int j = 0; j < relatedResponse.FormAttrs.Length; j++) { FormAttributesInfo attrInfo = relatedResponse.FormAttrs[j]; formTypes[j] = attrInfo.FormType; } ItemProperties[] itemProps = new ItemProperties[itemIds.Length]; ItemProperties itemProperty = new ItemProperties(); for (int j = 0; j < itemIds.Length; j++) { ed1.WriteMessage("start Create form in cache!\n"); ModelObject[] forms = hellomanagement.createForms(itemIds[j].NewItemId, formTypes[0], itemIds[j].NewRevId, formTypes[1], null, false); ed1.WriteMessage("Create form in cache sucessful!\n"); ed1.WriteMessage("set item properties!\n"); //itemProperty.ClientId = "AppX-Test"; //为了测试 itemProperty.ItemId = "000099"; itemProperty.RevId = "A"; itemProperty.Name = "我叫SB"; itemProperty.Type = "Item"; itemProperty.Description = ""; //itemProperty.Uom = "EA"; itemProps[j] = itemProperty; } try { ed1.WriteMessage("start item create!\n"); itemResp = dmService.CreateItems(itemProps, folder, ""); ItemRevision rev = null; Item newitem = null; for (int j = 0; j < itemResp.Output.Length; j++) { rev = itemResp.Output[j].ItemRev; newitem = itemResp.Output[j].Item; } ////--------------------- New Item rev Form ---------------------- ////写form属性 //FormInfo forminfo = new FormInfo(); //FormInfo[] forminfo_vec; //ModelObject[] form_vec = null; //ModelObject[] objects1 = { rev }; //String[] attributes1 = { "IMAN_master_form_rev", // "is_modifiable","item_revision_id"}; //dmService.RefreshObjects(objects1); //dmService.GetProperties(objects1, attributes1); //try //{ // form_vec = rev.IMAN_master_form_rev; // ed1.WriteMessage("get_IMAN_master_form_rev sucessful!\n"); //} //catch (NotLoadedException ex) //{ // ed1.WriteMessage(ex.Message); //} //forminfo_vec = new FormInfo[form_vec.Length]; //{ // Form form = form_vec[0] as Form; // Hashtable formAttrs = new Hashtable(); // string[] formAttrValue8 = new string[1]; // forminfo.AttributesMap = formAttrs; // //forminfo.ClientId = "1"; // forminfo.Description = ""; // forminfo.FormObject = form; // forminfo.Name = btlinfo.Item_id + "/" + rev.Item_revision_id; // forminfo.ParentObject = null; // forminfo.RelationName = "IMAN_master_form"; // forminfo.SaveDB = true; // forminfo.FormType = "ItemRevision Master"; // forminfo_vec[j] = forminfo; // try // { // CreateOrUpdateFormsResponse formResp // = dmService.CreateOrUpdateForms(forminfo_vec); // ed1.WriteMessage("update form attributes sucessful!\n"); // } // catch (ServiceException ex) // { // ed1.WriteMessage(ex.Message); // } //} string ds_name; string rev_id = rev.Item_revision_id; Teamcenter.Services.Strong.Core._2006_03.DataManagement.DatasetProperties oneDatasetProp = new Teamcenter.Services.Strong.Core._2006_03.DataManagement.DatasetProperties(); Teamcenter.Services.Strong.Core._2006_03.DataManagement.DatasetProperties[] dataset_vec = new Teamcenter.Services.Strong.Core._2006_03.DataManagement.DatasetProperties[1]; //oneDatasetProp.ClientId = "datasetWriteTixTestClientId"; //测试使用 oneDatasetProp.Type = "D5DWG"; oneDatasetProp.Name = "狗头"; oneDatasetProp.Description = ""; oneDatasetProp.Container = null; dataset_vec[0] = oneDatasetProp; Teamcenter.Services.Strong.Core._2006_03.DataManagement.CreateDatasetsResponse dsResp = dmService.CreateDatasets(dataset_vec); Dataset createdataset = dsResp.Output[0].Dataset; //create relationship Teamcenter.Services.Strong.Core._2006_03.DataManagement.Relationship[] rela_vec = new Teamcenter.Services.Strong.Core._2006_03.DataManagement.Relationship[1]; Teamcenter.Services.Strong.Core._2006_03.DataManagement.Relationship one_rela = new Teamcenter.Services.Strong.Core._2006_03.DataManagement.Relationship(); one_rela.ClientId = "AppX-myTest"; one_rela.PrimaryObject = rev; one_rela.SecondaryObject = createdataset; one_rela.RelationType = "IMAN_specification"; one_rela.UserData = null; rela_vec[0] = one_rela; Teamcenter.Services.Strong.Core._2006_03.DataManagement.CreateRelationsResponse reResp = dmService.CreateRelations(rela_vec); ed1.WriteMessage("数据集关系创建成功!\n"); Teamcenter.Services.Loose.Core._2006_03.FileManagement.DatasetFileInfo[] fileInfos = new Teamcenter.Services.Loose.Core._2006_03.FileManagement.DatasetFileInfo[1]; Teamcenter.Services.Loose.Core._2006_03.FileManagement.DatasetFileInfo fileInfo = new Teamcenter.Services.Loose.Core._2006_03.FileManagement.DatasetFileInfo(); DocumentCollection inacdocmgr = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager; ed1.WriteMessage("当前文件:" + inacdocmgr.MdiActiveDocument.Name + "\n"); Document acdoc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument; acdoc.Database.SaveAs(acdoc.Name, true, DwgVersion.Current, acdoc.Database.SecurityParameters); string mdiactivefile = acdoc.Name; fileInfo.FileName = mdiactivefile; fileInfo.AllowReplace = true; fileInfo.IsText = false; fileInfo.NamedReferencedName = "Sun7SunThCAD"; fileInfos[0] = fileInfo; Teamcenter.Services.Loose.Core._2006_03.FileManagement.GetDatasetWriteTicketsInputData inputData = new Teamcenter.Services.Loose.Core._2006_03.FileManagement.GetDatasetWriteTicketsInputData(); inputData.Dataset = createdataset; inputData.CreateNewVersion = false; inputData.DatasetFileInfos = fileInfos; Teamcenter.Services.Loose.Core._2006_03.FileManagement.GetDatasetWriteTicketsInputData[] inputs = new Teamcenter.Services.Loose.Core._2006_03.FileManagement.GetDatasetWriteTicketsInputData[1]; inputs[0] = inputData; FileManagementUtility fMSFileManagement = new FileManagementUtility(Session.getConnection()); ServiceData response = fMSFileManagement.PutFiles(inputs); if (response.sizeOfPartialErrors() > 0) ed1.WriteMessage("FileManagementService upload returned partial errors:" + response.sizeOfPartialErrors()); ed1.WriteMessage("DateSet check in successful\n"); ModelObject[] datasets = new ModelObject[1]; datasets[0] = createdataset; dmService.RefreshObjects(datasets); //BOM刷新 { DialogResult updateresult = MessageBox.Show("是否刷新BOM", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (updateresult == DialogResult.No || updateresult == DialogResult.None) { ed1.WriteMessage("放弃刷新BOM\n"); } else { CreateBomStructure(rev, createdataset, bomlist, folder); } } this.savefrom.Hide(); this.savefrom.Dispose(); } catch (ServiceException ex) { ed1.WriteMessage(ex.Message); } } } } else { MessageBox.Show("请选择真实的文件夹!"); return; } } [CommandMethod("LOGOUT")] public void layout() { if (!hadlogin) return; DialogResult updateresult = MessageBox.Show("请确保您已经将文件保存!以免造成数据丢失!是否保存?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (updateresult == DialogResult.Yes) { savetotc(); } else { loginuser = null; hadlogin = false; } } public bool CreateBomStructure(ItemRevision parentRev, Dataset parent_ds, List> bom_Vec, Folder folder) { //DataManagementService dmService = DataManagementService.getService(Session.getConnection()); //Reservation res = ReservationService.getService(Session.getConnection()); //Editor ed1 = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor; //ed1.WriteMessage("bom_Vec size:" + bom_Vec.Count.ToString() + "\n"); //ItemRevision[] revVec = new ItemRevision[bom_Vec.Count]; //ed1.WriteMessage("revVec size:" + revVec.Length.ToString() + "\n"); //for (int i = 0; i < bom_Vec.Count; i++) //{ // MXLClass it_bom = bom_Vec[i]; // Tool tool = new Tool(); // string item_id = it_bom.Item_id; // SavedQueryResults found = tool.getSearchItem(it_bom.Item_id); // if (found.NumOfObjects == 0) // { // //ItemProperties[] item_vec; // //DatasetProperties[] dataset_vec; // ItemProperties oneItemProp = new ItemProperties(); // CreateItemsResponse itemResp = new CreateItemsResponse(); // Teamcenter.Hello.DataManagement hellomanagement = new Teamcenter.Hello.DataManagement(); // ItemIdsAndInitialRevisionIds[] itemIds = hellomanagement.generateItemIds(1,it_bom.Itemtype); // GetItemCreationRelatedInfoResponse relatedResponse = dmService.GetItemCreationRelatedInfo(it_bom.Itemtype, null); // string[] formTypes = new string[relatedResponse.FormAttrs.Length]; // for (int j = 0; j < relatedResponse.FormAttrs.Length; j++) // { // FormAttributesInfo attrInfo = relatedResponse.FormAttrs[j]; // formTypes[j] = attrInfo.FormType; // } // ItemProperties[] itemProps = new ItemProperties[itemIds.Length]; // ItemProperties itemProperty = new ItemProperties(); // for (int j = 0; j < itemIds.Length; j++) // { // ed1.WriteMessage("start Create form in cache!\n"); // ModelObject[] forms = hellomanagement.createForms(itemIds[j].NewItemId, // formTypes[0], itemIds[j].NewRevId, formTypes[1],null,false); // ed1.WriteMessage("Create form in cache sucessful!\n"); // ed1.WriteMessage("set item properties!\n"); // itemProperty.ClientId = ""; // itemProperty.ItemId = it_bom.Item_id; // itemProperty.RevId = "A"; // itemProperty.Name = it_bom.Name; // itemProperty.Type = it_bom.Itemtype; // itemProperty.Description = ""; // itemProperty.Uom = "EA"; // itemProps[j] = itemProperty; // } // try // { // ed1.WriteMessage("start item create!\n"); // if (folder == null) // itemResp = dmService.CreateItems(itemProps, null, ""); // else // itemResp = dmService.CreateItems(itemProps, folder, ""); // ed1.WriteMessage("create Items: " + it_bom.Item_id + "sucessful!\n"); // ItemRevision rev = null; // Item newitem = null; // for (int j = 0; j < itemResp.Output.Length;j++ ) // { // rev = itemResp.Output[j].ItemRev; // newitem = itemResp.Output[j].Item; // } // revVec[i] = rev; // //写form属性 // FormInfo forminfo = new FormInfo(); // FormInfo[] forminfo_vec; // ModelObject[] form_vec = null; // ModelObject[] objects = { rev }; // String[] attributes = { "IMAN_master_form_rev", // "is_modifiable","item_revision_id"}; // dmService.RefreshObjects(objects); // dmService.GetProperties(objects, attributes); // if (rev.Is_modifiable) // { // try // { // form_vec = rev.IMAN_master_form_rev; // ed1.WriteMessage("get_IMAN_master_form_rev sucessful!\n"); // } // catch (NotLoadedException ex) // { // ed1.WriteMessage(ex.Message); // } // forminfo_vec = new FormInfo[form_vec.Length]; // for (int j = 0; j < form_vec.Length; j++) // { // Form form = form_vec[j] as Form; // Hashtable formAttrs = new Hashtable(); // string[] formAttrValue1 = new string[1]; // formAttrValue1[0] = ""; // formAttrValue1[0] = it_bom.Material; // formAttrs.Add("d5MaterialGrade", formAttrValue1); // string[] formAttrValue2 = new string[1]; // formAttrValue2[0] = ""; // formAttrValue2[0] = it_bom.Perweight; // formAttrs.Add("d5SingleWeight", formAttrValue2); // string[] formAttrValue3 = new string[1]; // formAttrValue3[0] = ""; // formAttrValue3[0] = it_bom.Partnumber; // formAttrs.Add("d5PartNumber", formAttrValue3); // string[] formAttrValue4 = new string[1]; // formAttrValue4[0] = ""; // formAttrValue4[0] = it_bom.Producttype; // formAttrs.Add("d5ProductType", formAttrValue4); // forminfo.AttributesMap = formAttrs; // forminfo.ClientId = "1"; // forminfo.Description = ""; // forminfo.FormObject = form; // forminfo.Name = item_id + "/" +rev.Item_revision_id; // forminfo.ParentObject = null; // forminfo.RelationName = "IMAN_master_form"; // forminfo.SaveDB = true; // forminfo.FormType = "ItemRevision Master"; // forminfo_vec[j] = forminfo; // try // { // CreateOrUpdateFormsResponse formResp // =dmService.CreateOrUpdateForms(forminfo_vec); // ed1.WriteMessage("update form attributes sucessful!\n"); // } // catch (ServiceException ex) // { // ed1.WriteMessage(ex.Message); // } // } // } // if (it_bom.Memo == "共图") // { // if (parent_ds != null) // { // ExpandGRMRelationsPref myPref = new ExpandGRMRelationsPref(); // RelationAndTypesFilter2 myFilter = new RelationAndTypesFilter2(); // myFilter.RelationName = "IMAN_reference"; // string[] typeVec = new string[1]; // typeVec[0] = "D5DWG"; // myFilter.ObjectTypeNames = typeVec; // myPref.ExpItemRev = false; // RelationAndTypesFilter2[] myFilterVec = { myFilter }; // myPref.Info = myFilterVec; // ModelObject[] primaryObjects = { rev }; // Teamcenter.Services.Strong.Core._2007_06.DataManagement.ExpandGRMRelationsResponse // myResp = dmService.ExpandGRMRelationsForPrimary(primaryObjects, myPref); // if (myResp.Output.Length > 0) // { // for (int k = 0; k < myResp.Output.Length; k++) // { // Teamcenter.Services.Strong.Core._2007_06.DataManagement.ExpandGRMRelationsOutput // grmOutput = myResp.Output[k]; // for (int l = 0; l < grmOutput.OtherSideObjData.Length; l++) // { // ExpandGRMRelationsData otherSideData = grmOutput.OtherSideObjData[l]; // if (otherSideData.OtherSideObjects.Length == 0) // { // Relationship[] rela_vec = new Relationship[1]; // Relationship one_rela = new Relationship(); // one_rela.ClientId = ""; // one_rela.PrimaryObject = rev; // one_rela.SecondaryObject = parent_ds; // one_rela.RelationType = "IMAN_reference"; // one_rela.UserData = null; // rela_vec[0] = one_rela; // CreateRelationsResponse reResp = // dmService.CreateRelations(rela_vec); // ed1.WriteMessage("create IMAN_reference sucessful!\n"); // } // } // } // } // } // } // } // catch (ServiceException ex) // { // ed1.WriteMessage(ex.Message); // } // } // else//found // { // ItemRevision itemRev = null; // for (int j = 0; j < found.NumOfObjects; j++) // { // GetItemFromIdInfo[] infos = new GetItemFromIdInfo[1]; // GetItemFromIdInfo oneItem = new GetItemFromIdInfo(); // oneItem.ItemId = item_id; // infos[0] = oneItem; // GetItemFromIdPref pref = new GetItemFromIdPref(); // GetItemFromIdResponse infoResp = // dmService.GetItemFromId(infos, 1, pref); // for (int n = 0; n < infoResp.Output.Length; n++) // { // ModelObject[] objects = { infoResp.Output[n].Item }; // String[] attributes = { "revision_list", // "object_name","item_revision"}; // dmService.RefreshObjects(objects); // dmService.GetProperties(objects, attributes); // ModelObject[] revList = infoResp.Output[n].Item.Revision_list; // dmService.RefreshObjects(revList); // for (int l = 0; l < revList.Length; l++) // { // itemRev = revList[l] as ItemRevision; // } // } // } // revVec[i] = itemRev; // //写form属性 // FormInfo forminfo = new FormInfo(); // FormInfo[] forminfo_vec = new FormInfo[1]; // ModelObject[] form_vec; // ModelObject[] objects1 = {itemRev }; // String[] attributes1 = { "IMAN_master_form_rev", // "is_modifiable","item_revision_id", // "date_released","item_id", // "release_status_list"}; // dmService.RefreshObjects(objects1); // dmService.GetProperties(objects1, attributes1); // ReleaseStatus[] releaselist = itemRev.Release_status_list; // if (releaselist.Length > 0) // { // MessageBox.Show("Item ID为" + itemRev.Item_id + "的最新版本已发布!"); // continue; // } // if (!itemRev.Is_modifiable) // { // MessageBox.Show("当前用户对Item ID为" + itemRev.Item_id + "无权修改或该Item最新版本已发布"); // continue; // } // else if (itemRev.Is_modifiable) // { // ed1.WriteMessage("is_modifiable!\n"); // form_vec = itemRev.IMAN_master_form_rev; // ed1.WriteMessage("get_IMAN_master_form_rev sucessful!\n"); // for (int j = 0; j < form_vec.Length; j++) // { // Form form = form_vec[j] as Form; // bool m_frash = false, w_frash = false, part_frash = false; // string[] props = new string[1]; // string revId = itemRev.Object_string; // Hashtable formAttrs = new Hashtable(); // //材料 // ed1.WriteMessage("取d5MaterialGrade\n"); // props[0] = "d5MaterialGrade"; // ServiceData serviceData = dmService.GetProperties(form_vec, props); // if (serviceData.sizeOfPartialErrors() > 0) // { // continue; // } // Property m_prop = form_vec[j].GetProperty("d5MaterialGrade"); // if (it_bom.Material != m_prop.StringValue) // { // if (m_prop.StringValue == "") // m_frash = true; // else // { // string message = "当前明细栏中" + revId + "的材料" + it_bom.Material + "与系统内材料" + m_prop.StringValue + "不一致,是否覆盖系统内属性?"; // DialogResult updateresult = MessageBox.Show(message, "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question); // if (updateresult == DialogResult.Yes) // { // m_frash = true; // } // } // } // string[] formAttrValue = new string[1]; // formAttrValue[0] = ""; // if (m_frash) // formAttrValue[0] = it_bom.Material; // else // formAttrValue[0] = m_prop.StringValue; // ed1.WriteMessage("d5MaterialGrade:" + formAttrValue[0] + "\n"); // formAttrs.Add("d5MaterialGrade", formAttrValue); // props[0] = ""; // //代号 // ed1.WriteMessage("取d5PartNumber\n"); // props[0] = "d5PartNumber"; // serviceData = dmService.GetProperties(form_vec, props); // if (serviceData.sizeOfPartialErrors() > 0) // { // continue; // } // Property part_prop = form_vec[j].GetProperty("d5PartNumber"); // if (it_bom.Partnumber != part_prop.StringValue) // { // if (part_prop.StringValue == "") // part_frash = true; // else // { // string message = "当前明细栏中" + revId + "的代号" + it_bom.Partnumber + "与系统内代号" + part_prop.StringValue + "不一致,是否覆盖系统内属性?"; // DialogResult updateresult = MessageBox.Show(message, "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question); // if (updateresult == DialogResult.Yes) // { // part_frash = true; // } // } // } // string[] formAttrValue1 = new string[1]; // formAttrValue1[0] = ""; // if (part_frash) // formAttrValue1[0] = it_bom.Partnumber; // else // formAttrValue1[0] = part_prop.StringValue; // ed1.WriteMessage("d5PartNumber:" + formAttrValue1[0] + "\n"); // formAttrs.Add("d5PartNumber", formAttrValue1); // props[0] = ""; // //单重 // ed1.WriteMessage("取d5SingleWeight\n"); // props[0] = "d5SingleWeight"; // serviceData = dmService.GetProperties(form_vec, props); // if (serviceData.sizeOfPartialErrors() > 0) // { // continue; // } // Property w_prop = form_vec[j].GetProperty("d5SingleWeight"); // if (it_bom.Perweight != w_prop.StringValue) // { // if (w_prop.StringValue == "") // w_frash = true; // else // { // string message = "当前明细栏中" + revId + "的单重" + it_bom.Perweight + "与系统内单重" + w_prop.StringValue + "不一致,是否覆盖系统内属性?"; // DialogResult updateresult = MessageBox.Show(message, "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question); // if (updateresult == DialogResult.Yes) // { // w_frash = true; // } // } // } // string[] formAttrValue2 = new string[1]; // formAttrValue2[0] = ""; // if (w_frash) // formAttrValue2[0] = it_bom.Perweight; // else // formAttrValue2[0] = w_prop.StringValue; // ed1.WriteMessage("d5SingleWeight:" + formAttrValue2[0] + "\n"); // formAttrs.Add("d5SingleWeight", formAttrValue2); // forminfo.AttributesMap = formAttrs; // forminfo.ClientId = ""; // forminfo.Description = ""; // forminfo.FormObject = form; // forminfo.Name = item_id + "/" + itemRev.Item_revision_id; // forminfo.ParentObject = null; // forminfo.RelationName = "IMAN_master_form"; // forminfo.SaveDB = true; // forminfo.FormType = "ItemRevision Master"; // forminfo_vec[0] = forminfo; // try // { // CreateOrUpdateFormsResponse formResp // = dmService.CreateOrUpdateForms(forminfo_vec); // } // catch (SoaException ex) // { // ed1.WriteMessage(ex.Message); // } // } // } // if (it_bom.Memo == "共图") // { // if (parent_ds != null) // { // ExpandGRMRelationsPref myPref = new ExpandGRMRelationsPref(); // RelationAndTypesFilter2 myFilter = new RelationAndTypesFilter2(); // myFilter.RelationName = "IMAN_reference"; // string[] typeVec = new string[1]; // typeVec[0] = "D5DWG"; // myFilter.ObjectTypeNames = typeVec; // myPref.ExpItemRev = false; // RelationAndTypesFilter2[] myFilterVec = { myFilter }; // myPref.Info = myFilterVec; // ModelObject[] primaryObjects = { itemRev }; // Teamcenter.Services.Strong.Core._2007_06.DataManagement.ExpandGRMRelationsResponse // myResp = dmService.ExpandGRMRelationsForPrimary(primaryObjects, myPref); // if (myResp.Output.Length > 0) // { // for (int k = 0; k < myResp.Output.Length; k++) // { // Teamcenter.Services.Strong.Core._2007_06.DataManagement.ExpandGRMRelationsOutput // grmOutput = myResp.Output[k]; // for (int l = 0; l < grmOutput.OtherSideObjData.Length; l++) // { // ExpandGRMRelationsData otherSideData = grmOutput.OtherSideObjData[l]; // if (otherSideData.OtherSideObjects.Length == 0) // { // Relationship[] rela_vec = new Relationship[1]; // Relationship one_rela = new Relationship(); // one_rela.ClientId = ""; // one_rela.PrimaryObject = itemRev; // one_rela.SecondaryObject = parent_ds; // one_rela.RelationType = "IMAN_reference"; // one_rela.UserData = null; // rela_vec[0] = one_rela; // CreateRelationsResponse reResp = // dmService.CreateRelations(rela_vec); // ed1.WriteMessage("create IMAN_reference sucessful!\n"); // } // } // } // } // } // } // } //}//for ////创建BOM //Teamcenter.Services.Strong.Cad.StructureManagementService ssService = // Teamcenter.Services.Strong.Cad.StructureManagementService.getService(Session.getConnection()); //Teamcenter.Services.Strong.Cad._2007_12.StructureManagement.CreateOrUpdateRelativeStructureInfo2 // structInfo = new Teamcenter.Services.Strong.Cad._2007_12.StructureManagement.CreateOrUpdateRelativeStructureInfo2(); //Teamcenter.Services.Strong.Cad._2007_12.StructureManagement.CreateOrUpdateRelativeStructureInfo2[] // structInfoVec = new Teamcenter.Services.Strong.Cad._2007_12.StructureManagement.CreateOrUpdateRelativeStructureInfo2[1]; ////Teamcenter.Services.Strong.Cad._2007_01.StructureManagement.RelativeStructureChildInfo //// childInfo = new Teamcenter.Services.Strong.Cad._2007_01.StructureManagement.RelativeStructureChildInfo(); //Teamcenter.Services.Strong.Cad._2007_01.StructureManagement.RelativeStructureChildInfo[] // childInfoVec; ////Teamcenter.Services.Strong.Cad._2007_01.StructureManagement.RelOccInfo //// occInfo = new Teamcenter.Services.Strong.Cad._2007_01.StructureManagement.RelOccInfo(); ////Teamcenter.Services.Strong.Cad._2007_01.StructureManagement.AttributesInfo //// attrsInfo = new Teamcenter.Services.Strong.Cad._2007_01.StructureManagement.AttributesInfo(); //Teamcenter.Services.Strong.Cad._2007_12.StructureManagement.CreateOrUpdateRelativeStructurePref2 // sPref = new Teamcenter.Services.Strong.Cad._2007_12.StructureManagement.CreateOrUpdateRelativeStructurePref2(); ////ItemRevision childRev; //ed1.WriteMessage("开始准备pse属性列\n"); //childInfoVec = new Teamcenter.Services.Strong.Cad._2007_01.StructureManagement.RelativeStructureChildInfo[revVec.Length]; //ed1.WriteMessage("childInfoVec size:"+childInfoVec.Length+"\n"); //Teamcenter.Services.Strong.Cad._2007_01.StructureManagement.AttributesInfo[] // attrsToSet = new Teamcenter.Services.Strong.Cad._2007_01.StructureManagement.AttributesInfo[4]; //for (int i = 0; i < revVec.Length; i++) //{ // MXLClass bomv = bom_Vec[i]; // ed1.WriteMessage("处理"+bomv.Item_id+"...\n"); // Teamcenter.Services.Strong.Cad._2007_01.StructureManagement.RelativeStructureChildInfo // childInfo = new Teamcenter.Services.Strong.Cad._2007_01.StructureManagement.RelativeStructureChildInfo(); // Teamcenter.Services.Strong.Cad._2007_01.StructureManagement.RelOccInfo // occInfo = new Teamcenter.Services.Strong.Cad._2007_01.StructureManagement.RelOccInfo(); // attrsToSet = new Teamcenter.Services.Strong.Cad._2007_01.StructureManagement.AttributesInfo[4]; // Teamcenter.Services.Strong.Cad._2007_01.StructureManagement.AttributesInfo // attrsInfo = new Teamcenter.Services.Strong.Cad._2007_01.StructureManagement.AttributesInfo(); // attrsInfo.Name = "bl_quantity"; // attrsInfo.Value = bomv.Count; // attrsToSet[0] = attrsInfo; // Teamcenter.Services.Strong.Cad._2007_01.StructureManagement.AttributesInfo // attrsInfo1 = new Teamcenter.Services.Strong.Cad._2007_01.StructureManagement.AttributesInfo(); // attrsInfo1.Name = "bl_sequence_no"; // attrsInfo1.Value = (Convert.ToInt32(bomv.Index) * 10).ToString(); // attrsToSet[1] = attrsInfo1; // Teamcenter.Services.Strong.Cad._2007_01.StructureManagement.AttributesInfo // attrsInfo2 = new Teamcenter.Services.Strong.Cad._2007_01.StructureManagement.AttributesInfo(); // attrsInfo2.Name = "D5DesignNote_bl"; // attrsInfo2.Value = bomv.Memo; // attrsToSet[2] = attrsInfo2; // Teamcenter.Services.Strong.Cad._2007_01.StructureManagement.AttributesInfo // attrsInfo3 = new Teamcenter.Services.Strong.Cad._2007_01.StructureManagement.AttributesInfo(); // attrsInfo3.Name = "D5TotalWeight"; // attrsInfo3.Value = bomv.Tolweight; // attrsToSet[3] = attrsInfo3; // occInfo.AttrsToSet = attrsToSet; // childInfo.Child = revVec[i]; // childInfo.OccInfo = occInfo; // childInfoVec[i] = childInfo; //} //for (int j = 0; j < childInfoVec.Length; j++) //{ // for(int k=0;k 0) // { // ed1.WriteMessage("checkout bom returned a partial error."); // return false; // } // } //} //catch (ServiceException ex) //{ // ed1.WriteMessage(ex.Message); //} //ed1.WriteMessage("开始创建Bom\n"); //try //{ // Teamcenter.Services.Strong.Cad._2007_01.StructureManagement.CreateOrUpdateRelativeStructureResponse // cursResp = ssService.CreateOrUpdateRelativeStructure(structInfoVec, "view", true, sPref); // ed1.WriteMessage("Bom创建成功\n"); //} //catch (System.Exception ex) //{ // ed1.WriteMessage(ex.Message); // return false; //} //if (bvr != null) //{ // ModelObject[] checkIn_vec = new ModelObject[1]; // checkIn_vec[0] = bvr; // try // { // res.Checkin(checkIn_vec); // ed1.WriteMessage("Bomview 签入成功!\n"); // } // catch (ServiceException ex) // { // ed1.WriteMessage(ex.Message); // } //} return true; } private void loginbuttonclick(object Sender,EventArgs e) { login(); } private void openbuttonclick(object Sender, EventArgs e) { openformtc(); } private void savebuttonclick(object Sender, EventArgs e) { savetotc(); } private void logoutbuttonclick(object Sender, EventArgs e) { layout(); } private void showMap(Dictionary formAttrs,Editor ed) { foreach (KeyValuePair hash in formAttrs) { ed.WriteMessage(hash.Key + ":" + Convert.ToString(hash.Value) + "\n"); } } private Hashtable updateFormProp(Dictionary formAttrs, Dictionary formValues) { Hashtable table = new Hashtable(); foreach (KeyValuePair hash in formAttrs) { string cadName = hash.Key; string propName = hash.Value; string propValue =formValues[cadName]; table.Add(propName,propValue); } return table; } //private void addComtextMenu() //{ // ContextMenuExtension m_contextmenu = new ContextMenuExtension(); // m_contextmenu.Title = "MyTeamCenter"; // Autodesk.AutoCAD.Windows.MenuItem mi = new Autodesk.AutoCAD.Windows.MenuItem("登录"); // Autodesk.AutoCAD.Windows.MenuItem mi1 = new Autodesk.AutoCAD.Windows.MenuItem("打开"); // Autodesk.AutoCAD.Windows.MenuItem mi2 = new Autodesk.AutoCAD.Windows.MenuItem("保存"); // Autodesk.AutoCAD.Windows.MenuItem mi3 = new Autodesk.AutoCAD.Windows.MenuItem("退出"); // mi.Click += new EventHandler (loginbuttonclick); // mi1.Click += new EventHandler(openbuttonclick); // mi2.Click += new EventHandler(savebuttonclick); // mi3.Click += new EventHandler(logoutbuttonclick); // m_contextmenu.MenuItems.Add(mi); // m_contextmenu.MenuItems.Add(mi1); // m_contextmenu.MenuItems.Add(mi2); // m_contextmenu.MenuItems.Add(mi3); // Autodesk.AutoCAD.ApplicationServices.Application.AddDefaultContextMenuExtension(m_contextmenu); //} ////退出时触发 //public void acdocmgr_DocumentToBeDestroyed(object sender, DocumentCollectionEventArgs e) //{ // DialogResult updateresult = MessageBox.Show("请确保您已经将文件保存!以免造成数据丢失!是否保存?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question); // if (updateresult == DialogResult.Yes) // { // savetotc(); // } // else // { // loginuser = null; // hadlogin = false; // } //} } }