Forum:Inventor .NET
Thema:ReplaceReference
Möchten Sie sich registrieren?
Wer darf antworten? Registrierte Benutzer können Beiträge verfassen.
Hinweise zur Registrierung Sie müssen registriert sein, um Beiträge oder Antworten auf Beiträge schreiben zu können.
Ihr Benutzername:
Ihr Kennwort:   Kennwort vergessen?
Anhang:    Datei(en) anhängen  <?>   Anhänge verwalten  <?>
Grafik für den Beitrag:                                                
                                                       
Ihre Antwort:

Fachbegriff
URL
Email
Fett
Kursiv
Durchgestr.
Liste
*
Bild
Zitat
Code

*HTML ist AUS
*UBB-Code ist AN
Smilies Legende
Netiquette

10 20 40

Optionen Smilies in diesem Beitrag deaktivieren.
Signatur anfügen: die Sie bei den Voreinstellungen angegeben haben.

Wenn Sie bereits registriert sind, aber Ihr Kennwort vergessen haben, klicken Sie bitte hier.

Bitte drücken Sie nicht mehrfach auf "Antwort speichern".

*Ist HTML- und/oder UBB-Code aktiviert, dann können Sie HTML und/oder UBB Code in Ihrem Beitrag verwenden.

T H E M A     A N S E H E N
BernhardU

Beiträge: 328 / 0

Windows XP SP3
AIP 2011
VS 2005

Hi,

Ich erstelle eine Revision! d.h. altes kopieren - umbenennen - und dann Referenzen ändern!
Mir ist schon bekannt, dass ich nur kopierte Teile bzw teile mit gleichem internalname so bearbeiten kann!!

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

        }