ESAME:LIGHT CIRCLES_parte2

Buon giorno,

il file dove ho provato a caricare il codice è "cerchiolamp",mentre il filve rvt della revisione è 'cerchiolamp0001' dove la macro compare sotto application.Il file cerchioscript.rfa,l'ho modificato con lo sweep.

xStefano Guarnieri:

ho provato a seguire passo-passo le tue indicazioni,ma al momento del build riscontro sempre 8 errori.

Vi allego i files

AllegatoDimensione
Binary Data cerchiolamp.rvt2.2 MB
Binary Data cerchiolamp.0001.rvt2.16 MB
Binary Data cerchioscript.rfa268 KB
Binary Data cerchiolamp_web.rvt2.33 MB

Commenti

caro Emanuele,

ho dato un'occhiata al tuo codice,
e generato questa immagine:

 
Dunque, ti metto il file direttamente all'interno
del tuo post iniziale. Tieni conto che:

il tuo family symbol si chiama cerchio3.1_sweep_nidificato_stefano



qui sotto il codice con evidenziate
le parti da cambiare: 

(Stefano correggimi pure se ho dimenticato 
qualcosa). Emanuele facci sapere se funziona,
poi affrontiamo gli altri temi.

 

 

--

public void  primoesempio()

 

 //NOME DELLA PROCEDURA

 

        {


            string fileName = @"C:\Documents and Settings\stephen\Desktop\lightcircles\cerchioscript.rfa";

 

//PATH DEL FILE RFA


            //prova a caricare la famiglia


            FamilySymbol family = null;




            string list = "cerchio3.1_sweep_nidificato_stefano";


//NOME DEL FAMILY SYMBOL, cioè il TIPO



            if (!Document.LoadFamilySymbol(fileName, list, out family))

            {

                throw new Exception("Unable to load " + fileName);

            }


            int i;

            int n = 19;


            for (i = 0; i <= n; i = i + 1)

            {


                XYZ location = Application.Create.NewXYZ(0.0, 0.0, i * 2);


                FamilyInstance unico = Create.NewFamilyInstance(location, family, StructuralType.NonStructural);

                Parameter generico = unico.get_Parameter("raggio");


//IL PARAMETRO DA VARIARE (in questo caso il raggio)


                generico.Set(Math.PI * 0.5 * i / 10);


//LA FUNZIONE IN BASE ALLA QUALE VARIA







 cari Stefano ed Emanuele,

sembra che il valore di i
nello script coincida con circa 300.

E' una domanda in particolare per Stefano,
non dovrebbe essere 1 ? Ti è capitato di incontrare
problemi di unità di misura nel lavoro?

Mi pare di ricordare un vecchio post di Marco, che
raccomanda di cambiare unità di misura, se lo troviamo
lo includerei nel testo del codice.

a presto,

Stefano

 

Il sito da te (Stefano) indicatomi è una fonte inesauribile di informazioni

 

 

caro Stefano,

grazie! Ma in cambio ti chiedo..
che facciamo anche noi lo stesso!

quindi:

 

1. di fare un intervento sul tema delle unità di misura negli script (già trattato da Marco l'anno scorso).

2. pubblicare un tuo esempio progettuale!

Le due cose possono ovviamente coincidere!
(con un codice commentato!)

Se non hai nuove cose...va bene anche
la lampada ultima spiegata per esteso! (con famiglie)

ciao e a dopo,

 

Stefano

 

p.s.

vieni Giovedì? Ti ricordo che non hai mai verbalizzato
il tuo esame 2009! 

Grazie ragazzi,

la lampada sta prendendo forma!Lo script quindi funziona alla grande!Grazie al mio amico matematico stiamo utilizzando il software Mathematica per trovare la forma adatta alla mia lampada!.vediamo un pò quello che esce fuori...

 

caro Emanuele,

complimenti!
Ora ti chiedo, in vista dell'esame, e come tradizione del corso,
di documentare tutto ! Vedo che usi una funzione di quarto 
grado, come l'hai scelta? Avete risolto il problema delle unità
di misura? Come stai lavorando? in centimetri?  Manda per ogni ipotesi la equazione, l'eventuale intervallo scelto,
facci vedere come l'hai variata, posta sempre immagine, file e script.

ecc..

Senza dimenticare le questioni costruttive,

e la luce! Che luce fanno? Renderizza! (Revit può farlo)
variare i parametri e controllare la luce relativa, è
ovviamente lo scopo ultimo del lavoro.

ma intanto complimenti, e buon lavoro,

 

Stefano

 

 

Ecco il link all'utilissimo POST di Marco Mondello
del sito 2009, nel quale si introducono i problemi
tipici di un primo sguardo agli script (Attenzione:
molte cose sono in VISUAL BASIC).
 

 

Revit VB MACRO hints

 

di Marco Mondello  

Di seguito la copia della parte sulle UNITA'

3_units 

 

Vb is a-dymensional, while Revit...well we know. For this reason the numbers we're using in the procedure has not their own unit: they don't use the customized configuration of each .rvt file, but the preconfigured combination which already exist in revit. Which mean that in vb were using DECIMAL FEET (the first unit we encounter in the units window....). We can either change the vb configuration (i don't actually know how) or we must convert each formula, with an appropriate coefficient.

centimeter to foot = 30,48

foot to centimeter = 1/30,48

foot to metre = 1/(30,48 x 100)

 

        

'convertitore cm/foot

Dim K As Double

K = 30.48

 

 

i ricorrenti 8 messaggi di errore, mostrati nel jpg allegato e riscontrabili anche nel progetto cerchiolamp_1, nascono sicuramente dal copia e incolla (altrimenti è un problema di sistema). Il namespace deve coincidere con il nome del modulo creato(avviene in automatico): nel progetto in questione il modulo è da te nominato dai  mentre il namespace nell'ide porta ancora il nome del modulo della macro di esempio presente su questo sito (versione 2009). Sostituisci il primo termine al secondo e vedrai sparire tutti i messaggi di errore.

Analogamente, il termine che segue public void deve coincidere con il nome da te assegnato alla macro.

Come aggiunta
a quanto scritto da Stefano Guarnieri ecco le immagini:

Iniziamo con lo script:
(ho "compattato" alcune parti cliccando sui "+" di lato alla lista)

Quando si sceglie il nome del Modulo,
il Modulo compare nello script automaticamente
come namespace - in questo caso primoesempio

 
Altra cosa è il nome della MACRO,
cioè l'operazione vera e propria (nel nostro caso un ciclo),
che invece è quella dopo "public void". Qui ho messo a titolo
di esempio "lampada".

Quando si lancia, la finestra Macro si ha quindi questo:



 

Dentro al namespace (o modulo) primoesempio,
c'è la Macro "lampada"

 

OK?

Facci sapere!