به عنوان کاربر راینو خیلی وقتا تو پروژههای طراحی و مدلسازی سهبعدی با کارهای زمانبر و تکراری مواجه میشیم که هر بار مجبوریم به صورت دستی و با کلی کلیک کردن و انتخاب کردن و وارد کردن دستورات و اعداد و تنظیمات انجامشون بدیم. این تکرارها ممکنه عملیات سادهای باشه، مثل تکرار یک عملیات واحد روی تعداد زیادی منحنی؛ یا عملیات پیچیدهتر مثل زمانی که لازمه به عنوان نمونه تعداد زیادی حلقه طلا طراحی کنیم که تمام جزییاتشون مشابه همدیگهست ولی پهنای متفاوتی دارن. این تکرارها به جز اینکه کلافه کننده و حوصلهسربر هستن، باعث میشن احتمال خطای انسانی بالا بره و از طرفی هم طراح بجای تمرکز روی بخش خلاقانه طراحی مجبور بشه مثل یه ربات کارهای تکراری رو بارها و بارها انجام بده و بخش زیادی از زمانش صرف این موضوع بشه. در حالی که کامپیوترها خودشون استاد انجام کارهای تکراری با دقت خیلی بالا هستن.
خودکارسازی کارهای تکراری در راینو
خوشبختانه راینو ابزارهای زیادی برای خودکار کردن (Autamation) این کارهای تکراری داره. از ایجاد ماکروهای ساده برای چند فرمان پشت سر هم گرفته تا توسعه پلاگینهای حرفهای که دهها عملیات پیچیده رو یکجا انجام میدن، ابزارها و روشهای مختلفی وجود داره که هر کدوم با عمق و قدرت متفاوت، مسیر کار رو سادهتر و سریعتر میکنن. بعضی از این ابزارها فقط دستورها رو به صورت متوالی و با تنظیماتی که از قبل براشون مشخص شده تکرار میکنن، بعضی هم کارشون صرفا تکرار یک عملیات ساده نیست و میشه جوری برنامهریزیشون کرد که با توجه به شرایط، رفتار متفاوتی داشته باشن و یک جریان غیرخطی رو دنبال کنن. به عنوان نمونه اول بررسی کنن که منحنی انتخاب شده باز هست یا بسته و با توجه به باز یا بسته بودن منحنی انتخاب شده عملیات متفاوتی روش انجام بدن. تو این پست و چند پست بعدی با انواع ابزارها و روشهای اتوماسیون در راینو آشنا میشیم. پس اگه میخواید به محض انتشار پستهای بعدی مطلع بشید، پیشنهاد میکنم قبل از خوندن ادامه مطلب، همین حالا عضو کانال تلگرام ما بشید.
ابزارهای خودکارسازی در راینو
همینطور که پیشتر اشاره شد راینو ابزارهای متفاوتی برای اتوماسیون داره. در یک دستهبندی کلی میشه این ابزارها رو به این شکل دستهبندی کرد:
- ماکرو نویسی: سادهترین ابزار راینو برای خودکارسازی کارهاست که به شما اجازه میده سلسلهای از دستورها رو با تنظیمات دلخواه بصورت پشت سر هم تکرار کنید. ماکرونویسی از تمام روشهای دیگه سادهتره و با صرف زمان کوتاهی میتونید کاملا بهش مسلط بشید. تو این پست مفصل در مورد این ابزار صحبت میکنیم.
- اسکریپتنویسی: با اسکریپت کارهای به مراتب پیچیدهتری نسبت به ماکرو میتونید انجام بدید. البته به همون نسبت هم یادگیریش سختتر و زمانبرتره. راینو ۸ از دو زبان برنامهنویسی پایتون و ویژوالبیسیک برای اسکریپتنویسی استفاده میکنه. با هر کدوم از این دوتا زبان و با استفاده از واسط برنامهنویسی کاربردی (API) راینو میتونید کدهایی بنویسید که وظایف پیچیدهای رو فقط با یه کلیک انجام بدن.
- گرسهاپر: این پلاگین دوست داشتنی هم در واقع کاری شبیه به اسکریپتنویسی انجام میده. با این تفاوت که بجای تایپ کردن کدها و رعایت قواعد دستوری دستوپاگیر برنامهنویسی، تو گرسهاپر با یه محیط کاملا بصری و طراحپسند طرفیم. بجای نوشتن خط به خط کدها، یه سری بلوک آماده رو مثل یه پازل کنار هم میچینیم و به هم وصل میکنیم و اینجوری منطق برنامهمون رو پیادهسازی میکنیم.
- توسعه پلاگین: حرفهایترین و تخصصیترین روش برای خودکار کردن کارها تو راینو اینه که یه پلاگین برای کار مورد نظرمون بسازیم! درسته که راینو تمام امکانات لازم برای این کار رو در اختیار همه کاربرها قرار داده، ولی توسعه یه پلاگین اصلا کار سادهای نیست و نیاز به دانش و تجربه برنامهنویسی زیادی داره. البته تو خیلی از موارد افراد دیگهای قبل از ما این کار رو انجام دادن و کار رو برامون راحت کردن. بنابرین بهتره بجای نوشتن یه پلاگین جدید به استفاده از پلاگینهای موجود برای انجام دادن کارهای مورد نظرمون فکر کنیم. لیست کاملی از پلاگینهای راینو (و گرسهاپر) رو تو سایت food4rhino میتونید ببینید.
ماکرو نویسی در راینو
تو این پست به صورت مفصل به ماکرونویسی میپردازم و تو پستهای بعدی از این رشته، سراغ بقیه روشها میریم. هر بار که شما تو راینو رو یه آیکن کلیک/ راست-کلیک میکنید یا یه کلید میانبر رو از صفحهکلید فشار میدید و دستوری اجرا میشه -شاید بدون اینکه خودتون بدونید- دارید یه ماکرو رو اجرا میکنید. این ماکروها ممکنه فقط یه دستور باشن با گزینههای خاص یا چندین دستور که پشت سرهم اجرا میشن. در ادامه یاد میگیریم که چطور یه ماکرو بنویسیم و اون رو به یه آیکن یا یه کلید میانبر نسبت بدیم. یا حتی براش یه اسم انتخاب کنیم و وقتی اون اسم رو تو خط فرمان وارد میکنیم ماکروی دلخواهمون اجرا بشه، دقیقا مثل دستورهای پیشفرض خود راینو.
برای نوشتن و آزمایش ماکروها از پنجره ویرایشگر ماکرو استفاده میکنیم. برای باز کردن این پنجره دستور MacroEditor رو تو خط فرمان وارد کنید. (حتی وقتی دارید تو خط فرمان مینویسید MacroEditor در واقع دارید یه ماکرو رو اجرا میکنید!) حالا اگه به سادهترین شکل ممکن بخوام شما رو با ماکرونویسی آشنا کنم، اینطور میگم که کافیه هر عبارتی رو که برای اجرای یه دستور تو خط فرمان مینویسید تو پنجره ویرایشگر ماکرو بنویسید. به همین راحتی!
برای نمونه بیاید یه ماکرو بنویسیم که با یه کلیک هر منحنی که انتخاب کنیم رو به یه اندازه مشخص به هر دو طرف آفست کنه و بعد بهش ارتفاع بده. حجم بدست اومده در نهایت باید بسته و سالید باشه، بنابرین هم باید زمان آفست کردن سر و ته شکل بسته بشه و هم زمان اکسترود کردن. از این ماکرو میتونیم برای ایجاد دیوار براساس پلان ترسیم شده استفاده کنیم. اگه قرار باشه این کار رو بصورت دستی انجام بدیم بعد از انتخاب منحنی اولین کاری که میکنیم اجرای دستور Offset هست. پس عبارت Offset رو تو ویرایشگر ماکرو وارد میکنم. تو روش دستی بعد از اجرای دستور Offset برای اینکه آفست هر دو سمت خط ایجاد بشه باید روی گزینه BothSides کلیک کنم یا حرف B رو تو خط فرمان وارد کنم (چون زیر حرف B از کلمه BothSides خط کشیده شده). تو ویرایشگر ماکرو هم میتونم همین کار رو انجام بدم. یعنی فقط حرف B رو بنویسم. اما برای اینکه ماکروی خواناتری داشته باشیم بهتره کل عبارت رو بنویسیم. پس تا اینجا ماکرویی به این شکل داریم:
Offset BothSides
توجه کنید که بین این دو کلمه یه فاصله گذاشته شده. گزینه دیگهای که از دستور Offset باید تغییر کنه اینه که Cap روی Flat تنظیم بشه تا سر و ته منحنی بعد از آفست شدن به صورت تخت بسته بشن. پس عبارت Cap=Flat رو هم به ادامه ماکرو اضافه میکنم. در اجرای دستور به صورت دستی بعد از انتخاب این گزینهها، فاصلهی آفست رو وارد میکنیم و نهایتا کلید Enter رو از صفحه کلید فشار میدیم. تو ماکرو هم عدد مورد نظر رو وارد میکنم و بجای فشار دادن کلید اینتر عبارت Enter رو وارد میکنم. تو این مثال فاصله رو از هر سمت منحنی نیم واحد در نظر میگیرم تا مجموعا یک واحد بشه. تا اینجای کار یه ماکرو به این شکل داریم که هر منحنی که بهش بدیم با یک کلیک به هر دوطرف به اندازه نیم واحد آفست میکنه:
Offset BothSides Cap=Flat 0.5 Enter
حالا باید منحنی آفست شده رو انتخاب کنیم و با دستور ExtrudeCrv بهش ارتفاع بدیم. برای انتخاب منحنی جدید ایجاد شده به صورت دستی خیلی ساده روش کلیک میکنیم تا انتخاب بشه. اما تو ماکرو چیکار کنیم؟ 🤔 راینو مجموعه مفصلی از دستورات برای انتخاب آبجکتها داره که همشون با سه حرف Sel (اول کلمه Select) شروع میشن. بین این دستورها دستوری هست به نام SelLast که آخرین آبجکت ایجاد شده رو انتخاب میکنه. تو این مرحله هم آخرین آبجکت ایجاد شده دقیقا همون منحنی حاصل از اجرای دستور Offset هست. پس برای انتخابش کافیه تو ادامه ماکرو عبارت SelLast رو اضافه کنم. میتونم مثل مراحل قبلی یه فاصله بذارم و بعد عبارت جدید رو بنویسم، اما برای خوانایی بیشتر بهتره هر دستور رو تو یه خط جدید وارد کنیم.
Offset BothSides Cap=Flat 0.5 Enter
SelLast
حالا که منحنی مورد نظرم رو انتخاب کردم میتونم دستور ExtrudeCrv رو روش اجرا کنم. گزینههایی که در مورد این دستور باید تو خط فرمان وارد بشه مقدار اکسترود هست که تو این مورد ده واحد در نظر میگیرم و همینطور گزینه Solid که باید روی Yes تنظیم بشه. حتی میتونم بعد از اکسترود کردن با دستور Delete منحنی آفست شده رو پاک کنم تا فقط نتیجه کار باقی بمونه. پس ماکرو در نهایت به این شکل در میاد:
Offset BothSides Cap=Flat 0.5 Enter
SelLast
ExtrudeCrv Solid=Yes 10
Delete
برای اجرای ماکروی نوشته شده کافیه روی آیکن مثلث سبزرنگ از نوار بالای پنجره ویرایشگر ماکرو کلیک کنید. اگه شمام پا به پای من این مراحل رو انجام دادید تبریک میگم، اولین ماکروی خودتون رو نوشتید و میتونید بارها ازش استفاده کنید.
حالا وقتشه که برای استفاده آسونتر از ماکرو اون رو به یه کلید میانبر یا یه یه آیکن از نوارابزارها اختصاص بدیم یا یه اسم براش انتخاب کنیم که با نوشتن اون اسم تو خط فرمان ماکرو اجرا بشه. در ادامه این سه روش رو با هم مرور میکنیم.
ساختن دکمه (آیکن) برای دستورها
برای اینکه ماکروی دلخواه رو به یه دکمه موجود تو نوارابزارها اضافه کنیم، باید در هرحالی که کلید Shift رو از صفحهکلید پایین نگه داشتیم روی دکمه مورد نظر راست-کلیک کنیم تا پنجره ویرایشگر دکمه باز بشه. تصویر زیر ویرایشگر دکمه رو برای دکمه Save از نوارابزار Standard نشون میده که با کلیک روی اون دستور Save و با کلیک راست دستور Export اجرا میشه.
تو کادر Command در قسمت Left mouse button ماکرویی رو وارد کنید که میخواید با کلیک روی این دکمه اجرا بشه و تو همون کادر در قسمت Rhight mouse button ماکرویی که میخواید با راست-کلیک روی دکمه اجرا بشه. اما معمولا لازم میشه بجای نسبت دادن ماکروها به یه دکمه موجود، خودمون یه دکمه بسازیم. بجای ساختن یه دکمه جدید (که کمی مراحل طولانیتری داره) میتونید یکی از دکمههای موجود رو کپی کنید و بعد به دلخواه تغییر بدید. برای کپی کردن یه دکمه کافیه در حالی که کلید Ctrl رو پایین نگه داشتید روی دکمه کلیک کنید و بکشیدش به هرجایی از نوارابزارها که میخواید کپی بشه.
ساختن کلید میانبر برای دستورها
برای ایجاد یه کلید میانبر جدید اول دستور Options رو تو خط فرمان وارد کنید تا پنجره Rhino Options باز بشه و بعد از لیست سمت چپ روی Keyboard کلیک کنید. حالا تو قاب سمت راست میتونید لیست تمام کلیدهای میانبر راینو رو ببینید. برای اضافه کردن میانبر جدید روی دکمه New از پایین همین پنجره کلیک کنید تا پنجره ویرایشگر میانبر باز بشه. اینجا کلیدهای ترکیبی دلخواه رو از صفحهکلید فشار بدید (اگه تو این مرحله کلیدها رو با رنگ قرمز نشون بده یعنی این کلید میانبر از قبل موجود هست و بهتره کلید دیگهای رو امتحان کنید) و بعد روی Ok کلیک کنید تا به لیست کلیدهای میانبر اضافه بشه. حالا تو لیست کلید میانبری رو که ساختید انتخاب کنید و روبهروش ماکروی مورد نظر رو وارد کنید.
ساختن اسم مستعار (Alias) برای دستورها
برای نسبت دادن یه اسم یا Alias به ماکروی مورد نظر از همون پنجره Rhino Options این بار بجای Keyboard روی Aliases از لیست سمت چپ کلیک میکنیم. حالا تو قاب سمت راست Alias های موجود رو میتونید ببینید و با کلیک روی دکمه New از پایین همین پنجره میتونید یه Alias جدید بسازید. اسمی که برای ماکرو انتخاب میکنید فقط میتونه شامل حروف و اعداد باشه و نمیتونه بین حروفش فاصله داشته باشه. بعدا با وارد کردن این اسم تو خط فرمان ماکرویی که روبروش نوشتید اجرا میشه.
ترفندهایی در مورد ماکرونویسی در راینو
حالا که با اصول کلی ماکرونویسی تو راینو آشنا شدید، چند تا نکته تکمیلی رو هم بد نیست بدونید تا بتونید ماکروهای بهتری بنویسید.
- برای دونستن اینکه چه عبارتهایی رو تو خط فرمان باید بنویسید تا عملیات مورد نظرتون اجرا بشه، سعی کنید یه بار همون عملیات رو بدون استفاده از ماوس و فقط با نوشتن دستورها تو خط فرمان اجرا کنید. وقتی به نتیجه دلخواه رسیدید حالا دقیقا همون عبارات رو تو ویرایشگر ماکرو بنویسید.
- ماکروها به کوچیکی و بزرگی حروف حساس نیستن. مثلا چه بنویسید extrudecrv یا EXTRUDECRV یا حتی eXtRuDeCrV در هر سه حالت ماکروی شما به درستی کار میکنه. اما استاندارد اینه که دستورات به صورت پاسکال کیس نوشته بشن. یعنی حرف اول بزرگ باشه و بقیه حروف کوچیک. در مورد دستوراتی که از چند کلمه متصل به هم ساخته شدن هم حرف اول هر کلمه بزرگ نوشته میشه. مثل ExtrudeCrv
- گذاشتن علامت تعجب (!) قبل هر کدوم از دستورها تو ماکرو باعث میشه اگه دستور دیگهای از قبل در حال اجرا شدن هست کنسل بشه و دستوری که بعد از علامت ! نوشته شده اجرا بشه.
- گذاشتن علامت زیرخط یا UnderScore (_) قبل هر کدوم از دستورها تو ماکرو به این معنیه که راینو اون دستور رو به زبان انگلیسی بخونه و اجرا کنه. جالبه بدونید که با تغییر زبان رابط کاربری راینو دستورها هم به همون تغییر میکنن. مثلا اگه شما راینو رو به زبان آلمانی نصب کرده باشید برای اجرای دستور آفست تو خط فرمان باید عبارت Versatz رو بنویسید و اگه بنویسید Offset برای راینو یه دستور ناشناختهست. پس اگه میخواید ماکروی شما رو تمام زبانهای راینو به درستی کار کنه بهتره قبل اسم هر دستور یه علامت زیرخط بذارید.
- با وارد کردن خیلی از دستورها تو خط فرمان راینو یه پنجره جدید باز میشه که ادامه کار رو از طریق گزینههای توی اون پنجره باید ادامه بدید. مثل دستور Options. اگه بخواید به گزینه های اون پنجره از طریق ماکرو دسترسی پیدا کنید، کافیه قبل اسم دستور یه خط فاسله یا Hyphen (-) بذارید. (با زیرخط اشتباه گرفته نشه)
- نوشتن علامت مدک یا Tilde (~) قبل از اسم هر دستور باعث میشه گزینههای اون دستور تو خط فرمان نشون داده نشن. همینطور اگه بخواید کلا ماکروی شما موقع اجرا تو خط فرمان نشون داده نشه، کافیه دستور NoEcho رو ابتدای ماکرو اضافه کنید.
- هر خطی از ماکرو که با علامت نقطهویرگول یا Semicolon (;) شروع بشه نادیده گرفته میشه. از این روش میتونید هم برای نوشتن توضیحات تو ماکرو استفاده کنید و هم زمان اشکال زدایی ماکروها بجای پاک کردن یه خط از ماکرو، با اضافه کردن نقطهویرگول اول هر خط اون خط رو موقتا بیاثر کنید.
در پستهای بعدی به بقیه روشهای خودکار سازی کارها تو راینو میپردازم. نظرات شما باعث میشه متوجه بشم که این پستها به اندازهی کافی خواننده مشتاق و پیگیر داره و برای نوشتن پستهای بعدی دلیل و انگیزه داشته باشم. پس اگه این پست رو تا آخر خوندی و دوست داشتی، حتما نظرتو پایین همین پست برام بنویس. مشتاقم ماکروهایی رو هم که شما نوشتید ببینیم و اگه ایدهای برای نوشتن یه ماکرو دارید ولی موفق نشدید اجراش کنید زیر همین پست یا تو گروه تلگرام پرسش و پاسخ راینو مطرح کنید تا من و بقیه دوستان پاسخگو باشیم.
سلام وقت بخیر
ممنون از پست عالی شما
سوالی داشتم از ماکرو ها میتوان برای چیدمان در یک محیط استفاده کرد؟
سلام به شما
همینطور که تو پست هم اشاره شده ماکروها فقط یه رشته از دستورات رو پشت سرهم اجرا میکنن. بنابرین اگه چیدمان مدنظر شما با تکرار تعدادی دستور بصورت متوالی قابل اجراست، با ماکرو میشه به صورت خودکار درش آورد. در غیر اینصورت بهتره برید سراغ اسکریپت نویسی که تو پستهای بعدی در موردش توضیح میدم.