Forum Discussion
Former_Member
9 years agoAccelerator III
Hello Jilian,
Firstly I'd like to thank you for you reply.Actually by my side, I don't need to convert to PDF. PDF files are already generated and attached as Viewable files of CAD. As soon as CAD with attached file has been saved in Aras, I'd like to grab these data (like itemNumber,Generation...) and check out Viewable file(Already Attached) and upload to ERP. So I developed and attached method on Server Event 'OnAfterAdd' of CAD Item Type, the method is to grab data, check out physical file on SAME SERVER not in the CLIENT and push that data ,upload or transfer the file from the SERVER to ANOTHER SERVER (ERP). But at this time,to check out the physical File, that does not exit in the vault. Summary, I understand, physical files do not go in the Vault immediately. The main requirement is to check out on same server the file On Creation CAD Data. Please any suggestion?
Sample Codes are below
System.Diagnostics.Debugger.Break();
Innovator EngineeringInnovator = this.getInnovator();
string itemId = this.getID();
Innovator ERPInnovator = GetERPInnovatorServerConnection(EngineeringInnovator);
Item engineeringCAD = EngineeringInnovator.applySQL(“select * From innovator.CAD where id ='” + itemId + “‘”);
string itemNumber = engineeringCAD.getProperty(“item_number”);
string itemID = engineeringCAD.getID();
CreateCAD(EngineeringInnovator,ERPInnovator,engineeringCAD);
return this;
}
public static Innovator GetERPInnovatorServerConnection(Innovator engineeringInnovator)
{
HttpServerConnection myConnection;
Innovator myNewInnovator;
string newServerURL = “”;
string newServerDBName = “”;
Item urlVar = engineeringInnovator.newItem(“VARIABLE”, “get”);
urlVar.setProperty(“name”, “NewServerURL”);
urlVar = urlVar.apply();
newServerURL = urlVar.getProperty(“value”);
Item dbVar = engineeringInnovator.newItem(“VARIABLE”, “get”);
dbVar.setProperty(“name”, “NewServerDBName”);
dbVar = dbVar.apply();
newServerDBName = dbVar.getProperty(“value”);
/*End Get Data From Variable*/
string webURL = newServerURL;
string dbName = newServerDBName;
string userName = “admin”;
string passWord = “innovator”;
myConnection = IomFactory.CreateHttpServerConnection(webURL, dbName, userName, passWord);
Item login_result = myConnection.Login();
if (login_result.isError())
{
throw (new Exception(“login failed”));
}
myNewInnovator = IomFactory.CreateInnovator(myConnection);
return myNewInnovator;
}
public static void CreateCAD(Innovator engineeringInnovator,Innovator ERPInnovator,Item engineeringCAD)
{
/*__ Get New Server Connection __*/
string filePath = “”;
Item currentCAD = engineeringCAD;
Item itemResult = ERPInnovator.newItem();
if(currentCAD.getItemCount()>0)
{
string[] CADArray = GetCADFields();
for(int c=0; c<currentCAD.getItemCount();c++)
{
string nativeFile = currentCAD.getItemByIndex(0).getProperty(“native_file”);
string viewable = currentCAD.getItemByIndex(0).getProperty(“viewable_file”);
filePath = FileDownloadAndUpload(engineeringInnovator,””,nativeFile,viewable);
Item addCAD = ERPInnovator.newItem(“CAD”,”add”);
if(filePath.Length>0)
{
addCAD.setFileProperty(“viewable_file”,filePath);
}
for(int k = 0; k<CADArray.Count();k++)
{
string CADcolumnName = CADArray;
addCAD.setProperty(CADcolumnName,currentCAD.getItemByIndex(0).getProperty(CADcolumnName));
}
addCAD = addCAD.apply();
}
}
}
public static string FileDownloadAndUpload(Innovator engineerInnovator, string cadID,string nativeFile,string viewable)
{
Innovator ERPInnovator = GetERPInnovatorServerConnection(engineerInnovator);
string workingDirectory = getLocalWorkFolder(engineerInnovator,”admin”);
/* Viewable File */
Item viewableItem = engineerInnovator.newItem(“File”,”get”);
viewableItem.setProperty(“id”,viewable);
if(viewable.Length>0)
viewableItem = viewableItem.apply();
string viewablefileName = viewableItem.getProperty(“filename”);
string viewableFilePath = CheckOutFile(engineerInnovator,viewable,workingDirectory,viewablefileName);
/*End Viewable File*/
return viewableFilePath;
}
public static string getLocalWorkFolder(Innovator engineerInnovator,string username)
{
string FolderPath = default(string);
Item Item_results = default(Item);
Item qryitem = engineerInnovator.newItem(“user”, “get”);
qryitem.setProperty(“login_name”, username);
Item_results = qryitem.apply();
try
{
FolderPath = (string)(Item_results.getItemsByXPath(“//Result/Item”).getProperty(“working_directory”));
if (FolderPath.Length<3)
{
FolderPath = FolderPath + “\\”;
}
}
catch (Exception)
{
FolderPath = “”;
}
return FolderPath;
}
public static string CheckOutFile(Innovator engineerInnovator,string fileID,string checkOutDirector,string fileName)
{
checkOutDirector = HttpContext.Current.Server.MapPath(“Data”);
string FileDirectory = Path.Combine(checkOutDirector , fileName);
if(File.Exists(FileDirectory))
{
File.Delete(FileDirectory);
}
System.Timers.Timer myTimer= new System.Timers.Timer();
myTimer.Interval = 500000;
myTimer.Start();
myTimer.Enabled = true;
System.Threading.Thread.Sleep(100000);
Item get_file_request = engineerInnovator.newItem();
get_file_request.setType(“File”);
get_file_request.setAction(“get”);
get_file_request.setID(fileID);
Item fileItem = get_file_request.apply();
// Item saveFile = engineerInnovator.newItem(“File”,”add”);
// saveFile.setProperty(“filename”,fileItem.getProperty(“filename”));
// saveFile.attachPhysicalFile(@”C:\TCAD-004.pdf”);
// saveFile = saveFile.apply();
Item checkoutResult = fileItem.checkout(checkOutDirector);
if(checkoutResult.isError())
throw new Exception(string.Format(“Failed to check-out file with ID={0}: {1}”, fileID));
return FileDirectory;
}
private static string[] GetCADFields()
{
string[] CADArray = {“is_current”,”is_released”,”new_version”,”config_id”,”permission_id”,
“release_date”,”effective_date”,”team_id”,”authoring_tool”,
“authoring_tool_version”,”description”,”monolithic_model_file”,
“name”,
/*,”native_file”,*/”shattered_model_file”,/*”thumbnail”,*/
“view_file”,/*”viewable_file”,*/”item_number”,”classification”,
“created_on”,”current_state”,”generation”,”major_rev”,”modified_on”,
“owned_by_id”,”state”,”superseded_date”,”custom_generation”,
“custom_rev”,”drawing_media”,”generated_id”,”initiated_by”,
“initiated_date”,”n_p_id”,”workflow_check”,”updated_by”,”updated_date”,
“released2_date”,”released_by”,”released_date”,”reviewed_by”,
“reviewed_date”,”revision_code”,”revision_desc”,”running_number”,
“selected_part_item”};
return CADArray;
Thanks,
Thiha Swe
Myanmar.