Newsgroup: it.comp.software.cad
Titolo: Lisp per dividire linea od altro...

Salve a tutti.
Qualcuno sarebbe così gentile di indicarmi un lisp per dividere una linea,
un arco o una polilinea (in parti di linghezza predefinita), così da
potere estrapolare le coordinate dei punti di tale divisione.
Spero di essere stato chiaro, e, grazie a chi mi vorrà dare una risposta.
Stefano
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

comando _MEASURE 
oppure _DIVIDE


 oppure _DIVIDE
Volevo farlo con lisp per potere estrapolare la lista con i punti di
divisione.
Grazie, ciao


prego
http://www.cad3d.it/forum1/showthread.php?t=22574


 ha scritto nel messaggio 
news:f3upiq$2h9$1...@news.newsland.it...

Tempo fa ho elaborato un LISP per un particolare problema legato alle curve 
di livello.
Penso che, con le opportune modifiche, potrebbe fare al tuo caso.
La macro, in buona sostanza, disegna sull'elemento selezionato una serie di 
punti alla distanza prefissata e li numera, disegna poi, a parte, una 
tabellina dove sono indicati per ogni punto, i valori delle sue coordinate,
Poichè il listato è notevolmente lungo e complesso se ti interessa te lo 
posso inviare al tuo indirizzo privato.
Saluti
G.B.Francesconi

lo alleghi qui e l'hanno disponibile tutti
http://www.unbase.com/


Prova questo (da migliorare):
; Marc'Antonio Alessi - 
http://xoomer.virgilio.it/alessi
;
; Version 1.00 - 04/07/2007
;
; Esempio: (ALE_PointsListByMeasure (entsel) 10)
;
; Note: manca il punto iniziale della entità
; 
(defun ALE_PointsListByMeasure (EntNam MisDst / LstEnt SelSet NumObj PntLst)
  (setq LstEnt (ALE_LASTENT))
  (command "_.MEASURE" EntNam MisDst)
  (setq SelSet (ALE_SS-AFTER LstEnt)   NumObj (sslength SelSet))
  (repeat NumObj
    (setq
      NumObj (1- NumObj)
      PntLst (cons (assoc 10 (entget (ssname SelSet NumObj))) PntLst)
    )
  )
  (and SelSet (command "_.ERASE" SelSet ""))
  (reverse PntLst)
)
; Marc'Antonio Alessi - 
http://xoomer.virgilio.it/alessi
; Function: ALE_LastEnt
;
; Version 1.01 - 20/12/2004
;
; Description:
;   get the absolute last entity in the database,
;   for problems in >=r15 in blocks with attrib, and polylines
;
; Arguments: none
;
; Return Values:
;   An entity name;
;   otherwise nil, if there are no entities in the current drawing
;
; Example: (setq marker (ALE_LASTENT))
;
(defun ALE_LastEnt ( / EntNam OutVal)
  (and
    (setq OutVal (entlast))
    (while (setq EntNam (entnext OutVal))
      (setq OutVal EntNam)
    )
  )
  OutVal
)
;
; Marc'Antonio Alessi - 
http://xoomer.virgilio.it/alessi
; Function: ALE_Ss-After
;
; Version 1.01 - 20/12/2004
; Version 1.02 - 30/09/2005
;
; Description:
;   get a selection set of items after EntNam in the database
;
; Arguments: An entity name
;
; Return Values:
;   A selection set;
;   otherwise nil, if there are no entities after EntNam
;
; Examples:
;   (setq marker (ALE_LASTENT)) ...create new entities...
;   to include reference entity:
;   (command "_.MOVE" (ALE_SS-AFTER marker) marker "" ...) 
;   Note: NOT valid if marker is a SEQEND of
;   blocks with attrib or old polylines (PLINETYPE = 0)
;
;   not include reference entity:
;   (command "_.MOVE" (ALE_SS-AFTER marker) "" ...) 
;
(defun ALE_Ss-After (EntNam / SelSet)
  (cond 
    ( (not EntNam) (ssget "_X") )
    ( (setq EntNam (entnext EntNam))
      (setq SelSet (ssadd EntNam))
      (while (setq EntNam (entnext EntNam))
        (if (entget EntNam) (ssadd EntNam SelSet))
      )
      SelSet
    )
  )
)

 Prova questo (da migliorare):


Grande! E' quello che volevo.
A buon rendere.
Stefano - Bologna
