ilogic - Delete sheet whith specific path

ilogic - Delete sheet whith specific path

denis.semeniuc
Advocate Advocate
450 Visites
6 Réponses
Message 1 sur 7

ilogic - Delete sheet whith specific path

denis.semeniuc
Advocate
Advocate

Bonjour,

je essai de creer une regle quelle supprime les pages , chemain de reference de la modele contiene " Bibliotheque".

 

 

    oDoc = ThisApplication.ActiveDocument

Dim oSheet As Sheet

For Each oSheet In ThisApplication.ActiveDocument.Sheets
	
	Dim oView As DrawingViews = oDoc.ActiveSheet.DrawingViews
	oViews = oView.Item(1)
	Dim oModelDoc As Document = oViews.ReferencedDocumentDescriptor.ReferencedDocument
	Dim oFullFilePath As String = oModelDoc.FullFileName
	modelName = IO.Path.GetFileName(oModelDoc.FullFileName)
		If oFullFilePath.Contains("Bibliotheque") Then
				oSheet.Delete
		End If
Next
0 J'aime
Solutions acceptées (1)
451 Visites
6 Réponses
Replies (6)
Message 2 sur 7

CattabianiI
Collaborator
Collaborator
Solution acceptée

And what's wrong with that code? you get an exception?

Try to store the sheets to be deleted in a list and then delete them.

    oDoc = ThisApplication.ActiveDocument

Dim oSheet As Sheet
Dim toBeDeleted As new List(of Sheet)()
For Each oSheet In ThisApplication.ActiveDocument.Sheets
	
	Dim oView As DrawingViews = oDoc.ActiveSheet.DrawingViews
	oViews = oView.Item(1)
	Dim oModelDoc As Document = oViews.ReferencedDocumentDescriptor.ReferencedDocument
	Dim oFullFilePath As String = oModelDoc.FullFileName
	modelName = IO.Path.GetFileName(oModelDoc.FullFileName)
		If oFullFilePath.Contains("Bibliotheque") Then
				toBeDeleted.Add(oSheet)
		End If
Next

For each ss As Sheet in toBeDeleted
  ss.Delete()
next




0 J'aime
Message 3 sur 7

denis.semeniuc
Advocate
Advocate

Problemme est que ou il fait rien ou il suprimme tous les pages

0 J'aime
Message 4 sur 7

denis.semeniuc
Advocate
Advocate

je ne comprend pas la relation

 

0 J'aime
Message 5 sur 7

denis.semeniuc
Advocate
Advocate

je pence que la detection des Fichier de la biblioteque ne pas correcte. 

 

le but de cette regle de suprimer les majes quelle contiene le dessin des pieces de la "bibliotheque" ou "centre de contenu"

0 J'aime
Message 6 sur 7

ThomasB44
Mentor
Mentor

Salut @denis.semeniuc 

Selon le besoin que tu décris, ta boucle n'est pas correcte, en premier tu boucles sur les feuilles, OK

For Each oSheet In ThisApplication.ActiveDocument.Sheets

Mais ensuite tu déclares la feuille active puis la 1ère vue...ce qui n'est pas correct

	Dim oView As DrawingViews = oDoc.ActiveSheet.DrawingViews
	oViews = oView.Item(1)

Il faut boucler sur chaque feuille, puis chaque vue, et enfin regarder la référence du document de la vue :

oSheets = oDoc.Sheets
For Each oSheet In oSheets
	oViews = oSheet.DrawingViews
	For Each oView In oViews
		oFullFilePath = oView.ReferencedDocumentDescriptor.FullDocumentName

Ensuite tu pourras filtrer sur la référence du chemin, et supprimer la feuille en dehors de la boucle comme conseillé par @CattabianiI , sinon ta boucle va continuer sur une feuille déjà supprimée, et le code produira une erreur.


Thomas
Mechanical Designer / Inventor Professional 2025
Inventor Professional EESignature

0 J'aime
Message 7 sur 7

denis.semeniuc
Advocate
Advocate

Merci. 

tres bonne point. Finalement je trouvé l'error dans mon code, je n'ai pas activer la feuille.

 

Voici la version quelle marche de mon coté: 

On Error Resume Next
Dim oDrawDoc As DrawingDocument
    oDrawDoc = ThisApplication.ActiveDocument
Dim Sheet As Inventor.Sheet
Dim Cursheet As String
     Cursheet = oDrawDoc.ActiveSheet.Name
 
For Each Sheet In oDrawDoc.Sheets
        Sheet.Activate
Dim oView As DrawingViews = oDrawDoc.ActiveSheet.DrawingViews
oViews = oView.Item(1)		
Dim oModelDoc As Document = oViews.ReferencedDocumentDescriptor.ReferencedDocument
Dim oFullFilePath As String = oModelDoc.FullFileName
		If oFullFilePath.Contains("Bibliotheque") Then
				Sheet. Delete()
				
		End If

Next

 

 

Dans mon cas dans la vue 1 que je prefer de chercher, parce que c'est la meme reference pour tous les vues.

 

Merci a tous.