Newsgroup: it.comp.software.cad
Titolo: Autolisp

Ciao, spero ci sia qualcuno che possa aiutarmi.
Uso autocad 2000ì, ho la necessità di automizzare mediante autolisp o che so
io, dei comandi:
1) raggruppare oggetti ( semplicemente selezionando le entità - bypassando o
meglio attribuendo automaticamante al gruppo uno "  /S  " )
2) Esplodere il gruppo con la semplice selezione del gruppo (  normalmente
chiede il nome del gruppo ).
3) Ruotare gli attributi a "zero" ( compresi nei gruppi ).
Forse è sufficente personalizzare un tasto toolbar, ( in verità l'ho già
provata ma non riesco ad aggiungere " /S " - tanto meno ad esplodere i
gruppi senza digitarne il nome -
Spero sinceramente ci sia una soluzione.
Saluti Niko
--
do....@tin.it

3) Ruotare gli attributi a "zero" ( compresi nei gruppi ).
Il tuo problema è risolvibile attraverso il Visual Lisp o il VBA, ma
ho bisogno di capire bene ciò che vuoi fare.
1) Gli oggetti selezionati devono andare nel gruppo che ha che nome?
2) Un gruppo non si esplode! Un gruppo è solo un insieme di oggetti,
definiti separatamente, che AutoCAD gestisce insieme in fase di
operazioni di modifica globali (copia, sposta, cancella).
3) I gruppi non hanno attributi, forse stai parlando dei blocchi ???
Saluti, Aniello
-- 
Aniello Annunziata
Content Director Manager
www.cadlandia.com
aniello.a...@cadlandia.com
Per rispondermi in privato, togli NOGARBAGE dall'indirizzo

Ciao Dniko,
Scusa, ma non ho capito quasi nulla di cio' che ti serve,
prova a dettagliare un po' meglio, please.
Magari posta un po' di codice che stai provando a fare
con indicato cosa non risci a fare.
o senno' scrivi in privato che ti do il telefono e ne parliamo  voce.
Ciao Giovanni Azani

Dunque spiego meglio:
1) quando si raggruppano più oggetti, polilinee, attributi, linee blocchi o
altre cose, allo scopo di poter gestire come diceva il buon Aniello, i
comandi sposta, ruota etc.., il comando "-group" ti chiede di inserire un
nome da attribuire al gruppo da formare, con questo comando semplice riesco
a creare il gruppo e fare altre cosucce come descritto in stringa:
^C^Csplframe;1;rg;;^C^C-LA;ON;*-2D,*3D;;-group;c;*;;\\;^C^C-LA;OFF;*3D;;^C^C
splframe;0;rg;;
questo comando attribuisce al gruppo un codice del tipo *A1 etc.. ( a me non
interessa che tipo di codice autocad attribuisce al gruppo, ma interessa
raggrupparlo e basta)
Il problema sorge quando devo "esplodere" ( o meglio disgiungere) il gruppo,
ad esempio per fare modifiche.
il comando (-group --> Explode), mi chiede il nome del gruppo da esplodere,
per tanto dovrei leggere le proprietà del gruppo e quindi digitarlo al
prompt del comando citato e così via.
in conclusione la routine che mi occorre è quella di
1) leggere il nome del gruppo attribuito da autocad automaticamente
2) selezionare il gruppo per 'esplosione.
Spero di essere stato sufficientemente chiaro.
Saluti Dniko

Ciao Dniko
mi consenti un nuovo titolo?
Io spero tu sappia usare l'autolisp,
eccoti in tal caso una buona base, che mi e' gia' costata un bel po di
fatica
(non ho mai gestito in autolisp i groups,dato che non li uso mai)
se ti serve qualcosa di diverso perche non sai metterci mano,
devi pazientare un po di gg..
Scusa in codice un po' incasinato, ma ci sono andato
col macete a districarmi fin giu' nel "dizionario" :-)
Ciao Giovanni Anzani
Te lo ho mandato come allegato pure  casa,
qua occhio a "ricucire le frasi"
;---------------------------------------------------------------------------
------------------------------------------------
(defun getassoc  (lent cod / lentcod) (foreach # lent (if (= (car #) cod)
(setq lentcod (append lentcod (list #))))) lentcod)
;---------------------------------------------------------------------------
------------------------------------------------
(defun c:f1 (/ l_obj             ; lista dell'oggetto selezionato
        l_aux             ; lista temporanea
        l_obj_group_name  ; nomi di entita' dei gruppi relativi all'oggetto
selezionato
        l_diz_group       ; lista del dizionario relativo ai gruppi
        l_all_group_name  ; nomi di entita' dei gruppi esistenti nel disegno
        l_all_group_cod   ; nomi mnemonici dei gruppi esistenti nel disegno
        l_all_group_obj)  ; nomi di entita' degli oggetti appartenenti a
ciascun gruppo del disegno
(setq  l_obj nil  l_aux nil l_obj_group_name nil l_diz_group nil
l_all_group_obj nil)
(setq l_obj  (entget (car(entsel))))
(setq l_aux  (reverse (cdr (member (assoc 102 l_obj) l_obj))))
(setq l_obj_group_name (mapcar 'cdr (reverse (cdr (member (assoc 102 l_aux)
l_aux)))))
(setq l_diz_group (append l_diz_group (list (entget (cdr (assoc 330 (entget
(car l_obj_group_name))))))))
(setq l_all_group_name  (mapcar 'cdr (getassoc (car l_diz_group) 350)))
(setq l_all_group_cod   (mapcar 'cdr (getassoc (car l_diz_group) 3)))
(foreach # l_all_group_name
    (setq l_all_group_obj (append l_all_group_obj (list (mapcar 'cdr
(getassoc (entget #) 340))))))
;---------------------------------------------------------------------------
------------------------------------------------
  (princ "\n (l_obj_group_name): ") (princ l_obj_group_name)
  (princ "\n (l_all_group_name): ") (princ l_all_group_name)
  (princ "\n (l_all_group_cod):  ") (princ l_all_group_cod)
  (princ "\n (l_all_group_obj):  ") (princ l_all_group_obj)
;---------------------------------------------------------------------------
------------------------------------------------
(princ))