วันพฤหัสบดีที่ 17 ตุลาคม พ.ศ. 2562

Creating Menu


Creating Menu
เรามาทำการออกแบบเมนูแบบดึงลงหรือ Popup Menu อย่างง่ายๆ กัน โดยใช้โปรแกรม Notepad และพิมพ์ข้อมูลต่อไปนี้ แล้วบันทึกไฟล์เป็น test.mnu 
(***ทำการบันทึกไฟล์ทั้งหมดลงในไดเรคทอรีที่ได้ทำการเซ็ท Supports files Search Path)

***MENUGROUP=TEST
***POP1
[Test Menu]
[Line]
[Copy]
[Move]
[Zoom]

ทำการบันทึกไฟล์ดังรูปตัวอย่าง

ทำการโหลด Test.mnu ดังนี้
1.    ไปที่ Command: Menuload
2.    เลือก Browse ไปที่ไฟล์ของเรา
3.    เลือกไฟล์ TEST.mnu
4.   เลือก open เพื่อใช้งานไฟล์ TEST.mnu ของเรา

5.    กด Load แถบเมนูใหม่จะปรากฏขึ้นมาชื่อ Test Menu มาตามรูป
ถ้าเราต้องการยกเลิกก็เลือก TEST แล้วก็กด Unload แถบเมนู จะหายไป
สร้างไฟล์เมนูใหม่ชื่อ TEST1.mnu และพิมพ์ข้อมูลต่อไปนี้
***MENUGROUP=TEST1
***POP1
[&Test Menu1]
[&Line]^C^CLine
[&Copy]^C^CCopy
[M&ove]^C^CMove
[&Zoom]^C^CZoom

โหลดเมนูนี้ตามขั้นตอนเดียวกัน Test Menu จะปรากฏในแถบเมนู Test Menu1

ทีนี้ลองมาดูที่รายการในเมนูกันบ้าง
[&Line] ^C^CLine
[&Line] เป็นป้ายเมนู แตกต่างกันกับแบบแรกที่ ตัว & มาทำอะไรอยู่ข้างหน้า L หากคุณพิมพ์ข้อความใด ๆ ในป้ายชื่อเมนูพร้อมกับ & นั่นจะเป็นการกำหนดตัวอักษรให้เป็นคีย์ลัดในรายการเมนูนั้นๆ
^C^CLine เป็นการใช้คำสั่ง Line เช่นเดียวกับการพิมพ์ที่พรอมต์คำสั่ง Line ตามด้วย ENTER
อักขระพิเศษ 
ความหมาย / การใช้งาน
[ ]
Menu Label ป้ายเมนู
;
Enter
Space
Enter หรือ Spacebar
\
Pauses สาหรับการป้อนข้อมูลของผู้ใช้
_
คำสั่ง AutoCAD
+
ต่อเมนูมาโครไปที่บรรทัดถัดไป
^C^C
การใช้คำสั่ง
*^C^C
การใช้คำสั่ง AutoCAD วนซ้ำไปเรื่อยๆ จนกว่าผู้ใช้จะกด CTRL C หรือ ESC เพื่อยกเลิกการทาซ้ำ
$
Character Code ที่โหลดส่วนเมนู
^B
Toggels Snap / Off
^C
ยกเลิกคำสั่ง
^D
Toggles Coords
^E
ตั้งค่ามุมมอง Isometric ถัดไป
^G
เปิด / ปิด grid
^H
ทำให้เกิดปัญหา Backspace
^O
เปิด / ปิด Ortho
^P
เปิด / ปิดเครื่อง Menuecho
^Q
สะท้อนข้อความทั้งหมด
^T
Toggles เปิดหรือปิดแท็บเล็ต
^V
เปลี่ยนแปลงวิวพอร์ตปัจจุบัน
^Z
อักขระ Null


 ตัวอย่างต่อไปสร้างไฟล์เมนูใหม่ชื่อ TEST2.mnu และพิมพ์ข้อมูลต่อไปนี้
***MENUGROUP=TEST2
***POP1
[&Test Menu2]
[&Layer 2 On]^C^CLayer;M;2;;
[&Ortho On/Off]^C^C^O
[Change to Layer 3]*^C^CChange;\;P;LA;3;;
[&Hello World](alert "Hello World")

โหลดเมนูนี้ตามขั้นตอน Test Menu2 จะปรากฏในแถบเมนู
 
[&Test Menu2] เป็นชื่อแถบเมนู
[&Layer 2 On]^C^CLayer;M;2;; เป็นการใช้คำสั่งเปลี่ยนเลเยอร์ปัจจุบันเป็นเลเยอร์ 2
(Layer Enter Make Enter 2 Enter Enter)
[&Ortho On/Off]^C^C^O เพียงแค่เปิดหรือปิด Ortho Mode
[Change to Layer 3]*^C^CChange;\;P;LA;3;; ให้คุณเลือกวัตถุและเปลี่ยนเป็น Layer 3
(Change Enter Pause Enter Properties Enter Layer Enter 3 Enter Enter)
คำนำหน้า * จะบังคับให้ มาโครทำซ้ำจนกว่าผู้ใช้กด CTRL C หรือ ESC
อักขระที่สามารถใช้ในเมนู
--
เส้นแบ่ง
+
ดำเนินการต่อไปยังมาโคร ต่อไป
->
มีเมนูย่อย
<-
รายการสุดท้ายในเมนูย่อย
<- <-
ระบุว่ารายการเมนูเป็นรายการสุดท้ายในเมนูย่อยและเมนูหลัก
~
คำนำหน้า Lable ที่ปิดใช้งานรายการเมนู
!
คำนำหน้าป้ายกากับที่ทาเครื่องหมายรายการเมนู
&
คำนำหน้าตัวกำหนดคีย์ลัด

ตัวอย่างต่อไปสร้างไฟล์เมนูใหม่ชื่อ TEST3.mnu และพิมพ์ข้อมูลต่อไปนี้
***MENUGROUP=TEST3
***POP1
[&Test Menu 3]
[&Layer 2 On]^C^CLayer;M;2;;
[--]
[&Ortho On/Off]^C^C^O
[--]
[->&Change]
[->C&hange Layer]
[Change to Layer 1]^C^CChange;\;P;LA;1;;
[Change to Layer 2]^C^CChange;\;P;LA;2;;
[Change to Layer 3]^C^CChange;\;P;LA;3;;
[<-Change to Layer 4]^C^CChange;\;P;LA;4;;
[->Ch&ange Colour]
[Change to Colour 1]*^C^CChange;\;P;C;1;;
[Change to Colour 2]*^C^CChange;\;P;C;2;;
[Change to Colour 3]*^C^CChange;\;P;C;3;;
[<-<-Change to Colour 4]*^C^CChange;\;P;C;4;;

โหลดเมนูนี้ตามขั้นตอน Test Menu3 จะปรากฏในแถบเมนู


TOOLBARS
ต่อไปก็มาสร้างปุ่มกด TOOLBARS กันตามนี้เลย
***TOOLBARS
**TESTBAR
[_Toolbar("Testbar", _Floating, _Show, 202, 163, 1)]
[_Button("Change to Colour 1", "ICON01.bmp", "ICON_24_BLANK")]*^C^CChange;\;P;C;1;;
[_Button("Change to Colour 2", "ICON02.bmp", "ICON_24_BLANK")]*^C^CChange;\;P;C;2;;
[_Button("Change to Colour 3", "ICON03.bmp", "ICON_24_BLANK")]*^C^CChange;\;P;C;3;;
[_Button("Change to Colour 4", "ICON04.bmp", "ICON_24_BLANK")]*^C^CChange;\;P;C;4;;

*** TOOLBARS เป็นป้ายเริ่มต้นของแถบเครื่องมือ
** TESTBAR ป้ายกากับของ Toolbar
ความหมายของแถบเครื่องมือบรรทัดแรก เป็นกำหนดลักษณะของแถบเครื่องมือ ในส่วนนี้ประกอบด้วย 6 ส่วนคือ
[_Toolbar("Testbar", _Floating, _Show, 202, 163, 1)]
Tbarname ชื่อแถบเครื่องมือ ( "Testbar")
Orient ทิศทางของแถบเครื่องมือ, Top, Bottom, Left, Right.
visible การแสดงของแถบเครื่องมือ (Show) ปิดหรือเปิด
xval พิกัด x ของแถบเครื่องมือ (202) วัดจากขอบด้านซ้ายของหน้าจอไปที่ด้านขวาของแถบเครื่องมือ(in pixels)
yval พิกัด y ของแถบเครื่องมือ(163)วัดจากขอบด้านบนของหน้าจอไปที่ด้านบนสุดของแถบเครื่องมือ(in pixels)
rows จำนวนแถวในแถบเครื่องมือ(1)
ความหมายของ Toolbar ในส่วนที่สอง (บรรทัด 2 ถึง 4) จะกำหนดลักษณะของปุ่มแต่ละชิ้นประกอบด้วย 3 ส่วนคือ
[_Button("Change to Colour 1", "ICON01.bmp", "ICON_24_BLANK")]*^C^CChange;\;P;C;1;;
btnname ชื่อปุ่มกด ("Change to Colour 1")
id_small ชื่อของรูปภาพขนาดเล็ก (ICON01.bmp) (16 x 16 bitmap)
id_big ชื่อของรูปภาพขนาดใหญ่ (ICON_24_BLANK) (24 x 24 bitmap)
macro คำสั่งที่กำหนดให้กับปุ่ม *^C^CChange;\;P;C;1;;


ตัวอย่างต่อไปสร้างไฟล์เมนูใหม่ชื่อ TEST4.mnu โดยนำเมนู Test3 มาเพิ่ม Toolbars เข้าไป ดังนี้
***MENUGROUP=TEST4
***POP1
[&Test Menu 4]
[&Layer 2 On]^C^CLayer;M;2;;
[--]
[&Ortho On/Off]^C^C^O
[--]
[->&Change]
[->C&hange Layer]
[Change to Layer 1]^C^CChange;\;P;LA;1;;
[Change to Layer 2]^C^CChange;\;P;LA;2;;
[Change to Layer 3]^C^CChange;\;P;LA;3;;
[<-Change to Layer 4]^C^CChange;\;P;LA;4;;
[->Ch&ange Colour]
[Change to Colour 1]*^C^CChange;\;P;C;1;;
[Change to Colour 2]*^C^CChange;\;P;C;2;;
[Change to Colour 3]*^C^CChange;\;P;C;3;;
[<-<-Change to Colour 4]*^C^CChange;\;P;C;4;;
***TOOLBARS
**TESTBAR
[_Toolbar("Testbar", _Floating, _Show, 202, 163, 1)]
[_Button("Change to Colour 1", "ICON01.bmp", "ICON_24_BLANK")]*^C^CChange;\;P;C;1;;
[_Button("Change to Colour 2", "ICON02.bmp", "ICON_24_BLANK")]*^C^CChange;\;P;C;2;;
[_Button("Change to Colour 3", "ICON03.bmp", "ICON_24_BLANK")]*^C^CChange;\;P;C;3;;
[_Button("Change to Colour 4", "ICON04.bmp", "ICON_24_BLANK")]*^C^CChange;\;P;C;4;;




ตอนนี้เราก็มาสร้างรูปปุ่มกดของเราก่อนเข้าไปที่ Tools => Customize => Interface
เข้าไปในส่วนของ command เลือกคำสั่งใดก็ได้จะปรากฏ Buttom Image เลือก Edit เพื่อทำการแก้ไขตามที่เราต้องการ

ตามตัวอย่างเมื่อแก้ไขเสร็จแล้วก็ทำการ Save As ในตัวอย่างผมเซฟเป็น icon01.bmp ถึง icon04 ตามปุ่มกด TESTBAR

ทีนี้ก็มาโหลดเมนูนี้ตามขั้นตอน เหมือนเคย Test Menu4 จะปรากฏในแถบเมนู

เข้าไปดูในเมนูที่ Change Colour จะมีรูปปุ่มกดที่เราสร้างแสดงหน้า ป้ายชื่อ Change to Colour 1- 4 และแถบปุ่มกด Testbar แสดงขึ้นมาให้ใช้งาน


ตัวอย่างต่อไปสร้างไฟล์เมนูใหม่ชื่อ TEST5.mnu โดยนำเมนู Test4 มาเพิ่ม การเรียกใช้งาน AutoLISP เข้าไป ดังนี้
***MENUGROUP=TEST5
***POP1
[&Test Menu 5]
[&Layer 2 On]^C^CLayer;M;2;;
[--]
[&Ortho On/Off]^C^C^O
[--]
[->&Change]
[->C&hange Layer]
[Change to Layer 1]^C^CChange;\;P;LA;1;;
[Change to Layer 2]^C^CChange;\;P;LA;2;;
[Change to Layer 3]^C^CChange;\;P;LA;3;;
[<-Change to Layer 4]^C^CChange;\;P;LA;4;;
[->Ch&ange Colour]
[Change to Colour 1]*^C^CChange;\;P;C;1;;
[Change to Colour 2]*^C^CChange;\;P;C;2;;
[Change to Colour 3]*^C^CChange;\;P;C;3;;
[<-<-Change to Colour 4]*^C^CChange;\;P;C;4;;
[--]
[->Skills UP AutoLISP]
[&STEEL STRUCTURE (lisp)]^C^C^P+
(cond ((null SST) (prompt "Please Wait...")(load "Steels_Structure2"))) SST
[--]
[<-&PIPING 3D (lisp)]^C^C^P+
(cond ((null p3d) (prompt "Please Wait...")(load "piping3d"))) P3D
[--]
***TOOLBARS
**TESTBAR
[_Toolbar("Testbar", _Floating, _Show, 202, 163, 1)]
[_Button("Change to Colour 1", "ICON01.bmp", "ICON_24_BLANK")]*^C^CChange;\;P;C;1;;
[_Button("Change to Colour 2", "ICON02.bmp", "ICON_24_BLANK")]*^C^CChange;\;P;C;2;;
[_Button("Change to Colour 3", "ICON03.bmp", "ICON_24_BLANK")]*^C^CChange;\;P;C;3;;
[_Button("Change to Colour 4", "ICON04.bmp", "ICON_24_BLANK")]*^C^CChange;\;P;C;4;;

โหลดเมนูนี้ตามขั้นตอน เหมือนเดิม Test Menu5 จะปรากฏในแถบเมนู


สามารถเรียกใช้งานได้เลยโดยคำสั่งจากเมนูจะทำการโหลดโปรแกรมและสั่งให้ทำงานในทันที 
รายละเอียดในคำสั่ง
[&STEEL STRUCTURE (lisp)]^C^C^P+

(cond ((null SST) (prompt "Please Wait...")(load "Steels_Structure2"))) SST
[&STEEL STRUCTURE (lisp)] ป้ายเมนู
^C^C การใช้คำสั่ง
^P เปิด / ปิดเครื่อง Menuecho
+  ต่อเมนูมาโครไปที่บรรทัดถัดไป
(cond ((null SST) (prompt "Please Wait...")(load "Steels_Structure2"))) ใช้ cond ตรวจสอบคำสั่ง SST ถ้ายังไม่มี null ให้แสดงข้อความกรุณารอ... Please Wait... แล้วทำการโหลดโปรแกรม LISP Steels_Structure2 ไม่ต้องใส่ .lsp หรือ .vlx ก็ได้
SST เป็นคำสั่งเรียกใช้งาน STEEL STRUCTURE