راینو و فایلهای STEP
آوردن هندسه از راینو با کپی و پیست یا دکمهی SendToAtrium افزونهی راینوی باند، و رها کردن فایلهای STEP و IGES روی ویرایشگر.
آوردن هندسه از راینو با کپی و پیست یا دکمهی SendToAtrium افزونهی راینوی باند، و رها کردن فایلهای STEP و IGES روی ویرایشگر.
اگر بخشی از کارت را در راینو کشیدهای، لازم نیست آن را در آتریوم از نو بکشی. سه راه برای آوردن هندسه به آتریوم هست: کپی و پیست مستقیم از راینو، دکمهی SendToAtrium در افزونهی راینوی باند، و رها کردن فایلهای STEP یا IGES روی ویرایشگر باز. هر سه راه به یک مسیر در آتریوم میرسند و نتیجهشان یکی است.
چیزی که پیست میشود به ویرایشگر باز بستگی دارد:
| ویرایشگر باز در آتریوم | چه چیزی میآید |
|---|---|
| ۰بعدی | حجمها و سطحها دقیق (NURBS، نه مش)؛ خطها به شکل آزاد |
| سطح مقطع ۱بعدی و نیمرخ ابزار | خطها، و لبههای یک سطح تخت |
| اسمبلی | مثل رها کردن یک فایل STEP: حجم و سطح، ویرایشگر ۰بعدی تازهای باز میکنند و اگر فقط خط باشد، ویرایشگر سطح مقطع ۱بعدی باز میشود. وقتی ذخیره کنی، قطعه به همان اسمبلی برمیگردد. |
پیست از راینو بدون نصب هیچ افزونهای کار میکند. افزونهی راینوی Bond این مسیر را مطمئنتر میکند.
وقتی افزونهی راینوی Bond نصب باشد، انتخاب تو در راینو به شکل یک فایل STEP به آتریوم فرستاده میشود؛ با همان خروجی STEP خودِ راینو. این کار دو راه دارد.
SendToAtrium را اجرا کن).| موضوع | رفتار |
|---|---|
| اسم قطعه | اسم فایل STEP، اسم قطعه در آتریوم میشود: اسم آبجکت در راینو؛ اگر نداشت، اسم بلاک؛ وگرنه اسمی مثل «Rhino 12». |
| خطها | به یک سطح مقطع ۱بعدی تبدیل میشوند. |
| حجمها و سطحها | به یک قطعهی ۰بعدی تبدیل میشوند. |
| چند آبجکت با هم | همه با هم یک فایل STEP، یعنی یک قطعه میشوند. پس فقط چیزهایی را انتخاب کن که با هم یک قطعه را میسازند. |
| واحد | واحد مدل همراه فایل میآید و آتریوم آن را به میلیمتر تبدیل میکند. |
| آتریوم باز نیست | افزونه پیغام میدهد که آتریوم باز نیست و کاری نمیکند. |
| خطا | خطای ارسال در خط فرمان راینو نشان داده میشود. اگر خواندن فایل در آتریوم به مشکل بخورد، خطا داخل آتریوم نشان داده میشود، مثل یک فایل رهاشده. |
جای قرار گرفتن قطعه همان قانونهای رها کردن فایل را دارد (پایینتر).
با افزونه، Ctrl + C در راینو علاوه بر دادههای خودِ راینو، یک فایل STEP از همان انتخاب هم در کلیپبورد میگذارد؛ پس پیست داخل خودِ راینو مثل قبل کار میکند. Ctrl + V در آتریوم (اسمبلی، ۰بعدی و ۱بعدی) به این ترتیب تصمیم میگیرد:
یک یا چند فایل STEP (.step یا .stp) یا IGES را از Windows Explorer بکش و روی ویرایشگر باز آتریوم رها کن:
| ویرایشگر باز | نتیجه |
|---|---|
| اسمبلی | ویرایشگر قطعهی ۰بعدی یا ۱بعدی تازهای باز میشود؛ با اولین ذخیره، قطعه به همان اسمبلی برمیگردد. |
| ۰بعدی | هندسه داخل همان قطعه میآید. |
| سطح مقطع ۱بعدی | هندسه داخل همان سطح مقطع میآید. |
| هیچ ویرایشگری که فایل بپذیرد باز نیست | برای هر فایل یک ویرایشگر قطعهی تازه باز میشود. |
فایل STEP واحد مدل را با خودش دارد و آتریوم آن را به میلیمتر تبدیل میکند؛ مدلهایی با واحد سانتیمتر، متر یا اینچ مشکلی ندارند.
این بخش برای کسانی است که میخواهند از برنامهی دیگری، مثلاً یک افزونهی راینو، فایل به آتریوم بفرستند. آتریوم یک named pipe باز میکند که فقط تا وقتی برنامه باز است وجود دارد، فقط برای کاربر فعلی ویندوز در دسترس است، و تا پیامی نرسد بیکار میماند.
.step / .stp؛ IGES هم پذیرفته میشود) در یک پوشهی موقت بنویس؛ مثلاً %TEMP%\AtriumBridge\.Rhino 12. حرفهایی را که ویندوز در اسم فایل نمیپذیرد حذف کن.پیش از اتصال، AllowSetForegroundWindow(ASFW_ANY) (از user32) را صدا بزن تا آتریوم بتواند پنجرهاش را جلو بیاورد. بعد به این pipe روی همین ماشین وصل شو (timeout اتصال حدود ۱ ثانیه):
atrium-bridge-<windows user name>
new NamedPipeClientStream(".", "atrium-bridge-" + Environment.UserName, PipeDirection.InOut)
در اسم کاربر، هر حرفی بیرون از A-Z a-z 0-9 _ . - با _ جایگزین میشود. اگر اتصال برقرار نشد، یعنی آتریوم باز نیست.
یک خط JSON با کدگذاری UTF-8 که با \n تمام میشود بفرست:
{"v": 1, "cmd": "import", "files": ["C:\\Users\\...\\AtriumBridge\\Cabinet side.step"]}
یک خط JSON جواب بخوان و اتصال را ببند:
{"ok": true, "editor": "assembly", "files": 1}
{"ok": false, "error": "No readable STEP/IGES file arrived"}
ok برابر false بود، error را به کاربر نشان بده.editor میگوید فایل به کجا رفت: "assembly"، "part_0d"، "part_1d"، "tool"، "other"، یا "" (هیچ ویرایشگری که فایل بپذیرد باز نیست و هر فایل یک قطعهی تازه میشود).برای بررسی باز بودن آتریوم (مثلاً برای کمرنگ کردن دکمه وقتی آتریوم باز نیست):
{"v": 1, "cmd": "ping"}
{"ok": true, "app": "Atrium", "version": "x.y.z", "editor": "..."}
بعد از اینکه دستور Copy خودِ راینو تمام شد (مثلاً در Command.EndCommand برای Copy یا CopyToClipboard)، همان انتخاب را در فایل STEP موقت بنویس و فرمت Atrium.GeometryFiles را کنار دادههای راینو به کلیپبورد اضافه کن؛ فرمتهای خودِ راینو را نگه دار تا پیست در راینو هم کار کند. محتوا، بایتهای UTF-8 این JSON است:
{"files": ["C:\\Users\\...\\AtriumBridge\\Cabinet side.step"]}
رشتهی .NET (UTF-16) و یک مسیر در هر خط هم پذیرفته میشود. در .NET:
// copy the current DataObject's formats into a new DataObject, then:
obj.SetData("Atrium.GeometryFiles", new MemoryStream(utf8Bytes));
Clipboard.SetDataObject(obj, true);