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.
335 lines
14 KiB
335 lines
14 KiB
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<Dictionary<string, string>> bomlist = new List<Dictionary<string, string>>();
|
|
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<string, string> getBTL(string btlname)
|
|
{
|
|
btlinfo = new BTLClass();
|
|
Database db = HostApplicationServices.WorkingDatabase;
|
|
Dictionary<string, string> 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<string, string>();
|
|
|
|
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<Dictionary<string, string>> getMXL(string mxlname)
|
|
{
|
|
bomlist.Clear();
|
|
|
|
Database db = HostApplicationServices.WorkingDatabase;
|
|
Dictionary<string, string> 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<string, string>();
|
|
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;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
}
|