วันอังคารที่ 16 มิถุนายน พ.ศ. 2563

Define Functions

Define Functions   ทุกฟังก์ชั่นที่เราสร้าง กำหนดไว้ให้เริ่มต้นด้วยการประกาศ ฟังก์ชั่น ด้วย defun เสมอ เช่น  (defun myProg () หรือ (defun C:myProg () ทั้งสองแบบ มีความแตกต่างระหว่างการใช้  C: และไม่ได้ใช้ C: นำหน้าชื่อโปรแกรมของเรา ซึ่งจะมีความต่างกัน เวลาเรียกใช้งาน แต่ตอนนี้ มารู้จักอีกฟังก์ชั่นการใช้  AutoLISP ในโปรแกรมแรกของเรา myProg ก็คือฟังก์ชั่น princ เพียงพิมพ์คำสั่ง (princ "AutoLISP") ที่ Command : (princ " AutoLISP ") แล้ว Enter จะได้ผลลัพธ์  AutoLISP ออกมา

ทีนี้เรามาลองใส่  Command: (defun myProg () (princ "AutoLISP")) และกด  Enterโปรแกรมจะแสดงชื่อฟังก์ชั่น (ชื่อโปรแกรม) ของเราเอง MYPROG ตอนนี้ ฟังก์ชั่นของเราพร้อมแล้วลองเรียกใช้ฟังก์ชั่นของเราที่  Command: (myprog)โปรแกรมจะประมวลผลและพิมพ์  AutoLISP จากนั้น โปรแกรมสะท้อนคำสั่งสุดท้าย "AutoLISP" เสมอเรียกว่าเอคโค่ echo  นั่นคือสาเหตุที่ทำให้ออกมาเป็น  AutoLISP  "AutoLISP"  วิธีการที่จะกำจัด  echo

คือการใช้ princ เป็นคำสั่งสุดท้ายในโปรแกรมของเรา เราลองเขียน (princ) เพิ่มในโปรแกรม เป็นฟังก์ชั่นที่จะกำจัด  echo ออกไปดังนี้

Command: (defun myProg () (princ "AutoLISP") (princ))

แล้วก็เรียกใช้โปรแกรมของเรา  (myprog) และกด Enter

* ผลปรากฏว่า echo หายไปแล้ว ในบางทีเราอาจจะพบคำว่า nil แทนในโปรแกรมอื่นๆ มันเป็น echo เหมือนกัน *

เจ้า C: ที่เราได้กล่าวถึงก่อนหน้านี้ เจ้าตัวนี้ C: จะบอกให้เจ้า AutoCAD ให้พร้อมรับคำสั่งและทำซ้ำโปรแกรมของเรา เราลองใส่ C: เพิ่มเข้าไปจากตัวอย่างที่แล้วเป็น

Command: (defun C:myProg () (princ "\n Autolisp") (princ))

แล้วเราลองเรียกใช้งานดูทั้งแบบ (myprog) และ (c:myprog) และลอง myprog ด้วย

จะเห็นได้ว่าถ้าเราใส่ C: นำหน้าเราสามารถเรียกใช้จากชื่อได้โดยตรงไม่ต้องมีวงเล็บเปิดและปิดหน้าหลังเลยทำให้เราสะดวกในการเรียกใช้งาน