上一個文章的lsp檔在說明抓螢幕圖點並將它們寫出成一個檔案,本文的lsp檔則在說明抓螢幕圖點後馬上寫在螢幕上,如下圖所示,操作者在載入本文的lsp檔,並呼叫此lsp檔所做的指令後,便可先指定寫在螢幕上的字的大小,然後執行底下兩個步驟:
1. 用滑鼠點選圖形上的點。
2. 點選寫在螢幕上的字要位於哪一點。
如此一來就可以將該點自動寫在螢幕上,當螢幕上顯現完該點的資料後,lsp程式會在AutoCAD底下的字幕詢問:Do you want to terminate the loop ?
這意思就是說 : 您要結束這迴圈嗎? lsp程式的內定值是N,也就是No,不的意思,所以操作者按enter一次,就又回到上述的兩個步驟的循環裡,如果操作者想結束這迴圈,就鍵入y,並enter,就可以跳出lsp。
lsp 程式內容如下
(defun c:sp()
(command "color" "red")
(setq i1 1 t1 2.5 )
(setq t1 (getreal "\nEnter the height of text < 2.5 > : "))
(if (or (= t1 "") (= t1 nil)) (setq t1 2.5) )
(while (< i1 20)
(progn
(setvar "osmode" 1)
(setq s1 "\nChoose the point ")
(setq s1 (strcat s1 (rtos i1) ": " ))
(setq p1 (getpoint s1))
(setq x1(car p1) y1(cadr p1) z1(caddr p1))
(setq s1 (strcat "X" (rtos x1) " " "Y" (rtos y1) " " "Z" (rtos z1)))
(setvar "osmode" 0)
(setq p2 (getpoint "\nEnter the position to lay down the text. "))
(command "line" p2 p1 "")
(command "text" p2 t1 0 s1 "")
(setq s2 (getstring "\nDo you want to terminate the loop <N> ? "))
(if (or (= s2 "y") (= s2 "Y")) (setq i1 100))
(setq i1 (+ 1 i1)) ))
)
留言
張貼留言