Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Inventor .NET
  ReplaceReference

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  ReplaceReference (1491 mal gelesen)
BernhardU
Mitglied
Techniker / Konstrukteur / Student


Sehen Sie sich das Profil von BernhardU an!   Senden Sie eine Private Message an BernhardU  Schreiben Sie einen Gästebucheintrag für BernhardU

Beiträge: 328
Registriert: 17.08.2005

Windows XP SP3
AIP 2011
VS 2005

erstellt am: 25. Aug. 2010 12:40    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

rkauskh
Moderator
Dipl.-Ing. (FH) Versorgungstechnik




Sehen Sie sich das Profil von rkauskh an!   Senden Sie eine Private Message an rkauskh  Schreiben Sie einen Gästebucheintrag für rkauskh

Beiträge: 2166
Registriert: 15.11.2006

Windows 10 x64, AIP 2022

erstellt am: 25. Aug. 2010 13:07    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für BernhardU 10 Unities + Antwort hilfreich

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

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

BernhardU
Mitglied
Techniker / Konstrukteur / Student


Sehen Sie sich das Profil von BernhardU an!   Senden Sie eine Private Message an BernhardU  Schreiben Sie einen Gästebucheintrag für BernhardU

Beiträge: 328
Registriert: 17.08.2005

Windows XP SP3
AIP 2011
VS 2005

erstellt am: 25. Aug. 2010 13:22    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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

        }


Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz