- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
Hi guys,
I'm trying to learn VLisp.
I have to write a code that draws a Pline trought the geometric center of few blocks I select, in the same sequence I select blocks.
My code passes to PLINE command alternatively X and Y coordinates instead of passing the couple X,Y.
Where I'm wrong?
Here's my code.
Thanks in advance for any useful comment.
(defun C:BlocchiPline ()
(prompt "\nSeleziona i blocchi in sequenza. Premi INVIO quando hai terminato.\n")
;; Lista per memorizzare i centri dei blocchi
(setq blocchiList '())
;; Loop di selezione dei blocchi
(while (setq obj (car (entsel "\nSeleziona un blocco o premi INVIO per terminare: ")))
;; Verifica se l'oggetto selezionato è un blocco (INSERT)
(if (= (cdr (assoc 0 (entget obj))) "INSERT")
(progn
;; Ottieni il punto di inserimento del blocco
(setq insertPt (cdr (assoc 10 (entget obj))))
;; Aggiungi il punto di inserimento alla lista (X e Y)
(setq blocchiList (append blocchiList (list insertPt)))
;; Stampa le coordinate del centro del blocco selezionato
(prompt (strcat "\nCentro del blocco selezionato: X=" (rtos (car insertPt) 2 3)
", Y=" (rtos (cadr insertPt) 2 3)))
;; Visualizza anche nella riga di comando per debug
(print (strcat "Centro del blocco: (" (rtos (car insertPt) 2 3) ", " (rtos (cadr insertPt) 2 3) ")"))
)
;; Caso in cui l'oggetto selezionato non sia un blocco
(prompt "\nL'oggetto selezionato non è un blocco. Riprovare.")
)
)
;; Se ci sono blocchi selezionati, disegna la polilinea
(if blocchiList
(progn
;; Inizia il comando PLINE
(command "_.PLINE")
;; Cicla attraverso i centri memorizzati e traccia la polilinea
(foreach pt blocchiList
;; Passa le coordinate X e Y come coppia al comando PLINE
(command (car pt) (cadr pt)))
;; Termina il comando PLINE senza chiudere
(command "")
(prompt "\nPolilinea creata con successo, non chiusa.\n")
)
;; Caso in cui non siano stati selezionati blocchi
(prompt "\nNon sono stati selezionati blocchi.\n")
)
(princ)
)
Solved! Go to Solution.