Esportazione coordinate Reference Point - Revit 2010 Masse concettuali
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.
Allegato | Dimensione |
---|---|
elenca_coordinate.txt | 1.68 KB |
Commenti recenti