Code:
private void WriteChanges(CFile mf)
{
if (mf.RevisionState == RevisionStatus.Revision)
{
System.IO.File.Copy(mf.FullFileName, mf.NewFullFileName);
SMC_Functions.FileFunctions.FileCheck.Fileready(mf.NewFullFileName);
}
foreach (CFile sf in mf.ReferencedFiles)
{
if (sf.RevisionState == RevisionStatus.Revision)
{
System.IO.File.Copy(sf.FullFileName, sf.NewFullFileName);
SMC_Functions.FileFunctions.FileCheck.Fileready(sf.NewFullFileName);
}
} #region Inventor
Inventor.Application oapp = null;
try
{
oapp = (Inventor.Application)System.Runtime.InteropServices.Marshal.GetActiveObject("Inventor.Application");
if (oapp == null) return;
Inventor.Document odoc = null;
oapp.SilentOperation = true;
//Revision of main file
if (mf.RevisionState == RevisionStatus.Revision && System.IO.File.Exists(mf.NewFullFileName))
{
odoc = oapp.Documents.Open(mf.NewFullFileName, true);
odoc.PropertySets[iPropertySets.PropertiesForDesignTrackingPropertiesEnum].get_ItemByPropId((int)Inventor.PropertiesForDesignTrackingPropertiesEnum.kPartNumberDesignTrackingPropert ies).Value = mf.NewPartNumber;
odoc.PropertySets[iPropertySets.PropertiesForSummaryInformationEnum].get_ItemByPropId((int)Inventor.PropertiesForSummaryInformationEnum.kRevisionSummaryInformation).Value = mf.NewRevision;
odoc.PropertySets[iPropertySets.PropertiesForDesignTrackingPropertiesEnum].get_ItemByPropId((int)Inventor.PropertiesForDesignTrackingPropertiesEnum.kDescriptionDesignTrackingProper ties).Value = mf.NewDescription;
}
else
odoc = oapp.Documents.Open(mf.FullFileName, true);
if (odoc.NeedsMigrating) odoc.Migrate();
foreach (CFile sf in mf.ReferencedFiles)
{
if (sf.RevisionState == RevisionStatus.Revision && System.IO.File.Exists(sf.FullFileName) && System.IO.File.Exists(sf.NewFullFileName))
{
//odoc.ReferencedFileDescriptors.get_ItemByName(sf.FullFileName).PutLogicalFileNameUsingFull(sf.NewFullFileName);
odoc.ReferencedFileDescriptors.get_ItemByName(sf.FullFileName).DocumentDescriptor.ReferencedFileDescriptor.ReplaceReference(sf.NewFullFileName);
//odoc.ReferencedDocumentDescriptors[1].ReferencedFileDescriptor.ReplaceReference(sf.NewFullFileName);
((Inventor.Document)rfd.ReferencedDocument).PropertySets[iPropertySets.PropertiesForDesignTrackingPropertiesEnum].get_ItemByPropId((int)Inventor.PropertiesForDesignTrackingProperti esEnum.kPartNumberDesignTrackingProperties).Value = sf.NewPartNumber;
((Inventor.Document)rfd.ReferencedDocument).PropertySets[iPropertySets.PropertiesForSummaryInformationEnum].get_ItemByPropId((int)Inventor.PropertiesForSummaryInformationEnum.kRevi sionSummaryInformation).Value = sf.NewRevision;
((Inventor.Document)rfd.ReferencedDocument).PropertySets[iPropertySets.PropertiesForDesignTrackingPropertiesEnum].get_ItemByPropId((int)Inventor.PropertiesForDesignTrackingProperti esEnum.kDescriptionDesignTrackingProperties).Value = sf.NewDescription;
if (((Inventor.Document)rfd.ReferencedDocument).NeedsMigrating) ((Inventor.Document)rfd.ReferencedDocument).Migrate();
((Inventor.Document)rfd.ReferencedDocument).Save();
}
else if (sf.RevisionState == RevisionStatus.ReferenceChange && System.IO.File.Exists(sf.FullFileName) && System.IO.File.Exists(sf.NewFullFileName))
//odoc.ReferencedFileDescriptors.get_ItemByName(sf.FullFileName).PutLogicalFileNameUsingFull(sf.NewFullFileName);
odoc.ReferencedFileDescriptors.get_ItemByName(sf.FullFileName).DocumentDescriptor.ReferencedFileDescriptor.ReplaceReference(sf.NewFullFileName);
}
odoc.Update();
odoc.Save();
odoc.Close(true);
}
catch (Exception ex)
{ }
finally
{
oapp.SilentOperation = false;
if (oapp != null)
System.Runtime.InteropServices.Marshal.ReleaseComObject(oapp);
oapp = null;
}
#endregion
}