ESAME:LIGHT CIRCLES

Ciao Stefano,

lo script non riesce a caricarmi la famiglia (il file si trova sul dekstop quindi lo string è giusto),ti mando la schermata con l'errore.Intanto faccio lo sweep e metto i miei parametri,così domani con l'aiuto del mio amico matematico trovo una funzione adatta alla forma della mia lampada.

 

 

 

 

AllegatoDimensione
Binary Data cerchioscript.rfa268 KB
Binary Data cerchiolamp.rvt2.16 MB
Binary Data cerchiolamp.rvt2.18 MB
Image icon errori.jpg382.98 KB

Commenti

Lo Sweep..Ok, ne ho creato uno,modificandone uno dalla famiglia profiles.

Il cerchio una volta importato su project funziona alla grande!Rimane il problema script!

Provo a lavorarci sopra!

Domani c'è revisione?

 

è un problema di incongruenza tra la macro, creata a livello di applicazione, e il linguaggio del codice, avente sintassi a livello di documento (mi scuso per non averlo specificato nel post). Ripeti i passaggi partendo però dalla creazione di modulo e macro sotto cerchiolamp (lo specifico livello di documento) nella finestra macro manager. Nel progetto da te spedito non è possibile leggere il codice proprio perchè creato a livello di applicazione. 

Caro Stefano,
grazie per l'intervento, spero vorrai passare anche agli esami!

per Emanuele:
purtroppo stamattina (sabato) non c'è revisione, ma dovresti
essere in grado di lavorare sullo script che abbiamo fatto all'ultima revisione, che, come giustamente osserva stefano, va costruito come script "di documento" (legato cioè al file cerchiolamp) e non "di applicazione" (cioè su Revit, applicabile a più file).

Non ti gira più?
Lavora proprio sullo stesso file, ok?

Posta sempre aggiornamenti e file in modo che io
oppure Stefano Guanieri possiamo aiutarti.

E' importante che tu riesca a farlo funzionare per
il tuo incontro di oggi sugli aspetti matematici!

a presto,
stefano

 

 

Vi ringrazio per la vostra dispondibilità, farò del mio meglio!

buon fine settimana!

Ciao Stefano,

mi dà errore sugli script:

1.Attribute 'CLSCompliantAttribute' cannot to be applied multiple times.

2.'NonStructural' in not a member of'Autodesk.Revit.StructuralEnums.StructuralType'

Che devo cambiare?

(ho allegato il file contenente lo script, è il secondo)
 

perchè hai cambiato il linguaggio del codice?

il linguaggio è sempre quello:vb net

gli screenshot che hai postato mostrano un codice in C#

Quello di prima era in C#, ne ho creato uno in VB che mi dà due errori!Ora ti mando la schermata

Il tuo problema è una conferma di quanto sostenuto dai professori Converso e Todesco: il C# è il linguaggio "meglio calibrato" per scrivere codici nello spazio Revit VSTA IDE e la maggiore documentazione presente sul web ne rappresenta un'ulteriore conferma. I due messaggi di errore sono due ambiguità (la sintassi è infatti corretta  e, riscrivendo nello stesso modo la seconda riga presunta errata, il problema scompare) tra le tante denunciate in posts dello scorso anno curati da Marco Mondello. Il consiglio quindi, avendo tu già sperimentato entrambe le alternative, è di optare per il C#.

Ciao Stefano,
ti ringrazio ancora per il tuo aiuto.Ho provato con C#, ma mi dà diversi errori.Sto cercando qualche blog online per capire come risolverli.
Ti mando la schermata dell'errore:

 
 PS:L'immagine l'ho allegata assieme hai files di revit(errori.jpg).

ti chiedo cortesemente di postare tutto il codice (anche in un file di testo)

E anche ti chiedo:
il codice che abbiamo provato a revisione funzionava ed era in C#, forse puoi ripartire da quello?

Quindi mandalo, ma dicci anche che sequenza di operazioni fai per metterlo in revit, cioè come lo inserisci (macro di documento e in C#). E dove stanno i file famiglia e progetto.

 

Dai che ti seguiamo, forza!

Stefano

 

System; Autodesk.Revit;

using

Autodesk.Revit.Creation;

using

Autodesk.Revit.Elements;

using

Autodesk.Revit.Geometry;

using

Autodesk.Revit.Symbols;

using

Autodesk.Revit.Structural.Enums;

namespace

{

[System.AddIn.

 

guarnieriAddIn("ThisDocument", Version = "1.0", Publisher = "", Description = "")]public partial class ThisDocument

{

 

{

}

 

{

}

private void Module_Startup(object sender, EventArgs e)private void Module_Shutdown(object sender, EventArgs e)

#region

 

{

 

 

}

VSTA generated codeprivate void InternalStartup()this.Startup += new System.EventHandler(Module_Startup);this.Shutdown += new System.EventHandler(Module_Shutdown);

#endregion

 

{

 

 

public void primoesempio()string fileName = @"C:\Documents and Settings\Administrator\Desktop\cerchioscript.rfa";//prova a caricare la famiglia

 

 

 

 

 

{

 

}

 

 

 

{

 

 

 

 

generico.Set(

 

 

}

 

 

}

}

}

FamilySymbol family = null;string list = "cerchioscript";if (!Document.LoadFamilySymbol(fileName, list, out family))throw new Exception("Unable to load " + fileName);int i;int n = 9;for (i = 0; i <= n; i = i + 1)XYZ location = Application.Create.NewXYZ(0.0, 0.0, i * 10);FamilyInstance unico = Create.NewFamilyInstance(location, family, StructuralType.NonStructural);Parameter generico = unico.get_Parameter("raggio");Math.PI * 0.5 * i / 10);

Il codice stava su application(macromanager).Quindi lo sposto sotto cerchio lamp creando un modulo(in C cancelletto) e lo edito.Aperto lo script incollo il codice. Lo salvo, gli dò Build e mi dà gli 8 errori.

 

using

using

ciao Emanuele,

Mandaci anche file (dove hai compiuto queste operazioni)
e famiglia, magari con un nuovo post.

Una domanda per Stefano.
Sembrava da alcune prove veloci, che la i non venisse considerata come lunghezza unitaria ma con un valore strano, che ora a memoria non ricordo. Emanuele puoi segnalarlo?
qualcosa come 400.

Per Emanuele:
ma il file usato nella revisione non funziona più?

a presto,

Stefano

 

il family symbol (ossia il tipo) viene nel codice richiamato con il nome della famiglia perchè, come spesso avviene, è l'unico presente al suo interno. In realtà questo gruppo di parametri non è registrato sotto alcun nome in maniera automatica. Per facilitare la ricerca del family symbol conviene quindi assegnare un nome al gruppo di parametri (tipo) all'interno dell'.rfa che verrà poi richiamato all'interno del codice.

il problema deriva esclusivamente dal copia e incolla. Devi solamente essere più ordinato.

1_ Crea in macro manager sotto cerchiolamp (ossia a livello di documento) il modulo prima e la macro poi in C#

2_ Nell' IDE (ambiente di sviluppo integrato) incolla solo il metodo main (la parte del codice compresa tra "string fileName = ..." e "Math.Pi * 0.5* i/10") all'interno della parentesi graffa già presente sotto public void primoesempio

3_ Aggiungi manualmente le direttive using mancanti (a questo punto dovrebbero sparire tutti i messaggi di errore)

4_ Personalizza il file modificando il percorso, il family symbol, l'.rfa e il nome del parametro

5_ Esegui il Debug, compila, salva e torna nella finestra di revit

6_ Torna in macro manager, seleziona la macro ed esegui