SweetMidWeek Posted June 8, 2022 Posted June 8, 2022 Really hoping someone can help - I'm a total noob when it comes to lisp routines (though I am trying hard to learn!) I'm really struggling to get a grasp on lists and looping functions and the methods to use when putting them into practice and hoping someone can advise me. The routine I'm trying to make requests two user inputs at the command line, these are: 1 - First plot (X), and; 2 - Final plot (Y) The program then makes a layer for each of plots X, Y and all plots that range in-between the two parameters. I'd ideally like the resultant layers to follow the naming convention of CP001, CP002... Etc so the final plot can be entered up to 999. Is this doable? And where do I even start!! Quote
BIGAL Posted June 9, 2022 Posted June 9, 2022 (edited) If your typing X & Y to hard, do you have it in a text file csv etc if so post sample. Pretty simple task even manually. Sounds like import points but with a layer twist. Edited June 9, 2022 by BIGAL 1 Quote
mhupp Posted June 9, 2022 Posted June 9, 2022 (edited) Ask user for start and end plot number. Little help from Alan , loop , and entmake function Done. This will handle 1 - 999 or should I say 001- 999 --Edit Added a results prompt and alert if layers aren't created or you input a higher number for start then the end. TEST Starting Plot Number: 15 Final Plot Number: 160 Layers "CP015" Thru "CP160" Created (defun C:test (/ i s lay lay list) (setq i (getint "\nStarting Plot Number: ") s (getint "\nFinal Plot Number: ") x (strcat "CP" (AT:NumFix (itoa i) 3)) ) (if (< i s) (make x)) (while (< i s) (setq lay (strcat "CP" (AT:NumFix (itoa (setq i (1+ i))) 3))) (make lay) ) (if (eq i s) (prompt (strcat "\nLayers \"" x "\" Thru \"" lay "\" Created")) (alert "Something Went wrong") ) (princ) ) (defun AT:NumFix (s n) ;; Fix number string with leading zeros ;; s - Number string to fix ;; n - Number of characters for final string ;; Alan J. Thompson, 10.29.09 (if (< (strlen s) n) (AT:NumFix (strcat "0" s) n) s ) ) (defun make (lay) (entmake (list '(0 . "LAYER") '(100 . "AcDbSymbolTableRecord") '(100 . "AcDbLayerTableRecord") (cons 2 lay) '(6 . "Continous") '(62 . 0) '(70 . 0) ) ) ) Edited June 9, 2022 by mhupp 1 Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.