Hallo,
ich habe mittels iLogic eine Regel geschrieben welche sämtliche Browsernamen in Bauteilen und Unterbaugruppen ändert.
Jedoch überschreibt mir meine aktuelle Regel auch Schreibgeschützte Dateien bzw. Dateien welche noch eingecheckt sind.
Normteile zu überspringen habe ich noch hinbekommen mittels
If docFile.IsModifiable = True Then
aber bei normalen Dateien welche nicht ausgecheckt wurden funktioniert das ganze noch nicht.
Hat irgendwer hierzu eine Idee die mich zum Ziel führt?
Danke für eure Bemühungen.
Mit freundlichen Grüßen
Andreas Luchner
HM CAD-Technik KG
Gelöst! Gehe zur Lösung
Gelöst von Dennis.Ossadnik. Gehe zur Lösung
Kannst du die komplette iLogic Regel hier mal posten, sonst ist das schwierig dir zu helfen.
Und vielleicht nach Möglichkeit Angaben machen warum du was wie umbenennen möchtest.
Möglicherweise habe ich was in der Schublade.
Hallo,
danke für deine schnelle Antwort.
Gerne sende ich dir aktuelle Regel.
Die Regel soll am Ende folgendes bewirken. Alle Bauteile und Baugruppen in meiner Hauptbaugruppe sollen einen neuen Browsernamen bekommen (auch direkt im Bauteil selbst) bis auf Normteile, Bibliotheksteile und Teile die nicht ausgecheckt sind.
Da Normteile und bereits eingecheckte und eventuell sogar freigegeben Teile nicht geändert werden dürfen sollte die Regele diese Teile einfach überspringen.
Ich habe es mit
docFile.IsModifiable = True
probiert aber leider nur mit erfolgen was die Normteile betrifft. Dateien welche eingecheckt sind bearbeitet er immer noch.
SyntaxEditor Code Snippet
If ThisDoc.Document Is ThisApplication.ActiveEditObject Then openDoc = ThisApplication.ActiveEditObject iLogicVb.UpdateWhenDone = True Dim docFile As Document For Each docFile In openDoc.AllReferencedDocuments If docFile.IsModifiable = True Then Dim FNamePos As Long FNamePos = InStrRev(docFile.FullFileName, "\", - 1) Dim docFName As String docFName = Right(docFile.FullFileName, Len(docFile.FullFileName) - FNamePos) Filename_Description = iProperties.Value(docFName, "Project", "Part Number") _ & "-" & iProperties.Value(docFName, "Project", "Description") docFile.DisplayName = Filename_Description End If Next End If
Vielen Dank
Also zum Thema Content Center Part habe ich mir mal folgende Function geschrieben. Die funktioniert recht zuverlässig:
Public Function ContentCenterPart(oRefDoc As Document) As Boolean ContentCenterPart = False On Error GoTo Err1 'Check wether it is a Part Document If oRefDoc.DocumentType = kPartDocumentObject Then 'Check wether it is a Content Center Part 'Bei Content Center Parts gibt es noch Item 5 und 6 If oRefDoc.PropertySets.Count > 4 Then ContentCenterPart = True End If End If Exit Function Err1: 'ContentCenterPart = False Err.Clear End Function
Wegen der Vault Geschichte schau mal hier:
Ich denke auch das man das darüber abprüfen kann ob das File lokal auf ReadOnly steht. Denn das ändert sich in dem Moment wo es ausgecheckt ist auf Read/Write. Das bedeutet du musst zu jeder Occurrence das ReferencedDocument prüfen.
Ich hoffe das hilft dir weiter.
Hi Martin,
coole Funktion.
Es gäbe eventuell auch einen anderen Weg, zu prüfen, ob es sich um eine Inhaltscenter-Teil handelt:
Inventor API Reference Manual | PartComponentDefinition.IsContentMember Property
Das Zählen der PropertySets kann auch unter anderen Umständen auch mal ein falsches Ergebnis liefern, da andere Addins auch gerne PropertySets erstellen.
Bin ich auch schon mal drüber gestolpert mit meinen Code...
Vielleicht hilft die Information mal an der ein oder anderen Stelle...
Hallo @Luchner,
konnte dir die Hilfestellung von Martin und / oder Dennis helfen und deine Frage beantworten? 🙂 Wenn ja, kannst du gerne bei den entsprechenden Beiträgen auf den Button "Als Lösung akzeptieren" klicken, dann profitieren auch andere Anwender von der Information. Wenn nicht, dann gib uns doch bitte ein Update, damit man weiß was bei dir nun der Stand der Dinge ist und wie man eventuell noch helfen kann. 🙂
You found a post helpful? Then feel free to give likes to these posts!
Your question got successfully answered? Then just click on the 'Mark as solution' button.
Tarek Khodr
Community Manager
Hallo,
Vielen Dank für Informationen und Tips.
Leider hat es bei mir noch nicht zur Behebung meiner Probleme gereicht.
Hat irgendwer zufällig einen fertigen Code parat zum Umbenennen welchen er zur Verfügung stellen kann?
Vielen Dank, Andreas Luchner
Hallo @Luchner,
ich habe in Deine Regel mal einen "Schreibschutz-Test" eingebaut. Damit solltest du dann ja eigentlich die nicht ausgecheckten Dateien abfangen können. Bei mir hat das in ein paar test gut funktioniert.
Hier ist der Code:
Sub Main If ThisDoc.Document Is ThisApplication.ActiveEditObject Then openDoc = ThisApplication.ActiveEditObject iLogicVb.UpdateWhenDone = True Dim docFile As Document For Each docFile In openDoc.AllReferencedDocuments If (docFile.IsModifiable) And (isReadOnly(docFile.FullFileName) = False) Then Dim FNamePos As Long FNamePos = InStrRev(docFile.FullFileName, "\", - 1) Dim docFName As String docFName = Right(docFile.FullFileName, Len(docFile.FullFileName) - FNamePos) Filename_Description = iProperties.Value(docFName, "Project", "Part Number") _ & "-" & iProperties.Value(docFName, "Project", "Description") docFile.DisplayName = Filename_Description End If Next End If End Sub Public Function isReadOnly(ByVal fName As String) As Boolean 'vbNormal = 0, vbReadOnly = 1, vbHidden = 2, vbDirectory = 16 If Len(fName) > 0 Then isReadOnly = GetAttr(fName) And vbReadOnly End Function
Würde Dir das schon weiterhelfen?
Bitte nutzt den "Als Lösung akzeptieren"-Button, wenn ein Beitrag euer Problem oder eure Frage löst. Für hilfreiche Posts könnt ihr auch gerne Kudos vergeben.
Hallo @Luchner,
noch ein Hinweis von mir zum Thema umbenennen von Browsernamen.
Warum möchtest du die Namen im Browserbaum ändern, was ist der Hintergrund?
Ich frage deshalb, weil es ein Unterschied ist ob du den Displaynamen im Document änderst, oder die Bezeichnung im Browserbaum (Document.ComponentDefinition.Occurrences(i).DisplayName).
Wenn du den Namen der Occurrence änderst hat das nur Auswirkung auf die Benennung im Browserbaum der jeweiligen Baugruppe. Der Displayname des Documents bleibt erhalten. Man spricht auch von einem Alias Namen der sehr hilfreich sein kann wenn man ein Bauteil per iLogicRegel ansprechen will in kopierten Variantenkonstruktionen. Dann ist es nämlich egal wie das Teil "in Wirklichkeit" also mit Document.Displayname heisst und man braucht den Namen in der iLogic Regel nicht zu ändern. Umgekehrt kannst du dir durch unbedachtes umbenennen möglicherweise Funktionalität in iLogic Regeln kaputt machen, falls iLogicRegeln in den Baugruppen vorhanden sind.
Hintergrund der Geschichte ist, dass auch in den Bauteilen selbst der Name geändert werden soll da der Kunde auch dort einen Namen stehen haben will welcher sich aus unterschiedlichen Parametern zusammen setzt.
Und hier muss ich natürlich Normteile und Schreibgeschützte Teile überspringen um die Fehlermeldungen beim Speichern zu umgehen.
Danke, Andreas Luchner
Sie finden nicht, was Sie suchen? Fragen Sie die Community oder teilen Sie Ihr Wissen mit anderen.