Share

vlax-ldata-get (AutoLISP)

Product Documentation
Intermediate

Retrieves LISP data from a drawing dictionary or an object

(vlax-ldata-get dict key [default-data [private]])

Arguments

dict

A VLA-object, an AutoCAD drawing entity object, or a string naming a global dictionary.

key

A string specifying the dictionary key.

default-data

LISP data to be returned if no matching key exists in the dictionary.

private

If a non-nil value is specified for private and vlax-ldata-get is called from a separate-namespace VLX, vlax-ldata-get retrieves private LISP data from dict.

If you specify private, you must also specify default-data; you can use nil for default-data.

Note that a separate-namespace VLX can store both private and non-private data using the same dict and key. The private data can be accessed only by the same VLX, but any application can retrieve the non-private data.

Return Values

The value of the key item.

Examples

Enter the following commands at the Visual LISP Console window:

(vlax-ldata-put "mydict" "mykey" "Mumbo Dumbo")
"Mumbo Dumbo"

(vlax-ldata-get "mydict" "mykey")
"Mumbo Dumbo"

To test the use of private data from a VLX

  1. Enter the following commands at the Visual LISP Console window:
    (vlax-ldata-put "mydict" "mykey" "Mumbo Dumbo")
    "Mumbo Dumbo"
    
    (vlax-ldata-get "mydict" "mykey")
    "Mumbo Dumbo"
  2. Enter the following code in a file and use Make Application to build a VLX from the file. Use the Expert mode of the Make Application wizard, and select the Separate Namespace option on the Compile Options tab.
    (vl-doc-export 'ldataput)
    (vl-doc-export 'ldataget)
    (vl-doc-export 'ldataget-nilt)
    
    (defun ldataput ()
      (princ "This is a test of putting private ldata ")
      (vlax-ldata-put "mydict" "mykey" "Mine! Mine! " T)
    )
    
    (defun ldataget ()
      (vlax-ldata-get "mydict" "mykey")
    )
    
    (defun ldataget-nilt ()
      (vlax-ldata-get "mydict" "mykey" nil T)
    )
  3. Load the VLX file.
  4. Run ldataput to save private data:
    (ldataput)
    This is a test of putting private ldata

    Refer to the code defining ldataput : this function stores a string containing “Mine! Mine!”

  5. Run ldataget to retrieve LISP data:
    (ldataget)
    "Mumbo Dumbo"

    Notice that the data returned by ldataget is not the data stored by ldataput . This is because ldataget does not specify the private argument in its call to vlax-ldata-get . So the data retrieved by ldataget is the data set by issuing vlax-ldata-put from the Visual LISP Console in step 1.

    (ldataget-nilt)
    "Mine! Mine!"
  6. Run ldataget-nilt to retrieve LISP data:
    (ldataget-nilt)
    "Mine! Mine!"

    This time the private data saved by ldataput is returned, because ldataget-nilt specifies the private argument in its call to vlax-ldata-get .

  7. From the Visual LISP Console prompt, issue the same call that ldataget-nilt uses to retrieve private data:
    (vlax-ldata-get "mydict" "mykey" nil T)
    "Mumbo Dumbo"

    The private argument is ignored when vlax-ldata-get is issued outside a separate-namespace VLX. If non-private data exists for the specified dict and key (as in this instance), that data will be retrieved.


Was this information helpful?