Esportazione coordinate Reference Point - Revit 2010 Masse concettuali

user warning: Expression #1 of ORDER BY clause is not in SELECT list, references column 'tecniche2010.nc.last_comment_timestamp' which is not in SELECT list; this is incompatible with DISTINCT query: SELECT DISTINCT nc.nid FROM 10_node_comment_statistics nc INNER JOIN 10_node_access na ON na.nid = nc.nid WHERE (na.grant_view >= 1 AND ((na.gid = 0 AND na.realm = 'all') OR (na.gid = 1 AND na.realm = 'nodeaccess_rid') OR (na.gid = 0 AND na.realm = 'nodeaccess_uid') OR (na.gid = 0 AND na.realm = 'nodeaccess_author'))) AND ( nc.comment_count > 0 )ORDER BY nc.last_comment_timestamp DESC LIMIT 0, 10 in /var/www/design.rootiers.it/2010/modules/comment/comment.module on line 313.
Versione stampabileVersione stampabileVersione PDFVersione PDF

Pubblichiamo lo stato di avanzamento del lavoro
sulle procedure di esportazione e condivisione di
coordinate di punti.

Un semplice script agisce su una selezione di elementi
di riferimento, ne estrae i punti, e poi ne mette a
di disposizione le coordinate XYZ, per ora in un Alert.

A Simple script exporting XYZ coordinates
of selected reference points (2010 conceptual mass)
click on "leggi tutto" to get the code.


script by Stefano Guarnieri, TPP

 

Ne approfittiamo per ricordare la procedura
di costruzione e lancio di una Macro, usando
come esempio quella corrente.

1.
Per prima cosa, costruiremo una macro a livello di applicazione, dandogli un nome, ma stabilendo prima
il suo module (nel codice namespace):

attenzione, no spazi nel nome!
Si tratta di una libreria di classi.

2.


a quel punto, definito il module (nel nostro caso, esportazione punti) , si puo iniziare a costruire una prima macro

3.

Ecco la struttura base, data in automatico dal programma:


using  .....

namespace .....


poi...
in automatico sono messi i due private void

(startup e shutdown) che per ora non abbiamo usato


poi c'è il codice (il "metodo main")


una classe infatti, può essere un contenitore

di diversi "metodi" all'interno dei quali ce

n'è uno definito main che serve a richiamarne

eventuali altri.


esso sta sotto al campo di default con il 

campo grigio "VSTA generated code"



Il nostro script va copiato e incollato così...

1 -

incollare il "Metodo Main"
che si chiama  
nel codice "public void".


nel nostro caso:

public void cerca_punto()

        {

            ElementIterator iteratore = 


ActiveDocument.get_Elements(typeof(ReferencePoint));

            String coord = String.Format("LE COORDINATE DEI PUNTI DI RIFERIMENTO 


SELEZIONATI SONO: \n\n\n" );

            

            while (iteratore.MoveNext())

            {

                Element elemento = iteratore.Current as Element;

                

                

                String x = "X";

                String y = "Y";

                String z = "Z";

                

                    ReferencePoint elementosel = elemento as ReferencePoint;


                    Autodesk.Revit.Geometry.XYZ posizione = elementosel.Position;



                    coord += String.Format("{0,-30}  {1,45}  {2,75}\n{3,-60}  {4,0}  


{5,60}\n\n", x, y, z, posizione.X, posizione.Y, posizione.Z);

            }


                MessageBox.Show(coord);

     }



 

Al Metodo servono degli "using" cioè il percorso

dove trovare l'elemento richiamato all'interno 

del codice.


Se non ci fosse lo "using", bisognerebbe 
dichiarare la classe con l'intero path, 
ad esempio invece di scrivere:


ReferencePoint



bisognerebbe scrivere

Autodesk.Revit.Elements.ReferencePoint


Ed è questo infatti il modo in cui i codici sono scritti in genere negli esempi in rete (codici "compattati", senza necessità di "using").

2 -

e incollare poi i necessari "using"


nel nostro caso:

using System;
using Autodesk.Revit;
using Autodesk.Revit.Elements;
using System.Windows.Forms;

 

quando si mettono gli using, bisogna però aggiungere
la libreria necessaria a destra in "project explorer"
tra le "references" (riferimenti).


8.
nel nostro caso, va aggiunta "System,Windows.Forms"




10.
A questo punto lo script è pronto per funzionare:

se non ci sono più errori nella finestra in basso...
si procede al "debug" 

dopo il debug per lavorare di nuovo bisogna premere il tasto
stop altrimenti resta in debugging.

 

A questo punto, se il debug non dà problemi
si può compilare (build)

e....

si vede lo script nella finestra di revit relativa




11.

Il funzionamento e l'uso
A questo punto inizia la parte progettuale: si entra nell'ambiente di massa concettuale, si parte da un sistema di punti, e si strutturano forme a partire
da essi. E' importante, in questo caso, usare la funzione 3D Snapping per
vincolare gli oggetti grafici da essi derivati, alla posizione dei punti. 










 
Il lavoro futuro si concentrerà sulla esportazione delle coordinate
in file esterni da passare come coordinate dei nodi per analisi strutturali.



AllegatoDimensione
elenca_coordinate.txt1.68 KB