where can i find a list with all the possible XDATA codes and what type they accept? Emmanuel
Hi Emmanuel From Visual LISP Developer's Guide -> Using the AutoLISP Language -> Using AutoLISP to Manipulate AutoCAD Objects -> Extended Data--xdata -> Organization of Extended Data: String 1000. Strings in extended data can be up to 255 bytes long (with the 256th byte reserved for the null character). Application Name 1001 (also a string value). Application names can be up to 31 bytes long (the 32nd byte is reserved for the null character) and must adhere to the rules for symbol table names (such as layer names). An application name can contain letters, digits, and the special characters $ (dollar sign), - (hyphen), and _ (underscore). It cannot contain spaces. Layer Name 1003. Name of a layer associated with the xdata. Database Handle 1005. Handle of an entity in the drawing database. 3D Point 1010. Three real values, contained in a point. Real 1040. A real value. Integer 1070. A 16-bit integer (signed or unsigned). Long 1071. A 32-bit signed (long) integer. If the value that appears in a 1071 group is a short integer or real value, it is converted to a long integer; if it is invalid (for example, a string), it is converted to a long zero (0L). Note: AutoLISP manages 1071 groups as real values. If you use entget to retrieve an entity's definition list that contains a 1071 group, the value is returned as a real, as shown in the following example: (1071 . 12.0) If you want to create a 1071 group in an entity with entmake or entmod, you can use either a real or an integer value, as shown in the following example: (entmake '((..... (1071 . 12) .... ))) (entmake '((..... (1071 . 12.0) .... ))) (entmake '((..... (1071 . 65537.0) .... ))) (entmake '((..... (1071 . 65537) .... ))) But AutoLISP still returns the group value as a real: (entmake '((..... (1071 . 65537) .... ))) The preceding statement returns the following: (1071 . 65537.0) ObjectARX always manages 1071 groups as long integers. Several other extended data groups have special meanings in this context (if the application chooses to use them): Control String 1002. An xdata control string can be either "{" or "}". These braces enable the application to organize its data by subdividing it into lists. The left brace begins a list, and the right brace terminates the most recent list. Lists can be nested. Note: If a 1001 group appears within a list, it is treated as a string and does not begin a new application group. Binary Data 1004. Binary data that is organized into variable-length chunks, which can be handled in ObjectARX with the ads_binary structure. The maximum length of each chunk is 127 bytes. Note: AutoLISP cannot directly handle binary chuncks, so the same precautions that apply to long (1071) groups apply to binary groups as well. World Space Position 1011. Unlike a simple 3D point, the WCS coordinates are moved, scaled, rotated, and mirrored along with the parent entity to which the extended data belongs. The WCS position is also stretched when the STRETCH command is applied to the parent entity and when this point lies within the select window. World Space Displacement 1012. A 3D point that is scaled, rotated, or mirrored along with the parent, but not stretched or moved. World Direction 1013. A 3D point that is rotated or mirrored along with the parent, but not scaled, stretched, or moved. The WCS direction is a normalized displacement that always has a unit length. Distance 1041. A real value that is scaled along with the parent entity. Scale Factor 1042. Also a real value that is scaled along with the parent. Cheers
Hi Emmanuel Forgot to mention some important additional points (missing in help): 1003: Layer name must exist in database 1005: Handle must exist in database 1071: since A2k also an Integer in LISP Cheers