Supprimer tous les Etats d'affichages

Bonjour à tous;
Les etats d'affichages poluent mes fichiers "part" et "asm" (entre-autre à cause des dépliés, des mecanosoudés, et à chaques creations de configurations (il arrive que j'oubli de décocher la case "lier les apparences)).
J'ai trouvé un bout de macro qui supprimer tous les etats d'affichages -sauf celui en cours- et décoche la case "Lier les etats d'apparences aux configurations"

[vb]

  1. Dim swApp As Object 
  2.  
  3. Dim part As Object 
  4. Dim boolstatus As Boolean 
  5. Dim longstatus As Long 
  6. Dim longwarnings As Long 
  7. Dim modelDoc As SldWorks.ModelDoc2 
  8.  
  9.  
  10. Sub main() 
  11.  
  12. Set swApp = Application.SldWorks 
  13. Set modelDoc = swApp.ActiveDoc 
  14. Set part = swApp.ActiveDoc 
  15. boolstatus = modelDoc.RemoveAllDisplayStates 
  16. End Sub

[vb]

seulement cette macro ne fonctionne que sur les pièces.
Saurriez-vous comment modifier le code pour que cela s'applique aussi bien aux pièces qu'aux assemblages ?

nota: en gardant en memoire que je suis une buse en macro solidworks....

Cordialement.

Bonjour,

Je pense qu'il faut utiliser la commande SldWorks.AssemblyDoc dans d'autres lignes du style :

 

Dim swApp As Object 

Dim part As Object

Dim assy As Object

Dim boolstatus As Boolean

Dim longstatus As Long

Dim longwarnings As Long

Dim modelDoc As SldWorks.ModelDoc2

Dim AssyDoc As SldWorks.AssemblyDoc

 

Sub main() 

 

Set swApp = Application.SldWorks

Set modelDoc = swApp.ActiveDoc

Set part = swApp.ActiveDoc

Set AssyDoc=swApp.ActiveDoc

boolstatus = modelDoc.RemoveAllDisplayStates

Set assy = swApp.ActiveDoc

boolstatus = AssyDoc.RemoveAllDisplayStates

End Sub

 

Je regarde pour faire une condition (je suis une buse aussi en VBA donc voilà..)

1 « J'aime »

Merci Azrod

Mais comment n'y ai-je pas pensé..

Cela veut-il dire que je suis un cran en dessous de ton niveau de buse ? (je plaisante bien sur).

Je vais chercher des exemples de conditions part/Assembly.

Merci encore, je pense que c'est la bonne piste.

2 « J'aime »

"Cela veut-il dire que je suis un cran en dessous de ton niveau de buse ? (je plaisante bien sur)."

Ahah je n'espère pas en effet, mais mon niveau en VBA se limite VRAIMENT au strict minimum.

Au niveau d'un "Hello World" et encore :p

En espérant t'avoir aidé (et moi aussi en prime !)..

2 « J'aime »

oulala...je viens de m'appercevoir que la commande : "RemoveAllDisplayStates"

supprime aussi les apparences (celles du materiau courant) dans tous les etats d'affichages....c'est pas bon ça! Il vas falloir que je cherche autre chose.

 

Est-ce que tu es à la bonne version de SolidWorks. Il s'agit peut-être d'un bug :(

Une petite MaJ s'impose?

Je travaille sous Solidworks 2014 SP4 et Solidworks 2016 Sp4.

C'est pareils sur les deux versions....

Hello, il est normal que ça te supprime aussi les apparences, ce n'est pas un bug. 

Lien de la doc

> Removes all display states and appearances from this part document.

 

Je te laisse voir comment utiliser la fonction DeleteDisplayState dans la doc, il faut lui indiquer le nom de l'état d'affichage à supprimer. Pour faire ceci, il te faudra faire une boucle qui récupère tous les états d'affichage.

Bonjour;

Merci KVuilleumier pour cette information. Je vais fouiller de coté...et en profiter pour faire une formation sur les API, cela ne me fera pas de mal.