• このフォーラムは、www.cad3d.it/forum1 - イタリアのデザインコミュニティの機械翻訳です。いくつかの用語は正しく翻訳されていません。

コマンドラインから可視性の動的ブロックを変更

  • Thread starter Thread starter gabry_one
  • Start date Start date

gabry_one

Guest
buona sera,

come da oggetto la mia domanda è molto semplice: è possibile modificare la visibilità dei blocchi dinamici inserendo istruzioni dalla riga di comando?
per quanto abbia cercato :frown: sono riuscito a trovare solo il comando caprop valido solo per le proprietà nel campo "generale" che ha qualsiasi oggetto

ringrazio chiunque riesca a darmi una risposta
 
grazie tristan per l'interessamento, spesso mi capita di dover inserire su planimetrie un certo numero di punti, a volte anche più di 100 ciascuno con un proprio id, simbolo, e a volte altre informazioni che ho a disposizione sempre su file excel. a questo proposito mi sono creato una macro vba excel abbastanza semplice, che dalla tabella, mi genera una elenco di righe di comando tipo il seguente:

-inser
simbologia punti
100,100,0
1
0
punto001
valorea
valoreb

_.acmrselect
100,100,0


ovviamente l'elenco si ripete per tutti i punti presenti in tabella...
a questo punto mi servirebbe soltanto il comando per modificare lo stato di visibilità del blocco appena inserito (e selezionato) in modo da evitarmi anche il lavoro di selezionare i punti a gruppi per assegnare loro il giusto simbolo!
so che potrei risolvere utilizzando blocchi distinti, ma poi in fase di revisione della tavola non avrei più la possibilità di modificare al volo la simbologia di un punto

io purtroppo con lisp non saprei nemmeno dove mettere le mani, se qualcuno riuscisse a trovare una soluzione ne sarei davvero molto grato!!!
 
lo scopo dei blocchi dinamici è questo: poterli modificare senza ricorrere ad altri blocchi e quindi servirsi di liste più o meno lunghe come quella della visibilità.
mi chiedo, perché crearsi un comando "ad hoc" quando io comunque devo agire su una lista, che non può essere sul prompt di autocad?
 
mi chiedo, perché crearsi un comando "ad hoc" quando io comunque devo agire su una lista, che non può essere sul prompt di autocad?

non mi è molto chiara la domanda, comunque il problema che io mi pongo è il seguente:
fase 1 - inserimento dati
realizzo la tavola inserendo un certo numero di blocchi con attributo. i dati originari si trovano su excel quindi mi risulta semplice inserire tutti i blocchi in una botta sola da riga di comando come riportato qualche post più sopra
non sarebbe un problema utilizzare blocchi diversi per simboli diversi se non fosse per la fase 2
fase 2 - revisione dati
in fase di revisione capita di voler "forzare" i dati originali e modificare la simbologia di qualche blocco, a questo punto se non avessi utilizzato un blocco dinamico nella precedente fase, mi troverei a dover sostituire il blocco esistente dovendo inoltre inserire manualmente i dati di quel blocco!

sono ben accette anche soluzioni alternative ovviamente!
 
hai ragione, in tanti mi dicono che spiego male...
dicevo che se inserisci tutti i blocchi in un colpo solo, sarai sempre costretto a cambiare la simbologia dei blocchi manualmente e questo non puoi farlo dalla riga di comando ma solo cliccando sul simbolo di visibilità del blocco stesso.
alternativa, con il lisp giusto, potrebbe essere quella di sostituire il blocco con un altro, recuperando i dati del primo, il tutto con un solo clic. anche qui, però, non posso farlo da riga di comando.
 
con il lisp giusto, potrebbe essere quella di sostituire il blocco con un altro, recuperando i dati del primo, il tutto con un solo clic.

ecco, questa sarebbe un ottima soluzione al mio problema, certo per fare un comando lisp non saprei da dove cominciare :frown:... conosci qualche guida rapida per il lisp?
 
salve a tutti, a distanza di qualche mese dall'apertura del post ho pensato di postare la soluzione che ho trovato su questo stesso sito:
"putdbprops.lsp" permette di assegnare non solo la visibilità ma anche le altre "proprietà" dinamiche direttamente da linea di comando :finger:
e visto che ci sono allego anche il file excel che ho prodotto e perfezionato per l'inserimento multiplo di blocchi che, partendo da una tabella di id e relative coordinate, permette di piazzare su un disegno cad con pochi passaggi centinaia di blocchi con proprietà specifiche per ognuno (attributi, visibilità, colore, scala, rotazione)
ovviamente per far funzionare il tutto va prima caricato il file lisp, che consiglio di inserire nel gruppo di avvio. in oltre essendo un una procedura un po' forzata per autocad ci sarebbero tutta una serie di accorgimenti da prendere, quindi se qualcuno volesse provare ed avesse difficoltà sarò lieto d'aiutarlo!
 

Attachments

ciao, ho provato la tua procedura ma a me da errore la lisp.

" command: putdbprops
; error: too few arguments
command: putdbprops ; error: too few arguments "

sai forse il perché? provato sul 2007 e aul 2014.
grazie
 
ciao, ho provato la tua procedura ma a me da errore la lisp.

" command: putdbprops
; error: too few arguments
command: putdbprops ; error: too few arguments "

sai forse il perché? provato sul 2007 e aul 2014.
grazie

inviami il file dwg con il blocco che hai usato ed il file excel come lo hai compilato tu, e vediamo.
 
innanzi tutto grazie per la risposta. non credevo di riuscire a riesumare una discussione del 2012.
premetto che non conosco tanto il linguaggio le lisp. in realtà io vorrei modificare la visibilià di un blocco dinamico già inserito.
il caso pratico vuole che in un file di rilievo topografico ci siano molti blocchi (tipo punto con 3 attributi descrittivi ed uno di visibilità, di nome "vert") e la mia base di partenza riporta su layer differenti i vert con uno specifico attributo (i chiusini stanno sul layer "chiusini" ecc, ecc.). ora io devo "manualmente" isolare ogni layer, selezionare il contenuto e dalle proprietà attribuirgli: lo specifico campo attributo di descrizione e lo specifico aspetto di visibilità. siccome sono molti tipi la cosa è un po' noiosa, ma credo semplice da automatizzare.
ti ringrazio del prezioso aiuto.
 
scusami ma, senza il disegno sotto gli occhi, non mi è ancora del tutto chiaro il problema, i blocchi sono già stati posizionati e vanno aggiornati solo gli attributi? i blocchi si trovano già sul layer corretto?
comunque io non programmo con lisp, ho solo creato una macro excel in vba la quale a partire da una tabella di informazioni (ogni riga è relativa alle informazioni di un blocco: posizione, colore, visibilità etc.) genera una lista di linee di testo che andranno incollate nella finestra "riga di comando" di autocad. così in autocad vengono creati tutti i blocchi elencati nella tabella excel con le relative proprietà.
con questo sistema non si possono modificare blocchi già inseriti, come mi sembra di capire per il tuo caso. ma potrebbe essere semplice estrarre le informazioni dei blocchi esistenti con il comando "estrai dati", eliminare i blocchi e reinserirli con il mio sistema integrando nella tabella le informazioni mancanti.
il mio sistema è molto debole perché non c'è interazione tra le linee che io creo e le domande che autocad pone linea dopo linea, per cui le righe che si inseriscono devono combaciare alla perfezione. a volte tra versioni diverse di autocad le domande per l'inserimento dei blocchi cambiano e nel tempo ho dovuto adattare la macro affinché elencasse i vari comandi nel giusto ordine. per questo intanto ti chiedevo di fornirmi il file excel compilato da te insieme al file dwg.
 
in effetti io parto da un file con all'interno già i blocchi inseriti e cercavo un comando lisp che modificasse il parametro visibilità e l'attributo descrizione dei blocchi dinamici
 

Attachments

in effetti io parto da un file con all'interno già i blocchi inseriti e cercavo un comando lisp che modificasse il parametro visibilità e l'attributo descrizione dei blocchi dinamici

ciao, premetto che non ho potuto perderci molto tempo e quindi mi sono dovuto adattare con quello che avevo: la mia tabella excel prevedeva l'inserimento di blocchi con solo 2 attributi, che per fortuna prevedono 3 linee di testo ciascuno, quindi ho dovuto modificare il tuo blocco "vert" i modo che avesse un unico attributo multilinea. detto questo ho modificato anche la mia tabella affinché modificasse oltre che la visibilità del blocco anche il layer di appartenenza. ed ha funzionato! incollando le linee di comando in autocad sono stati generati tutti i blocchi ciascuno sul layer indicato.
modus operandi:
ho estratto tutte le informazioni dai tuoi blocchi (vedi "estrazione dati da blocchi.txt") con il comando "estrai dati" di autocad poi li ho eliminati.
su notepad ho sostituito i punti con le virgole (altrimenti excel fa casino) e risistemato i dati del txt sul file temporaneo "estrazione dati da blocchi.xlsx"
ho incollato le singole colonne di dati all'interno della tabella "inser. blocchi con layer.xlsm" rispettando l'intestazione delle colonne
ho selezionato correttamente i parametri in alto a destra: blocco con 1 attributo multilinea, parametro visibilità "si", scala uniforme "si" (p.s. ho impostato la scala uniforme sul tuo blocco).
rimane da compilare per ciascuna riga (ogni riga è un blocco!) la descrizione che avevi previsto alla 3° riga, cui io ho assegnato un valore di esempio "descr_001" e assegnare il giusto parametro di visibilità (io ho compilato i primi 20/30 blocchi)
click su elabora dati e viene generato un foglio di output con tutte le linee di comando (p.s. le linee sono già in memoria, basta solo incollarle)
ctrl+v sulla riga di comando autocad e vedi che in pochi secondi vengono creati centinaia di blocchi con tutte le informazioni compilate.
note:
1. ricorda che per far funzionare tutta la giostra devi necessariamente caricare la putdbprops.lsp che ho inserito nell'allegato (non è mia, l'ho trovata su internet)
2. quando sembra aver finito di inserire blocchi, autocad si blocca, e rimane "congelato" anche per 40/50 secondi, ma poi si riprende sempre!
3. evita di inserire spazi nelle descrizioni, piuttosto usa "_"

spero di esserti stato d'aiuto. saluti!
 

Attachments

sto guardando il file che la procedura ha generato ma purtroppo nei blocchi mi sembra ancora che non ci sia l'automatismo di variare il parametro visibilità o sbaglio?
 
premesso che non avevo scritto nel precedente posto che il file dwg allegato ha i blocchetti inseriti con la mia procedura.
tanto premesso, questo è un estratto del file generato dalla macro (relativo al punto n. 102):

-inser
vert_bis
1510985.554,5041253.332


102
11,05
descr_005

(putdbprops (car (entsel "\nselect dynamic block: ")) '(("visibility" . "chiu caditoia")))
ultimo
selez
ultimo

caprop
layer
289 chiu caditoia

alla riga "(putdbprops (car (entsel "\nselect dynamic block: ")) '(("visibility" . "chiu caditoia")))" viene impostata la visibilità del blocchetto sul simbolo di caditoia, ed infatti sul file.dwg precedentemente allegto il blocco n. 102 risulta impostato su caditoia.
perché dici che non vedi l'automatismo? o forse non ho capito cosa ti serviva?
 
forse è meglio che ci perda qualche giorno per fare delle prove, non vorrei mai farti delle domande banali facendoti solo perdere tempo e la pazienza. ci sentiamo tra qualche giorno se avrai ancora tempo da dedicarmi. grazie ;)
 

Forum statistics

Threads
46,674
Messages
380,976
Members
2
Latest member
loop80
このフォーラムは、www.cad3d.it/forum1 - イタリアのデザインコミュニティの機械翻訳です。いくつかの用語は正しく翻訳されていません。

Members online

No members online now.
Back
Top