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,

Versuche mit Inventor eine Referenz zu ersetzten, habe jedoch Probleme!

Sowohl mit "ReplaceReference", als auch mit "PutLogicalFileNameUsingFull" wird die Datei nach dem speichern kleiner als zuvor (immer unterschiedlich ca. 2 - 20 kB) und im Schriftkopf, der Stückliste und den Positionsnummern fehlen alle Texte??

Ha! das ist nur wenn ich beim Öffnen des Dokumentes mit Visible = false arbeite! Update hilft auch nicht!

Vielen Dank

mfg Bernhard

[Diese Nachricht wurde von BernhardU am 25. Aug. 2010 editiert.]

rkauskh

Beiträge: 1621 / 0

Windows 7 x64, AIS 2014

Hallo

Entstand die neue Referenz aus einer mit "Kopie speichern unter" erzeugten Kopie der alten Referenz oder sind das 2 völlig verschiedene Teile?
Nur im ersten Fall ist die Wahrscheinlichkeit hoch, daß es verlustfrei funktioniert. Verschwundene Bemaßungen und Positionsnummern deuten aber eher auf Fall 2 hin.
Ein bißchen Code und ein Beispiel wären eventuell hilfreich.

------------------
MfG
RK

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

        }