Il Bar dell'Ingegneria

Posts written by afazio

  1. .
    paloesez

    da questo link è possibile scaricare un mio programma in VBA per Autocad che consente di poter disegnare gli esecutivi di un palo di fondazione ed alcune tipologie di sezioni in c.a. comprese di armature.

    https://www.box.com/s/3f1595109dd341dbee06
  2. .
    6/7 19:45 gilean: a e idiota per idiota, penso che tu sia un totale coglione. Ma anche questo non e' offenderti, in quanto non ti attribuisco tale caratteristica che sicuramente non possiedi

    6/7 19:45 gilean: senti, stai ricominciando? non fare tiritere filosofiche. anche io quindi penso che sei un buffone arrogante, che si fa forte davanti ad uno schermo, e piccolo dal vivo. Nessun rancore dunque.

    6/7 19:42 afazio: penso pertanto di non aver parlato male di te.

    6/7 19:42 afazio: o ho semplicemente detto che se un idiota

    6/7 19:41 afazio: parlare male di qualcuno significa sostanzialmente attribuirgli caratteristiche positive o negative che non possiede

    6/7 19:41 gilean: ad ogni modo, avrai sempre il rimorso di essertene andato per una tua convinzione sbagliata, e questo mi farà sorridere nel tempo. Saluti, e ripeto: se parli di me avvisami, ho il diritto di replicare.

    6/7 19:40 afazio: ora devo allontanarmi. Bye

    6/7 19:40 gilean: io ora dovrei lasciare in pace te eh?...dopo che tu sei venuto in questo forum a parlare male di me senza darmi la possibilita' di controbattere....vabe' ai posteri le sentenze. Saluti.

    6/7 19:40 afazio: Lo faro, anche in apposito 3d nel quale tu potrai liberamente partecipare

    6/7 19:39 afazio: il io sono uomo libero da qualsiasi catena e se per caso mi dovesse capitare di dover parlare di te e di quanto accaduto

    6/7 19:39 afazio: saluti.

    6/7 19:38 afazio: comunque grazie per l'ospitalita che mi hai ofefrto in questi anni

    6/7 19:38 afazio: ti prego di lasciarmi in pace. Ho appurato il fatto che non hai bannato il mio nik, potro quindi etrare per leggere quantomeno le mie cose

    6/7 19:37 afazio: ok gil adesso se non hai nessun contributo tecnico da apportare

    6/7 19:35 gilean: ma ti chiedi di non parlare piu' di me in questo forum senza che io lo sappia e possa controbattere

    6/7 19:34 gilean: se avessi voluto bannarti, non ti avrei mai fatto entrare neanche dalla porta, visto che su ingforum ebbimo gia' di che discutere

    6/7 19:34 gilean: io non banno nessuno caro mio, volevo solo che ti rendessi conto che avevi sbagliato. Dovrei bannarti per ripicca? so distinguere i miei sentimenti verso una persona, dal ruolo che ricoproin forum, stai tranquillo

    6/7 19:34 afazio: INSOMMA FAI QUEL CHE TI PARE

    6/7 19:33 afazio: SE NON VUOI BANNARMI E LASCIARMI LA LEGITTIMA POSSIBILITA DI POTER ACCEDERE AI MIEI SCRITTI

    6/7 19:33 gilean: pensala come vuoi. Per me sei sempre stato solo un bimbo arrogante convinto di essere al centro dell'universo. E continui a farmi credere questo. Ripeto: viviti la tua vita e non nominarmi piu'. saluti

    6/7 19:33 afazio: SE NON MI HAI GIA BANNATO E VUOI FARLO ADESSO FALLO PURE

    6/7 19:33 afazio: SENTI GIL FAI QUEL CHE VUOI ,

    6/7 19:33 gilean: ma con te perdo solo tempo a parlare, fai quello che cazzo vuoi, io torno a sistemare le mie cose. Ti ripeto: non parlare piu' di me ed io non interverro' piu'. Saluti

    6/7 19:32 afazio: CHE COMBINAZIONE

    6/7 19:32 afazio: STAI PUR CERTO CHE CE NE SAREBEBRO ANCHE PER LUI

    6/7 19:32 gilean: in ordine sparso, NON SOLO I TUOI, caro il mio Dio in terra!!!

    6/7 19:32 afazio: SE PER CASO LO FECESSE KARMAN SENZA AVLIDI MOTIVI

    6/7 19:32 gilean: perche', caro il mio testa di cazzo, con fossil abbiamo unito alcune parti del db di sfm_messages, che pensavamo fossero corrotti, e poi abbiamo inizializzato la routine di ottimizzazione delle tabelle...se avessi avuto la testa fuori dal tuo uccello, avresti visto che ne sono saltati altri

    6/7 19:32 afazio: IO NON CENSURO

    6/7 19:31 afazio: GIL IO NON SONO CENSORE DI NESSUN FORUM

    6/7 19:31 afazio: PURE SOFFRE ANCHE LUI DI SINDROME DI PERDITA DI POPOLARITA?

    6/7 19:31 gilean: ma ti lascio nella tua convizione, io torno a sistemare le mie cose, saluti, e buona continuazione (da solo). Se nonvuoi che intervenga, non mi nominare piu', altrimenti vedremo il tuo proverbiale amore di non censura in questo forum

    6/7 19:31 afazio: PER CASO QUELL'UTENTE CHIAMATO PER AGGIUSTARE IL TUO FORUM HA INAVVERTITAMENTE ELIMINATO I MIEI?

    6/7 19:30 afazio: ERANO ANCORA LI?

    6/7 19:30 afazio: SE NON LO HAI FATTO ALLORA SPIEGAMI COME SIA STATO POSSIBILE CHE DUE MIEI MESSAGGI SONO SPARITI MENTRE TUTTA UNA SERIE DI MESSAGGI POSTERIORI AI MIEI

    6/7 19:30 gilean: NO, NON LI HO CANCELLATI! E TE LO RIPETO PER L'ENNESIMA VOLTA! A ME CHE TU FREQUENTEASSI STO FORUM O INGFORUM O ALTRO, NON ME NE E' MAI FREAGTO UN CAZZO, ALTRIMENTI SE ME NE FOSSE FREGATO UN ISTANTE, AVREI CANCELLATO TUTTI I LINK DEI COLLEGHI DI INGFORUM, TESTAZZA!!!

    6/7 19:29 afazio: SI O NO?

    6/7 19:29 afazio: E L'ALTRO IN CUI DICEVO SEMPLICEMENTE "HO INIZIATO. sALUTI"?

    6/7 19:29 afazio: UNO IN CUI DICEVO A QUATTROP CHE ACCOGLIEVO IL SUO INVITO A SCRIVERE MA CHE AVREI SCRITTO AL BAR

    6/7 19:28 gilean: ma guarda, hai rotto per secoli ed ora vuoi essere lasciato in pace? fammi bannare dal tuo admin, ed invece di offendere in altri luoghi sperando di non essere letto, le cose dille in faccia!!!

    6/7 19:28 afazio: HAI O NON HAI CANCELLATO DUE MIEI MESSAGGI NEL 3D DI vba

    6/7 19:28 afazio: a cosa devo rispondere gil?

    6/7 19:28 afazio: se invece non hai voglia di bannarlo fa lo stesso, tanto mi basterà una o due settimane

    6/7 19:28 gilean: cambia discorso, tipico. Perche' non rispondi invece alle mie "clamorose azioni ccensorie" quando avevoperso il db lo stavo ripristinando, mentre nella tua proverbiale arroganza (sparando cazzate) hai voluto sostenere quella tua tesi...ripeto, sei solo un arrogante (davanti allo schermo, ovviamente

    6/7 19:27 afazio: e falla finita

    6/7 19:27 afazio: se hai da bannare il mio nik di la fallo

    6/7 19:27 afazio: lasciami in pace

    6/7 19:27 afazio: adesso basta gilean

    6/7 19:26 afazio: lo capisci?

    6/7 19:26 afazio: Io quel che ho da fare lo faccio ovunque perche lo so fare

    6/7 19:26 afazio: e tra questi certamente io.
  3. .
    Ogni disegno complesso è formato da una serie di elementi geometrici basilari: le primitive.
    Per riuscire a comporre un qualsiasi disegno attraverso codice è necessario sapere come far disegnare ciascuna delle primitive.

    Inizio quindi ad illustrare come disegnare alcune primitive sfruttando il dialogo che fin'ora ho composto (vedi topic https://bar-ingegneria.forumfree.it/?t=62222272 ).

    Iniziamo col cerchio.

    Per disegnare un cerchio occorre il suo centro ed il raggio. predisponiamo nel nostro dialogo una casella di input atta ad accogliere il raggio del nostro cerchio, mentre il centro lo raccoglieremo attraverso il clik del mouse.
    Ecco il nostro "primo dialogo" modificato per l'occasione

    Ok5DmTr

    Ho tolto le due Label e le ho sostituite con due TextBox. A differenza delle Label, i TextBox cosentono l'input diretto di una stringa che poi possiamo leggere da codice.
    Ho mantenuto il pulsante per l'acquisizione delle coordinate di un punto attraverso click sul disegno. Premendo questo pulsante prendiamo le coordinate di un punto e le scriviamo nelle due TextBox, fermo restando il fatto che possiamo poi modificarle.
    Ho inserito un terzo TextBox per l'input del raggio
    Ho inserito un bottone che avvia il disegno del cerchio.

    Inoltre ho preferito raggruppare le coordinate del centro entro una cornice. Vi evidenzio il fatto che se si vuole inserire un qualsiasi elemento all'interno di una cornice occorre prima tracciare la cornice e poi, con cornice selezionata, inserire gli elementi che si desiderano all'interno. Se invece avete gia posizionati gli elementi e solo dopo vi sorge la necessità di raggruparli in una cornice, basta disegnare la cornice, selezionare gli elementi che si vogliono mettere dentro, tagliarli e successivamente incollarli all'interno.
    La cornice trova maggiore necessità quando abbiamo dei RadioButton in cui l'attivazione di uno esclude tutti gli altri. Cioè se abbiamo 5 radioButton tra loro collegati in cui se attivato uno devono disatttivarsi i rimanente 4, ma abbiamo anche altro gruppo di radioButton non collegati ai primi, conviene usare le cornici raggruppando in esse tutti i radioButton collegati.
    Nella immagine sono riportati i nomi dei vari elementi e gli strumenti usati per disegnarli nel dialogo.

    Ma che bisogno c'è di scomodare tutto questo per disegnare un cerchio? Basta selezionare lo strumento e con due clik abbiamo il cerchio bello e pronto.

    Già. Vero, hai ragione. Ed allora non seguitar nella lettura. Tratterò per buona parte solo di questo.

    Segnalo altri topic che riguardano VBA ed AutoCad
    ___________________________________________________________________________
    - VBA e Autocad. Primi passi
    - VBA e Autocad. Ancora primi passi
    - VBA e AutoCad- Le primitive: la polilinea
    - VBA e AutoCAd Le primitive- IL cerchio
    - VBA Autocad --->Excel
    - VBA e AutoCad - Pick Points
    - PickPoints: salvare i dati da Autocad in Excel
    - VBA e Autocad. Il controllo del controllo
    - VBA e AutoCAD- Un esempio pronto all'uso

    - VBA AutoCad - Disegnare ellisse e nocciolo con un clik
    - Spirali logaritmiche in AutoCad
    - Disegno segmento in Autocad attraverso macro VBA Excel
    - Avviare una macro Autocad da Macro Excel
    - Progetto Sovratensioni e tracciamento ISOBARE in autocad
    - VBA E aUTOcAD- La numerazione automatica
    - VBA e AutoCad - La fotonumerazione
    - Autocad e VBA
    - Tower
    ___________________________________________________________________________

    Edited by afazio - 9/1/2017, 09:54
  4. .
    Adesso non ci resta che scrivere il codice che si attiverà al verificarsi dell’evento on-clik sul CommandButton “Btn_click”. Per far questo: doppio click sul pulsante, si apre di nuovo la finestra contenente il codice privato (del dialogo) con già scritta l’intestazione della nuova procedura.

    2yg0fra

    Scriveremo il codice che acquisisce le coordinate di un punto, proprio tra il rigo di inizio della sub e la sua End Sub.
    In VBA per autocad esiste un metodo che permette di acquisire le coordinate di un punto dal disegno. Questo metodo è il :
    GetPoint Method

    La cui sintassi (vedi l’help on line) è la seguente:
    RetVal = GetPoint([Point][, Prompt])
    Per visualizzare la parte dell’help on line che riporta la spiegazione, la sintassi e gli esempi del metodo GetPoit, basta digitare nello spazio del codice la parola GetPoint e premere F1 col cursore posizionato in qualsiasi posizione della parola.
    L’oggetto ritornato dal metodo (RetVal) è di tipo variant e si compone di un array di tre elementi di tipo double. In altre parole, i tre elementi dell’oggetto ritornato dalla procedura sono le tre coordinate x, y, z del punto e sono accessibili tramite:
    x=retval(0)
    y=retVal(1)
    z=retVal(2)
    I due parametri previsti nella sintassi del metodo (([Point][, Prompt]) sono opzionali, nel senso che è possibile ometterli, e rappresentano rispettivamente un punto di ancoraggio ed il prompt da fare apparire nella riga dei comandi di Autocad (quella posta in fondo alla pagina del disegno). Nel caso in cui prevediamo anche il “punto di ancoraggio” VBA mostrerà un segmento avente inizio nel punto di ancoraggio e termine nella posizione del cursore. Vedremo questa funzionalità con un successivo esempio.

    Tornando al metodo GetPoint, vediamo che è necessario dimensionare la variabile che conterrà l’oggetto di ritorno del metodo. Questa la chiamo Punto_click, quindi inserirò nel codice l’istruzione:
    Dim Punto_click As Variant
    E successivamente l’istruzione:
    Punto_click = ActiveDocument.Utility.GetPoint(, "clik su un punto del disegno")

    Da dove spuntano le due parole ActiveDocument e Utility? Praticamente sono rispettivamente il nonno ed il padre del metodo, cioè il metodo GetPoint appartiene all’oggetto Utility che a sua volta fa parte dell’oggetto ActiveDocument.
    Tranquilli, non è assolutamente necessario conoscere tutto ciò per poter scrivere qualche cosa di semplice, dato che la maggior parte del codice che richiama queste “amenità” lo copieremo dagli esempi riportati nell’help on line sezione “Code Examples”, tuttavia è bene iniziare a capire un po’ più a fondo la filosofia degli oggetti.

    Continuo col codice.
    All’uscita della istruzione Getpoint abbiamo a disposizione le coordinate del punto dove si è fatto clik, depositate nella variabile Punto_click che sappiamo essere composta da tre termini. Adesso dobbiamo scrivere i primi due termini nelle due etichette che abbiamo predisposto nel nostro dialogo.
    Dobbiamo quindi modificare la proprietà Caption di quelle due etichette. Lo facciamo semplicemente con:

    CODICE
    Label1.Caption = Punto_click(0)
    Label2.Caption = Punto_click(1)


    Vi ricordo che per le due etichette avevamo lasciato il nome proposto da VBA che erano, appunto, Label1 e Label2. La proprietà Caption è di tipo String, quindi potrebbe esserci un conflitto di tipo dato che i componenti della variabile Punto_click, che è di tipo Variant, sono di tipo Double. Per fortuna ci pensa VBA a fare gli opportuni adattamenti di tipo.
    Inoltre, in questo esempio abbiamo trascurato la presenza della terza coordinata, ma qualora ci interessasse anche quella basterebbe predisporre anche lo spazio per quest’ultima e scriverne il valore. In ogni caso sappiamo che la variabile Punto_click(2) rappresenta la terza coordinata del punto.
    Avremmo quasi finito, ottenendo un qualcosa simile al seguente codice.


    CODICE
    Private Sub Btn_clik_Click()
    Dim Punto_click As Variant

    Punto_click = ActiveDocument.Utility.GetPoint(, "clik su un punto del disegno")
    Label1.Caption = Punto_click(0)
    Label2.Caption = Punto_click(1)
    End Sub


    Possiamo provare a far eseguire questo codice, ma vi anticipo che ancora non funziona e ne capirete il motivo facendo la prova.
    Salviamo il codice, usciamo dall’ambiente VBA e torniamo in autocad. (dal menu file, voce “Chiudi e torna in Autocad”).
    Combinazione di tasti ALT+F8, selezioniamo dalla lista la procedura Avvia e premiamo su esegui. Appare il nostro dialogo arricchito dai nuovi controlli. Proviamo il pulsantino di acquisizione coordinate. Al click ci appare l’errore:

    fp5Q6Uh

    Finestra principale di Autocad non visibile!


    Questo accade perché il metodo GetPoint prevede che il controllo sia su una finestra di disegno di autocad e non su un Dialogo di autocad. E in effetti quando viene eseguito quella parte di codice è ancora attiva la finestra del dialogo.
    Occorre pertanto disattivare il dialogo richiamando il metodo .hide del dialogo, far eseguire il metodo e dopo riattivare il dialogo richiamando il metodo .show

    Il codice completo e funzionante è:
    CODICE
    Private Sub Btn_click_Click()
    Dim Punto_click As Variant
    UserForm1.hide 'disattivo il dialogo
    Punto_click = ActiveDocument.Utility.GetPoint(, "clik su un punto del disegno")
    Label1.Caption = Punto_click(0)
    Label2.Caption = Punto_click(1)
    UserForm1.Show 'riattivo il dialogo
    End Sub


    Provate questo e ne vedrete il funzionamento.

    Adesso, solo per vedere in campo la funzionalità del parametro opzionale rappresentato dal “punto di ancoraggio”, vediamo cosa succede se diamo come punto di ancoraggio un punto a nostro piacimento (per esempio il punto (10;0;0).
    Definiamo pertanto una nuova variabile:
    Dim Anchor_point(0 To 2) As Double
    Attribuiamo le coordinate stabilite:
    Anchor_point(0) = 10#
    Anchor_point(1) = 0#
    Anchor_point(2) = 0#
    Anche se non interessati alla terza coordinata, siamo costretti ad attribuirne il valore poiché altrimenti il metodo GetPoint andrebbe in errore.
    Aggiungiamo al metodo GetPoint anche il parametro relativo al punto di ancoraggio:
    Punto_click = ActiveDocument.Utility.GetPoint(Anchor_point, "clik su un punto del disegno")
    Salviamo il codice, torniamo in autocad ed eseguiamo la procedura Avvia. Proviamo il pulsante ed otteniamo una cosa del genere:
    vnMEQ2V

    Notiamo che, muovendo il mouse, un segmento insegue il puntatore fermo restando il suo punto iniziale.
    Come esercizio potremmo provare a scrivere un codice che ad ogni esecuzione della procedura cambia il punto di ancoraggio posizionandolo nel punto del click precedente.
    Enjoy

    P.S.: Il codice completo che gestisce l'evento del clik sul bottone è il seguente:

    CODICE
    Private Sub Btn_clik_Click()

    Dim Punto_click As Variant
    Dim Anchor_point(0 To 2) As Double
    Anchor_point(0) = 10#
    Anchor_point(1) = 0#
    Anchor_point(2) = 0#

    UserForm1.hide 'disattivo il dialogo
    Punto_click = ActiveDocument.Utility.GetPoint(Anchor_point, "clik su un punto del disegno")
    Label1.Caption = Punto_click(0)
    Label2.Caption = Punto_click(1)
    UserForm1.Show ' riattivo il dialogo


    End Sub


    Edited by afazio - 28/12/2015, 13:18
  5. .
    Come leggere le coordinate di un punto sul foglio di disegno?

    In molte applicazioni è necessario leggere le coordinate di un punto ove si fa clik da cui partire per comporre il nostro disegno automatico.
    Vediamo come fare.

    Intanto abbiamo necessità di un bottone nel form alla pressione del quale il form sparisce facendo posto al disegno dove daremo un clik. Dopo il clik deve riapparire il dialogo con le coordinate del punto scritte da qualche parte. Pertanto predisporremo due caselle di testo dove depositare le coordinate lette.


    Apriamo nuova sessione di Autocad e carichiamo l'applicazione precedentemente salvata (vedi topic VBA e Autocad. Primi passi in https://bar-ingegneria.forumfree.it/?t=62222272 ).
    Attiviamo il nostro Userform1 e inseriamo utilizzando la tavola degli strumenti altri tre oggetti:
    - una label1 dove depositare la coordinata x del punto clickato
    - una label2 dove depositare la coordinata y del punto clickato
    - un commandButton al clik del quale si attiva il foglio di disegno pronto ad essere clikkato.

    CuLfchZ

    Ho chiamato il nuovo commandButton col nome Btn_clik mentre ho lasciato i nomi delle label a quelli proposti da VBA.
    A tal proposito quando si prevede un dialogo affollato di oggetti diversi è buona cosa inserire nel nome un qualche segno che ci indica che tipo di oggetto trattasi e per distinguerli da eventuali variabili definite nel corso della programmazione ed un qualche segno che ci indica cosa è destinato a fare quell'oggetto. Cosi io sono solito far antecedere i nomi dei pulsanti con Btn mentre le label con Lbl.

    Dalla immagine che segue, noterete che il pulsante Btn_clik ha un aspetto simile ai pulsanti di Autocad di quei dialoghi che richiedono il click in un punto del foglio. Questo aspetto non è un qualcosa di predefinito in VBA ma occorre costruirselo da se.

    SrolOYM

    Io l'ho costruito catturando una immagine in cui era presente quel bottoncino, ritagliano il solo bottoncino e salvandolo in formato .jpg da qualche parte nel mio HD.

    DOgmRMY



    Poi l'ho caricato come sfondo del bottone nel mio dialogo premendo i tre puntini che trovate accanto alla proprietà "Picture" del pulsante in questione. Lo vedete meglio nell'immagine seguente.

    NKkq40K

    Edited by afazio - 28/12/2015, 13:32
  6. .
    vnMEQ2V

    Vediamo adesso di utilizzare quel banale dialogo per disegnare qualcosa.
    Questa discussione non serve a granchè dato che quello che si farà con quanto scriverò lo si puo fare molto piu agevolmente e speditamente direttamente dall'ambiente Autocad ma servirà solo a capire come VBA gestisce gli oggetti, le primitive grafiche del nostro disegno. Per questo io farò solo alcuni esempi banali rinviando poi all'help on line per capire come gestire qualsiasi primitiva.
    COme sempre l'Help on line è strumento indispensabile per poter scrivere qualcosa di utile dato che è praticamente impossibile per un comune mortale non programmatore ricordare a memoria tutti i comandi, tutte le proprietà di tutti gli oggetti grafici e i metodi incorporati in ciascun oggetto.
    N.B.- Il termine "metodo", nella programmazione ad oggetti, è sinonimo di "procedura" o anche "Sub Routine" cioè un insieme di istruzioni il cui fine è quello di fare una qualcosa come per esempio duplicare l'oggetto, modificarne un attributo, muoverlo cancellarlo ecc ecc.

    Segnalo altri topic che riguardano VBA ed AutoCad
    ___________________________________________________________________________
    - VBA e Autocad. Primi passi
    - VBA e Autocad. Ancora primi passi
    - VBA e AutoCad- Le primitive: la polilinea
    - VBA e AutoCAd Le primitive- IL cerchio
    - VBA Autocad --->Excel
    - VBA e AutoCad - Pick Points
    - PickPoints: salvare i dati da Autocad in Excel
    - VBA e Autocad. Il controllo del controllo
    - VBA e AutoCAD- Un esempio pronto all'uso

    - VBA AutoCad - Disegnare ellisse e nocciolo con un clik
    - Spirali logaritmiche in AutoCad
    - Disegno segmento in Autocad attraverso macro VBA Excel
    - Avviare una macro Autocad da Macro Excel
    - Progetto Sovratensioni e tracciamento ISOBARE in autocad
    - VBA E aUTOcAD- La numerazione automatica
    - VBA e AutoCad - La fotonumerazione
    - Autocad e VBA
    - Tower
    ___________________________________________________________________________

    Edited by afazio - 28/12/2015, 13:17
  7. .
    Infine scriviamo il codice che visualizza il nostro primo dialogo. Chiamo il codice con il nome Avvia().

    doppio clik sul modulo che avevamo creato all'inizio. Si apre la pagina dove inserire il codice pubblico e scriviamo la procedura che visualizza il dialogo:
    CODICE
    Sub avvia()
       UserForm1.Show
    End Sub


    1O4AI2e

    Chiudiamo tutto quanto avendo l'accortezza di salvare il progeto VBA non appena ci verrà richiesto.

    Adesso vediamo come utilizzare la banalità che fin qui abbiamo scritto.
    Apriamo una nuova sessione di autocad con foglio vuoto o anche con il file sul quale stiamo lavorando.
    Appena aperto il file scegliamo dal menu "strumenti" la voce "carica applicazione",
    CA2d6js
    indi navighiamo fino a trovare il nostro progetto precedentemente salvato e diamo il comando "carica".
    4Gheq3e
    Quindi chiudiamo quella finestra.

    Adesso possiamo far eseguire il codice premendo ALT+F8. Compare un dialogo con la lista di tutte le sub contenute in tutti i progetti caricati, noi selezioniamo quella che ci interessa (nel nostro caso "Avvia") e diamo l'ok
    pwv8UcI

    Vedremo apparirci il nostro bel dialogo che per ora non fa un bel nulla.

    B843H3d

    Edited by afazio - 26/12/2015, 15:13
  8. .
    Doppio clik sul pulsante esci
    viene visualizzato lo spazio dove inserire tutto il codice privato relativo al dialogo ed ai suoi elementi con già scritta l'intestazione della procedura da eseguire al verificarsi dell'evento clik sul pulasante:

    Vo44h58

    Private Sub CommandButton1_Click()

    End Sub


    Tra le due righe proposte inseriamo il comando che chiude il dialogo:

    UserForm1.Hide

    Da notare che dalla lista a destra è possibile scegliere i diversi eventi da gestire.

    Lz3ssdw

    Edited by afazio - 26/12/2015, 14:52
  9. .
    Occupiamoci adesso di predisporre la via di fuga da questo dialogo per evitare di restare intrappolati in esso una volta che lo avviamo col rischio di dover resettare il sistema per tornare operativi.

    Per far questo selezioniamo dalla tavola degli strumenti il "Pulsante di comando", posizioniamoci sul form, clik in un punto e trasciniamo il puntatore fino a raggiungere le dimensioni che vogliamo per quel comando.
    Al rilascio del clik, VBA inserisce un bottone nel dialogo dandogli il nome "CommandButton1" e come caption ancora "Command Button1".
    XD16oMJ
    RIcordate sempre che "Nome" e Caption" sono due cose completamente diverse. Il nome è la variabile con la quale viene riconosciuto quell'oggetto e con la quale si puo' accedere a qualsiasi proprietà o metodo dello stesso, mentre la Caption è l'etichetta che appare scritta all'interno dell'oggetto.
    Cambiamo la caption in "ESCI".
    97ucR9v
    Conviene anche cambiare il nome dell'oggetto. Se lasciassimo il nome proposto dal VBA potremmo avere la presenza di diversi bottoni coi nomi CommandButton1, CommandButton2, ..... CommandButton8 con evidenti difficolta all'interno del codice. Non riusciremmo facilmente a capire quale bottone fa questa cosa o quell'altra. In questo primo esempio non cambio il nome.

    Edited by afazio - 26/12/2015, 14:48
  10. .
    Occupiamoci adesso di costruire il nostro primo dialogo. Per fare questo: doppio clik sulla voce "userform1" del progetto VBA.
    A destra appare il nostro primo dialogo completamente vuoto avente come barra del titolo "UserForm1". Insieme al dialogo appare anche la tavoletta degli strumenti (oggetti che possiamo inserire nel nostro dialogo).

    Da sottolineare che gli strumenti possono essere estesi se si posseggono le relative librerie pubblicate nel sistema attraverso click col destro su un punto vuoto della tavoletta strumenti e selezionando la voce "Controlli aggiuntivi". L'utilizzo di strumenti aggiuntivi attraverso questa procedura rende poco portabile il progetto VBA verso altri utilizzatori dato che non è detto che gli altri abbiano le stesse nostre estensioni. Vi consiglio pertanto di usare solo gli strumenti standard.

    Fed8h7x

    Nell'immagine postata ho già cambiato il titolo del dialogo dall'anonimo "Userform1" al banale "Il Primo dialogo". Questa modifica si esegue digitando semplicemente ciò che si vuole nella proprietà Caption del dialogo. Ma il titolo della barra potrebbe anche essere cambiato attraverso codice mediante la semplice istruzione:

    Userform1.caption="Ciò che si vuole"

    Il dialogo, le sue proprietà, il suo contenuto, è accessibile attraverso il suo nome che rappresenta la variabile con la quale viene memorizzato all'atto dell'apertura.
    E' opportuno dare dei nomi ai dialoghi che siano significativi di quello che sono destinati a compiere.

    Edited by afazio - 26/12/2015, 14:41
  11. .
    B843H3d

    Segnalo altri topic che riguardano VBA ed AutoCad
    ___________________________________________________________________________
    - VBA e Autocad. Primi passi
    - VBA e Autocad. Ancora primi passi
    - VBA e AutoCad- Le primitive: la polilinea
    - VBA e AutoCAd Le primitive- IL cerchio
    - VBA Autocad --->Excel
    - VBA e AutoCad - Pick Points
    - PickPoints: salvare i dati da Autocad in Excel
    - VBA e Autocad. Il controllo del controllo
    - VBA e AutoCAD- Un esempio pronto all'uso

    - VBA AutoCad - Disegnare ellisse e nocciolo con un clik
    - Spirali logaritmiche in AutoCad
    - Disegno segmento in Autocad attraverso macro VBA Excel
    - Avviare una macro Autocad da Macro Excel
    - Progetto Sovratensioni e tracciamento ISOBARE in autocad
    - VBA E aUTOcAD- La numerazione automatica
    - VBA e AutoCad - La fotonumerazione
    - Autocad e VBA
    - Tower
    ___________________________________________________________________________


    Dopo tanto tempo di assenza al bar, dopo tanto peregrinare e dopo che m'è morto l'Argo pidocchioso, ho deciso di riaprire qui una finestra e prender un pò d'aria fresca.

    In questo 3d mi propongo di dare le prime istruzioni su come costruire un dialogo in VBA per autocad, come richiamarlo da codice e sopratutto come chiuderlo.
    Successivamente ci dedicheremo a popolare il dialogo con immagini, caselle di input piu' o meno combinate, bottoni, box radio ed altro finalizzate al disegno automatico di quel che ci viene in testa.
    Infine vedremo come interagire con gli eventuali "oggetti" presenti sul foglio di disegno di Autocad, come generare nuovi layer attribuirne le proprietà fondamentali, come generare un blocco e cose cosi.
    Sia chiaro a tutti coloro che avranno voglia di seguire queste righe che il sottoscritto non è un vero programmatore, che molto probabilmente alla prima domanda non saprà dare la risposta giusta e che è consapevole del fatto che esistono centinaia di siti dedicati al VBA per Autocad che trattano o avranno trattato gli stessi argomenti con molta professionalità. Tuttavia, come disse qualcuno nel recinto dei suini della circe meghera, capita che molti non arrivano alla prima rampa soltanto perchè non sono in grado di superare il primo gradino.


    Come accedere all'ambiente VBA in autocad.

    Più che cento parole val una sola immagine.

    1kIpqer

    Noterete che la via abbreviata per accedere all'ambiente VBA di autocad è la combinazione di tasti ALT+F11


    Vi si apre finalmente lo spazio dove possiamo inserire sia codice che dialoghi. L'ambiente è praticamente uguale a quello che abbiamo avuto modo di vedere in VBA per Excel.

    dBq2spv

    Inseriamo adesso un Form dove successivamente costruiremo il nostro primo dialogo, ed un modulo dove metteremo il codice necessario per richiamare il dialogo.

    Clik col destro in un punto qualsiasi della finestra del progetto VBA (o in alternativa selezionare la voce di menu "inserisci") e scegliere la voce "inserisci" e da qui prima selezionare "UserForm" ed una seconda volta selezionare al voce "modulo".

    6x9NpU0

    Edited by afazio - 26/12/2015, 15:13
  12. .
    CITAZIONE (guillen @ 29/6/2012, 16:33) 
    Ciao a tutti sono Alessandro da Udine

    A tutti?
    Ma se qui non c'è più nessuno.
7962 replies since 29/6/2012
.