Community
Inventor - Deutsch
Das Forum für alle Fragen rund um Autodesk Inventor, iLogic, Factory Design, Automation und mehr. Der Ort zum Fragen stellen, Antworten erhalten und Wissen teilen.
abbrechen
Suchergebnisse werden angezeigt für 
Anzeigen  nur  | Stattdessen suchen nach 
Meintest du: 

iLogic Regel zum ändern von Browsernames

10 ANTWORTEN 10
GELÖST
Antworten
Nachricht 1 von 11
Luchner
2559 Aufrufe, 10 Antworten

iLogic Regel zum ändern von Browsernames

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

 

10 ANTWORTEN 10
Nachricht 2 von 11
martin_winkler
als Antwort auf: Luchner

@Luchner

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.

Nachricht 3 von 11
Luchner
als Antwort auf: martin_winkler

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

Nachricht 4 von 11
martin_winkler
als Antwort auf: Luchner

@Luchner

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:

https://forums.autodesk.com/t5/inventor-customization/vba-see-if-part-is-checked-out-from-vault/m-p/...

http://adndevblog.typepad.com/manufacturing/2012/05/checking-whether-a-inventor-document-is-read-onl...

 

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.

 

Nachricht 5 von 11
Dennis.Ossadnik
als Antwort auf: martin_winkler

Hi Martin,

 

coole Funktion. Smiley (fröhlich)

 

Es gäbe eventuell auch einen anderen Weg, zu prüfen, ob es sich um eine Inhaltscenter-Teil handelt:

2018-06-13_14-41-55.jpg

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... Frustrierte Smiley

Vielleicht hilft die Information mal an der ein oder anderen Stelle...



Dennis Ossadnik
Senior Technical Support Specialist
Nachricht 6 von 11
Tarek_K
als Antwort auf: Dennis.Ossadnik

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

Nachricht 7 von 11
Luchner
als Antwort auf: Tarek_K

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

Nachricht 8 von 11
Dennis.Ossadnik
als Antwort auf: 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.



Dennis Ossadnik
Senior Technical Support Specialist
Nachricht 9 von 11
martin_winkler
als Antwort auf: Luchner

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.

 

 

 

Nachricht 10 von 11
Luchner
als Antwort auf: martin_winkler

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

Nachricht 11 von 11
Luchner
als Antwort auf: Dennis.Ossadnik

Vielen Dank.

 

Genau das habe ich gesucht.

 

Schöne Grüße, Andreas Luchner

Sie finden nicht, was Sie suchen? Fragen Sie die Community oder teilen Sie Ihr Wissen mit anderen.

In Foren veröffentlichen  

Autodesk State of Design & Make Report