Vai al contenuto

#05 – Modificare il materiale di parti in ambiente assemblato

#05

Descrizione :

Il titolo originale dal blog di Clint Brown è “Automatic Drawings with iLogic”, forse un po’ troppo ambizioso, comunque questo plugin aiuta la messa in tavola di modelli 3D in modo semiautomatico, è molto utile per chi si vuole cimentare nella programmazione e aspirare al DISEGNO AUTOMATICO.

Come funziona :

Il plugin richiede il file di disegno *.idw o *.dwg da aprire, rimanda gli aggiornamenti delle quote durante l’apertura, crea una lista con i valori di tutte le quote prima dell’aggiornamento, aggiorna le quote inserendo un testo suffisso alla dimensione modificata con la dimensione originaria.

Codice :

Sub Main()
	Dim oAsmDoc As AssemblyDocument = ThisApplication.ActiveDocument
	Dim oTM As TransactionManager = ThisApplication.TransactionManager
	Dim oSS As SelectSet = oAsmDoc.SelectSet
	If oSS.Count = 0 Then
		MessageBox.Show("You have not selected components.", "Error!",MessageBoxButtons.OK,MessageBoxIcon.Error)
		Exit Sub
	End If
	Dim oOccurrence As ComponentOccurrence
	Dim oOccsList As New List(Of ComponentOccurrence)
	Dim materialName As String = "Stainless Steel"
	Dim oAssetlib As AssetLibrary
	Dim oAsset As Asset
	For Each oAssetlib In ThisApplication.AssetLibraries
		For i As Integer = 1 To oAssetlib.MaterialAssets.Count
			If oAssetlib.MaterialAssets.Item(i).DisplayName = materialName Then
				oAsset = oAssetlib.MaterialAssets.Item(i)
				GoTo NextStep
			End If
		Next
	Next
	NextStep :
	If oAsset Is nothiong Then Exit Sub
	Dim newTM As Transaction = oTM.StartTransaction(oAsmDoc, "ChangeMaterial")
	Dim strLocName, strLocType, currentMaterialName As String
	For i As Integer = 1 To oSS.Count
		If oSS.Item(i).Type = ObjectTypeEnum.kComponentOccurrenceObject Then
			oOccsList.Add(oSS.Item(i))
		End If
	Next i
	For i As Integer = 0 To oOccsList.Count -1
		oOccurrence = oOccsList.Item(i)
		If Not oOccurrence.Suppressed Then
			If TypeOf oOccurrence.Definition.Document Is PartDocument Then
				Dim oPartDoc As PartDocument = oOccurrence.Definition.Document
				If oPartDoc.IsModifiable Then
					oPartDoc.GetLocationFoundIn(strLocName, strLocType)
					If Not strLocType = kLibraryLocation Then
						currentMaterialName = oPartDoc.ActiveMaterial.DisplayName
						If currentMaterialName <> oAsset.DisplayName Then
							oPartDoc.ActiveMaterial = oAsset
						End If
					End If
				End If
			End If
		End If
	Next i
	newTM.End()
	oAsmDoc.Update()
'	oAsmDoc.Save()
End Sub

Come utilizzarlo :

Per rendere operativo questo plugin puoi copiare ed incollare il testo del codice all’interno di una regola iLogic, creare una macro VBA, oppure utilizzarlo per creare altri plugin in VB.NET.

Puoi scaricare direttamente il file di testo:
#001-Evidenzia le quote modificate all’apertura di un disegno

Per maggiori informazioni sull’utilizzo del codice riferirsi alla pagina dedicata.

Origine :

https://forums.autodesk.com/t5/inventor-ilogic-and-vb-net-forum/how-do-i-change-all-the-material-properties-for-parts-at-the/m-p/11987861#M153063
autore : Andrii Humeniuk

IT