using System; using System.Collections; using System.Collections.Generic; using System.Text; using Autodesk.AutoCAD.DatabaseServices; using Autodesk.AutoCAD.Runtime; using Autodesk.AutoCAD.Geometry; using Autodesk.AutoCAD.ApplicationServices; using Autodesk.AutoCAD.EditorInput; using Teamcenter.Services.Strong.Query._2007_06.SavedQuery; 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 Teamcenter.Schemas.Soa._2006_03.Exceptions; using Teamcenter.Services.Strong.Query._2006_03.SavedQuery; 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; using SavedQueryResults = Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryResults; namespace HelloTeamcenter.hello { class Tool { private BTLClass btlinfo; private List> bomlist = new List>(); private static User loginuser; public static User Loginuser { get { return Tool.loginuser; } set { Tool.loginuser = value; } } Editor ed = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor; //标题栏 public Dictionary getBTL(string btlname) { btlinfo = new BTLClass(); Database db = HostApplicationServices.WorkingDatabase; Dictionary myDic = null; using (Transaction tran = db.TransactionManager.StartTransaction()) { BlockTable blt = tran.GetObject(db.BlockTableId, OpenMode.ForRead) as BlockTable; //ed.WriteMessage("名称"+blt.GetType().Name); //if (blt!=null) if (blt.Has(btlname)) { BlockTableRecord bltr = tran.GetObject(db.CurrentSpaceId, OpenMode.ForRead) as BlockTableRecord; foreach (ObjectId item in bltr) { Entity ent = tran.GetObject(item, OpenMode.ForRead) as Entity; //ed.WriteMessage(ent.GetType().Name + "\n"); if (ent.GetType().Name == "BlockReference") { BlockReference bref = (BlockReference)ent; if (bref.Name == btlname) { //ed.WriteMessage("块名称:" + bref.Name + "\n"); myDic = new Dictionary(); if (bref.AttributeCollection.Count != 0) { System.Collections.IEnumerator bRefEnum = bref.AttributeCollection.GetEnumerator(); while (bRefEnum.MoveNext()) { ObjectId aId = (ObjectId)bRefEnum.Current;//这一句极其关键 AttributeReference aRef = (AttributeReference)tran.GetObject(aId, OpenMode.ForRead); //ed.WriteMessage(aRef.Tag + ":" + aRef.TextString + "\n"); myDic.Add(aRef.Tag, aRef.TextString); } } } } } } tran.Commit(); } return myDic; } //明细栏 public List> getMXL(string mxlname) { bomlist.Clear(); Database db = HostApplicationServices.WorkingDatabase; Dictionary myDic = null; using (Transaction tran = db.TransactionManager.StartTransaction()) { BlockTable blt = tran.GetObject(db.BlockTableId, OpenMode.ForRead) as BlockTable; //ed.WriteMessage("名称"+blt.GetType().Name); if (blt.Has(mxlname)) { BlockTableRecord bltr = tran.GetObject(db.CurrentSpaceId, OpenMode.ForRead) as BlockTableRecord; foreach (ObjectId item in bltr) { Entity ent = tran.GetObject(item, OpenMode.ForRead) as Entity; //ed.WriteMessage(ent.GetType().Name + "\n"); if (ent.GetType().Name == "BlockReference") { BlockReference bref = (BlockReference)ent; //ed.WriteMessage(bref.GetType().Name + "====\n"); //ed.WriteMessage(bref.Name + "====\n"); if (bref.Name == mxlname) { //ed.WriteMessage("块名称:" + bref.Name + "\n"); myDic = new Dictionary(); if (bref.AttributeCollection.Count != 0) { System.Collections.IEnumerator bRefEnum = bref.AttributeCollection.GetEnumerator(); while (bRefEnum.MoveNext()) { ObjectId aId = (ObjectId)bRefEnum.Current;//这一句极其关键 AttributeReference aRef = (AttributeReference)tran.GetObject(aId, OpenMode.ForRead); //ed.WriteMessage("属性:" + aRef.Tag + "属性值:" + aRef.TextString + "\n"); myDic.Add(aRef.Tag, aRef.TextString); } bomlist.Add(myDic); } } } } } tran.Commit(); } return bomlist; } public SavedQueryResults getSearchItem(string item_id) { ImanQuery query = null; SavedQueryService queryService = SavedQueryService.getService(Session.getConnection()); try { GetSavedQueriesResponse savedQueries = queryService.GetSavedQueries(); if (savedQueries.Queries.Length == 0) { ed.WriteMessage("There are no saved queries in the system.\n"); } for (int i = 0; i < savedQueries.Queries.Length; i++) { if (savedQueries.Queries[i].Name.Equals("Item ID")) { query = savedQueries.Queries[i].Query; break; } } } catch (ServiceException e) { ed.WriteMessage("GetSavedQueries service request failed.\n"); ed.WriteMessage(e.Message); return null; } if (query == null) { ed.WriteMessage("There is not an 'Item ID' query.\n"); } try { // Search for all Items, returning a maximum of 25 objects Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryInput[] savedQueryInput = new Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryInput[1]; savedQueryInput[0] = new Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryInput(); savedQueryInput[0].Query = query; savedQueryInput[0].Entries = new String[] { "Item ID" }; savedQueryInput[0].Values = new String[1]; savedQueryInput[0].Values[0] = item_id; Teamcenter.Services.Strong.Query._2007_06.SavedQuery.ExecuteSavedQueriesResponse savedQueryResult = queryService.ExecuteSavedQueries(savedQueryInput); Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryResults found = savedQueryResult.ArrayOfResults[0]; ed.WriteMessage("Found Items:" + found.NumOfObjects + "\n"); return found; } catch (ServiceException e) { ed.WriteMessage("ExecuteSavedQuery service request failed.\n"); ed.WriteMessage(e.Message); return null; } } public SavedQueryResults getSearchItem(string item_id, string name, string type, string owner) { ImanQuery query = null; SavedQueryService queryService = SavedQueryService.getService(Session.getConnection()); try { GetSavedQueriesResponse savedQueries = queryService.GetSavedQueries(); if (savedQueries.Queries.Length == 0) { ed.WriteMessage("There are no saved queries in the system.\n"); } for (int i = 0; i < savedQueries.Queries.Length; i++) { if (savedQueries.Queries[i].Name.Equals("Item...")) { query = savedQueries.Queries[i].Query; break; } } } catch (ServiceException e) { ed.WriteMessage("GetSavedQueries service request failed.\n"); ed.WriteMessage(e.Message); return null; } if (query == null) { ed.WriteMessage("There is not an 'Item...' query.\n"); } try { Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryInput[] savedQueryInput = new Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryInput[1]; savedQueryInput[0] = new Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryInput(); savedQueryInput[0].Query = query; savedQueryInput[0].Entries = new String[] { "Name", "Item ID", "Type", "Owning User" }; savedQueryInput[0].Values = new String[4]; savedQueryInput[0].Values[0] = name; savedQueryInput[0].Values[1] = item_id; savedQueryInput[0].Values[2] = type; savedQueryInput[0].Values[3] = owner; Teamcenter.Services.Strong.Query._2007_06.SavedQuery.ExecuteSavedQueriesResponse savedQueryResult = queryService.ExecuteSavedQueries(savedQueryInput); Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryResults found = savedQueryResult.ArrayOfResults[0]; ed.WriteMessage("Found Items:" + found.NumOfObjects + "\n"); return found; } catch (ServiceException e) { ed.WriteMessage("ExecuteSavedQuery service request failed.\n"); ed.WriteMessage(e.Message); return null; } } public SavedQueryResults getSearchUser() { ImanQuery query = null; SavedQueryService queryService = SavedQueryService.getService(Session.getConnection()); try { GetSavedQueriesResponse savedQueries = queryService.GetSavedQueries(); if (savedQueries.Queries.Length == 0) { ed.WriteMessage("There are no saved queries in the system.\n"); } for (int i = 0; i < savedQueries.Queries.Length; i++) { if (savedQueries.Queries[i].Name.Equals("Admin - Employee Information")) { query = savedQueries.Queries[i].Query; break; } } } catch (ServiceException e) { ed.WriteMessage("GetSavedQueries service request failed.\n"); ed.WriteMessage(e.Message); return null; } if (query == null) { ed.WriteMessage("There is not an 'Admin - Employee Information' query.\n"); } try { // Search for all Items, returning a maximum of 25 objects Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryInput[] savedQueryInput = new Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryInput[1]; savedQueryInput[0] = new Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryInput(); savedQueryInput[0].Query = query; savedQueryInput[0].Entries = new String[] { "User Id" }; savedQueryInput[0].Values = new String[1]; savedQueryInput[0].Values[0] = "*"; Teamcenter.Services.Strong.Query._2007_06.SavedQuery.ExecuteSavedQueriesResponse savedQueryResult = queryService.ExecuteSavedQueries(savedQueryInput); Teamcenter.Services.Strong.Query._2007_06.SavedQuery.SavedQueryResults found = savedQueryResult.ArrayOfResults[0]; ed.WriteMessage("Found Users:" + found.NumOfObjects + "\n"); return found; } catch (ServiceException e) { ed.WriteMessage("ExecuteSavedQuery service request failed.\n"); ed.WriteMessage(e.Message); return null; } } } }