Autore |
Discussione  |
|
blubossa
Utente Senior
102 Messaggi |
Inserito il - 30 marzo 2011 : 15:21:03
|
ciao a tutti, ho una cartella con una libreria di blocchi che vorrei inserire in automatico in un disegno in cui ci sono dei testi che hanno lo stesso nome dei blocchi insomma:
vorrei fare una selezione a finestra dei testi, se è presente un blocco con lo stesso nome del testo il blocco viene inserito nel punto di inserimento del testo, in caso il blocco non è presente deve venire fuori un alert con il nome del blocco mancante e successivamente il programma continua ad analizzare gli altri testi fino ala fine del programma.
chi mi da una mano a mettere un po di ordine e a darmi qualche consiglio?
spero di essere stato chiaro.
grazie bb
|
|
Giuseppe Mauro
Amministratore

Regione: Campania
Prov.: Napoli
2707 Messaggi |
Inserito il - 30 marzo 2011 : 16:41:56
|
Una cosa da nulla...  |
 |
|
blubossa
Utente Senior
102 Messaggi |
Inserito il - 30 marzo 2011 : 16:54:15
|
| Messaggio inserito da Giuseppe Mauro
Una cosa da nulla... 
|
si fa quel che si può |
 |
|
Giuseppe Mauro
Amministratore

Regione: Campania
Prov.: Napoli
2707 Messaggi |
Inserito il - 30 marzo 2011 : 18:16:58
|
Dai un ssget dei testi con filtro testo, e crei quindi un set di selezione che contiene solo i testi Poi fai leggere la tua dir, ricavandone i nomi dei blocchi (che saranno dwg immagino) e li immagazzini in un altra lista Se invece sono blocchi presenti nel disegno, devi sfogliarli con tblsearch e tblnext
Poi con un ciclo sfogli una per una le entita' contenute nella lista dei testi, con una cosa del tipo
setta contatore=0
Ciclo: Ad entita' num.0 fai estrarre il valore del testo Se esiste (blocco con nome = testo) (progn inserisci (blocco = valore testo) nel punto (valore coord inserimento entita' num 0) cancella (nome entita' num.0) ) Se non esiste (blocco con nome = testo) (alert "Il blocco relativo al nome:" valoretesto " non esiste") setta contatore = contatore +2 chiusura ciclo
Ovviamente il tutto e' estremamente schematico, ma almeno hai un canovaccio su cui lavorare |
 |
|
GP
Utente Master
Regione: Piemonte
Prov.: Vercelli
2778 Messaggi |
Inserito il - 30 marzo 2011 : 20:12:36
|
Prova così:
(prompt "\Selezionare i testi")
(setq T_tot (ssget '((0 . "TEXT"))))
(setq cont -1)
(repeat (sslength T_tot)
(setq primo_T (ssname T_tot (setq cont (1+ cont))))
(setq DWGname (strcat (cdr (assoc 1 (entget primo_T))) ".DWG"))
(if (not (findfile DWGname)) (alert (strcat "Non trovato il file: " DWGname)))
(if (findfile DWGname)
(progn
(setq P_inser (cdr (assoc 10 (entget primo_T))))
(command "_-INSERT" DWGname P_inser "1" "1" "1")
)
)
)
Chiaramente i dwg devono risiedere in cartelle del percorso di AutoCAD
 |
 |
|
blubossa
Utente Senior
102 Messaggi |
Inserito il - 01 aprile 2011 : 08:36:19
|
| Messaggio inserito da GP
Prova così:
(prompt "\Selezionare i testi")
(setq T_tot (ssget '((0 . "TEXT"))))
(setq cont -1)
(repeat (sslength T_tot)
(setq primo_T (ssname T_tot (setq cont (1+ cont))))
(setq DWGname (strcat (cdr (assoc 1 (entget primo_T))) ".DWG"))
(if (not (findfile DWGname)) (alert (strcat "Non trovato il file: " DWGname)))
(if (findfile DWGname)
(progn
(setq P_inser (cdr (assoc 10 (entget primo_T))))
(command "_-INSERT" DWGname P_inser "1" "1" "1")
)
)
)
cia GP,
funziona alla grande
e se volessi fare inserire il blocco con la stesso angolo di rotazione del testo?
cosa devo estrarre dal db dell'oggetto testo? per poi utilizzarlo nell'agolo di inserimento del blocco....
grazie
bb
Chiaramente i dwg devono risiedere in cartelle del percorso di AutoCAD

|
|
 |
|
Terminator
Utente Master
725 Messaggi |
Inserito il - 01 aprile 2011 : 08:55:15
|
(prompt "\Selezionare i testi")
(setq T_tot (ssget '((0 . "TEXT"))))
(setq cont -1)
(repeat (sslength T_tot)
(setq primo_T (ssname T_tot (setq cont (1+ cont))))
(setq DWGname (strcat (cdr (assoc 1 (entget primo_T))) ".DWG"))
(if (not (findfile DWGname))
(alert (strcat "Non trovato il file: " DWGname))
)
(if (findfile DWGname)
(progn
(setq P_inser (cdr (assoc 10 (entget primo_T))))
(command "_-INSERT" DWGname P_inser "1" "1" (/ (* (cdr (assoc 50 (entget primo_T))) 180.0) pi))
)
)
)
chiedo scusa a GP se mi sono intromesso... |
 |
|
GP
Utente Master
Regione: Piemonte
Prov.: Vercelli
2778 Messaggi |
Inserito il - 01 aprile 2011 : 14:52:55
|
@Terminator
Ci mancherebbe... nessun problema, anzi... |
 |
|
blubossa
Utente Senior
102 Messaggi |
Inserito il - 01 aprile 2011 : 18:26:51
|
grazie a tutti, c'è sempre da imparare da Voi
bb |
 |
|
|
Discussione  |
|