วันจันทร์ที่ 30 มีนาคม พ.ศ. 2552

Windows 7: เคล็ดลับ เพิ่มความเร็วให้กับ IE8

แก้ไขเพิ่มสวิตช์ /prefetch:1 ให้กับ shortcut

"C:\Program Files (x86)\Internet Explorer\iexplore.exe" /prefetch:1

ชอร์ตคัทในตำแหน่งบนทาสก์บาร์
ให้กดคีย์ shift และกดปุ่มขวาของเมาส์
เลือก Properties | Shortcut
ที่รายการ Target ต่อท้ายด้วยเว้นวรรคและ /prefetch:1

กรณีวางชอร์ตคัทในตำแหน่งอื่น
ก็เพียงแต่คลิกขวาบนชอร์ตคัทนั้นๆ และเลือก Properties

Windows 7: เคล็ดลับ วิธีลัดเข้าโปรแกรมย่อย พิมพ์ตรงบน Search

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

รายการต่อไปนี้ สามารถเข้าถึงได้โดยกดคีย์ Win แล้วพิมพ์ชื่อลงไปตามด้วย Enter
ก็จะเข้าถึงโปรแกรมย่อยที่ต้องการได้แล้ว

เช่น กดคีย์ Win พิมพ์ devmgmt.msc ตามด้วย ENTER
เพื่อเปิดวินโดว์ Device Manager เพื่อใช้ตรวจสอบว่าอุปกรณ์
ถูกติดตั้งโดยสมบูรณ์แล้วหรือยัง ฯลฯ
  • control = Opens the Control Panel Window
  • control admintools = Opens the Administrative Tools
  • control keyboard = Opens the Keyboard Properties Window
  • control color = Opens the Display Properties (at the Appearance Tab in Windows 7)
  • control folders = Opens the Folder Options Window
  • control fonts = Opens the Font Policy Management Window
  • control international (or intl.cpl) = Opens Regional and Language Options
  • control mouse (or main.cpl) Opens mouse properties
  • control userpasswords = Opens the User Accounts Editor
  • control userpasswords2 (or netplwiz) = Opens User Account Access Restrictions
  • control printers = Opens the Printers and Faxes Window
  • control desktop (Windows Vista/7 only) = Opens Control Panel>Personalization
  • appwiz.cpl = Opens the Add or Remove Programs Utility
  • optionalfeatures = opens the Add or Remove Windows Component utility
  • desk.cpl = Opens the Display Properties (Themes Tab)
  • hdwwiz.cpl = Opens the Add Hardware Wizard
  • irprops.cpl = Opens the Infrared utility (does nothing if no IR devices are installed)
  • joy.cpl = Opens Game Controller Settings
  • mmsys.cpl = Opens the Sound and Audio device properties window (Volume Tab)
  • sysdm.cpl = Opens the System Properties window
  • telephon.cpl = Opens the Phone and Modem options window
  • timedate.cpl = Opens the Date and Time Properties window
  • wscui.cpl = Opens the Windows Security Center in XP (opens the Action Center in Windows Vista/7)
  • access.cpl = Opens the Accessibility Options Window (does not work in the Windows 7 Beta so far)
  • wuaucpl.cpl = Opens Automatic Updates
  • powercfg.cpl = Opens the Power Options Properties window
  • ncpa.cpl = Opens the Network Connections window
  • bthprops.cpl = Opens the Bluetooth Control window (does nothing if no bluetooth devices are installed)
  • certmgr.msc = Opens the Certificate Management MMC
  • compmgmt.msc = Opens the Computer Management
  • comexp.msc (or dcomcnfg) = Opens the Computer Services MMC
  • devmgmt.msc = Opens Device Manager
  • diskmgmt.msc = Opens Disk Management
  • eventvwr.msc (or eventvwr) = Opens the Event Viewer
  • fsmgmt.msc = Opens Shared Folders
  • napclcfg.msc = Opens the NAP client configuration tool
  • services.msc = Opens Service Manager
  • taskschd.msc (or control schedtasks) = Opens the Task Scheduler
  • gpedit.msc = Opens the Group Policy MMC
  • lusrmgr.msc = Opens Local Users and Groups
  • secpol.msc = Opens the Local Security Settings window
  • ciadv.msc = Opens the Indexing Service Window
  • ntmsmgr.msc = Opens the Removable Storage Manager
  • ntmsoprq.msc = Opens the Removable Storage Operator Requests
  • wmimgmt.msc = Opens the WMI (Windows Management Instrumentation) window
  • perfmon.msc (or perfmon) = Opens the Performance Monitor
  • mmc = Opens a blank Microsoft Management Console
  • mdsched = Opens the Memory Diagnostics tools
  • dxdiag = Opens DirectX diagnostics tools
  • odbcad32 = Opens the ODBC Data Source Administration window
  • regedit (or regedt32) = Opens the Registry Editor (these commands actually open different Registry editors, google for the differences)
  • drwtsn32 = Opens Dr. Watson
  • verifier = Opens the Driver Verification Manager
  • cliconfg = Opens the SQL Server Client Network Utility
  • utilman = Opens the Utility Manager (in Windows 7 this opens the Ease Of Access Center)
  • msconfig = Opens the System Configuration Utility
  • sysedit = Opens the System Configuration Editor
  • syskey = Opens the Windows Account Database Security Manager
  • explorer = Opens Windows Explorer
  • iexplorer = Opens Internet Explorer
  • wab = Opens the Windows Address Book
  • charmap = Opens the Character Map
  • write = Opens Wordpad

วันอาทิตย์ที่ 29 มีนาคม พ.ศ. 2552

Windows 7: WMP12 กับไฟล์ FLAC

เป็นที่ทราบกันดีว่าไฟล์เพลงที่ถูก RIP จากต้นฉบับนั้น
มีทั้งแบบที่เป็น Lossy และ lossless

รูปแบบ Lossless หนึ่งที่เป็นที่นิยมกันคือ FLAC
แต่ใน WMP12 นี้ (ลองใช้บน Build 7068 ของ Windows 7)
พบว่าไม่มี codec สำหรับการนี้

แต่เราสามารถติดตั้งเพิ่มเข้าไปได้
ตามไฟล์แนบนี้
http://www.mediafire.com/?h1elmyntzn2

เพียงเท่านี้ก็ทำให้ WMP12 สามารถใช้ฟังเพลง FLAC (Lossless) ได้แล้ว

Windows 7: เคล็ดลับ บังคับวิธีการติดตั้งไดรเวอร์อุปกรณ์

ในบางกรณีที่พบว่าหลังจากอุปกรณ์ของเราใช้งานได้ดีแล้ว จากไดรเวอร์ที่เราได้ติดตั้งให้เอง (manual driver setup) แต่จะประสบปัญหาหลังจากที่ปล่อยให้ Windows Update แบบอัตโนมัติ เราสามารถกำหนดปิดไม่ให้อัปเดตในส่วนไดรเวอร์ของอุปกรณ์ได้ ให้ทำดังนี้


กดคีย์ Win พิมพ์ change device คลิกเลือกรายการ

Change device installations and settings

ที่แสดงขึ้น และกำหนดตัวเลือกตามที่ต้องการ

ใช้ตัวเลือก Never install driver software from Windows Update
นี้เพื่อไม่ให้ Windows Update ต่อส่วนไดรเวอร์ของอุปกรณ์ แล้วคลิก Save changes

วันศุกร์ที่ 27 มีนาคม พ.ศ. 2552

Visual LISP เชิญส่งคำถามเกี่ยวกับ LISP programming เข้ามาได้ครับ

มีบางท่านได้เริ่มอีเมลมาถามไถ่กันถึง
LISP Programming หรือ
บางท่านก็ส่งโค้ดมาให้แก้ไขให้

เชิญท่านที่เข้ามาบล็อกนี้ ส่งคำถามมาได้ครับ
schatchawal@gmail.com

จะช่วยเขียนโค้ดให้ถ้าไม่ยาวเกินไปนัก
หรือบางกรณีอาจเป็นการแก้ไขจากโค้ดเดิมที่ส่งมาถามกัน

และนำมาโพสต์ในบล็อกเผยแพร่เพื่อเป็นประโยชน์กับ
ผู้อ่านท่านอื่นๆ ต่อไปครับ

วันอังคารที่ 24 มีนาคม พ.ศ. 2552

Windows 7 Misc: แนวคิดและแบบร่างของ Windows 7

www.techradar.com เปิดเผยแบบร่างและส่วนออกแบบทางศิลป์ที่ทีม Windows แสดงที่ Mix 09 เมื่อเร็วๆ นี้

ปกติสิ่งเหล่านี้มักจะถูกปกปิดแนวคิดการออกแบบเอาไว้ เพราะเป็นประเด็นของเรื่องลิขสิทธิ์

ในแบบร่างอันแรกนี้ จะเห็นถึงแนวทางการจัดวางแบบ Tile, Arranging Windows และ Thumbnails แบบต่างๆ

ลำดับถัดมาเป็นภาพร่างหลอดไฟลาวา ดอกไม้ หน้าตา และแนวคิดการทำงานของ Thumbnails

ภาพข้างล่างนี้แสดงถึงรายละเอียดการทำงานของไอคอนบนทาสก์บาร์


แนวคิดการแสดงภาพตัวอย่าง (Preview) บนทาสก์บาร์


การทำงานที่เลียนแบบวิธีเรียกหามนุษย์ค้างคาว ซึ่งทำโดยฉายแสงวาบขึ้นในเมือง Gotham ตามท้องเรื่องของภาพยนตร์เรื่อง BatMan

แนวคิดเริ่มแรกของ Jump lists

จากแบบร่างและแนวคิดเบื้องต้นเหล่านี้จะเห็นได้ว่า ทีมงาน Windows พิจารณา User Interfaces จำนวนมากทีเดียวกว่าจะตัดสินใจเลือกใช้แบบใด มีตัวเลขคร่าวๆ คือราว 400 แบบร่างทีเดียว


เพิ่มเติม:
เบื้องหลังการออกแบบหน้าจอแสงไฟวิ่งตอน Boot Windows
http://blogs.msdn.com/e7/archive/2009/02/18/engineering-the-windows-7-boot-animation.aspx
เบื้องหลังการออกแบบ Aero Snap
http://blogs.msdn.com/e7/archive/2009/03/17/designing-aero-snap.aspx

วันพฤหัสบดีที่ 19 มีนาคม พ.ศ. 2552

Windows 7 : DRIVERS

รวม Driver Windows 7

Graphic card nVidia
http://www.nvidia.com/object/windows_7.html

Graphic card or Chipset ATI
http://game.amd.com/us-en/drivers_catalyst.aspx

Graphic card S3
http://drivers.s3graphics.com/en/download/drivers/chrome5x/S3G_Windows7_x86_beta_v0018.zip

Sound Realtek AC97 Driver
http://1p5jsg.bay.livefilestore.com/y1pgvhCqb5TuwV6bHg5Xcifet8zOkQCEBwChxlnEsFQGJOLtYsxnBm4m-_WzIEpt_kyZZwzV1MpF5m9rUxIDWdXyQ/6302_Vista_Win7_PG537.zip

Sound Realtek HD Audio
http://www.realtek.com.tw/downloads/downloadsView.aspx?Langid=1&PNid=14&PFid=24&Level=4&Conn=3&DownTypeID=3&GetDown=false#1
- เลือกใช้ตัวเดียวกับ Vista

Sound Creative
http://support.creative.com/kb/ShowArticle.aspx?sid=61105

Microsoft Mouse
32bit: http://go.microsoft.com/fwlink/?LinkID=137187
64bit: http://go.microsoft.com/fwlink/?LinkID=137188

Microsoft keyboard
32bit: http://go.microsoft.com/fwlink/?LinkID=137190
64bit: http://go.microsoft.com/fwlink/?LinkID=137189

บทสรุปย่อ คำถาม คำตอบ บางส่วน จาก Springboard Series TechNet blog ของ Microsoft

Q: Kernel ของ Windows Vista Service Pack 1 (SP1) และ Windows 7 เป็นตัวเดียวกันหรือไม่?
A: มีหลายไฟล์ที่แตกต่างกัน แต่โดยพื้นฐานแล้วใช้สถาปัตยกรรมเดียวกัน

Q: ReadbyBoost เปลี่ยนแปลงไปจาก Windows Vista หรือไม่?
A: ใน Windows 7 ความสามารถ ReadyBoost จะรองรับสื่อแบบ Flash ได้หลากหลายแบบมากขึ้น (เช่น USB key,
Secure Digital card และแบบติดตั้งภายใน) และแคชที่โตมากขึ้นถึง 4GB รวมถึงรองรับระบบไฟล์แบบ exFAT, FAT32 และ NTFS

Q: ที่บอกว่าแอปพลิเคชันใดๆ ที่รันบน Windows Vista ก็ควรจะรันบน Windows 7 ได้เช่นเดียว คำกล่าวนี้จะจริงกับแอปพลิเคชันใดๆ ที่รันบน Windows XP ด้วยหรือไม่? มันควรจะทำงานบน Windows 7 ด้วยใช่หรือไม่?
A: เนื่องจาก Windows Vista และ Windows 7 ใช้ design frameworks ที่คล้ายคลึงกัน จึงมีรากฐานที่ทำให้แอปพลิเคชันเข้ากันได้ (compatible) แต่สำหรับ Windows XP นั้นจะใช้ framework ที่ต่างออกไป ระดับของความเข้ากันของแอปพลิเคชันจึงต่างออกไป

Q: สามารถเขียนไฟล์ .iso โดยไม่ต้องใช้ซอฟต์แวร์ Burn เพิ่มเติมอีก ใช่หรือไม่?
A: ใช่แล้ว ให้ดับเบิลคลิกไฟล์ ISO แล้ว Windows 7 จะเปิดไดอะล็อกขนาดเล็กขึ้น ให้เลือกไดรฟ์ที่จะใช้เขียน เลือกว่าจะให้ตรวจสอบ (verify) ผลลัพธ์การเขียนด้วยหรือไม่ และสั่งเขียน (burn) หรือยกเลิก

Q: Microsoft ซัพพอร์ต Windows 7 ฉบับ RC หรือไม่?
A: ใช่แล้ว ทั้ง Beta และ RC ซัพพอร์ตผ่าน Windows 7 Forums ที่
http://social.technet.microsoft.com/Forums/en/category/w7itpro.

Q: จะมี Application Compatibility Toolkit สำหรับ Windows 7 แบบที่มีใน Windows Vista หรือไม่ ? ถ้ามี จะพร้อมให้ใช้ได้เมื่อใด?
A: มี เราได้วางแผนอัปเดต ACT (Application Compatibility Toolkit) นี้ในเดือน เมษายนนี้ เพื่อซัพพอร์ตต่อ Windows 7 pre-release ต่างๆ และแน่นอนว่าใน RTM จะมีเครื่องมือนี้ด้วย

Q: สิ่งใดบ้างที่จะได้รับการปรับปรุงในส่วนของการทดสอบว่าแอปพลิเคชันเข้ากันได้ (compatibility) และการย้าย (migration) ?
A: จะมี Application Compatibility Toolkit ที่ซัพพอร์ต Windows 7 ให้ใช้ได้ในกรอบเวลาของเดือนเมษายน 2552 นี้ ซึ่งฐานข้อมูลส่วนนี้จะถูกเพิ่มเติมอย่างสม่ำเสมอตลอดทุกระยะที่ออก Windows แต่ละครั้ง

Q: ทำไม Windows 7 จึงได้สตาร์ทได้เร็วกว่าเมื่อเทียบกับ Windows Vista?
A: ในการทำงานพัฒนาสมรรถนะสำหรับเรื่องของการสตาร์ทนี้ มีหัวข้อหลักที่ให้ความสนใจเป็นพิเศษในส่วนของ

• ประสิทธิภาพของโค้ดส่วนแกนหลักของ Windows (core Windows code)
• จะสตาร์ทเซอร์วิสเฉพาะที่จำเป็นเท่านั้น (demand-start services)
• วิธีการเตรียมพร้อมของไดรเวอร์ของอุปกรณ์เพื่อเริ่มทำงานได้ (initialized)
• การยอมให้ไดรเวอร์ของอุปกรณ์หลายตัวเริ่มต้นขึ้นพร้อมกัน (parallelization)
• การลดปริมาณการใช้หน่วยความจำและความต้องการต่อ CPU ตอนสตาร์ทและการรันระบบกราฟิกส์

Q: มีเครื่องมือใดที่จะใช้เฝ้าดูสมรรถนะที่อาจเกิดปัญหาขึ้นจากอุปกรณ์บางตัวหรือไม่ ที่ไม่จำเป็นจัดซื้อ จัดหาซอฟต์แวร์จากรายอื่นมาเพิ่มเองอีก?
A: Microsoft ได้ลงทุนจัดหาในส่วนที่มีชื่อว่า PerfTrack ซึ่งสร้างรายงานผลการเฝ้าติดตามสมรรถนะกว่า 400 รายการของ PC แบบอัตโนมัติ และใน Windows 7 ยังมีเครื่องมือแก้ไขปัญหาอย่างเช่น IE Performance และ Check for Performance Issues เพื่อช่วยให้ผู้ใช้สามารถตรวจสอบสมรรถนะของการทำงานได้ตลอดเวลา

Q: Windows เวอร์ชันอื่นๆ จะสามารถอ่าน BitLocker To Go โดยใช้ซอฟต์แวร์เพิ่มเติมได้หรือได้ ?
A: ได้ สามารถปลดล๊อคและอ่านไฟล์ BitLocker บน Windows XP และ Windows Vista ได้

วันอังคารที่ 17 มีนาคม พ.ศ. 2552

Windows 7: TIPS+FIXED เคล็ดลับซ่อนไฟล์ desktop.ini ที่มีกระจายไปทั่วใน Build 7057

ใน Build 7057 มีปัญหาเปิด Notepad แสดงผลไฟล์ desktop.ini ตอน Start ทุกครั้ง
ซึ่ง Fixed ได้โดยการลบไฟล์ desktop.ini ใน shell:startup กับ shell:common startup

ยังมีปัญหาที่ในตำแหน่งโฟลเดอร์บางแห่งยังคงมีไฟล์ desktop.ini กระจายอยู่ทั่วไปหมด

เราสามารถกำหนดให้ไฟล์ชื่อนี้ในตำแหน่งทั้งหลายถูกกำหนดซ่อนลงได้
โดยปิด UAC
และ รัน Command prompt แบบ Run as administrator

แล้วพิมพ์บน Command prompt ด้วยคำสั่ง DOS เป็น

c:
cd /
attrib +h +a +s desktop.ini /s

และกลับไปเปิดใช้ UAC ตามปกติ

Note: ทั้งนี้ใน Folder options ยังคงต้องการไม่แสดงผลไฟล์ซ่อนด้วย
Don't show hidden files ... กับ Hide protected operating files อยู่ด้วย

Windows 7: TIPS เคล็ดลับ กำหนดสับเปลี่ยน (Shuffle) Desktop Wallpapers

ปกติการกำหนด Shuffle หรือสับเปลี่ยน Wallpapers ที่จะแสดงบนเดสก์ทอป
กระทำได้โดยตรงจากคลิกขวาเลือก Personalized ตามด้วย

  1. คลิก Desktop Background
  2. คลิก Browse เลือกโฟลเดอร์ใน Picture location
  3. คลิกเลือกภาพที่ต้องการ
  4. กำหนดช่วงเวลาที่จะให้แสดงภาพหนึ่งๆ ก่อนสับเปลี่ยนภาพใหม่ใน Change picture every: เช่น 20 miniutes

ยังมีอีกวิธีคือ

เปิดโฟลเดอร์ภาพที่ต้องการขึ้น
คลิกเลือกไว้ตั้งแต่สองภาพขึ้นไป
แล้วคลิกขวาเลือก Set as Desktop wallpaper
เพียงเท่านี้ ก็จะเป็นการเลือกชุดภาพทั้งหมดที่มีในโฟลเดอร์นั้น
สำหรับนำมาแสดงแบบสับเปลี่ยนบนเดสก์ทอปแล้ว

Note: แต่ตัวเลือกช่วงเวลา ยังคงต้องเข้ากำหนดจากวิธีแรก

Windows 7: TIPS เคล็ดลับ เปลี่ยน LOGON UI คืนแบบเดิม

จากบันทึกเมื่อวานที่ใช้แก้ไขเปลี่ยน LOGON UI ของ Windows 7 Build 7057
หากต้องการกลับคืนแบบเดิมตามต้นฉบับ ก็สามารถแก้ไขด้วย Registry ดังนี้
ให้บันทึกเป็นไฟล์นามสกุล .reg และคลิกขวาเพื่อ Merge

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Authentication\LogonUI\Background]
"OEMBackground"=dword:00000000

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\System]
"UseOEMBackground"=-

วันจันทร์ที่ 16 มีนาคม พ.ศ. 2552

Windows 7 Tips: เปลี่ยน Logon UI


ใน Windows 7 Build 7057 สามารถเปลี่ยน Logon UI เองได้ ไม่ต้องใช้ซอฟต์แวร์เพิ่มเติม

มีขั้นตอนดังนี้

1. เพิ่ม Registry OEMBackground ให้ใส่ข้อความถัดไปนี้ใน Notepad และบันทึกเป็นไฟล์นามสกุล .reg ตอน Save พิมพ์ชื่อพร้อมนามสกุลในเครื่องหมายคำพูดเช่น "OEMB.reg"

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Authentication\LogonUI\Background]
@="1"
"OEMBackground"=dword:00000001

คลิกด้วยปุ่มขวาบนไฟล์ .reg ที่เพิ่งสร้างนี้ แล้วเลือก Merge

2. สร้างโฟลเดอร์

\Info\backgrounds ใน C:\Windows\System32\oobe

3. ใส่ภาพโดยตั้งชื่อไว้เป็น backgroundDefault.jpg
เข้ามาในโฟลเดอร์ที่เพิ่งสร้างไว้นี้

เงื่อนไขของภาพนี้

1. ตั้งชื่อเป็น backgroundDefault.jpg
2. ความละเอียดภาพ 96 dpi
3. ขนาดตาม Resolution ของจอที่ใช้ เช่น

จอ 22 นิ้ว LCD ปกติจะเป็นที่ 1680x1050
จอ 17 นิ้ว LCD ปกติจะเป็นที่ 1280x1024

4. ขนาดภาพต้องไม่เกิน 256KB

4. หลังจากใส่ภาพเข้ามาเรียบร้อยแล้ว Reboot

ตอนนี้หน้าจอ Logon จะเปลี่ยนไปตามที่เราได้แก้ไขใหม่แล้ว

ข้อมูลเพิ่มเติมสำหรับ Resolution จอภาพ เป็นตามภาพนี้

วันอังคารที่ 10 มีนาคม พ.ศ. 2552

Visual LISP: Tips เคล็ดลับ แก้ไขความสูงของ Attributes พร้อมกันหลายตัว

การแก้ไขความสูงตัวอักษรใน Attributes สามารถดับเบิลคลิกเพื่อใช้ไดอะล็อก Enhanced Attribute Editor เพื่อแก้ไขคุณสมบัติและค่าต่างๆ ของ Attribute นั้นๆ ได้ แต่เป็นเพียงคราวละตัวเท่านั้น

ใน Tip นี้ขอเสนอวิธีการแก้ไข Attribute แบบให้เลือกชุดวัตถุ (Selection set) ซึ่งจะเป็นวัตถุชิ้นเดียวหรือหลายตัวก็ได้ และมีพรอมต์ให้กำหนดค่าความสูงใหม่
จากนั้นคำสั่งนี้จะแก้ไขความสูงใหม่ให้พร้อมกันในคราวเดียว

;;; Change Hieght of Attributes.
;;; Developed by S.Chatchawal, schatchawal@gmail.com

(defun c:attH (/ s obj tmp j atts L tag *error*)
(vl-load-com)
(defun *error* (msg)
(if (not
(member msg (list "Function cancelled" "quit / exit abort"))
)
(princ (strcat "ATTH Error: " msg))
)
(princ)
)
(if (setq s (ssget (list (cons 0 "INSERT") (cons 66 1))))
(progn
(if (not #attH)
(setq #attH 25.0)
)
(foreach L (list (strcat "\nNew Text Height : " (chr 60))
#attH
(chr 62)
(chr 32)
)
(princ L)
)
(if (setq tmp (getdist))
(setq #attH tmp)
)
(setq j -1)
(repeat (sslength s)
(setq obj (vlax-ename->vla-object (ssname s (setq j (1+ j)))))
(if
(safearray-value
(setq atts
(vlax-variant-value
(vla-getattributes obj)
)
)
)
(foreach tag (vlax-safearray->list atts)
(vla-put-height tag #attH)
)
(vla-update obj)
)
)
)
(princ "\nNo ATTRIBUTE object found!!!")
)
(princ)
)

วันเสาร์ที่ 7 มีนาคม พ.ศ. 2552

Visual LISP Tips เคล็ดลับ คำสั่งเขียนเส้นขั้นบันได Staircase

คำสั่ง Staircase ใช้สำหรับเขียนเส้นขั้นบันได (2D) โดยให้กำหนดจุดเริ่มต้นและจุดสิ้นสุด ตามด้วยจำนวนลูกขั้นที่ต้องการ โดยเป็นไฟล์ .LSP ตามโค้ดดังนี้

;;; Staircase 2D
;;; Deveoped by S.Chatchawal, schatchawal@gmail.com

(defun IsEven (int)
(zerop (rem int 2))
)

(defun 1u (u / d)
(setq d (sqrt (apply '+ (mapcar '* u u))))
(mapcar '/ u (list d d d))
)

(defun PointUD (pt u D)
(mapcar '+ pt (mapcar '* u (list D D D)))
)


(defun staircasedraw
(pt xdir w h nos / p0 j coords ydir *acaddoc* *model-space*)
(vl-load-com)
(setq
j 0
coords (reverse (cdr (reverse (trans pt 1 0))))
p0 coords
ydir (getvar "ucsydir")
)
(repeat (* 2 nos)
(setq j (1+ j))
(cond
((IsEven j) (setq p0 (PointUD p0 xdir w)))
(T (setq p0 (PointUD p0 ydir h)))
)
(setq
coords
(append coords p0)

)
)
(setq *acaddoc* (vla-get-activedocument
(vlax-get-Acad-Object)
)
*model-space*
(vla-get-modelspace
*acaddoc*
)
)
(vla-startundomark *acaddoc*)
(vlax-invoke
*model-space*
'AddLightweightPolyline
coords
)
(vla-endundomark *acaddoc*)
)

(vl-load-com)
(defun c:staircase (/ p q delta fuzz x msg tmp
pq p0 q0 delta L 1pq cosine
sine w h xdir *error*
)
(defun *error* (msg)
(if (not
(member msg (list "Function cancelled" "quit / exit abort"))
)
(princ (strcat "STAIRCASE Error: " msg))
)
(princ)
)
(initget 1)
(setq p (getpoint "\nSpecify start point: "))
(initget 33)
(setq q (getpoint p "\nSpecify end point: "))

(setq delta (mapcar '- q p)
fuzz (expt 0.1 (getvar "luprec"))
)
(cond
((vl-some '(lambda (x) (equal x 0.0 fuzz))
(reverse (cdr (reverse delta)))
)
(princ
"\nCannot draw staircase for 2 Horizontal or Vertical points!!!"
)
(exit)
)
(T
(if (not #staircase_nos)
(setq #staircase_nos 10)
)
(foreach msg (list "\nNumber of risers (or treads): <" #staircase_nos "> ")
(princ msg)
)
(if (setq tmp (getint))
(setq #staircase_nos tmp)
)
(setq pq (list p q)
pq (vl-sort pq '(lambda (x y) (< (cadr x) (cadr y))))
p0 (car pq)
q0 (cadr pq)
delta (mapcar '- q0 p0)
L (distance p0 q0)
1pq (1u delta)
cosine (abs (apply '+ (mapcar '* 1pq (list 1.0 0.0 0.0))))
sine (sqrt (- 1 (* cosine cosine)))
w (/ (* L cosine) #staircase_nos)
h (/ (* L sine) #staircase_nos)
)
(if (minusp (car (mapcar '- q0 p0)))
(setq xdir (mapcar '* (list -1.0 -1.0 -1.0) (getvar "ucsxdir")))
(setq xdir (getvar "ucsxdir"))
)
(staircasedraw p0 xdir w h #staircase_nos)
)
)
(princ)
)