Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Sebbene Dynamo sia stato originariamente creato pensando a Revit, la sua versatilità come strumento di programmazione visiva va oltre Revit. Dynamo è integrato anche in Civil 3D, consentendo agli utenti di creare potenti routine di automazione per i progetti di infrastrutture civili. È uno strumento estremamente utile per elaborare qualsiasi cosa, dalle attività più comuni ai workflow di progettazione più complessi, aiutando a risparmiare tempo, ottimizzare i progetti e prendere decisioni migliori. Dynamo offre un'intera suite di nodi appositamente progettata per Civil 3D, nonché librerie di terze parti provenienti da una vivace comunità.
Questo capitolo della Guida introduttiva si concentrerà su Dynamo for Civil 3D, partendo dalle nozioni di base e arrivando ad argomenti più avanzati.
Uno dei molti casi di utilizzo importanti di Dynamo è il posizionamento dinamico di oggetti distinti lungo un modello di modellatore. Spesso è necessario posizionare gli oggetti in punti indipendenti dagli assiemi inseriti lungo il modellatore, un compito molto noioso da svolgere manualmente. E quando la geometria orizzontale o verticale del modellatore cambia, ciò comporta una notevole mole di rilavorazione.
Lettura dei dati da un file esterno (in questo caso Excel)
Organizzazione dei dati nei dizionari
Utilizzo di sistemi di coordinate per controllare posizione/scala/rotazione
Inserimento di riferimenti di blocco
Visualizzazione della geometria in Dynamo
Questo grafico verrà eseguito su Civil 3D 2020 e versioni successive.
Iniziare scaricando i file di esempio riportati qui sotto, quindi aprendo il file DWG e il grafico di Dynamo.
È consigliabile salvare il file Excel nella stessa directory del grafico di Dynamo.
Ecco una panoramica della logica di questo grafico.
Leggere il file Excel e importare i dati in Dynamo
Ottenere le linee caratteristiche dalla linea base del modellatore specificata
Generare sistemi di coordinate lungo la linea caratteristica del modellatore in corrispondenza delle progressive desiderate
Utilizzare i sistemi di coordinate per posizionare i riferimenti di blocco nello spazio modello
Procediamo!
In questo grafico di esempio, si utilizzerà un file Excel per memorizzare i dati impiegati da Dynamo per posizionare i riferimenti di blocco dei lampioni. La tabella ha questo aspetto.
L'utilizzo di Dynamo per la lettura dei dati da un file esterno (ad esempio un file Excel) è una strategia ottimale, soprattutto quando i dati devono essere condivisi con altri membri del team.
I dati di Excel vengono importati in Dynamo in questo modo.
Ora che sono disponibili i dati, è necessario suddividerli per colonna (Corridor, Baseline, PointCode e così via) in modo che possano essere utilizzati nel resto del grafico. Un metodo comune per eseguire questa operazione consiste nell'utilizzare il nodo List.GetItemAtIndex e specificare il numero di indice di ogni colonna desiderata. Ad esempio, la colonna Corridor si trova all'indice 0, la colonna Baseline all'indice 1 e così via.
Sembra a posto, giusto? Ma c'è un potenziale problema con questo approccio. Cosa succede se l'ordine delle colonne nel file Excel cambia in futuro? Oppure tra due colonne ne viene aggiunta una nuova? Il grafico non funzionerà correttamente e richiederà un aggiornamento. È proteggere il grafico in futuro inserendo i dati in un dizionario, con le intestazioni di colonna di Excel come keys e gli altri dati come values.
Se non si conoscono i dizionari, consultare la sezione Dizionari in Dynamo.
In questo modo il grafico risulta più resiliente, perché consente di cambiare l'ordine delle colonne in Excel con una certa flessibilità. Finché le intestazioni di colonna rimangono invariate, è possibile recuperare i dati dal dizionario utilizzando key (ovvero l'intestazione di colonna), che è la procedura successiva.
Ora che i dati di Excel sono stati importati e sono pronti, iniziare a utilizzarli per ottenere da Civil 3D alcune informazioni sui modelli di modellatore.
Selezionare il modello di modellatore in base al nome.
Ottenere una linea base specifica all'interno del modellatore.
Ottenere una linea caratteristica all'interno della linea base secondo il relativo codice punto.
Ora si procederà alla generazione di sistemi di coordinate lungo le linee caratteristiche del modellatore in corrispondenza dei valori di progressiva specificati nel file Excel. Questi sistemi di coordinate verranno utilizzati per definire la posizione, la rotazione e la scala dei riferimenti di blocco dei lampioni.
Se non si conoscono i sistemi di coordinate, consultare la sezione Vettore, piano e sistema di coordinate.
Si noti che qui viene utilizzato un blocco di codice per ruotare i sistemi di coordinate in base al lato della linea base su cui si trovano. Si potrebbe ottenere questo risultato utilizzando una sequenza di più nodi, ma questo è un buon esempio di una situazione in cui è più facile scriverlo.
Se non si conoscono i blocchi di codice, consultare la sezione Blocchi di codice e DesignScript.
È quasi fatta! Si hanno tutte le informazioni necessarie per poter collocare effettivamente i riferimenti di blocco. La prima cosa da fare è ottenere le definizioni di blocco che si desidera utilizzare nella colonna BlockName del file Excel.
Da qui, l'ultimo passaggio consiste nella creazione dei riferimenti di blocco.
Quando si esegue il grafico, dovrebbero essere visualizzati nuovi riferimenti di blocco nello spazio modello lungo il modellatore. Ed ecco la parte più interessante. Se la modalità di esecuzione del grafico è impostata su Automatica e si modifica il file Excel, i riferimenti di blocco vengono aggiornati automaticamente.
È possibile leggere ulteriori informazioni sulle modalità di esecuzione del grafico nella sezione Interfaccia utente.
Di seguito è riportato un esempio di esecuzione del grafico mediante il Lettore Dynamo.
Se non si conosce il Lettore Dynamo, consultare la sezione Lettore Dynamo.
Può essere utile visualizzare la geometria del modellatore in Dynamo per fornire un contesto. In questo particolare modello i solidi del modellatore sono già stati estratti nello spazio modello, pertanto verranno importati in Dynamo.
Ma c'è qualcos'altro che occorre considerare. I solidi sono di un tipo geometrico relativamente "pesante", il che significa che questa operazione rallenta il grafico. Sarebbe bello se esistesse un modo semplice per scegliere se si desidera visualizzare o meno i solidi. La risposta ovvia è semplicemente scollegare il nodo Corridor.GetSolids, ma in questo modo verranno generati avvisi per tutti i nodi a valle, il che crea un po' di confusione. Questa è una situazione in cui il nodo ScopeIf ha un ruolo fondamentale.
Notare che il nodo Object.Geometry mostra una barra grigia nella parte inferiore. Ciò significa che l'anteprima del nodo è disattivata (accessibile facendo clic con il pulsante destro del mouse sul nodo), il che consente a GeometryColor.ByGeometryColor di evitare di "contendersi" con altra geometria la priorità di visualizzazione nell'anteprima di sfondo.
Il nodo ScopeIf consente in sostanza di eseguire un intero ramo di nodi in modo selettivo. Se l'input test è false, non verrà eseguito alcun nodo connesso al nodo ScopeIf.
Di seguito è riportato il risultato dell'anteprima di sfondo di Dynamo.
Ecco alcune idee su come espandere le funzionalità di questo grafico.
Aggiungere una colonna rotation al file Excel e utilizzarla per guidare la rotazione dei sistemi di coordinate.
Aggiungere offset orizzontali o verticali al file Excel in modo che i lampioni possano deviare dalla linea caratteristica del modellatore, se necessario.
Anziché utilizzare un file Excel con valori di progressiva, generare i valori di progressiva ** direttamente in Dynamo** utilizzando una progressiva iniziale e una spaziatura tipica.
La progettazione ingegneristica di un tipico complesso residenziale prevede prevede la collaborazione con diversi impianti di pubblica utilità sotterranei, come le fognature, lo scarico delle acque piovane, l'acqua potabile o altri. In questo esempio si dimostrerà come Dynamo può essere utilizzato per disegnare le connessioni dei servizi da una conduttura di distribuzione ad un determinato lotto (ad esempio, una particella). È frequente che ogni lotto richieda una connessione dei servizi, il che comporta un notevole e noioso lavoro di posizionamento di tutti i servizi. Dynamo può accelerare il processo disegnando automaticamente la geometria necessaria con precisione, oltre a fornire input flessibili che possono essere adattati agli standard delle agenzie locali.
Utilizzo del nodo Select Object per l'input dell'utente
Utilizzo dei sistemi di coordinate
Utilizzo di operazioni geometriche quali Geometry.DistanceTo e Geometry.ClosestPointTo
Creazione di riferimenti di blocco
Controllo delle impostazioni di unione di oggetti
Questo grafico verrà eseguito su Civil 3D 2020 e versioni successive.
Iniziare scaricando i file di esempio riportati qui sotto, quindi aprendo il file DWG e il grafico di Dynamo.
Ecco una panoramica della logica di questo grafico.
Ottenere la geometria della curva per la conduttura di distribuzione
Ottenere la geometria della curva di una linea del lotto selezionata dall'utente, invertendola se necessario
Generare i punti di inserimento per i contatori
Ottenere i punti sulla conduttura di distribuzione più vicini alle posizioni dei contatori
Creare riferimenti di blocco e linee nello spazio modello
Procediamo!
Il primo passaggio consiste nel caricare la geometria per la conduttura di distribuzione in Dynamo. Anziché selezionare singole linee o polilinee, si otterranno tutti gli oggetti su un determinato layer e li si unirà come PolyCurve di Dynamo.
Se non si conosce la geometria della curva di Dynamo, consultare la sezione Curve.
Successivamente, è necessario caricare in Dynamo la geometria per una linea del lotto selezionata, in modo da potervi lavorare. Lo strumento giusto per il processo è il nodo Select Object, che consente all'utente del grafico di selezionare un oggetto specifico in Civil 3D.
Occorre anche gestire un potenziale problema che potrebbe sorgere. La linea del lotto ha un punto iniziale e un punto finale, il che significa che ha una direzione. Affinché il grafico produca risultati coerenti, è necessario che tutte le linee del lotto abbiano una direzione coerente. È possibile tenere conto di questa condizione direttamente nella logica del grafico, il che rende il grafico più resiliente.
Ottenere i punti iniziale e finale della linea del lotto.
Misurare la distanza da ogni punto alla conduttura di distribuzione, quindi determinare quale distanza è maggiore.
Il risultato desiderato è che il punto iniziale della linea è più vicino alla conduttura di distribuzione. In caso contrario, si inverte la direzione della linea del lotto. Altrimenti, è sufficiente tornare alla linea del lotto originale.
È arrivato il momento di capire dove verranno posizionati i contatori. In genere, il posizionamento è determinato dai requisiti dell'agenzia locale, pertanto è sufficiente fornire valori di input che possono essere modificati in base alle diverse condizioni. Utilizzeremo un sistema di coordinate lungo la linea del lotto come riferimento per la creazione dei punti. In questo modo è molto semplice definire gli offset rispetto alla linea del lotto, indipendentemente dall'orientamento.
Se non si conoscono i sistemi di coordinate, consultare la sezione Vettore, piano e sistema di coordinate.
Ora è necessario individuare i punti sulla conduttura di distribuzione più vicini alle posizioni dei contatori. In questo modo, è possibile disegnare le connessioni dei servizi nello spazio modello in modo che siano sempre perpendicolari alla conduttura di distribuzione. Il nodo Geometry.ClosestPointTo è la soluzione perfetta.
Questa è la PolyCurve della conduttura di distribuzione.
Questi sono i punti di inserimento dei contatori.
L'ultimo passaggio consiste nel creare effettivamente oggetti nello spazio modello. Si utilizzeranno i punti di inserimento generati in precedenza per creare i riferimenti di blocco, quindi si passerà ai punti presenti sulla conduttura di distribuzione per disegnare le linee sulle connessioni dei servizi.
Quando si esegue il grafico, dovrebbero essere visualizzati nuovi riferimenti di blocco e nuove linee di connessione dei servizi nello spazio modello. Provare a modificare alcuni input e a controllare che tutto venga aggiornato automaticamente.
Si può notare che dopo aver posizionato gli oggetti per una linea del lotto, selezionando una diversa gli oggetti vengono "spostati".
Si tratta del funzionamento di default di Dynamo ed è molto utile in molti casi. Tuttavia, è possibile che si vogliano posizionare diverse connessioni dei servizi in sequenza e fare in modo che Dynamo crei nuovi oggetti ad ogni esecuzione anziché modificare quelle originali. È possibile controllare questo funzionamento modificando le impostazioni di unione di oggetti.
Per ulteriori informazioni, consultare la sezione Unione di oggetti.
La modifica di questa impostazione forzerà Dynamo a "dimenticare" gli oggetti che crea ad ogni esecuzione. Di seguito è riportato un esempio di esecuzione del grafico con l'unionee di oggetti disattivata utilizzando il Lettore Dynamo.
Se non si conosce il Lettore Dynamo, consultare la sezione Lettore Dynamo.
Ecco alcune idee su come espandere le funzionalità di questo grafico.
Posizionare più collegamenti dei servizi contemporaneamente anziché selezionare ogni linea del lotto.
Regolare gli input per posizionare invece sportelli di ispezione per fognature anziché i contatori del servizio idrico.
Aggiungere un pulsante di commutazione per consentire il posizionamento di una singola connessione dei servizi su un lato particolare della linea del lotto anziché su entrambi i lati.
Lo sviluppo di sagome cinematiche per la convalida dello spazio libero è una parte importante della progettazione ferroviaria. Dynamo può essere utilizzato per generare solidi per la sagoma anziché creare e gestire sottoassiemi complessi di modellatori per eseguire il processo.
Utilizzo delle linee caratteristiche del modellatore
Trasformazione della geometria tra sistemi di coordinate
Creazione di solidi tramite loft
Controllo del funzionamento dei nodi con le impostazioni di collegamento
Questo grafico verrà eseguito su Civil 3D 2020 e versioni successive.
Iniziare scaricando i file di esempio riportati qui sotto, quindi aprendo il file DWG e il grafico di Dynamo.
Ecco una panoramica della logica di questo grafico.
Ottenere le linee caratteristiche dalla linea base del modellatore specificata
Generare sistemi di coordinate lungo la linea caratteristica del modellatore con la spaziatura desiderata
Trasformare la geometria del blocco del profilo in sistemi di coordinate
Eseguire il loft di un solido tra i profili
Creare i solidi in Civil 3D
Procediamo!
Il primo passaggio consiste nell'ottenere i dati sul modellatore. Selezionare il modello di modellatore in base al nome, ottenere una linea base specifica all'interno del modellatore e ottenere una linea caratteristica all'interno della linea base secondo il relativo codice punto.
Ora si procederà alla generazione di sistemi di coordinate lungo le linee caratteristiche del modellatore tra una progressiva iniziale e una progressiva finale. Questi sistemi di coordinate verranno utilizzati per allineare la geometria del blocco del profilo del veicolo al modellatore.
Se non si conoscono i sistemi di coordinate, consultare la sezione Vettore, piano e sistema di coordinate.
Notare il valore XXX nell'angolo inferiore destro del nodo. Ciò significa che le impostazioni di collegamento del nodo sono impostate su Globale, operazione che è necessaria per generare i sistemi di coordinate in corrispondenza degli stessi valori di progressiva per entrambe le linee caratteristiche.
Se non si conosce il collegamento di nodi, consultare la sezione Che cos'è un elenco?.
Ora è necessario creare in qualche modo una serie di profili di veicoli lungo le linee caratteristiche. Si procederà alla trasformazione della geometria dalla definizione di blocco del profilo del veicolo utilizzando il nodo Geometry.Transform. Questo è un concetto complesso da visualizzare, quindi prima di osservare i nodi, ecco un grafico che mostra cosa succederà.
Quindi essenzialmente si tratta di "prendere" la geometria di Dynamo da una singola definizione di blocco e di spostarla/ruotarla, creando al contempo una serie lungo la linea caratteristica. Forte! Ecco come appare la sequenza di nodi.
In questo modo la definizione di blocco viene ottenuta dal documento.
Questi nodi ottengono la geometria di Dynamo degli oggetti all'interno del blocco.
Questi nodi definiscono essenzialmente il sistema di coordinate da cui si sta trasformando la geometria.
Infine, questo nodo esegue il lavoro effettivo di trasformazione della geometria.
Notare il collegamento Più lungo su questo nodo.
Ed ecco cosa si ottiene in Dynamo.
Buone notizie! Il lavoro duro è finito. Ora è sufficiente generare solidi tra i profili. Ciò è facilmente possibile con il nodo Solid.ByLoft.
Ed ecco il risultato. Tenere presente che questi sono solidi di Dynamo, ma è comunque necessario crearli in Civil 3D.
Il passaggio finale consiste nell'eseguire l'output dei solidi generati nello spazio modello. Verrà anche applicato del colore per renderli facilmente visibili.
Di seguito è riportato un esempio di esecuzione del grafico mediante il Lettore Dynamo.
Se non si conosce il Lettore Dynamo, consultare la sezione Lettore Dynamo.
Ecco alcune idee su come espandere le funzionalità di questo grafico.
Aggiungere la possibilità di utilizzare intervalli di progressive differenti separatamente per ogni binario.
Dividere i solidi in segmenti più piccoli che possono essere analizzati singolarmente per ricercare eventuali interferenze.
Verificare se i solidi della sagoma si intersecano con gli oggetti e colorano quelli che incontrano.
Dynamo for Civil 3D offre il paradigma della programmazione visiva agli ingegneri e ai progettisti che lavorano su progetti di infrastrutture civili. Si può pensare a Dynamo come a una sorta di strumento digitale multiplo per gli utenti di Civil 3D; qualunque sia il compito da svolgere, c'è lo strumento giusto per farlo. La sua interfaccia intuitiva consente di creare routine potenti e personalizzabili senza dover scrivere una singola riga di codice. Non è necessario essere programmatori per utilizzare Dynamo, ma è necessario essere in grado di pensare con la logica di un programmatore. Insieme agli altri capitoli del Guida introduttiva, questo capitolo aiuterà a sviluppare le competenze logiche in modo da poter affrontare qualsiasi attività con una mentalità di progettazione computazionale.
Dynamo è stato introdotto per la prima volta in Civil 3D 2020 e da allora ha continuato a evolversi. Inizialmente installato separatamente tramite un aggiornamento software, ora è incluso in tutte le versioni di Civil 3D. A seconda della versione di Civil 3D in uso, si può notare che l'interfaccia di Dynamo è leggermente diversa dagli esempi visualizzati in questo capitolo. Ciò è dovuto al fatto che l'interfaccia è stata notevolmente rinnovata in Civil 3D 2023.
È consigliabile consultare il blog di Dynamo per le informazioni più aggiornate relative allo sviluppo di Dynamo. Nella tabella seguente sono riassunte le tappe principali dello sviluppo di Dynamo for Civil 3D.
L'utilizzo di punti COGO e gruppi di punti in Civil 3D è un elemento fondamentale di molti processi dall'inizio alla fine dei lavori. Dynamo si contraddistingue davvero quando si tratta di gestione dei dati; verrà illustrato un caso di utilizzo potenziale in questo esempio.
Utilizzo di elenchi
Raggruppamento di oggetti simili con il nodo List.GroupByKey
Visualizzazione dell'output personalizzato nel Lettore Dynamo
Questo grafico verrà eseguito su Civil 3D 2020 e versioni successive.
Iniziare scaricando i file di esempio riportati qui sotto, quindi aprendo il file DWG e il grafico di Dynamo.
Ecco una panoramica della logica di questo grafico.
Ottenere tutti i punti COGO nel documento
Raggruppare i punti COGO per descrizione
Creare gruppi di punti
Generare un riepilogo nel Lettore Dynamo
Procediamo!
Il primo passaggio consiste nell'ottenere tutti i gruppi di punti nel documento, quindi tutti i punti COGO all'interno di ciascun gruppo. In questo modo verrà fornito un elenco nidificato o un "elenco di elenchi", che sarà più semplice utilizzare in un secondo momento se si riduce la nidificazione di tutto trasformandolo in un unico elenco con il nodo List.Flatten.
Se non si ha familiarità con gli elenchi, consultare la sezione Utilizzo di elenchi.
Ora che si dispone di tutti i punti COGO, occorre separarli in gruppi in base alle loro descrizioni. Questo è esattamente ciò che fa il nodo List.GroupByKey. In pratica raggruppa eventuali elementi che condividono la stessa chiave.
Il lavoro duro è finito! Il passaggio finale consiste nella creazione di nuovi gruppi di punti Civil 3D dai punti COGO raggruppati.
Quando si esegue il grafico, non c'è nulla da vedere nell'anteprima di sfondo di Dynamo perché non stiamo lavorando con la geometria. L'unico modo per vedere se il grafico viene eseguito correttamente è controllare l'Area strumenti o osservare le anteprime di output dei nodi. Tuttavia, se si esegue il grafico utilizzando il Lettore Dynamo, è possibile fornire ulteriori commenti sui risultati del grafico generando un riepilogo dei gruppi di punti creati. È sufficiente fare clic con il pulsante destro del mouse su un nodo e impostarlo su È output. In questo caso, per visualizzare i risultati viene utilizzato un nodo Watch rinominato.
Di seguito è riportato un esempio di esecuzione del grafico mediante il Lettore Dynamo.
Se non si conosce il Lettore Dynamo, consultare la sezione Lettore Dynamo.
Ecco alcune idee su come espandere le funzionalità di questo grafico.
Modificare il raggruppamento di punti in modo che si basi sulla descrizione completa anziché sulla descrizione non elaborata.
Raggruppare i punti in altre categorie predefinite scelte (ad esempio, "Foto del suolo", "Monumenti" e così via).
Creare automaticamente superfici TIN per i punti in determinati gruppi.
Dynamo for Civil 3D contiene un meccanismo molto potente per "memorizzare" gli oggetti creati da ciascun nodo. Questo meccanismo è denominato unione di oggetti e consente di produrre un grafico di Dynamo con risultati coerenti ogni volta che viene eseguito nello stesso documento. Sebbene questo sia altamente auspicabile in molte situazioni, ce ne sono altre in cui si desidera avere un maggiore controllo sul funzionamento di Dynamo. Questa sezione aiuterà a capire come funziona il binding di oggetti e come è possibile sfruttarlo.
Considerare questo grafico che crea un cerchio nello spazio modello sul layer corrente.
Notare cosa succede quando il raggio viene modificato.
Questa è l'unione di oggetti in azione. Il funzionamento di default di Dynamo consiste nel modificare il raggio del cerchio, anziché creare un nuovo cerchio ogni volta che l'input del raggio viene modificato. Questo perché il nodo Object.ByGeometry "si ricorda" che ha creato questo cerchio specifico ogni volta che il grafico viene eseguito. Inoltre, Dynamo memorizzerà queste informazioni in modo che la volta successiva che si apre il documento di Civil 3D e si esegue il grafico, avrà esattamente lo stesso funzionamento.
Vediamo un esempio in cui si potrebbe voler cambiare il funzionamento di default di Dynamo per l'unione di oggetti. Supponiamo di voler creare un grafico che posiziona il testo al centro di un cerchio. Tuttavia, l'intento con questo grafico è quello di poterlo eseguire più volte e di inserire ogni volta un nuovo testo per qualsiasi cerchio selezionato. Ecco come potrebbe apparire quel grafico.
Tuttavia, questo è ciò che accade quando viene selezionato un cerchio diverso.
Sembra che il testo venga eliminato e ricreato ad ogni esecuzione del grafico. In realtà, la posizione del testo viene modificata a seconda del cerchio selezionato. Quindi è lo stesso testo, in un punto diverso. Per creare un nuovo testo ogni volta, è necessario modificare le impostazioni dell'unione di oggetti di Dynamo in modo che non vengano mantenuti i dati di unione (vedere #binding-settings di seguito).
Dopo aver apportato questa modifica, otteniamo il funzionamento desiderato.
Dynamo for Civil 3D consente di modificare il funzionamento di default dell'unione di oggetti tramite le impostazioni di Archivio dati di unione nel menu Dynamo.
Notare che le opzioni di Archivio dati di unione sono disponibili in Civil 3D 2022.1 e versioni successive.
Tutte le opzioni sono attivate per default. Ecco un riepilogo delle funzionalità di ciascuna opzione.
Quando questa opzione è attivata, Dynamo "dimentica" gli oggetti che ha creato l'ultima volta che il grafico è stato eseguito. Il grafico può essere eseguito in qualsiasi Carta in qualunque situazione e creerà nuovi oggetti ogni volta.
Quando utilizzare
Utilizzare questa opzione quando si desidera che Dynamo "dimentichi" tutto ciò che ha svolto nelle esecuzioni precedenti e crei nuovi oggetti ogni volta.
Questa opzione indica che i metadati dell'unione di oggetti verranno serializzati nel grafico (file .dyn) al momento del salvataggio. Se si chiude/riapre il grafico e lo si esegue nella stessa Carta, tutto dovrebbe funzionare come è stato lasciato. Se si esegue il grafico in una Carta diversa, i dati dell'unione verranno rimossi dal grafico e verranno creati nuovi oggetti. Ciò significa che se si apre la Carta originale ed si riesegue il grafico, verranno creati nuovi oggetti oltre a quelli precedenti.
Quando utilizzare
Utilizzare questa opzione quando si desidera che Dynamo "memorizzi" gli oggetti che ha creato l'ultima volta che è stato eseguito in una Carta specifica.
Questa opzione è particolarmente adatta per le situazioni in cui è possibile mantenere un rapporto 1:1 tra una Carta specifica e un grafico di Dynamo. Le opzioni 1 e 3 sono più adatte per i grafici progettati per l'esecuzione su più disegni.
Questa opzione è simile all'opzione 2, tranne per il fatto che i dati dell'unione di oggetti vengono serializzati nella Carta anziché nel grafico (file .dyn). Se si chiude/riapre il grafico e lo si esegue nella stessa Carta, tutto dovrebbe funzionare come è stato lasciato. Se il grafico viene eseguito in una Carta diversa, i dati dell'unione sono comunque mantenuti nel disegno originale poiché vengono salvati nel disegno e non nel grafico.
Quando utilizzare
Utilizzare questa opzione quando si desidera utilizzare lo stesso grafico in più Carte e fare in modo che Dynamo "memorizzi"ciò che ha svolto in ciascuno.
La prima cosa da notare con questa opzione è che non ha alcun effetto sul modo in cui il grafico interagisce con la Carta quando si esegue il grafico tramite l'interfaccia principale di Dynamo. Questa opzione è valida solo quando il grafico viene eseguito utilizzando il Lettore Dynamo.
Se non si conosce il Lettore Dynamo, consultare la sezione Lettore Dynamo.
Se si esegue il grafico utilizzando l'interfaccia principale di Dynamo e quindi si chiude ed esegue lo stesso grafico utilizzando il Lettore Dynamo, verranno creati nuovi oggetti sopra a quelli creati in precedenza. Tuttavia, una volta eseguito il grafico, il Lettore Dynamo serializzerà i dati dell'unione di oggetti nella Carta. Pertanto, se si esegue il grafico più volte tramite il Lettore Dynamo, gli oggetti verranno aggiornati anziché creati di nuovi. Se si esegue il grafico tramite il Lettore Dynamo in una Carta diversa, i dati dell'unione sono comunque mantenuti nella Carta originale poiché vengono salvati nella Carta e non nel grafico.
Quando utilizzare
Utilizzare questa opzione quando si desidera eseguire un grafico utilizzando il Lettore Dynamo in più Carte e fare in modo che "memorizzi" ciò che ha svolto in ciascuno.
Quando si aggiungono tubi e strutture ad una rete di tubazioni, in Civil 3D viene utilizzato un modello per assegnare automaticamente i nomi. In genere, ciò è sufficiente durante il posizionamento iniziale, ma inevitabilmente i nomi dovranno cambiare in futuro man mano che il progetto si evolve. Inoltre, potrebbero essere necessari molti modelli di denominazione diversi, ad esempio nominare in modo sequenziale le strutture all'interno di un ramo a partire dalla struttura più a valle o seguire un modello di denominazione che sia allineato con lo schema di dati di un'agenzia locale. Questo esempio dimostrerà come Dynamo può essere utilizzato per definire qualsiasi tipo di strategia di denominazione che possa essere applicata in modo coerente.
Utilizzo delle caselle di delimitazione
Filtraggio dei dati mediante il nodo List.FilterByBoolMask
Ordinamento dei dati mediante il nodo List.SortByKey
Generazione e modifica di stringhe di testo
Questo grafico verrà eseguito su Civil 3D 2020 e versioni successive.
Iniziare scaricando i file di esempio riportati qui sotto, quindi aprendo il file DWG e il grafico di Dynamo.
Ecco una panoramica della logica di questo grafico.
Selezionare le strutture in base al layer
Ottenere le posizioni delle strutture
Filtrare le strutture per offset, quindi ordinarle in base alla progressiva
Generare i nuovi nomi
Rinominare le strutture
Procediamo!
La prima cosa da fare è selezionare tutte le strutture con cui si intende lavorare. A tale scopo, è sufficiente selezionare tutti gli oggetti su un determinato layer, ovvero le strutture di reti di tubi differenti (supponendo che condividano lo stesso layer).
Questo nodo garantisce che non vengano recuperati accidentalmente eventuali tipi di oggetto indesiderati che potrebbero condividere lo stesso layer delle strutture.
Ora che si hanno le strutture, occorre dove si trovano nello spazio in modo da poterle ordinare in base alla loro posizione. Per eseguire questa operazione, si utilizzerà la casella di delimitazione di ogni oggetto. La casella di delimitazione di un oggetto è il riquadro di dimensioni minime che contiene completamente le estensioni geometriche dell'oggetto. Calcolando il centro della casella di delimitazione, si ottiene un'approssimazione piuttosto buona del punto di inserimento della struttura.
Questi punti verranno utilizzati per ottenere la progressiva e l'offset delle strutture rispetto ad un tracciato selezionato.
Ecco dove le cose iniziano a diventare un po' complicate. A questo punto, si ha un grande elenco di tutte le strutture sul layer specificato ed è stato scelto un tracciato in base al quale ordinarle. Il problema è che nell'elenco potrebbero essere presenti strutture che non si vuole rinominare. Ad esempio, potrebbero non far parte del tratto specifico a cui si è interessati.
Il tracciato selezionato
Le strutture che si desidera rinominare
Le strutture da ignorare
Pertanto, è necessario filtrare l'elenco di strutture in modo da non considerare quelle che sono maggiori di un determinato offset rispetto al tracciato. Per ottenere questo risultato, è meglio utilizzare il nodo List.FilterByBoolMask. Dopo aver filtrato l'elenco di strutture, è possibile utilizzare il nodo List.SortByKey per ordinarle in base ai valori di progressiva.
Verificare se l'offset della strutture è inferiore al valore di soglia.
Sostituire eventuali valori null con false.
Filtrare l'elenco di strutture e progressive.
Ordinare le strutture in base alle progressive
L'ultima operazione da eseguire è creare nuovi nomi per le strutture. Il formato che si utilizzerà è <alignment name>-STRC-<number>
. Sono disponibili qui alcuni nodi aggiuntivi per aggiungere nuovi zeri ai numeri, se lo si desidera (ad esempio, "01" anziché "1").
Infine, rinominare le strutture.
Di seguito è riportato un esempio di esecuzione del grafico mediante il Lettore Dynamo.
Può essere utile sfruttare l'anteprima di sfondo 3D di Dynamo per visualizzare gli output intermedi del grafico anziché solo il risultato finale. Una cosa semplice da fare è mostrare le caselle di delimitazione delle strutture. Inoltre, questo particolare set di dati include un modellatore nel documento, pertanto è possibile importare la geometria della linea caratteristica del modellatore in Dynamo per fornire un contesto per il punto in cui le strutture si trovano nello spazio. Se il grafico viene utilizzato in un set di dati che non dispone di modellatori, questi nodi non avranno alcuna funzione.
Ora è possibile capire meglio come funziona il processo di filtraggio delle strutture per offset.
Ecco alcune idee su come espandere le funzionalità di questo grafico.
Rinominare le strutture in base al relativo tracciato più vicino anziché selezionare un tracciato specifico.
Rinominare i tubi oltre alle strutture.
Impostare i layer delle strutture in base al loro tratto.
Strade, ferrovie, terreni, servizi, rilievi, GIS...
Le infrastrutture civili sono tutte queste cose e molto altro! Questa sezione contiene diversi grafici di esempio pratici e pertinenti per aiutare a raggiungere la padronanza di Dynamo e a sfruttare appieno il potenziale di Dynamo for Civil 3D. Ogni grafico è corredato di descrizioni dettagliate della logica con cui è stato creato, in modo da poterlo non solo utilizzare, ma anche comprendere.
Inoltre, questi esempi incarnano le pratiche ottimali collaudate nel tempo per la costruzione di grafici efficaci. Mentre si esaminano gli esempi, si consiglia di acquisire familiarità con la sezione per ulteriori idee su come creare grafici potenti, flessibili e gestibili.
Ora che si sa un po' di più sul quadro generale, è possibile iniziare subito a creare il primo grafico di Dynamo in Civil 3D.
Questo è un semplice esempio che serve a dimostrare le funzionalità di base di Dynamo. Si consiglia di eseguire i passaggi descritti in un nuovo documento vuoto di Civil 3D.
La prima cosa da fare è aprire un documento vuoto in Civil 3D. Una volta arrivati a questo punto, accedere alla scheda Gestione sulla barra multifunzione di Civil 3D e cercare il gruppo Programmazione visiva.
Fare clic sul pulsante Dynamo, che consente di avviare Dynamo in una finestra separata.
Qual è la differenza tra Dynamo e il Lettore Dynamo?
Dynamo è quello che si utilizza per creare ed eseguire grafici. Il Lettore Dynamo è un modo semplice per eseguire i grafici senza doverli aprire in Dynamo.
Una volta aperto Dynamo, verrà visualizzata la schermata iniziale. Fare clic su Nuovo per aprire un'area di lavoro vuota.
E gli esempi?
Ora dovrebbe essere visualizzata un'area di lavoro vuota. Vediamo Dynamo in azione! Ecco il nostro obiettivo:
Molto semplice, giusto? Prima di iniziare, però, è necessario illustrare alcuni aspetti fondamentali.
I blocchi predefiniti principali di un grafico di Dynamo sono denominati nodi. Un nodo è come un piccolo computer: si inseriscono dei dati, la macchina li elabora e produce un risultato. Dynamo for Civil 3D dispone di una libreria di nodi che è possibile collegare insieme a dei fili per formare un grafico il quale consente di eseguire operazioni più grandi e migliori di quelle che un singolo nodo può fare da solo.
E se Dynamo non fosse mai stato utilizzato prima?
Alcune di queste nozioni potrebbero essere nuove, ma non importa perché le sezioni seguenti saranno d'aiuto.
Costruiamo il nostro grafico. Ecco un elenco di tutti i nodi che ci serviranno.
È possibile trovare questi nodi digitandone i nomi sulla barra di ricerca nella libreria oppure facendo clic con il pulsante destro del mouse in un punto qualsiasi dell'area di disegno ed eseguendo ricerche in tale area.
Come è possibile sapere quali nodi utilizzare e dove trovarli?
Ecco come dovrebbe apparire il grafico finale.
Riepiloghiamo quello che abbiamo fatto qui:
Abbiamo scelto il documento in cui lavorare. In questo caso (e in molti casi), si desidera lavorare nel documento attivo in Civil 3D.
È stato definito il blocco di destinazione in cui creare l'oggetto text (in questo caso lo spazio modello).
È stato utilizzato un nodo String per specificare il layer su cui posizionare il testo.
È stato creato un punto utilizzando il nodo Point.ByCoordinates per definire la posizione in cui inserire il testo.
Sono state definite le coordinate X e Y del punto di inserimento del testo utilizzando due nodi Number Slider.
È stato utilizzato un altro nodo String per definire il contenuto dell'oggetto text.
Infine, è stato creato l'oggetto text.
Vediamo i risultati del nostro nuovo grafico!
In Civil 3D, verificare che la scheda Modello sia selezionata. Dovrebbe essere visualizzato il nuovo oggetto text creato da Dynamo.
Se non è possibile visualizzare il testo, potrebbe essere necessario eseguire il comando ZOOM -> ESTENSIONI per eseguire lo zoom sul punto giusto.
Forte! Ora facciamo degli aggiornamenti al testo.
Tornando al grafico di Dynamo, procedere e modificare alcuni dei valori di input, ad esempio la stringa di testo, le coordinate del punto di inserimento e così via. Dovrebbe essere possibile vedere l'aggiornamento automatico del testo in Civil 3D. Notare inoltre che se si scollega una delle porte di input, il testo viene rimosso. Se si ricollega tutto, il testo viene creato di nuovo.
Perché Dynamo non inserisce un nuovo oggetto text ogni volta che il grafico viene eseguito?
Questo esempio è solo un assaggio di ciò che si può fare con Dynamo for Civil 3D. Continuare a leggere per saperne di più.
I pacchetti di Dynamo sono set di strumenti sviluppati da terze parti per estendere le funzionalità principali di Dynamo. Sono accessibili a tutti e sono pronti per il download con un semplice clic del pulsante.
Per ulteriori informazioni su come iniziare ad utilizzare i pacchetti, consultare la sezione .
Di seguito è riportato un elenco di alcuni dei pacchetti più diffusi che possono portare i grafici di Dynamo for Civil 3D al livello successivo.
Civil 3D Toolkit è un pacchetto di Dynamo for Civil 3D che fornisce miglioramenti significativi alle funzionalità di Dynamo grazie ad un ampio inventario di nodi aggiuntivi.
Camber è un pacchetto di Dynamo for Civil 3D open source che include centinaia di nodi per l'utilizzo di etichette, xrif, collegamenti ai dati, stili e altro ancora.
CivilConnection è un pacchetto di Dynamo per Revit open source che consente lo scambio di informazioni tra Civil 3D, Dynamo e Revit.
Arkance Systems Nodes è un pacchetto di Dynamo for Civil 3D con un'ampia gamma di nodi utili per l'utilizzo di quote, tabelle, viste, Drill Control e altro ancora.
Il Lettore Dynamo fornisce un metodo semplificato per eseguire i grafici di Dynamo in Civil 3D. Una volta creati i grafici, non è necessaria alcuna esperienza con Dynamo per utilizzare il lettore ed eseguire i grafici. In questo modo è più semplice condividere grafici con altri utenti che potrebbero non essere interessati a esplorare i dettagli di nodi e fili.
Per ulteriori informazioni sul Lettore Dynamo in Civil 3D, consultare la documentazione fornita nel sito .
Posizionare i riferimenti di blocco dei lampioni lungo un modellatore in corrispondenza dei valori di progressiva specificati in un file Excel.
Missione compiuta!
Posizionare i riferimenti di blocco del contatore del servizio idrico in corrispondenza degli offset specificati da una linea del lotto e disegnare una linea per ogni connessione dei servizi perpendicolare alla conduttura di distribuzione.
Missione compiuta!
Utilizzare un blocco del profilo del veicolo per generare solidi 3D della sagoma dello spazio libero lungo un modellatore.
Missione compiuta!
Versione di Civil 3D | Versione di Dynamo | Note |
---|---|---|
Creare un gruppo di punti per ogni descrizione di punto COGO univoca.
Missione compiuta!
Rinominare le strutture della rete di tubi in ordine in base alla progressiva di un tracciato.
Se non si conoscono gli elenchi, consultare la sezione .
Se non si conosce il Lettore Dynamo, consultare la sezione .
Missione compiuta!
Accedere alla sezione quando si è pronti per provarlo.
Dynamo for Civil 3D include alcuni grafici predefiniti che possono aiutare a dare vita ad altre idee su come utilizzare Dynamo. È consigliabile esaminare tali elementi, nonché qui nella Guida introduttiva.
Creare un grafico di Dynamo che inserirà il testo nello spazio modello.
I nodi della libreria sono raggruppati in categorie logiche in base alle loro funzioni. Per una presentazione più approfondita, consultare la sezione .
Per default, Dynamo "memorizza" gli oggetti che crea. Se si modificano i valori di input del nodo, gli oggetti in Civil 3D vengono aggiornati anziché crearne di nuovi. Per ulteriori informazioni su questo funzionamento, consultare la sezione .
Missione compiuta!
2024.1
2.18
2024
2.17
Aggiornamento dell'interfaccia utente del Lettore Dynamo
2023.2
2.15
2023
2.13
Aggiornamento dell'interfaccia utente di Dynamo
2022.1
2.12
Aggiunte le impostazioni Archivio dati di unione per gli oggetti
Nuovi nodi per il controllo dell'unione di oggetti
2022
2.10
Inclusione nell'installazione principale di Civil 3D
Transizione da IronPython a Python.NET
2021
2.5
2020.2
2.4
2020 Update 2
2.4
Nuovi nodi aggiunti
2020.1
2.2
2020
2.1
Rilascio iniziale
Questa Guida introduttiva è solo l'inizio del viaggio alla scoperta di Dynamo for Civil 3D. Una fiorente comunità di utenti di Dynamo mette a disposizione una grande quantità di conoscenze. Esaminare alcune di queste risorse per continuare ad imparare.
È stato detto in precedenza che i nodi sono i blocchi predefiniti principali di un grafico di Dynamo e sono organizzati in gruppi logici nella libreria. In Dynamo for Civil 3D, sono presenti due categorie (o scaffali) nella libreria che contengono nodi dedicati per l'utilizzo di oggetti di AutoCAD e Civil 3D, quali tracciati, profili, modellatori, riferimenti di blocco e così via. Il resto della libreria contiene nodi che sono di natura più generica e sono coerenti tra tutte le "versioni" di Dynamo (ad esempio, Dynamo per Revit, Dynamo Sandbox e così via).
Per ulteriori informazioni sull'organizzazione dei nodi nella libreria di Dynamo principale, consultare la sezione Libreria.
Nodi specifici per l'utilizzo di oggetti di AutoCAD e Civil 3D
Nodi generici
Nodi di pacchetti di terze parti che è possibile installare separatamente
Utilizzando i nodi presenti negli scaffali di AutoCAD e Civil 3D, il grafico di Dynamo funzionerà solo in Dynamo for Civil 3D. Se un grafico di Dynamo for Civil 3D viene aperto altrove (ad esempio, in Dynamo per Revit), questi nodi verranno contrassegnati con un avviso e non verranno eseguiti.
Perché sono presenti due scaffali separati per AutoCAD e Civil 3D?
Questa organizzazione distingue i nodi per gli oggetti nativi di AutoCAD (linee, polilinee, riferimenti di blocco e così via) dai nodi per gli oggetti di Civil 3D (tracciati, modellatori, superfici e così via). Dal punto di vista tecnico, AutoCAD e Civil 3D sono due cose separate: AutoCAD è l'applicazione di base e Civil 3D si basa su essa.
Per utilizzare i nodi di AutoCAD e Civil 3D, è importante avere una conoscenza approfondita della gerarchia degli oggetti all'interno di ogni scaffale. Vi ricordate la tassonomia in biologia? Regno, phylum, classe, ordine, famiglia, genere, specie? Gli oggetti di AutoCAD e Civil 3D vengono classificati in modo simile. Esaminiamo alcuni esempi da spiegare.
Utilizziamo un tracciato come esempio.
Si supponga che l'obiettivo sia quello di modificare il nome del tracciato. Da qui, il nodo successivo che si desidera aggiungere è un nodo CivilObject.SetName.
All'inizio, questo potrebbe non sembrare molto intuitivo. Che cos'è CivilObject e perché la libreria non dispone di un nodo Alignment.SetName? La risposta è legata alla riutilizzabilità e alla semplicità. Se ci si pensa, il processo di modifica del nome di un oggetto di Civil 3D è lo stesso, sia che si tratti di un tracciato, un modellatore, un profilo o un altro elemento. Pertanto, invece di avere nodi ripetitivi che essenzialmente fanno tutti la stessa cosa (ad esempio, Alignment.SetName, Corridor.SetName, Profile.SetName e così via), sarebbe opportuno racchiudere tale funzionalità in un singolo nodo. Questo è esattamente ciò che fa CivilObject.SetName.
Un altro modo per riflettere su questo aspetto è in termini di relazioni. Un tracciato e un modellatore sono tipi di Oggetti Civil, come una mela e una pera sono tipi di frutta. I nodi CivilObject si applicano a qualsiasi tipo di oggetto di Civil, proprio come se si volesse utilizzare un unico sbucciatore per sbucciare una mela e di una pera. La cucina diventerebbe piuttosto disordinata se si avesse uno sbucciatore separato per ogni tipo di frutta! In questo senso, la libreria dei nodi di Dynamo è simile alla cucina.
Ora, facciamo un passo avanti. Supponiamo di voler modificare il layer del tracciato. Il nodo che si desidera utilizzare è il nodo Object.SetLayer.
Perché non è presente un nodo denominato CivilObject.SetLayer? Gli stessi principi di riutilizzabilità e semplicità di cui abbiamo parlato prima si applicano qui. La proprietà layer è comune a qualsiasi oggetto di AutoCAD che può essere disegnato o inserito, ad esempio linea, polilinea, pesto, riferimento di blocco e così via. Gli oggetti di Civil 3D, quali tracciati e modellatori, rientrano nella stessa categoria, pertanto qualsiasi nodo che si applica ad un Object può essere utilizzato anche con qualsiasi CivilObject.
Sebbene Dynamo sia estremamente potente come strumento di programmazione visiva, è anche possibile andare oltre i nodi e i fili e scrivere il codice in forma testuale. Esistono due modi per eseguire questa operazione:
Scrivere DesignScript utilizzando un blocco di codice
Scrivere Python utilizzando un nodo Python
In questa sezione verrà descritto come utilizzare Python nell'ambiente Civil 3D per sfruttare le API .NET di AutoCAD e Civil 3D.
Per ulteriori informazioni generali sull'utilizzo di Python in Dynamo, consultare la sezione Python.
Sia AutoCAD che Civil 3D dispongono di diverse API che consentono agli sviluppatori di estendere il prodotto principale con funzionalità personalizzate. Nel contesto di Dynamo, sono rilevanti le API .NET gestite. I collegamenti riportati di seguito sono essenziali per comprendere la struttura delle API e il loro funzionamento.
AutoCAD .NET API Developer's Guide
Manuale di riferimento dell'API di AutoCAD .NET
Civil 3D .NET API Developer's Guide
Civil 3D .NET API Reference Guide
Nel corso di questa sezione, è possibile che vi siano alcuni concetti con cui non si ha familiarità, come i database, le transazioni, i metodi, le proprietà, ecc. Molti di questi concetti sono fondamentali per l'utilizzo delle API .NET e non sono specifici di Dynamo o Python. Non è compito di questa sezione della Guida introduttiva discutere in dettaglio queste voci, per cui si consiglia di consultare spesso i collegamenti riportati sopra per ulteriori informazioni.
Quando si modifica per la prima volta un nuovo nodo Python, questo verrà precompilato con il codice modello per iniziare. Ecco una schematizzazione del modello con spiegazioni su ciascun blocco.
Importa i moduli
sys
eclr
, entrambi necessari per il corretto funzionamento dell'interprete Python. In particolare, il moduloclr
consente di trattare gli spazi dei nomi .NET essenzialmente come pacchetti Python.Carica gli assiemi standard (ad esempio, DLL) per l'utilizzo delle API .NET gestite per AutoCAD e Civil 3D.
Aggiunge riferimenti agli spazi dei nomi standard di AutoCAD e Civil 3D. Sono equivalenti alle direttive
using
oImports
rispettivamente in C# o VB.NET.Le porte di input del nodo sono accessibili utilizzando un elenco predefinito denominato
IN
. È possibile accedere ai dati in una porta specifica utilizzando il relativo numero di indice, ad esempiodataInFirstPort = IN[0]
.Ottiene il documento e l'editor attivi.
Blocca il documento e avvia una transazione di database.
Questo è il punto in cui si dovrebbe inserire la maggior parte della logica dello script.
Annullare i commenti di questa riga per eseguire il commit della transazione dopo il completamento del lavoro principale.
Se si desidera eseguire l'output di eventuali dati dal nodo, assegnarli alla variabile
OUT
alla fine dello script.
Personalizzazione
È possibile modificare il modello Python di default modificando il file PythonTemplate.py
che si trova in C:\ProgramData\Autodesk\C3D <versione>\Dynamo
.
Esaminiamo un esempio per dimostrare alcuni dei concetti essenziali della scrittura di script Python in Dynamo for Civil 3D.
Di seguito sono riportati alcuni file di esempio a cui è possibile fare riferimento per questo esercizio.
Ecco una panoramica della logica di questo grafico.
Rivedere la documentazione sull'API di Civil 3D
Selezionare tutti i drenaggi nel documento in base al nome del layer
Annullamento del wrapping degli oggetti di Dynamo per accedere ai membri interni dell'API di Civil 3D
Creare punti di Dynamo da punti di AutoCAD
Crea PolyCurve dai punti
Procediamo!
Prima di iniziare a costruire il grafico e scrivere il codice, è consigliabile esaminare la documentazione sull'API di Civil 3D e avere un'idea di ciò che è disponibile nell'API. In questo caso, è presente una proprietà nella classe Catchment che restituirà i punti di contorno del drenaggio. Tenere presente che questa proprietà restituisce un oggetto Point3dCollection
, di cui Dynamo non sa che farsene. In altre parole, non sarà possibile creare una PolyCurve da un Point3dCollection
, quindi alla fine sarà necessario convertire tutto in punti di Dynamo. Vedere più avanti per saperne di più.
Ora è possibile iniziare a costruire la logica del grafico. La prima cosa da fare è ottenere un elenco di tutti i drenaggi nel documento. Sono disponibili nodi per questo, pertanto non è necessario includerli nello script Python. L'utilizzo dei nodi offre una migliore visibilità per un altro utente che potrebbe leggere il grafico (anziché aggiungere codice eccessivo in uno script Python) e mantiene lo script Python concentrato su una cosa: restituire i punti di contorno dei drenaggi.
Notare che l'output del nodo All Objects on Layer è un elenco di CivilObject. Questo perché Dynamo for Civil 3D non dispone attualmente di nodi per l'utilizzo dei drenaggi, che è il motivo completo per cui è necessario accedere all'API tramite Python.
Prima di proseguire, occorre parlare brevemente di un concetto importante. Nella sezione Libreria di nodi, è stata descritta la relazione tra Object e CivilObject. Per aggiungere un po' più di dettagli a questo argomento, un Object di Dynamo è un wrapper intorno ad un Entity di AutoCAD. Analogamente, un CivilObject di Dynamo è un wrapper intorno ad un Entity di Civil 3D. È possibile annullare il wrapping di un oggetto accedendo alle relative proprietà InternalDBObject
o InternalObjectId
.
In genere, è più sicuro ottenere l'ID oggetto utilizzando la proprietà InternalObjectId
e quindi accedere all'oggetto con wrapping in una transazione. Questo perché la proprietà InternalDBObject
restituisce un DBObject di AutoCAD non in stato scrivibile.
Ecco l'intero script Python che esegue il lavoro di accesso agli oggetti Catchment interni, che ottengono i loro punti di contorno. Le righe evidenziate rappresentano quelle modificate/aggiunte dal codice modello di default.
Fare clic sul testo sottolineato nello script per una spiegazione di ogni riga.
In genere, è consigliabile includere la maggior parte della logica di script all'interno di una transazione. In questo modo si garantisce l'accesso sicuro agli oggetti che lo script sta leggendo/scrivendo. In molti casi, omettere una transazione può causare un errore irreversibile.
In questa fase, lo script Python dovrebbe generare un elenco di punti di Dynamo che è possibile vedere nell'anteprima di sfondo. L'ultimo passaggio consiste nel creare semplicemente PolyCurve dai punti. Si noti che questa operazione potrebbe essere effettuata anche direttamente nello script Python, ma noi l'abbiamo volutamente inserita al di fuori dello script in un nodo, in modo che sia più visibile. Ecco come appare il grafico finale.
Ed ecco la geometria finale di Dynamo.
Solo una breve nota prima di concludere. A seconda della versione di Civil 3D in uso, il nodo Python potrebbe essere configurato in modo diverso. In Civil 3D 2020 e 2021, Dynamo ha utilizzato uno strumento denominato IronPython per spostare i dati tra gli oggetti .NET e gli script Python. In Civil 3D 2022, tuttavia, Dynamo è passato a utilizzare l'interprete Python nativo standard (noto anche come CPython) anziché Python 3. I vantaggi di questa transizione includono l'accesso alle librerie moderne più diffuse e alle nuove funzionalità della piattaforma, alla manutenzione essenziale e alle patch di sicurezza.
È possibile leggere ulteriori informazioni su questa transizione e su come aggiornare gli script precedenti nel blog di Dynamo. Se si desidera continuare ad utilizzare IronPython, sarà sufficiente installare il pacchetto DynamoIronPython2.7 utilizzando Dynamo Package Manager.
questa riga ottiene la classe specifica necessaria dalla libreria della geometria di Dynamo. Notare che qui viene specificato import Point as DynPoint
anziché import *
, poiché quest'ultimo introdurrebbe interferenze di denominazione.
qui è possibile specificare esattamente quale porta di input contiene i dati desiderati anziché il valore di default IN
, che fa riferimento all'intero elenco di tutti gli input.
Ottenere la geometria del contorno di tutti i drenaggi di un disegno.
Tipo di Dynamo | Wrapping |
---|---|
Missione compiuta!
Object Autodesk.AutoCAD.DynamoNodes.Object
Entity Autodesk.AutoCAD.DatabaseServices.Entity
CivilObject Autodesk.Civil.DynamoNodes.CivilObject
Entity Autodesk.Civil.DatabaseServices.Entity
Con il tempo, si potrebbe avere bisogno di andare oltre le nozioni di base e di approfondire i meccanismi interni di Dynamo. Nelle pagine di questa sezione è fornito uno schema per sbloccare le funzionalità avanzate di Dynamo for Civil 3D, in modo da portare i grafici al livello successivo.