Lessons

Introduction to Lists: Basics

Welcome to this essential lesson on the basics of list manipulations in AutoLISP! Lists play a foundational role in AutoLISP, often used to group and sequence data in meaningful ways. Whether you’re aiming to store coordinate points, group related data, or streamline your codebase, mastering lists is pivotal. Let’s embark on this enlightening journey together!


Learning Outcomes

By the end of this lesson, students will be able to:

  • Identify the fundamental principles behind lists in AutoLISP.
  • Construct and manipulate lists using basic functions like list, car, cdr, cadr, and caddr.
  • Apply these functions in real-world CAD scenarios to streamline data handling and improve code efficiency.
  • Differentiate between the roles of each function in dissecting and accessing list data.
  • Integrate list manipulation functions into larger scripts to enhance data management and processing.

Understanding Lists in AutoLISP

In AutoLISP, a list is a sequence of elements enclosed in parentheses. These elements can be numbers, symbols, strings, or even other lists. Lists are the primary data structures in AutoLISP and are exceptionally versatile.


list Function

Definition: The list function creates a new list from the provided arguments.

Syntax:

(list arg1 arg2 … argn)

Examples:

Creating a simple list of numbers:

(list 1 2 3 4)
; Returns: (1 2 3 4)

This example demonstrates how to create a basic list containing four numbers.

Combining numbers, symbols, and strings:

(list 1 ‘circle “AutoLISP”)
; Returns: (1 CIRCLE “AutoLISP”)

Here, we’ve combined different data types into one list.

Nesting lists within lists:

(list 1 2 (list 3 4))
; Returns: (1 2 (3 4))

In this example, we nested a list inside another list, showcasing the hierarchical nature of lists.


car Function

Definition: The car function retrieves the first item from a list.

Syntax:

(car list)

Examples:

Accessing the first element:

(car ‘(a b c d))
; Returns: A

Here, car fetches the first element, A, from the list.

Working with nested lists:

(car ‘((1 2) (3 4) (5 6)))
; Returns: (1 2)

In nested lists, car retrieves the entire first sublist.

When applied to an empty list:

(car ‘())
; Returns: nil

If the list is empty, car returns nil.


cdr Function

Definition: The cdr function retrieves the list minus its first item.

Syntax:

(cdr list)

Examples:

Removing the first element:

(cdr ‘(a b c d))
; Returns: (B C D)

Here, cdr returns the list after excluding the first element, A.

Working with nested lists:

(cdr ‘((1 2) (3 4) (5 6)))
; Returns: ((3 4) (5 6))

In nested lists, cdr excludes the entire first sublist.

When applied to an empty list:

(cdr ‘())
; Returns: nil

If the list is empty, cdr returns nil.


cadr Function

Definition: The cadr function retrieves the second item from a list.

Syntax:

(cadr list)

Examples:

Accessing the second element:

(cadr ‘(a b c d))
; Returns: B

Here, cadr fetches the second element, B, from the list.

Working with nested lists:

(cadr ‘((1 2) (3 4) (5 6)))
; Returns: (3 4)

In nested lists, cadr retrieves the second sublist.

When the list has only one element:

(cadr ‘(a))
; Returns: nil

If the list has just one item, cadr returns nil.


caddr Function

Definition: The caddr function retrieves the third item from a list.

Syntax:

(caddr list)

Examples:

Accessing the third element:

(caddr ‘(a b c d))
; Returns: C

Here, caddr fetches the third element, C, from the list.

Working with nested lists:

(caddr ‘((1 2) (3 4) (5 6)))
; Returns: (5 6)

In nested lists, caddr retrieves the third sublist.

When the list has fewer than three elements:

(caddr ‘(a b))
; Returns: nil

If the list doesn’t have a third item, caddr returns nil.


Conclusion

Understanding how to manipulate lists is a cornerstone of becoming proficient in AutoLISP. These basic functions offer a glimpse into the depth of what’s possible with list manipulations. As we continue our journey, we’ll delve deeper into more advanced list functions and their applications. Always remember to practice, experiment, and explore to solidify your knowledge.