Sections Detalis Column and Span
AutoLISP เป็นเครื่องมือช่วยในการเขียนแบบด้วย AutoCAD ให้รวดเร็วยิ่งขึ้นช่วยประหยัดเวลาในการทำงาน ลดขั้นตอนในการเรียกใช้คำสั่ง ... และอื่นๆอีกมากมาย
วันเสาร์ที่ 22 ธันวาคม พ.ศ. 2561
วันเสาร์ที่ 10 พฤศจิกายน พ.ศ. 2561
รวมงานแผ่นคลี่
งานเหลี่ยมลดกลมปรับมุมได้(Square to Round and cut off)
กรวยยอดตัดปรับมุม บน-ล่าง (Special cone)
ท่อแยกจากท่อหลัก (Branch to quadrant and center)
ลดกลมเยื้องศูนย์ (Eccentric reducer)
twist box กล่องสี่เหลี่ยมที่ถูกบิด 0 - 90 องศา
วันศุกร์ที่ 12 ตุลาคม พ.ศ. 2561
ตัวแปร (Variable)
ตัวแปร (Variable) ตัวแปรมีไว้ใช้เก็บค่าต่าง
ๆ เช่น ตัวเลข ตัวอักษร โดยเราจะใช้ฟังก์ชั่น setq ในการกำหนดให้ตัวแปร
เช่น a ให้มีค่าเท่ากับ 10 ลองทำตามดูเลย
(setq a 10) กด enter ค่าของ a ที่ออกมา 10 จากนั้นลองใช้ฟังก์ชั่น +
ข้างต้นมาทดสอบดู (+ a 2) แล้วกด Enter ผลที่ออกมาเท่ากับ 12
ตัวอย่างที่
2
ลองทำต่อไปอีกคือ
(setq
b 20) Enter (setq c 30) Enter แล้วนำมา
+ กันดูใหม่ (+ (+ a b) c) ผลที่ออกมาก็คือ
60
ตัวอย่างที่ 3
ตัวอย่างที่ 4
Setq เป็นตัวกำหนด ค่า (value) ของ ตัวแปร (Variable) ด้วย คำสั่ง (expression)
ต่างๆ โดยเราสามารถกำหนดค่า ตัวแปร
ได้หลายๆ ตัวแปร ในฟังชั่น setq ฟังชั่นเดียว ตามตัวอย่างที่แล้วเราสามารถกำหนดได้ดังนี้ (setq
a 10 b 20 c 30) ใน setq
เดียวเราก็จะได้ค่าของ a b c ตามที่เรากำหนดซึ่งอาจจะมากว่านี้ก็สามารถกำหนดได้ฟังก์ชั่นทางคณิตศาสตร์
การ บวก ลบ คูณ หาร
การยกกำลังของตัวเลข และการถอดรูท ใน AutoLISP
ลองทำการติดต่อกับ AutoLISP โดยตรง (Direct Mode) โดยพิมพ์ที่ command : (+ 2 1) แล้วลองกด Enter ดูผลที่ได้ = 3 คือผลที่ได้จากฟังก์ชั่นบวกใน AutoCAD ฟังก์ชั่นอื่นก็เช่นกัน
ลองทำการติดต่อกับ AutoLISP โดยตรง (Direct Mode) โดยพิมพ์ที่ command : (+ 2 1) แล้วลองกด Enter ดูผลที่ได้ = 3 คือผลที่ได้จากฟังก์ชั่นบวกใน AutoCAD ฟังก์ชั่นอื่นก็เช่นกัน
(- 2 1) = ลบ
(* 2 2) = คูณ
(/ 4 2) = หาร
(expt 4 2) = ยกกำลัง (4 ยกกำลัง 2)
(sqrt 16) = การถอดรูท
(* 2 2) = คูณ
(/ 4 2) = หาร
(expt 4 2) = ยกกำลัง (4 ยกกำลัง 2)
(sqrt 16) = การถอดรูท
สัญลักษณ์ผังงาน ( Flowchart Symbols)
สัญลักษณ์ผังงาน ( Flowchart Symbols)
ฟังก์ชั่นเกี่ยวกับ Entity และการเลือก Entity
ฟังก์ชั่นเกี่ยวกับ Entity และการเลือก Entity
ssget เลือก Entity มาเก็บไว้ใน Selection Set
sslength จำนวน Entity ที่อยู่ใน Selection Set
ssname แสดง Entity Name ใน Selection Set
ssadd เพิ่ม Entity เข้าไปใน Selection Set
ssdel ลบ Entity ออกจาก Selection Set
ssmemb ทดสอบว่า Entity ที่กำหนดเป็นสมาชิกใน Selection
Set หรือไม่
entnext แสดง Entity Name และรายากรของ Entity ใน Database
entlast แสดง Entity อันสุดท้ายใน Database
entsel เลือก Entity ที่ตำแหน่งพิกัดบน Screen
entdel ลบหรือเรียกคืน Entity จาก Database
entget เรียก Entity และแสดงรายการใน Entity
entmod แก้ไขรายการใน Entity
entupd เปลี่ยนรูปแบบบนจอภาพให้เป็นไปตามที่แก้ไข
tblnext เรียกดูรายการใน Symbol
ที่มีชื่อ Table ตรงกับที่ระบุ
Cr. กรมส่งเสริมอุตสาหกรรม – พื้นฐานการเขียนโปรแกรม AutoLISP
ฟังก์ชั่นที่ควบคุมการ Input & Output
ฟังก์ชั่นที่ควบคุมการ Input & Output
command เรียกใช้คำสั่งใน AutoCAD
distance หาค่าระยะทางระหว่างจุดพิกัดสองจุด
initget กำหนดข้อจำกัดของข้อมูลที่จะรับด้วย getxxx ต่าง ๆ
getangle รับค่ามุมแบบ เรเดียน (radian)
getcorner รับค่าจุดตรงกันข้ามของกรอบสี่เหลี่ยม
getdist รับค่าระยะทาง
getint รับค่าจำนวนเต็ม
getkword รับค่าใน Keyword
getorient รับค่ามุมแบบกำหนดจุด สองจุด
getpoint รับค่าพิกัดจุด
getreal รับค่าจำนวนจริง
getstring รับค่าที่เป็นข้อความ
getvar อ่านค่าจากตัวแปรระบบ
setvar ตั้งค่าให้กับตัวแปรระบบ
inters หาจุดตัดของเส้นตรงสองเส้น
osnap หาค่าจุดพิกัดตาม Object Snap Mode
polar หาจุดพิกัดแบบ เรเดียน (radian)
angle หาค่ามุมระหว่างจุดพิกัดสองจุด
open เปิดไฟล์ก่อนที่จะใช้เขียนหรืออ่าน
close ปิดไฟล์ที่เปิดเอาไว้
load เรียกไฟล์ของ AutoLISP เข้ามาเก็บไว้ในหน่วยความจำ
menucmd เรียก Sub Menu จาก AutoCAD Menu
prin1 แสดงค่าใด ๆ ไปที่จอภาพหรือไฟล์
princ แสดงค่าใด ๆ ไปที่จอภาพหรือไฟล์
print แสดงค่าใด ๆ ไปที่จอภาพหรือไฟล์
prompt แสดงข้อความ String ออกไปที่จอภาพ
read แสดงค่าจากข้อความ String
read-char รับค่าตัวอักษรหนึ่งตัวจากคีย์บอร์ด หรือจากไฟล์
read-line รับข้อความจากคีย์บอร์ดหรือไฟล์ ทีละบรรทัด
write-char เขียนค่าตัวอักษรไปที่จอภาพหรือไฟล์ ทีละหนึ่งตัวอักษร
write-line เขียนข้อความไปที่จอภาพหรือไฟล์ ทีละบรรทัด
terpri ขึ้นบรรทัดใหม่บนจอภาพ
graphscr เปลี่ยนจาก Text Screen ไปเป็น Graphics
Screen
textscr เปลี่ยนจาก Graphics Screen ไปเป็น Text Screen
redraw ล้างภาพแสดงรูปบนจอใหม่
grclear Clear
Graphics Screen
grdraw สร้าง Graphics Line บน Graphics Screen
grtext เขียนข้อความไปที่ Graphics Screen
grread อ่านข้อมูลจากอุปกรณ์ Input
โดยตรง
findfile ใช้ในการหาไฟล์
getenv ใช้ในการหาชื่อตัวแปรใน Environment
getfiled ใช้ในการแสดงข้อความใน Dialog
Box
ฟังก์ชั่นที่ใช้กับข้อมูลแบบ String,ฟังก์ชั่นเกี่ยวกับเงื่อนไข, การวนรอบ และ Subroutine
ฟังก์ชั่นที่ใช้กับข้อมูลแบบ String
strcase เปลี่ยน String ที่เป็นอักษรตัวเล็กให้เป็นตัวใหญ่
strcat เชื่อมต่อข้อความ
strlen ความยาวของ String
substr คัดข้อความย่อยออกจาก String
ที่กำหนด
ฟังก์ชั่นเกี่ยวกับเงื่อนไข, การวนรอบ และ Subroutine
repeat ทำซ้ำตามจำนวนที่กำหนด
while วนรอบจนกว่าเงื่อนไขจะเป็นเท็จ
if กำหนดเงื่อนไขให้นิพจน์ทำงาน
progn ใช้ในการรวมนิพจน์ให้เป็นกลุ่ม
cond กำหนดเงื่อนไขเป็นชุด เพื่อกระทำนิพจน์ต่าง ๆ ตามเงื่อนไข
defun สร้างฟังก์ชั่นใหม่
lambda สร้างฟังก์ชั่นใหม่ ณ ตำแหน่งที่ต้องการใช้งาน
mapcar นำฟังก์ชั่นไปทำงานกับรายการ List ทีละค่า
apply นำฟังก์ชั่นไปทำงานกับรายการ
List ทุกค่า
ฟังก์ชั่นที่เปลี่ยนแปลงชนิดข้อมูล,ฟังก์ชั่นที่ใช้กับข้อมูลแบบ List
ฟังก์ชั่นที่เปลี่ยนแปลงชนิดข้อมูล
angtos เปลี่ยนตัวเลขค่ามุมเป็นตัวอักษร
ascii ค่ารหัสแอสกีของตัวอักษร
atof เปลี่ยนตัวอักษรให้เป็นจำนวนจริง
atoi เปลี่ยนตัวอักษรให้เป็นจำนวนเต็ม
chr เปลี่ยนตัวเลขให้เป็นตัวอักษรตามรหัสแอสกี
itoa เปลี่ยนเลขจำนวนเต็มให้เป็น String
fix เปลี่ยนตัวเลขให้เป็นจำนวนเต็ม
float เปลี่ยนตัวเลขให้เป็นจำนวนจริง
rtos เปลี่ยนจำนวนจริงให้เป็น String
ฟังก์ชั่นที่ใช้กับข้อมูลแบบ List
append เชื่อมต่อ List
assoc ค้นหาค่า Atom ใน Association List
car นำค่าแรกใน List มาใช้
cdr นำค่าที่เหลือจากค่าแรกใน List มาใช้
caar, cddr, cadr, caddr, etc. ฟังก์ชั่นผสมของ car กับ cdr
foreach ประมวลผลค่าแต่ละอันใน List ตามฟังก์ชั่นที่กำหนด
last ค่า Atom สุดท้ายใน List
list เชื่อมต่อ Atom ต่าง ๆ ใน List
member ค้นหาค่า Atom ใน List
nth แสดงค่า Atom ณ ตำแหน่งที่ระบุใน List
quote ( ‘ ) ใช้นิพจน์หรือสัญลักษณ์โดยไม่ประเมินค่าออกมา
reverse สลับหัวข้อท้ายของ Atom ใน List
setq กำหนดค่าให้กับตัวแปร
subst เปลี่ยน Atom ตัวใหม่แทนที่ระบุทุกตัวใน List
วันพฤหัสบดีที่ 11 ตุลาคม พ.ศ. 2561
ฟังก์ชั่นพื้นฐานใน AutoLISP
ฟังก์ชั่นพื้นฐานใน AutoLISP
ฟังก์ชั่นมาตรฐาน ใน AutoLISP มีอยู่มากกว่า 250 คำสั่ง ซึ่งแต่ละฟังก์ชั่นก็จะมีจุดประสงค์ของการใช้แตกต่างกันไป
แต่ในการใช้งานจริง ๆ แล้วจะมีคำสั่งที่สำคัญในการใช้งานอยู่เพียงไม่มากนัก
ที่จะนำมาสร้างโปรแกรม ซึ่งเราจะรวมเฉพาะฟังก์ชั่นพื้นฐาน และความหมายสั้น ๆ
ของแต่ละฟังก์ชั่น โดยรวบรวมตามหน้าที่ของฟังก์ชั่นในลักษณะกลุ่มเดียวกันอย่างเป็นหมวดหมู่
- ลบ
* คูณ
/ หาร
rem จำนวนที่เหลือจากการหาร
1+ เพิ่มค่าทีละหนึ่ง
1- ลดค่าทีละหนึ่ง
max ค่าสูงสุด
min ค่าต่ำสุด
abs ค่าสัมบูรณ์
alert แจ้งข้อความที่ผิดพลาดบน Dialog Box
atan ค่า Arctangent
sin ค่า sine ของมุมเรเดียน
cos ค่า cosine ของมุมเรเดียน
~ Bitwise
Not
boole Boolean
Bitwise
logand Logical
AND
logior Logical
OR
lsh Logical
Shift
log ค่าลอการิทึมฐาน e
sqrt ค่ารากที่สอง
exp ค่า e ^ x
expt ค่า x ^ y
gcd ค่า ห. ร. ม.
eval แสดงค่า
pi ค่า π
Cr. กรมส่งเสริมอุตสาหกรรม – พื้นฐานการเขียนโปรแกรม AutoLISP
การเรียกใช้งานบน AutoCAD
การเรียกใช้งานบน
AutoCAD
หลังจากที่เราเขียนโปรแกรมและบันทึกไฟล์ไว้ในรูปแบบ
AutoLISP
ที่นามสกุล .LSP เรียบร้อยแล้ว
จะต้องทำการเรียกโปรแกรมเข้ามาในหน่วยความจำ (โหลดโปรแกรม) ซึ่งมีรูปแบบดังนี้
(LOAD “filename”)
Filename เป็นชื่อของโปรแกรม
โดยไม่จำเป็นต้องใส่นามสกุล .LSP เข้าไป
ในกรณีที่ที่จะเรียกโปรแกรมจากไดเรกทอรี่อื่นนั้นต้องบอกพาท Path ด้วย ใน AutoCAD จะใช้เครื่องหมาย / หรือ \\ แทนเครื่องหมาย \ ที่ใช้ระบุ
Path ตามปกติ เช่น เราต้องการโหลดโปรแกรม TEST.LSP จาก C:\LISP\TEST.LSP ก็จะใช้รูปแบบคือ
(LOAD “C:/LISP/TEST”) หรือ (LOAD “C:\\LISP\\TEST”)
แต่ก็ยังมี AutoLISP ที่ถูกเรียกเข้ามาในหน่วยความจำอย่างอัตโนมัติในทุก ๆ ครั้งที่เข้าโปรแกรม
AutoCAD นั่นก็คือ ACAD.LSP ซึ่งเราสามารถกำหนดฟังก์ชั่นต่าง
ๆ ที่ต้องการให้โหลดเข้าสู่หน่วยความจำไว้ในไฟล์นี้ก่อน และเมื่อเข้า โปรแกรม AutoCAD
ใหม่ทุก ๆ ครั้ง โปรแกรมจะทำการค้นหาไฟล์ ชื่อ ACAD.LSP เพื่อที่จะทำการโหลดเข้าสู่หน่วยความจำโดยอัตโนมัติ
นอกจากวิธีการโหลดทาง Command line แล้ว ยังมีวิธีการโหลดที่สะดวกมากขึ้นไปอีก ก็คือ การใช้เมนูในการโหลด
ซึ่งจะเป็น Pull-Down Menu ดังนี้
1.
ไปที่เมนูเลือก Tools
2.
เลือกที่ Load
Application
3.
เข้าไปที่เก็บไฟล์ AutoLISP
4.
เลือกไฟล์ AutoLISP ที่เราต้องการเรียกใช้งาน
5.
เลือกกด Load
6.
เลือกกด Close
7.
เมื่อเราทำการเรียกใช้งาน Load เสร็จ
จะมีข้อความแสดงรายละเอียด ที่ Command:
การเรียกใช้งาน AutoLISP แบบให้เปิด AutoCAD
แล้วเรียกใช้งานได้เลย
1.
ไปที่เมนูเลือก Tools
2.
เลือกที่ Load
Application
3.
เข้าไปที่ Contents
5.
เลือกไฟล์ AutoLISP ที่เราต้องการเรียกใช้งาน
6.
เลือกกด Open
7.
ที่ Startup Suite จะแสดงชื่อไฟล์ AutoLISP
และโฟเดอร์ที่เก็บไฟล์
และบอกว่าได้เพิ่มไฟล์ของเราเข้าไปที่ Startup Suite เรียบร้อยแล้ว กด Close เป็นอันเสร็จ
ทีนี้เมื่อเราเข้าใช้งาน AutoCAD เราสามารถเรียกใช้งานได้เลยไม่ต้องมา
Load ใช้งานอีก
รูปแบบการเขียนโปรแกรม AutoLISP
รูปแบบการเขียนโปรแกรม AutoLISP
การเขียนโปรแกรม AutoLISP
ขึ้นมาใช้งานบน AutoCAD ถือได้ว่าเป็นการสร้างฟังก์ชั่นใหม่ขึ้นมา
ซึ่งในการเขียนโปรแกรม AutoLISP ขึ้นมาใหม่นั้น
จะต้องมีการกำหนดให้เป็นฟังก์ชั่นเสียก่อน โดยการ
DEFUN ซึ่งย่อมาจาก DEfine
FUNction ลักษณะการกำหนดรูปแบบดังนี้
(DEFUN C:FUNCNAME (Argument)
(Expression)
(Expression)
(Expression)
.
.
.
)
เราจะสังเกตได้ว่า
จำนวนวงเล็บเปิด และวงเล็บปิด จะสมดุลกัน และใน AutoLISP จะถือว่าการใช้อักษรตัวใหญ่
หรืออักษรตัวเล็กมีค่าเหมือนกัน
C: เป็นตัวเลือก
จะมีหรือไม่มีก็ได้ ถ้ามี
แล้วฟังก์ชั่นนั้นสามารถเรียกใช้งานได้เลยทาง Command line ได้เลย
เช่นเดียวกันกับคำสั่งของ AutoCAD โดยทั่วไป แต่ ถ้าไม่มี
แล้ว การเรียกใช้จะต้องเรียกในลักษณะฟังก์ชั่น
หรือกำหนดให้ฟังก์ชั่นอื่นเรียกใช้งานอีกที
FUNCNAME คือชื่อของฟังก์ชั่นที่เราจะสร้างขึ้นมาใหม่
จะต้องไม่ซ้ำกับชื่อฟังก์ชั่นที่มีอยู่แล้ว
Argument เป็นรายการตัวแปรที่จะเป็นสะพานเชื่อมไปยังฟังก์ชั่นตัวอื่น
ซึ่งจะมีหรือไม่มีก็ได้ แต่ถ้าเราใส่ Argument ลงไปก็จะมีการส่งค่าไปยังฟังก์ชั่นอื่นได้
เหมาะสำหรับการเขียนแยกทีละโมดูล หลาย ๆ โมดูล
Expression เป็นรายการคำสั่งที่เราเขียนขึ้นมาให้
AutoCAD ทำงานตามขั้นตอนต่าง ๆ ที่เรากำหนดไว้
เราสามารถสรุปรวบรวมรูปแบบการ DEFUN ได้ดังต่อไปนี้
1. (DEFUN
FUNCNAME ( ) . . . . . )
ตัวแปรทั้งหมดเป็น Global
Variable
2. (DEFUN FUNCNAME ( / a b ) . . . . . )
a และ b เป็น Local Variable
3. (DEFUN FUNCNAME ( c ) . . . . . )
c เป็น Leading
Variable
4. (DEFUN C:FUNCNAME ( ) . . . . . )
เราสามารถเรียกใช้ FUNCNAME ได้เลยทาง Command line
ในการเขียนโปรแกรม
AutoLISP
ขึ้นมานั้น เราจะใช้โปรแกรมจำพวก Text Editor ในการสร้างโปแกรมขึ้นมาในรูปแบบของ
Text File และต้องบันทึกนามสกุล .LSP เสมอ
โปรแกรมจำพวก Text Editor ที่เราเลือกมาใช้ในการเขียนโปรแกรม
AutoLISP นี้ ควรเลือกใช้ให้เหมาะสม
ควรเป็นโปรแกรมที่มีขนาดเล็ก ใช้งานง่ายและไม่เสียเวลาในการเรียกใช้งานมากนัก
เพราะในทางปฏิบัติแล้ว เราจะต้องทำการแก้ไขโปรแกรม สลับไปกับการทดสอบรันโปรแกรม
อยู่ตลอดเวลา อย่างหลีกเลี่ยงไม่ได้
Cr. กรมส่งเสริมอุตสาหกรรม – พื้นฐานการเขียนโปรแกรม AutoLISP
นิพจน์ (Expression)
นิพจน์ (Expression)
นิพจน์จะเป็นกลุ่มของชุดคำสั่ง
ซึ่งเป็นการนำเอา ฟังก์ชั่น อาร์กิวเมนต์ หรือเครื่องหมายดำเนินการต่าง ๆ
เข้ามาประมวลผลเข้าด้วยกันให้ได้ผลลัพธ์ใหม่ เช่น
( + A 10 ) = นิพจน์
| |__|___อาร์กิวเมนต์
|_______ฟังก์ชั่น
ดังนั้นในโปรแกรม AtuoLISP แต่ละโปรแกรมจะประกอบด้วยนิพจน์ จำนวนหลาย ๆ นิพจน์ที่ประกอบกันขึ้นมา
และการสร้างนิพจน์ขึ้นมาจะต้องเป็นไปตามกฎเกณฑ์การสร้างนิพจน์ ดังนี้
1.
ทุก ๆ นิพจน์ ไม่ว่าจะมี อาร์กิวเมนต์ หรือไม่ก็ตาม
จะต้องขึ้นต้นด้วยเครื่องหมายวงเล็บเปิด ( ก่อน
และปิดท้ายด้วยเครื่องหมายวงเล็บปิด ) เมื่อจบนิพจน์เสมอ
2.
จำนวนเครื่องหมายวงเล็บเปิด จะต้องเท่ากับวงเล็บปิดเสมอ
ไม่ว่าจะซ้อนกันกี่นิพจน์ก็ตาม
3.
ในกรณีที่มีนิพจน์ซ้อนกันมากกว่า 1 นิพจน์ AutoLISP จะทำการประมวลผลวงเล็บในสุดก่อน
แล้วจึงประมวลผลวงเล็บนอกที่ถัดออกมาเรื่อย ๆ จนจบนินพจน์กลุ่มนั้น
4.
จะต้องเว้นช่องว่าง 1 อักษร ระหว่าง ฟังก์ชั่นและอาร์กิวเมนต์เสมอ
5.
นิพจน์ที่มีการประมวลผลหรือรับข้อมูลจากภายนอก เช่น คีย์บอร์ด, เมาส์
หรืออุปกรณ์ช่วยอื่น ๆ อาจจะมีค่าหรือไม่มีค่าก็ได้ ถ้าไม่มีค่าถือว่าเป็น nil หรือถ้ามีค่าถือว่าเป็น
T (True)
Cr. กรมส่งเสริมอุตสาหกรรม – พื้นฐานการเขียนโปรแกรม AutoLISP
สมัครสมาชิก:
บทความ (Atom)