Tesi master theses
Devoto fabrication partner
CNC: real experiences | case studies
Acoustics projects | form | analisys
Custom Families Revit
Data Production model to data
Visual Basic scripting for Revit
Barrisol project for a conferece hall
A seguito della lezione di Gian Marco Todesco di martedì scorso, pubblichiamo un esempio di Macro molto semplice, costruita durante una prima sessione di lavoro e perfettibile.
Click su "leggi tutto" per saperne di più e scaricarlo!
This quick Macro covers importing a family and loading an instance of a family symbol. This to build up a cycle that copies the instance along the Z-axis and at the same time modifies a family parameter of every instance.
Alla base dello script c'è una famiglia "PilastroFascia.rfa" con un solo parametro (di famiglia, che si chiama "pippo" ed è l'angolo tra due profili) e un solo tipo (che si chiama "PilastroFascia", uguale alla famiglia, come nella maggior parte delle vostre famiglie)
Lo script:
- carica la famiglia
- ne costruisce una istanza
attraverso un ciclo, ripete per nove volte delle operazioni:
- copia l'istanza (nel nostro caso lungo l'asse Z)
- varia il parametro "pippo" (che è l'angolo)
Il risultato è quello che vedete nell'immagine.
Per usarla e modificarla, dovete scaricare RVT e RFA, metterli nella stessa cartella, poi:
Per trovare la Macro nel file RVT
(dopo averlo installato come detto a lezione a partire dal file di installazione di Revit 2009)
nella lista delle Macro "del file", cioè a livello documento
dovreste trovare una con scritto "CopiaConParametro".
Se non ci fosse, potete sempre farla come "nuova",
trovate il testo qui sotto, in una versione non commentata, nella giornata di domani ne mando una migliore:
Imports System
Imports Autodesk
Imports Autodesk.Revit
Imports Autodesk.Revit.Elements
<CLSCompliant(False)> _
Partial Class ThisDocument
Private Sub ThisDocument_Startup(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Startup
End Sub
Private Sub ThisDocument_Shutdown(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Shutdown
End Sub
Public Sub CopiaConParametro()
Dim fullPath As String = "pilastroFascia.rfa"
If (Not LoadFamily(fullPath)) Then
MsgBox("Loaded a family nono")
Return
End If
Dim fs As Symbols.FamilySymbol = Nothing
If (Not LoadFamilySymbol("pilastroFascia.rfa", "pilastroFascia", fs)) Then
MsgBox("Non riesco a caricare il family symbol. ciao ciao")
Return
End If
Dim phi As Double
phi = 10
Dim i As Integer
For i = 0 To 9
Dim fi As FamilyInstance
Dim p2 As Geometry.XYZ = Application.Create.NewXYZ(0.0, 0.0, i * 10)
fi = Create.NewFamilyInstance(p2, fs, Structural.Enums.StructuralType.NonStuctural)
Dim param As Parameter = fi.ParametersMap("pippo")
param.Set(Math.PI * 0.5 * i / 10)
Next
End Sub
End Class
Allegato | Dimensione |
---|---|
pilastroFascia.rfa | 196 KB |
CopiaconParametro.rvt | 1.07 MB |
commenti
MarcoMondello
21 Gennaio, 2009 - 18:35
Collegamento permanente
HANDLE DI FILE NON VALIDO
CIAO STEFANO,qui ho provato a lanciare la macro e funziona, ma quando ci ho messo la mia famiglia mi dice " e stato associato un handle di file non valido". non riesco a sbloccare la situazione che devo fare?Marco
stefanoguarnieri
21 Gennaio, 2009 - 21:05
Collegamento permanente
maCRomaRco
Credo dipenda dal percorso di ricerca. Prova a caricare la famiglia manualmente nel progetto (ho avuto il tuo stesso problema e questa pare essere una soluzione). Il paradosso: ho provato l'assemblaggio del tuo progetto partendo dalla famiglia RIBs+SPINEs (non caricata manualmente, non aperta in Revit contemporaneamente al progetto, salvata sul desktop) e funziona perfettamente.
MarcoMondello
22 Gennaio, 2009 - 11:23
Collegamento permanente
mo' provi?
grazie stefano...sto pubblicando il post dei miei progressi, non è che poi puoi scaricare il materiale e vedere se a te funge in questa maniera? ti ringrazioMArco
MarcoMondello
22 Gennaio, 2009 - 20:53
Collegamento permanente
sono riuscito
tutto ok la macro works
stefanoguarnieri
22 Gennaio, 2009 - 22:19
Collegamento permanente
macro: soluzioni a problemi di avvio
riporto alcuni metodi pratici che aggirano l'ostacolo di avvio della macro (chiedo conferma a chiunque abbia risolto il problema seguendo procedure analoghe) e propongo di postarne altri:
MarcoMondello
23 Gennaio, 2009 - 17:47
Collegamento permanente
modifica di macro
Aggiungo a quanto detto da Stefano che quando modifichi una macro:1. non vengono soppressi gli elementi generati dalla macro precedente2. per farla ripartire bene non basta salvare ,almeno non a me: devo pure fare e interrompere il debug