1st COLUMN: PROGRESSIVE NUMBER2nd COLUMN: x COORDINATE3rd COLUMN: y COORDINATE 4th COLUMN: z COORDINATE 5th COLUMN: DESCRIPTION
and i need to create in autocad a point with the coordinate and three texts at his side: the point and the texts must be on different layers and i need a separate block for every point with its texts (a block for every line of the external file).
IMPORT POINT + TEXT LISP1- IF THE LAYER DOESN’T EXIST: CREATE LAYER “LEV BLOCK” (INDEX COLOR YELLOW: 2)2- IF THE LAYER DOESN’T EXIST: CREATE LAYER “LEV POINT” (INDEX COLOR YELLOW: 2)3- IF THE LAYER DOESN’T EXIST: CREATE LAYER “LEV TEXT NUMBER” (INDEX COLOR YELLOW: 2)4- IF THE LAYER DOESN’T EXIST: CREATE LAYER “LEV TEXT Z” (INDEX COLOR GREEN: 3)5- IF THE LAYER DOESN’T EXIST: CREATE LAYER “LEV TEXT ANNOTATION” (INDEX COLOR RED: 1)6- COMMAND “PDMODE” “32”7- SETQ “HEIGHTofTEXT”8- HIDE OBJECTS: ALL9- CURRENT LAYER: LAYER “LEV POINT” 10- CREATE POINT (IMPORT FROM EXTERNAL FILE THE COORDINATE (1st LINE: 2nd COLUMN 3rd COLUMN, 4th COLUMN)11- CURRENT LAYER: LAYER “LEV TEXT NUMBER”12- CREATE MTEXT (IMPORT FROM EXTERNAL FILE THE COORDINATE (1st LINE: 2nd COLUMN+“HEIGHTofTEXT”*1.5, 3rd COLUMN+“HEIGHTofTEXT”*1.5, 4th COLUMN)(TEXT HEIGHT “HEIGHTofTEXT”)(TEXT: NUMBER IN THE 1st COLUMN)13- CURRENT LAYER: LAYER “LEV TEXT Z”14- CREATE MTEXT (IMPORT FROM EXTERNAL FILE THE COORDINATE (1st LINE: 2nd COLUMN+“HEIGHTofTEXT”*1.5, 3rd COLUMN, 4th COLUMN)(TEXT HEIGHT “HEIGHTofTEXT”)(TEXT: NUMBER IN THE 4th COLUMN)15- CURRENT LAYER: LAYER “LEV TEXT ANNOTATION”16- CREATE MTEXT (IMPORT FROM EXTERNAL FILE THE COORDINATE (1st LINE: 2nd COLUMN+“HEIGHTofTEXT”*1.5, 3rd COLUMN-“HEIGHTofTEXT”*1.5, 4th COLUMN)(TEXT HEIGHT “HEIGHTofTEXT”)(TEXT: TEXT IN THE 5th COLUMN)17- CURRENT LAYER: LAYER “LEV BLOCK” 18- SELECT: ALL19- CREATE BLOCK20- HIDE OBJECTS: ALL21- REPEAT FROM 9 TO 20 FOR ALL THE LINES IN THE EXTERNAL FILE22- UNHIDE OBJECTS
I started to write the lisp and i arrive at the point 9 in this way:
From here i dont know how to import the coordinate to create the points, the coordinate to create the text (my idea is to use the coordinate of the point and move a little bit the text on the right using the height of the text X a number)
A good ideas is write a little defun that checks for the layer and add that to an autoloading lisp like acaddoc.lsp this way its available for any program you write. Items 1-5
(laynew "lev_block" 2 "Continuous")
lee-mac has a good read line lisp that can make a list using a delimeter normally it would use the "," or a CSV file but you can use a space etc. If your columns are fixed length always then you can use substr start end to read the number of characters.
If you post a sample file it will confirm what your data file looks like, what you are asking for has been done many times only variation is the different layers.
Check out http://www.Lee-mac.com point manager.
Another you can set variables directly like current layer (setvar 'clayer "TEXT") pdmode osmode filletrad to mention a few without using Command.