Skip to content

ลงทะเบียน .addin

Revit จะไม่โหลด DLL ของคุณจนกว่าจะมีไฟล์ .addin

ตัวอย่าง:

โปรเจ็กต์.addin
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<RevitAddIns>
<!-- กำหนดประเภทเป็น Command เนื่องจากเราเพิ่งสร้างปุ่มคำสั่งเอาไว้ในไฟล Command.cs -->
<AddIn Type="Command">
<!-- ชื่อ Plugin รวม -->
<Name>RevitToolkit</Name>
<!-- ตำแหน่งของ DLL อ้างอิงจากโฟลเดอร์ \Addins\2026\ (แนะนำให้ใส่ Subfolder แบบนี้) -->
<Assembly>RevitToolkit\RevitToolkit.dll</Assembly>
<!-- GUID เฉพาะตัวของโปรเจ็กต์ (ใช้ Tool อย่าง guidgen เพื่อสร้างใหม่ทุกครั้งห้ามก๊อปปี้คนอื่น) -->
<AddInId>E8AD8FD2-04D9-4A3A-A8B6-C93CB6C7C489</AddInId>
<!-- ชื่อ Namespace แบบเติม . และชื่อ Class (ต้องสะกดให้เป๊ะตามโค้ด C#) -->
<FullClassName>RevitToolkit.Command</FullClassName>
<!-- ค่าชื่อปุ่ม (บังคับต้องมีหากเป็นประเภท Command) -->
<Text>RevitToolkit Hello</Text>
<!-- ข้อมูลผู้พัฒนา (มักเอาไว้สำหรับโชว์ใน Dialog) -->
<VendorId>PREMIX</VendorId>
<VendorDescription>Premix Company - Software Dev Team</VendorDescription>
</AddIn>
</RevitAddIns>

ตำแหน่งที่ Revit อ่าน

Section titled “ตำแหน่งที่ Revit อ่าน”
C:\ProgramData\Autodesk\Revit\Addins\2026\

🔍 เจาะลึกความหมายของแต่ละ Tag ใน Manifest (.addin)

Section titled “🔍 เจาะลึกความหมายของแต่ละ Tag ใน Manifest (.addin)”

ไฟล์ .addin หรือ Manifest File ทำหน้าที่เสมือน “บัตรประชาชนอย่างเป็นทางการ” ของปลั๊กอิน เพื่อส่งสัญญาณให้ Revit โหลดรหัสของเราเข้ามาประมวลผล นี่คือหน้าที่อย่างละเอียดของแท็กแต่ละบรรทัดครับ:

1. <AddIn Type="Command"> หรือ <AddIn Type="Application">

Section titled “1. <AddIn Type="Command"> หรือ <AddIn Type="Application">”
  • ทำหน้าที่อะไร: กำหนดสถาปัตยกรรมของปลั๊กอิน:
    • Type="Command": ใช้รันคำสั่งย่อยเมื่อกดปุ่ม เหมาะกับสคริปต์สั้นๆ หรือการทำงานแล้วจบ คลาสปลายทางต้องสืบทอดจาก IExternalCommand
    • Type="Application": เหมาะสำหรับการวาดเครื่องมือ Ribbon เมนู หรือคอยดักฟังการแจ้งเตือนของโปรแกรม (Events) ตลอดอายุการเปิดโปรแกรม คลาสปลายทางต้องสืบทอดจาก IExternalApplication
  • ทำหน้าที่อะไร: ชื่อสำหรับระบุตัวตนปลั๊กอิน (มักตั้งให้ตรงกับชื่อโปรเจ็กต์) ใช้ในการควบคุมเปิด/ปิดการโหลดภายในหลังบ้านของ Revit
  • ทำหน้าที่อะไร: เส้นทาง (Path) ไปยังไฟล์คอมไพล์หลัก .dll ของเรา
  • ข้อแนะนำพิเศษ: ควรตั้งเป็นเส้นทางสัมพัทธ์ (Relative Path) เช่น RevitToolkit\RevitToolkit.dll แทนการใส่ Drive อักษรตายตัว เพื่อความสะดวกในการย้ายโปรเจ็กต์หรือนำไปแจกจ่ายเครื่องอื่น
  • ทำหน้าที่อะไร: รหัสประจำตัวชิ้นเดียวในโลก (Globally Unique Identifier) ของตัวปลั๊กอิน
  • ทำไมห้ามก๊อปปี้คนอื่น: Revit ใช้ ID นี้ในการลงทะเบียนป้องกันการโหลดโค้ดขัดแย้งเชิงหน่วยความจำ หากมีปลั๊กอิน 2 ตัวใช้ GUID ชนกัน Revit จะเลือกโหลดเพียงตัวแรกและดีดแจ้งเตือนตัวที่สองพังทันที! (สร้าง GUID ใหม่ได้จากหน้าต่างเครื่องมือใน Visual Studio เมนู Tools > Create GUID)
  • ทำหน้าที่อะไร: เส้นทางแบบเต็มรูปแบบเพื่อเจาะจงจุดรันงาน ในรูปแบบ Namespace.ClassName (เช่น RevitToolkit.Command หรือ RevitToolkit.App)
  • ทำไมต้องระวัง: ต้องสะกดอักษรพิมพ์ใหญ่-เล็ก ให้ตรงกับโค้ด C# 100% มิฉะนั้น Revit จะไม่สามารถหาทางเข้าคลาสทำงานเจอและจะเด้งล้มเหลวทันทีที่คลิกปุ่ม
  • ทำหน้าที่อะไร: ข้อความที่จะไปปรากฏอยู่ใต้ปุ่มคำสั่งในแท็บ Add-ins > External Tools (แท็กนี้จะใช้งานได้เฉพาะประเภท Type="Command" เท่านั้น หากใช้ Application จะต้องลบแท็กนี้ออกเพื่อป้องกันการ Error)

7. <VendorId> และ <VendorDescription>

Section titled “7. <VendorId> และ <VendorDescription>”
  • ทำหน้าที่อะไร: รหัสย่อและข้อความผู้พัฒนาโปรแกรม ใช้ระบุลิขสิทธิ์ของนักพัฒนาหรือบริษัทเมื่อเกิดคำถามการทำงาน ช่วยให้ผู้ใช้ทราบว่าปลั๊กอินตัวนี้ผลิตโดยใคร