TuttoCAD Forum

TuttoCAD Forum
[ Home | Registrati | Discussioni Attive | Discussioni Recenti | Segnalibro | Msg privati | Sondaggi Attivi | Utenti | Album Fotografico | Download | | Cerca | FAQ ]
Nome Utente:
Password:
Salva Password
Password Dimenticata?

 Tutti i Forum
 1 - TuttoCAD Software
 AutoLISP
 Tutorial, Manuali, Forum AutoLISP
 Nuova Discussione  Rispondi
 Versione Stampabile Bookmark this Topic Aggiungi Segnalibro
I seguenti utenti stanno leggendo questo Forum Qui c'è:
Pagina Successiva
Autore Discussione Precedente Discussione Discussione Successiva
Pagina: di 2

arri
Utente Master


Regione: Lombardia


14951 Messaggi

Inserito il - 27 ottobre 2009 : 10:01:00  Mostra Profilo Invia a arri un Messaggio Privato  Rispondi Quotando
http://klobouk.fsv.cvut.cz/~chour/Lisp/Contents.htm

Modificato da - arri in Data 05 aprile 2016 10:01:25

arri
Utente Master


Regione: Lombardia


14951 Messaggi

Inserito il - 27 ottobre 2009 : 10:18:29  Mostra Profilo Invia a arri un Messaggio Privato  Rispondi Quotando
Manuale il mio lisp
Torna all'inizio della Pagina

arri
Utente Master


Regione: Lombardia


14951 Messaggi

Inserito il - 27 ottobre 2009 : 15:37:26  Mostra Profilo Invia a arri un Messaggio Privato  Rispondi Quotando
The Visual LISP Developers Bible
Torna all'inizio della Pagina

arri
Utente Master


Regione: Lombardia


14951 Messaggi

Inserito il - 28 ottobre 2009 : 09:44:01  Mostra Profilo Invia a arri un Messaggio Privato  Rispondi Quotando
guida autolisp full
Torna all'inizio della Pagina

arri
Utente Master


Regione: Lombardia


14951 Messaggi

Inserito il - 29 ottobre 2009 : 10:22:49  Mostra Profilo Invia a arri un Messaggio Privato  Rispondi Quotando
http://autocad.compago.it/index.php?option=com_remository&Itemid=3&func=select&id=2
Torna all'inizio della Pagina

arri
Utente Master


Regione: Lombardia


14951 Messaggi

Inserito il - 29 ottobre 2009 : 10:38:28  Mostra Profilo Invia a arri un Messaggio Privato  Rispondi Quotando
http://ronleigh.info/autolisp/alessons.htm
Torna all'inizio della Pagina

joseph
Utente Master



Regione: Lombardia
Prov.: Cremona
Città: Casalmaggiore


1884 Messaggi

Inserito il - 11 marzo 2010 : 11:34:00  Mostra Profilo Invia a joseph un Messaggio Privato  Rispondi Quotando
Riporto la discussione sulla manualistica VisualLisp nel suo alveo naturale, aggiungendo altri elenchi più esaustivi.
Se sfogliate l'elenco, vi accorgerete che ci sono molte funzioni di Autolisp base, cioè quelle che non hanno bisogno della riga iniziale di codice (vl-load-com) per funzionare, che non vengono normalmente usate.

Elenco-VisualLISP_Functions.pdf
178,43 KB

VLR-VLA-VLAX-tutte-le-funzioni.zip
10,82 KB

elenco-vlax-vl-vlr.pdf
127,67 KB


Vi allego anche tutte le funzioni base che sono utilizzate dagli ExpressTools, contenute nel file ACETUTIL.ARX della cartella Express, ma che possono essere utilizzate anche in modo indipendente in altri codici.

ACET-FUNCTIONS.xls
35,42 KB

acetutil.rar
17,21 KB


L'idea di Antonio (su un manuale in Italiano di VisualLisp, di Autolisp esiste già "Il mio LIsp" di Rossi), mi intriga molto, ci devo pensare.

Modificato da - joseph in data 11 marzo 2010 11:41:58
Torna all'inizio della Pagina

arri
Utente Master


Regione: Lombardia


14951 Messaggi

Inserito il - 11 marzo 2010 : 12:12:02  Mostra Profilo Invia a arri un Messaggio Privato  Rispondi Quotando
ottimo joseph
Torna all'inizio della Pagina

Aniello Annunziata
Amministratore



Regione: Campania
Prov.: Napoli
Città: San Giuseppe Vesuviano


2302 Messaggi

Inserito il - 18 maggio 2010 : 09:14:36  Mostra Profilo Invia a Aniello Annunziata un Messaggio Privato  Rispondi Quotando
La Bibbia di AutoCAD, come imparare l'AutoLISP dalla A alla Z:
http://autocad.xarch.at/news/faq/autolisp.html

Guide ed esempi pratici su AutoLISP, VisualLisp e VBA:
http://www.afralisp.net/index.php

Aniello Annunziata
Staff di CADLandia
www.cadlandia.com
aniello.annunziata@cadlandia.com
Torna all'inizio della Pagina

joseph
Utente Master



Regione: Lombardia
Prov.: Cremona
Città: Casalmaggiore


1884 Messaggi

Inserito il - 18 maggio 2010 : 17:32:49  Mostra Profilo Invia a joseph un Messaggio Privato  Rispondi Quotando
Rimetto un altro link, perchè quello di Arri:
http://sites.google.com/site/skatterbrainz/vldb
non funziona più
Nuovo link:
http://midpointcad.com/au/docs/lakose_The_Visual_LISP_Developers_Bible.pdf
Fatto molto bene anche se un po complesso.
Torna all'inizio della Pagina

arri
Utente Master


Regione: Lombardia


14951 Messaggi

Inserito il - 30 giugno 2010 : 11:20:58  Mostra Profilo Invia a arri un Messaggio Privato  Rispondi Quotando
Autolisp reference in formato pdf
Torna all'inizio della Pagina

arri
Utente Master


Regione: Lombardia


14951 Messaggi

Inserito il - 03 dicembre 2010 : 12:54:00  Mostra Profilo Invia a arri un Messaggio Privato  Rispondi Quotando
http://lee-mac.com/tutorials.html
Torna all'inizio della Pagina

arri
Utente Master


Regione: Lombardia


14951 Messaggi

Inserito il - 01 giugno 2011 : 09:26:08  Mostra Profilo Invia a arri un Messaggio Privato  Rispondi Quotando
VisualLISP Books

AutoCADet's Guide to Visual LISP

VisualLISP Developers Bible

VisualLISP Developer's Guide

VisualLISP Tutorials

Autodesk VisualLISP Tutorial

Modificato da - arri in data 19 dicembre 2012 11:38:39
Torna all'inizio della Pagina

arri
Utente Master


Regione: Lombardia


14951 Messaggi

Inserito il - 16 febbraio 2012 : 08:03:07  Mostra Profilo Invia a arri un Messaggio Privato  Rispondi Quotando
video

How to Use an AutoLisp Routine in AutoCAD
Torna all'inizio della Pagina

arri
Utente Master


Regione: Lombardia


14951 Messaggi

Inserito il - 10 maggio 2012 : 11:48:20  Mostra Profilo Invia a arri un Messaggio Privato  Rispondi Quotando
Messaggio inserito da arri

Autolisp reference in formato pdf


guida autolisp (il lingua italiana)


Torna all'inizio della Pagina

arri
Utente Master


Regione: Lombardia


14951 Messaggi

Inserito il - 12 settembre 2012 : 12:30:32  Mostra Profilo Invia a arri un Messaggio Privato  Rispondi Quotando
linguaggio DCL
Torna all'inizio della Pagina

arri
Utente Master


Regione: Lombardia


14951 Messaggi

Inserito il - 27 novembre 2012 : 09:56:53  Mostra Profilo Invia a arri un Messaggio Privato  Rispondi Quotando
Visual Lisp Examples
Torna all'inizio della Pagina

joseph
Utente Master



Regione: Lombardia
Prov.: Cremona
Città: Casalmaggiore


1884 Messaggi

Inserito il - 09 febbraio 2013 : 17:06:23  Mostra Profilo Invia a joseph un Messaggio Privato  Rispondi Quotando
Vi allego 2 note sull'uso delle funzioni vla e vlax.
Potete caricarle direttamente nell'IDE di VisualLIsp
----

;;; Differenze di comportamento fra le funzioni VLAX... e VLA...

;;; Settaggi iniziali
(vl-load-com)
(setq acadObj (vlax-get-acad-object))
(setq docObj (vla-get-activedocument acadObj))
(setq MS (vla-get-modelspace docObj))
(setq PS (vla-get-paperspace docObj))
;;

;;; Esempio: lavorare su un BLOCCO
;;;
;;;Definizione dell'oggetto Blocco
(setq obj (car (entsel))) ;<Entity name: 7f734058bc0>
(setq obj (vlax-ename->vla-object obj)) ;#<VLA-OBJECT IAcadBlockReference 00000000428ab7e8>

;;; PROPRIETA'
;;; Per estrarre le PROPRIETA' ho a disposizione 3 modalità, che non sempre
;;; forniscono il risultato nella stessa forma.

;;;1^caso: il nome del layer di appartenenza del blocco:
(vlax-get-property obj "layer" ) ;--> "0" opp. (vlax-get-property obj 'layer)
(vla-get-layer obj) ;--> "0"
(vlax-get obj "layer ") ;--> "0"
;;; Tutte le modalità estraggono una stringa dello stesso valore.

;;;2^ caso: estrazione del punto di inserimento del blocco
(setq pt (vlax-get-property obj "InsertionPoint")) ;--> #<variant 8197 ...>
(setq pt (vla-get-InsertionPoint obj)) ;--> #<variant 8197 ...>
(setq pt (vlax-get obj "InsertionPoint")) ;--> (3211.7 1601.06 0.0)
;;; in questo caso le prime due forniscono un variant (un contenitore);
;;; occorre perciò trasformarlo in lista

(setq lst-pt (safearray-value (variant-value pt))) ;--> (3211.7 1601.06 0.0)
;;;naturalmente ottenendo lo stesso valore delle prime 2 modalità

;;; METODI
;;; Per estrarre un METODO ho sempre a disposizione 3 modalità che, come per le proprietà,
;;; non sempre forniscono il risultato nella stessa forma e in più richiedono i dati di ingresso
;;; sotto forme diverse.



;;; Esempio: lavorare su una POLILINEA per trasformarla un Regione
;;;
;;; Definizione dell'oggetto Polilinea
(setq pl (car (entsel))) ;<Entity name: <Entity name: 7f734058c10>
(setq pl-obj (vlax-ename->vla-object pl)) ;#<VLA-OBJECT IAcadLWPolyline 000000004285fdb8>

;;; La modalità <vlax-invoke> richiede in ingresso una lista e restituisce una lista, per cui semplicemente:
(vlax-invoke MS 'addRegion (list pl-obj)) ;--> (#<VLA-OBJECT IAcadRegion 000000002b63dba8>)

;;; Le modalità <vlax-invoke-method> e <vla-addRegion> richiedono invece in ingresso un array
;;; e restituiscono un variant, per cui occorre:
;;; trasformare la lista in array...
(setq pl-array (vlax-safearray-fill (vlax-make-safearray vlax-vbObject '(0 . 0)) (list pl-obj))) ;--> #<safearray...>
;;; applicare una delle due modalità
(setq pl-varn (vlax-invoke-method MS 'addRegion pl-array)) ;--> #<variant 8201 ...>
(setq pl-varn (vla-addRegion MS pl-array)) ;--> #<variant 8201 ...>
;;;... e infine trasformare il variant in oggetto
(setq pl-obj (safearray-value (variant-value pl-varn))) ;--> (#<VLA-OBJECT IAcadRegion 000000002b63bf78>)





;;; Esempio: lavorare su un insieme di 3 polilinee chiuse e 2 cerchi da trasformare in Regioni
;;; applicando il metodo addRegion.
;;;
;Creiamo una selezione di entità
(setq selez-ent (ssget "X" '((0 . "*polyline,circle")))) ;--><Selection set: 2eb9>

;trasformiamo la selezione in una lista di oggetti
(defun ss2lst (sel / i entNm lst)
(setq i -1)
(while (setq entNm (ssname sel (setq i (1+ i))))
(setq lst (cons (vlax-ename->vla-object entNm) lst))
)
) ;_end defun
(setq lst-obj (ss2lst selez-ent))
;;; (#<VLA-OBJECT IAcadLWPolyline 000000004285fdb8> #<VLA-OBJECT IAcadLWPolyline 000000002fedee88>
;;; #<VLA-OBJECT IAcadLWPolyline 000000002feddf88> #<VLA-OBJECT IAcadCircle 000000002feddb08> #<VLA-OBJECT IAcadCircle 000000002fedd748>)


;;;Applichiamo ora il metodo addRegion usando dapprima la 1^ modalità, che accetta in ingresso direttamente una lista di oggetti
(setq lst-reg (vlax-invoke MS 'addRegion lst-obj))
;;;(#<VLA-OBJECT IAcadRegion 000000002b63bc08> #<VLA-OBJECT IAcadRegion 000000002b63cb28>
;;; #<VLA-OBJECT IAcadRegion 000000002b63cff8> #<VLA-OBJECT IAcadRegion 000000002b63be18> #<VLA-OBJECT IAcadRegion 000000002b63b688>)

;;; Le altre due modalità vogliono invece in ingresso un Array, per cui occorre trasformare lst-obj in array...
(setq array-obj (vlax-safearray-fill (vlax-make-safearray vlax-vbObject '(0 . 4)) lst-obj)) ;--> #<safearray...>
;...poi applicare una delle due modalità....
(setq varn-obj (vlax-invoke-method MS 'addRegion array-obj)) ;--> #<variant 8201 ...>
(setq varn-obj (vla-addRegion MS array-obj)) ;--> #<variant 8201 ...>
;...e infine trasformare il variant in una lista di oggetti
(setq lst-reg (safearray-value (variant-value varn-obj)))
;;;(#<VLA-OBJECT IAcadRegion 000000002b63b738> #<VLA-OBJECT IAcadRegion 000000002b63b898>
;;;#<VLA-OBJECT IAcadRegion 000000002b63bd68> #<VLA-OBJECT IAcadRegion 000000002b63ab88> #<VLA-OBJECT IAcadRegion 000000002b63ac38>)

;;; Se ne deduce che la prima modalità è più veloce.

Modificato da - joseph in data 09 febbraio 2013 17:07:19
Torna all'inizio della Pagina

Terminator
Utente Master



725 Messaggi

Inserito il - 11 febbraio 2013 : 09:31:32  Mostra Profilo Invia a Terminator un Messaggio Privato  Rispondi Quotando
Giusto un integrazione all'intervento di Joseph.
Ho scritto tempo fa queste due funzioni per la trasformazione di un variant in una lista e viceversa.
La funzione variant2lista usa le funzioni sublist, per costruire una sottolista partendo da un indice nella lista stessa e per una certa lunghezza e la funzione split-list (non opera mia) che sfrutta la recorsività, argomento che digerisco sempre con molta fatica, il mio punto debole.

;;; ***************************FUNZIONE VARIANT2LISTA*******************************
;;; Trasforma un variant in una lista a gruppi con numero elementi per gruppo
(defun variant2lista (listavariant numero / listaparz listafin)
 (split-list (safearray-value (variant-value listavariant)) numero)
)

(defun sublist (lst start leng / n r)
  (if (or (not leng) (< (- (length lst) start) leng))
    (setq leng (- (length lst) start))
  )
  (setq n (+ start leng))
  (repeat leng
    (setq r (cons (nth (setq n (1- n)) lst) r))
  )
)

(defun split-list (lst n)
  (if lst
    (cons (sublist lst 0 n)
	  (split-list (sublist lst n nil) n)
    )
  )
)

;;; ***************************FUNZIONE LISTA2VARIANT*******************************
;;; Trasforma una lista a gruppi in un variant
(defun lista2variant (listanormale / array)
 (setq listanormale(apply 'append listanormale))
 (setq array(vlax-make-safearray vlax-vbDouble (cons 0 (- (length listanormale) 1))))
 (vlax-make-variant (vlax-safearray-fill array listanormale))
)
Torna all'inizio della Pagina

joseph
Utente Master



Regione: Lombardia
Prov.: Cremona
Città: Casalmaggiore


1884 Messaggi

Inserito il - 11 febbraio 2013 : 15:21:19  Mostra Profilo Invia a joseph un Messaggio Privato  Rispondi Quotando
Non parlarmi di ricorsività: ogni volta parto dal fattoriale, faccio due tentativi con le funzioni e poi abbandono subito: non ho ancora trovato chi mi dia la chiave giusta per entrare in questo meccanismo: o forse è il mio cervello che non riesce ad astrarre più di tanto.
Torna all'inizio della Pagina

Terminator
Utente Master



725 Messaggi

Inserito il - 11 febbraio 2013 : 15:52:24  Mostra Profilo Invia a Terminator un Messaggio Privato  Rispondi Quotando
A proposito di recorsività, ho qui una funzione che per me rappresenta ancora un mistero il suo funzionamento e così altre funzioni simili:

(defun remove_doubles (lst)
 (if lst
  (cons (car lst)(remove_doubles (vl-remove (car lst) lst)))
 )
)


E' una semplice funzione per l'eliminazione degli elementi doppi nelle liste, straordinaria e potente nella sua semplicità. Ho provato a verificarla step by step per capire il suo funzionamento ma ancora non ci sono venuto fuori. La lista in questione si riduce man mano che gli elementi scorrono e fin qui tutto bene. Ad un certo punto la funzione richiama se stessa e la lista si ricrea (!). Anch'io sono costretto a rivolgere domande di lisp...

Modificato da - Terminator in data 11 febbraio 2013 16:06:10
Torna all'inizio della Pagina
Pagina: di 2 Discussione Precedente Discussione Discussione Successiva  
Pagina Successiva
 Nuova Discussione  Rispondi
 Versione Stampabile Bookmark this Topic Aggiungi Segnalibro
Vai a:
TuttoCAD Forum © 2001-2010 CADLandia Torna all'inizio della Pagina
Pagina generata in 0,41 secondi.