כתב אליי קורא של הבלוג ושאל את השאלה הבאה:
"אשמח אם תוכלי להעלות התייחסות בבלוג לבעיה כאובה של אדריכלים – מיספור מדרגות.
בתוכניות עבודה ממספרים מדרגות החל מהמדרגה הראשונה- 1 וכל הלאה. כך לדוגמא בבנין בן 5 קומות יש כ-100 מדרגות לעיתים.
אני מחפש פתרון של ליספ או אפשרות אחרת ליצור מספר בגודל טקסט מסוים, סוג טקסט שיתחיל ב-1 וכל פעם יקפוץ בספרה אחת (1-2-3-4 וכן הלאה).
הבעיה גם מופיעה בחתכים…"
יש לבעיה הזו פתרון לא רע בדמות ליספ חביב שנקרא "n"
הליספ משתמש בשכבה הנוכחית, ובסגנון הטקסט הנוכחי, ומאפשר לכניס מספרים בסדר עולה, באמצעות קליקים של העכבר, מאיזה מספר שתרצו ובאיזה מרווחים שתרצו.
הדבר הנחמד ביותר בליספ הזה הוא שהוא זוכר את המספר האחרון שהכנסתם, וכך ניתן למספר כמה מדרגות, להפסיק רגע ולעשות משהו אחר, וכשתחזרו לפקודה הוא ימשיך מהיכן שהפסקתם.
להלן הקוד של הליספ, יש להעתיק את הטקסט לתוך מסמך של notepad, לשמור אותו בשם n.lsp
ואחר כך להעלות אותו לאוטוקאד באמצעות הפקודה appload
כדי להפעיל את הליספ יש להקליד N בשורת הפקודה.
(defun c:n (
/ oldecho tmp numHt numValStr
)
(setq oldecho (getvar "cmdecho"))
(setvar "cmdecho" 0)
(if (not numVal) (setq numVal 1))
(if (not numInc) (setq numInc 1))
(setq tmp (getint (strcat "\nStarting number <" (itoa numVal) ">: ")))
(if tmp (setq numVal tmp))
(setq tmp (getint (strcat "\nIncrement by <" (itoa numInc) ">: ")))
(if tmp (setq numInc tmp))
(if (= 0.0 (cdr (assoc 40 (tblsearch "style" (getvar "textstyle")))))
(progn
(initget (+ 1 2))
(setq numHt (getdist "\nText height: "))
)
)
(initget 128);;CAB
(while (setq pikPnt (getpoint
(strcat
"\nInsertion point for "
(itoa numVal)
": "
)
)
)
(if (not (listp pikPnt)) ;;CAB
(setq numval (atoi pikPnt)
pikPnt (getpoint
(strcat
"\nInsertion point for "
(itoa numVal)
": "
)
)
)
);if
(setq
numValStr (itoa numVal)
numVal (+ numVal numInc)
)
(command "._text" "mc" pikPnt)
(if numHt (command numHt))
(command "" numValStr)
(initget 128);CAB
)
(setvar "cmdecho" oldecho)
(princ)
)
תגובות
רות- תודה רבה!.
קלוגה שלי שהוא כותב ליספים להנאתו נענה לאתגר וכותב לי ליספ דומה עם שכלולים נוספים, לדוגמא-הטקסט יהיה בשכבה יעודית ועוד.
אשלח לך שאקבל אותו.
אריק
מעולה, תודה 🙂
מעולה, במבט ראשון האם אפשר לשנות את סטייל הכתב? כי יצא לי מספור הפוך.
כפי שכתבתי, הליספ משתמש בסגנון הטקסט הנוכחי. לכן רצוי ליצור סגנון שאין בו backwords להפוך אותו לנוכחי (current) ואז להפעיל את הליספ.
לי יש בכל קובץ שני סגנונות בסיסיים שקוראים להם heb, ו- eng, ואני משתמשת בהם לטקסטים בעברית ולמספרים בהתאמה. ככה אני הכי פחות מתבלבלת.
כל הכבוד לך.