Aller au contenu

Mix de 2 Lisp


Messages recommandés

Invité ingoenius
Posté(e)

Bonjour a tous, ici j'ai 2 script

 

le premier sert a créer une répétition de la commande "offset"

et le deuxième sert a placer un bloc sur un "chemin choisi"

 

maintenant je voudrait mixer le 2 pour créer la répétition de bloc sur chaque chemin cree par le premier script , mais je sais plus comment procéder

 

merci a vous ;-)

 

 

 



(defun C:ABBLOC ()
(setq DTR (/ PI 180))		;fattore di moltiplicazione x gradi verso radianti  pi é Pi greco!
(setq DESTRA (* 0 DTR))		;traduzione del comando polar  
(setq SINISTRA (* 180 DTR))	;traduzione del comando polar 
(setq SU (* 90 DTR))		;traduzione del comando polar 
(setq GIU (* 270 DTR))		;traduzione del comando polar 
(setq DIAG (* 45 DTR))		;traduzione del comando polar 

 
 (setq QP (fix(getreal "\nQuanti percorsi\n")))
 (setq nome (car (entsel "\nSeleziona il  Path\n")))
 
 (setq DD 1.0) ;distanza decalmage offsett	
 (setq P1 (getpoint "\nClicca il lato della ripetizione:\n"))

 (repeat QP
 (command "_offset" DD nome P1 "")
 (setq P1 (polar P1 sinistra 1.0)) 
 (setq nome (entlast))	
 
 )


)
;--------------------------------------------------------------------------
(defun C:AABLOC ()


 
 
(setq DTIPO (entget nome))
(setq TIPO (cdr (assoc 0 DTIPO)))		;determina cosé il tipo di oggetto

  (cond
   ((= TIPO "ARC")				;se é un arco

(command "_pedit" nome "o" "" "" )		;se non é un polilinea converte e poi procede
(setq nomeD (entget (entlast)))			;ultimo oggetto creato 
(setq nome (cdr (assoc -1  nomeD)))		;nuovo nome entità

(setq BLOCCO (car (entsel "\nSelect 1 block ")))
(setq DatiB (entget BLOCCO))			;estrae tutte le informazioni del blocco
(setq NBLOC (cdr (assoc 2 DatiB)))		;recupera il nome del blocco selezionato
(setq SPAZIO (getreal "\nInsert distance to blocks\n"))
(setq dati (entget nome))			;dati polilinea
(command "_area" "_object" nome)
(setq lung  (getvar "perimeter"))
(setq N (+ 1 (fix (/ lung SPAZIO))))		;calcola il numero delle copie da fare
(command "_divide" nome "B"  NBLOC "_Y" N "")
);fine cond 1

((= TIPO "CIRCLE");se é un cerchio
(setq BLOCCO (car (entsel "\nSelect 1 block ")))
(setq DatiB (entget BLOCCO));estrae tutte le informazioni del blocco
(setq NBLOC (cdr (assoc 2 DatiB)));recupera il nome del blocco selezionato
(setq SPAZIO (getreal "\nInsert distance to blocks\n"))
(setq dati (entget nome));dati polilinea
(command "_area" "_object" nome)
(setq lung  (getvar "perimeter"))
(setq N (+ 1 (fix (/ lung SPAZIO))));calcola il numero delle copie da fare
(command "_divide" nome "B"  NBLOC "_Y" N "")
);fine cond 2


((= TIPO "ELLIPSE");se é un'ellisse
(setq BLOCCO (car (entsel "\nSelect 1 block ")))
(setq DatiB (entget BLOCCO));estrae tutte le informazioni del blocco
(setq NBLOC (cdr (assoc 2 DatiB)));recupera il nome del blocco selezionato
(setq SPAZIO (getreal "\nInsert distance to blocks\n"))
(setq dati (entget nome));dati polilinea
(command "_area" "_object" nome)
(setq lung  (getvar "perimeter"))
(setq N (+ 1 (fix (/ lung SPAZIO))));calcola il numero delle copie da fare
(command "_divide" nome "B"  NBLOC "o" N "")
);fine cond 3
   

((= TIPO "LWPOLYLINE");se é una polilinea
(setq BLOCCO (car (entsel "\nSelect 1 block ")))
(setq DatiB (entget BLOCCO));estrae tutte le informazioni del blocco
(setq NBLOC (cdr (assoc 2 DatiB)));recupera il nome del blocco selezionato
(setq SPAZIO (getreal "\nInsert distance to blocks\n"))
(setq dati (entget nome));dati polilinea
(command "_area" "_object" nome)
(setq lung  (getvar "perimeter"))
(setq N (+ 1 (fix (/ lung SPAZIO))));calcola il numero delle copie da fare
(command "_divide" nome "B"  NBLOC "_Y" N "")
);fine cond 4


((= TIPO "SPLINE");se é una spline
(setq BLOCCO (car (entsel "\nSelect 1 block ")))
(setq DatiB (entget BLOCCO));estrae tutte le informazioni del blocco
(setq NBLOC (cdr (assoc 2 DatiB)));recupera il nome del blocco selezionato
(setq SPAZIO (getreal "\nInsert distance to blocks\n"))
(setq dati (entget nome));dati polilinea
(command "_area" "_object" nome)
(setq lung  (getvar "perimeter"))
(setq N (+ 1 (fix (/ lung SPAZIO))));calcola il numero delle copie da fare
(command "_divide" nome "B"  NBLOC "_Y" N "")
);fine cond 5   

   ((= TIPO "LINE");se é una line

(command "_pedit" nome "o" "" "" );se non é un polilinea converte e poi procede
(setq nomeD (entget (entlast)));dati ultima selezione 
(setq nome (cdr (assoc -1  nomeD)));nuovo nome entità

(setq BLOCCO (car (entsel "\nSelect 1 block ")))
(setq DatiB (entget BLOCCO));estrae tutte le informazioni del blocco
(setq NBLOC (cdr (assoc 2 DatiB)));recupera il nome del blocco selezionato
(setq SPAZIO (getreal "\nInsert distance to blocks\n"))
(setq dati (entget nome));dati polilinea
(command "_area" "_object" nome)
(setq lung  (getvar "perimeter"))
(setq N (+ 1 (fix (/ lung SPAZIO))));calcola il numero delle copie da fare
(command "_divide" nome "B"  NBLOC "_Y" N "")
);fine cond 6
(t nil)
   );fine delle cond
   
   );fine defun


----------------------------------------------------------------------

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité