Creare una distinta in modo automatico (template dinamico)

Dr.Lube

Utente Standard
professione: Studente
software: AutoCAD Map 3D 2012
regione: Alto Adige
Ciao di nuovo,
avrei bisogno di un indirizzamento su come creare una distinta automatica degli oggetti che ho nel disegno.

Trattasi della distinta dei cordoli, che nel mio dwg sono dei blocchi con nome, lunghezza, larghezza. Nella distinta compariranno anche il tipo di ferro superiore ed inferiore con relativo disegnetto (è qui il problema!!)

Nel mio lisp andrò a fare un dump generale che mi sommi le lunghezze di tutti i blocchi con la stessa etichetta che identifica il tipo (es. c1, c2, etc.).

Nota questa informazione e quella relativa a come è armato inferiormente e superiormente andrò ad inserire questo blocco dinamico con gli attributi editati automaticamente. Per ogni cordolo si andrà a generare il blocco opportunamente modificato subito sotto quello precedente.

Il mio problema è che non ho idea di come disegnare i correnti superiori ed inferiori in modo automatico (ho provato con un "Serie", ma non posso controllare esternamente il passo di questo parametro. Forse mi sfugge qualcosa..

In allegato trovate il blocco "distinta_cordoli".
Visualizza allegato distinta_cordoli.dwg

Risultato che vorrei ottenere:
2015-04-09 16_15_38-Autodesk AutoCAD 2015 - [distinta cordoli.dwg].png

Grazie mille!!
Dennis

Ps. alcune scritte ancora non sono state convertite come parametri
 

Dr.Lube

Utente Standard
professione: Studente
software: AutoCAD Map 3D 2012
regione: Alto Adige
Alla fine li ho fatti con un entmake, dopo aver inserito il blocco..
Mi chiedevo come mettere il retino in automatico ma non riesco via lisp (tanto per cambiare)

Al momento stavo provando con:

Codice:
(vl-cmdf "_-hatch" "P" "S" "COL" (RTOS colore_sup 2 0) punto_inserimento "")

Iterato per ogni ferro (forse avrebbe più senso fare in altro modo)

Inoltre mi chiedo se c'è un modo per vedere le opzioni in inglese invece che in italiano così da mettere le opzioni giuste invece che tirare ad indovinare
2015-04-14 11_17_02-.png

Grazie, Dennis
 

Dr.Lube

Utente Standard
professione: Studente
software: AutoCAD Map 3D 2012
regione: Alto Adige
Ok, forse ci sono riuscito con il metodo stupido:

Codice:
(vl-cmdf "_-hatch" "P" "S" "S" (entlast) "" "COL" (RTOS colore_sup 2 0) punto_inserimento "")

Per farlo in inglese come posso fare?
Idee per un metodo più veloce?
 

GP.

Utente Senior
professione: Nientologo
software: uozapp
regione: Vercelli
Per le opzioni dei comandi puoi consultare online una guida in inglese, sarà banale ma è quello che ho fatto anch'io dopo essermi stufato di "provare".

Il metodo con vla-addhatch dovrebbe essere il più veloce dopo entmake.

Non ti conviene però inserire direttamente nel blocco i ferri già tratteggiati e impostare il relativo parametro di visibilità in fase di inserimento via lisp?
 

Dr.Lube

Utente Standard
professione: Studente
software: AutoCAD Map 3D 2012
regione: Alto Adige
Ciao GP, avevo visto vla-addhatch ma non avevo capito la sintassi.. Mi pareva un po' incasinato, tu hai qualche idea di come funzioni?

Il problema dei miei ferri è che ci sono "infiniti" casi. Dipendono dalla larghezza, il numero (quindi il passo), il tipo (quindi cambia anche il colore dei ferri che possono essere diversi da quelli sotto).

Oddio si vede malissimo :D
[video=youtube;0jXQj9iDjy4]https://www.youtube.com/watch?v=0jXQj9iDjy4&feature=youtu.be[/video]
 

Dr.Lube

Utente Standard
professione: Studente
software: AutoCAD Map 3D 2012
regione: Alto Adige
Non so quanto sia bello ma ho fatto così:

Codice:
(defun hatch (colore / hobj)

      (setq acdoc (vla-get-activedocument  (vlax-get-acad-object))
          acspc (vlax-get-property acdoc (if (= 1 (getvar 'CVPORT)) 'paperspace 'modelspace))
    )

    (setq hobj (vla-addhatch acspc achatchpatterntypepredefined "SOLID" :vlax-true achatchobject))
    (vlax-put-property hobj 'color colore)

;aggiungo contorno -> accetta solo variant
    (vla-appendouterloop hobj
        (vlax-make-variant
            (vlax-safearray-fill
                (vlax-make-safearray vlax-vbobject '(0 . 0))
                (list (vlax-ename->vla-object ent))
            )
        )
                         
    )


  (vla-evaluate hobj)
  )
 

Statistiche forum

Discussioni
59,320
Messaggi
505,347
Utenti registrati
110,844
Ultimo utente registrato
Matteo Maiardi

Utenti online

Top