رفتن به محتوا
ARTINEXT

BIM و Revit

ساخت منوی اختصاصی در رویت با Dynamo، از پوشه‌ی گراف‌ها تا منوی دفتر

دکمه‌ای که ساده به نظر می‌رسد، خلاصه‌ی تصمیم‌های پشت آن است. منو جایی است که کار Dynamo دفتر از پوشه‌ی شخصی یک نفر خارج می‌شود و به ابزاری تبدیل می‌شود که کل تیم آن را پیدا می‌کند.

استودیوی سامانه‌های دیجیتالانتشار:

تیمی که اسکریپت‌های Dynamo و پلاگین‌های اختصاصی رویت را می‌سازد و آن‌ها را به ابزارهای قابل‌استفاده برای کل تیم در دفاتر معماری، سازه و تأسیسات تبدیل می‌کند.

فهرست مطالب
  1. پاسخ کوتاه
  2. محدودیت Dynamo Player
  3. چهار روش ساخت منو
  4. آماده‌سازی گراف
  5. ساختار تب و پنل‌ها
  6. استقرار در دفتر
  7. زمان تبدیل به پلاگین
  8. جمع‌بندی
  9. پرسش‌های متداول

ساخت منوی اختصاصی در رویت با Dynamo یعنی یک تب مستقل در رویت که در آن هرکدام از گراف‌های Dynamo دفتر، یک دکمه‌ی نام‌دار با آیکون و توضیح است و دکمه‌ها در پنل‌ها دسته‌بندی شده‌اند. کاربر روی دکمه کلیک می‌کند، اگر گراف ورودی داشته باشد یک پنجره‌ی کوتاه را تکمیل می‌کند و گراف اجرا می‌شود. نیازی به باز کردن Dynamo نیست و کاربر لازم ندارد بداند فایل در کدام پوشه قرار دارد.

چهار روش برای ساخت این منو وجود دارد: پوشه‌ی Dynamo Player، یک افزونه‌ی رایگان مانند Relay، چارچوب pyRevit یا یک افزونه‌ی اختصاصی C#. انتخاب میان آن‌ها به تعداد گراف‌ها، تعداد کاربران و میزان تغییر گراف‌ها بستگی دارد.

بنیان‌گذار آرتینکست پلاگینی ساخت که فرآیندی حدوداً دوهفته‌ای، و گاهی نزدیک به یک ماه، را به حدود ۱۰ دقیقه کاهش داد. آنچه کاربر می‌بیند فقط یک دکمه است. رابط ساده، خلاصه‌ی پیچیدگی‌هایی است که پشت آن حل شده‌اند، نه نشانه‌ی کم‌عمقی. منوی دکمه‌های Dynamo نیز همین‌گونه است: آنچه آن را قابل‌استفاده می‌کند، تصمیم‌هایی است که پیش از افزودن هر دکمه گرفته شده‌اند.

دیواری از پنل‌های کنترل با کلیدها و نشانگرهای منظم در فضایی کم‌نور، تصویری از منویی که ابزارهای دفتر را در یک‌جا جمع می‌کند

چرا Dynamo Player هنوز یک منو نیست

Dynamo Player گراف‌ها را بدون باز کردن Dynamo اجرا می‌کند و همراه رویت نصب می‌شود. کافی است یک پوشه به آن معرفی شود تا تمام گراف‌های آن پوشه را فهرست کند. برای کسی که گراف‌ها را نوشته، همین کافی است.

برای یک تیم ده‌نفره، نتیجه فهرستی از نام فایل‌هاست. دسته‌بندی بر اساس نوع کار وجود ندارد، نام‌ها همان چیزی است که نویسنده تایپ کرده و گرافی که کاربر به آن نیاز دارد، کنار سه نسخه‌ی قدیمی خود قرار گرفته است. یک تب در ریبون، هر گراف را در جایی قرار می‌دهد که کاربران ابزارها را در آن جست‌وجو می‌کنند، با نامی که کار آن را توضیح می‌دهد.

پیش از همه‌ی این‌ها، خود گراف باید برای کسی جز نویسنده‌ی آن قابل‌اجرا باشد. توسعه اسکریپت اختصاصی Dynamo شرایط آن را توضیح می‌دهد.

چهار روش ساخت منو در رویت

از کمترین تا بیشترین کار:

  1. پوشه‌ی Dynamo Player. بدون نصب هیچ افزونه‌ای، یک پوشه‌ی مشترک و یک فهرست. این روش نقطه‌ی شروع است و برای تعداد کمی گراف، ممکن است تمام نیاز دفتر را پوشش دهد.
  2. Relay، یک افزونه‌ی رایگان و متن‌باز. زیرپوشه‌های پوشه‌ی گراف‌ها به پنل‌های ریبون و هر فایل .dyn به یک دکمه تبدیل می‌شود. آیکون‌ها فایل‌های PNG اختیاری با پسوندهای _16 و _32 هستند. نودهایی که با Is Input علامت خورده‌اند، پیش از اجرا به یک پنجره‌ی ورودی تبدیل می‌شوند و نودهای Is Output نتایج را پس از اجرا نمایش می‌دهند. مستندات Relay نسخه‌های فعلی را برای Revit 2025 تا 2027 و نسخه‌ی 1.5.2 را برای Revit 2021 تا 2024 معرفی می‌کند.
  3. pyRevit، یک چارچوب متن‌باز که تب‌های ریبون را از ساختار پوشه‌ها می‌سازد: پوشه‌ی .extension شامل پوشه‌های .tab است، هر .tab شامل پوشه‌های .panel و هر .panel شامل پوشه‌های .pushbutton که هرکدام یک اسکریپت و یک icon.png دارند. دکمه‌ها کد Python را روی Revit API اجرا می‌کنند. این روش برای دفاتری مناسب است که بخش اصلی کار گراف‌هایشان در یک نود Python انجام می‌شود.
  4. افزونه‌ی اختصاصی C#. افزونه هنگام اجرای رویت، با متدهای CreateRibbonTab و CreateRibbonPanel از کلاس UIControlledApplication در Revit API، تب و پنل‌ها را می‌سازد و هر دکمه کد اختصاصی دفتر را اجرا می‌کند. این روش کنترل کامل بر پنجره‌ها، اعتبارسنجی، نصب و به‌روزرسانی ایجاد می‌کند، به قیمت نوشتن و نگهداری کد.

آماده‌سازی گراف برای اجرا از یک دکمه

هنگام اجرای گراف از یک دکمه، نویسنده‌ی آن در کنار کاربر حضور ندارد. پیش از افزودن گراف به ریبون، این موارد کنترل می‌شوند:

  • هر مقداری که کاربر باید انتخاب کند، یک نود Is Input با نامی قابل‌درک برای کاربر است. سایر مقادیر درون گراف ثابت‌اند.
  • نتایجی که کاربر باید ببیند، مانند تعداد المان‌های تغییرکرده یا فهرست المان‌های ردشده، با Is Output علامت خورده‌اند.
  • هیچ مسیر فایلی به دسکتاپ یک فرد اشاره نمی‌کند و فقط مسیرهای مشترک استفاده می‌شوند.
  • پکیج‌های مورد استفاده‌ی گراف، با نسخه‌ی یکسان، روی تمام سیستم‌هایی که این دکمه را دارند نصب شده‌اند.
  • گراف علاوه بر مدلی که در آن نوشته شده، روی یک مدل پروژه‌ی واقعی نیز اجرا شده است.

مورد آخر از همه مهم‌تر است. گرافی که روی مدل نویسنده کار می‌کند و روی مدل بعدی با خطا مواجه می‌شود، دکمه را به یک درخواست پشتیبانی تبدیل می‌کند.

ساختار تب و پنل‌های منو

آچارها و پیچ‌گوشتی‌هایی که بر اساس نوع روی یک تخته‌ی سوراخ‌دار تیره مرتب شده‌اند

پنل‌ها بر اساس مرحله‌ی کار دسته‌بندی می‌شوند، نه بر اساس نویسنده‌ی گراف: مدل‌سازی، مستندسازی، شیت‌ها و کنترل. کاربری که ابزار شماره‌گذاری شیت‌ها را جست‌وجو می‌کند، به پنل شیت‌ها مراجعه می‌کند و لازم نیست بداند کدام همکار آن را نوشته است.

نام هر دکمه کاری است که انجام می‌دهد، مانند شماره‌گذاری شیت‌ها، جانمایی وال‌پست‌ها یا خروجی اسکجوال‌ها، و به اندازه‌ای کوتاه است که زیر آیکون جا شود. توضیح هر دکمه مشخص می‌کند گراف کدام المان‌های مدل را تغییر می‌دهد.

گراف‌هایی که کسی اجرا نمی‌کند، از منو حذف می‌شوند. تبی که برای هر گرافی که تا امروز نوشته شده یک دکمه دارد، همان پوشه‌ی قبلی است، این‌بار با آیکون.

استقرار منو در دفتر

یک نسخه از گراف‌ها روی یک پوشه‌ی مشترک شبکه نگه‌داری می‌شود و منوی همه‌ی سیستم‌ها به همان پوشه اشاره می‌کند. وقتی گرافی اصلاح می‌شود، همه‌ی کاربران در اجرای بعدی نسخه‌ی اصلاح‌شده را در اختیار دارند. فقط یک یا دو نفر امکان تغییر این پوشه را دارند و سایر کاربران فقط دسترسی خواندن دارند.

دکمه‌های جدید ابتدا به یک پنل آزمایشی اضافه می‌شوند و کسی که گراف را درخواست کرده از آن استفاده می‌کند، پیش از آنکه به پنل‌های اصلی منتقل شوند.

نسخه‌های رویت نیز باید در برنامه دیده شوند. رویت ۲۰۲۵ همراه Dynamo 3.0 روی .NET 8 عرضه شد و پکیجی که به .NET 8 منتقل شده، در نسخه‌های قدیمی‌تر Dynamo بارگذاری نمی‌شود. در نتیجه، دفتری که هم‌زمان با دو نسخه‌ی رویت کار می‌کند، ممکن است به دو پوشه نیاز داشته باشد. مقاله‌های مرتب‌سازی شیت در رویت و وال‌پست‌گذاری خودکار در رویت دو گرافی را توضیح می‌دهند که معمولاً به دکمه‌های این منو تبدیل می‌شوند.

چه زمانی منو باید به پلاگین تبدیل شود

منوی دکمه‌های Dynamo برای مدت طولانی ابزار مناسبی است. نشانه‌های اینکه یک گراف به چیزی فراتر از این منو نیاز دارد:

  • اجرای آن روی یک مدل بزرگ چند دقیقه طول می‌کشد و کاربران چند بار در روز آن را اجرا می‌کنند.
  • کاربران به یک پنجره‌ی کامل نیاز دارند: گزینه‌هایی که به مدل وابسته‌اند، اعتبارسنجی پیش از هر تغییر و گزارشی روشن پس از اجرا.
  • با هر نسخه‌ی جدید رویت دچار خطا می‌شود و اصلاح آن همیشه بر عهده‌ی یک نفر است.
  • در دفاتری استفاده می‌شود که شبکه‌ی مشترک ندارند.

در این مرحله، گراف شرح کار پلاگین است. برنامه‌نویسی Revit API نشان می‌دهد این تبدیل چگونه انجام می‌شود، هزینه‌ی توسعه پلاگین رویت قیمت آن را توضیح می‌دهد و این کار در قالب خدمات توسعه پلاگین رویت انجام می‌شود.

اگر دفتر تعداد کمی گراف و یک نفر برای اجرای آن‌ها دارد، یک تب Relay یا pyRevit که در یک بعدازظهر راه‌اندازی می‌شود کافی است، و به ما یا شرکتی مانند ما نیازی ندارید.

جمع‌بندی

ساخت منوی اختصاصی در رویت با Dynamo، پوشه‌ای از گراف‌ها را به منویی تبدیل می‌کند که کل تیم از آن استفاده می‌کند: گراف‌هایی که بدون نویسنده‌ی خود اجرا می‌شوند، پنل‌هایی که بر اساس مرحله‌ی کار دسته‌بندی شده‌اند، یک نسخه‌ی مشترک و یک پنل آزمایشی برای هر دکمه‌ی جدید. دکمه ساده به نظر می‌رسد و آنچه پشت آن قرار دارد، تصمیم‌هایی است که این سادگی را ممکن کرده‌اند. اولین چیزی که می‌خواهید تغییر کند چیست؟ از جریان کاری‌تان بگویید.

پرسش‌های متداول

آیا می‌توان اسکریپت‌های Dynamo را به ریبون رویت اضافه کرد؟

بله. افزونه‌ی Relay فایل‌های .dyn را مستقیماً به دکمه‌های ریبون تبدیل می‌کند، pyRevit دکمه‌هایی می‌سازد که کد Python اجرا می‌کنند و یک افزونه‌ی اختصاصی C# می‌تواند هر منطقی را پشت یک دکمه قرار دهد.

آیا روش رایگانی برای ساخت منوی اختصاصی در رویت وجود دارد؟

Relay و pyRevit هر دو رایگان و متن‌باز هستند. Dynamo Player نیز همراه رویت نصب می‌شود، اما گراف‌ها را به‌صورت فهرست نمایش می‌دهد و تب مستقلی در ریبون نمی‌سازد.

ورودی‌های گراف چگونه از کاربر گرفته می‌شوند؟

نودهایی که با Is Input علامت خورده‌اند، پیش از اجرا به یک پنجره‌ی ورودی تبدیل می‌شوند. سایر مقادیر درون گراف ثابت می‌مانند.

آیکون دکمه‌ها چگونه تعیین می‌شود؟

در Relay، فایل‌های PNG هم‌نام با گراف و با پسوندهای _16 و _32. در pyRevit، یک فایل icon.png درون پوشه‌ی هر دکمه.

با ارتقای رویت، منو چه تغییری می‌کند؟

هر نسخه‌ی رویت با نسخه‌ی مشخصی از Dynamo عرضه می‌شود. پکیج‌ها و گراف‌ها باید روی نسخه‌ی جدید تست شوند و دفتری که با دو نسخه‌ی رویت کار می‌کند ممکن است به دو پوشه نیاز داشته باشد.

چه زمانی یک گراف Dynamo باید به پلاگین تبدیل شود؟

وقتی اجرای آن روی مدل‌های بزرگ کند است، کاربران به پنجره و اعتبارسنجی کامل نیاز دارند، با هر نسخه‌ی رویت دچار خطا می‌شود یا در چند دفتر بدون شبکه‌ی مشترک استفاده می‌شود.

چه زمانی به خدمات توسعه نیاز ندارید؟

زمانی که دفتر تعداد کمی گراف و یک نفر برای اجرای آن‌ها دارد. یک تب Relay یا pyRevit برای این وضعیت کافی است.

بازگشت به بالا

قدم بعدی

اولین چیزی که می‌خواهید تغییر کند چیست؟

از جریان کاری‌تان بگویید، کجا زمان از دست می‌رود و کجا خطا ایجاد می‌شود. بعد تصمیم می‌گیریم چه چیزی باید ساخته شود. اگر راه‌حل ابزار نباشد، همان ابتدا می‌گوییم.

اگر فقط به‌دنبال یک قالب آماده یا پلاگین پیش‌ساخته هستید و نمی‌خواهید فرآیندتان بررسی شود، احتمالاً جای درستی نیامده‌اید.