آشنایی با Antimony؛ ابزار طراحی مهندسی (CAD) مبتنی بر گراف و اسکریپتنویسی — Antimony: CAD Software Evolved from Lisp Machines and Not Drafting Tables (2015)
خلاصه
ابزار Antimony یک نرمافزار CAD متنباز و متفاوت است که بهجای میزهای نقشهکشی سنتی، از ایدههای ماشینهای Lisp الهام گرفته است. این ابزار با ترکیب گرافهای جهتدار بدون دور (DAG) و اسکریپتهای Python، مدلسازی جامد هندسی را به شکلی برنامهنویسپسند ارائه میدهد.
معرفی نرمافزار Antimony
نرمافزار Antimony یک ابزار کامپیوتری طراحی مهندسی (CAD) است که رویکردی کاملاً متفاوت با نرمافزارهای سنتی دارد. سازنده این پروژه، Matt Keeter، آن را ابزاری از یک «جهان موازی» توصیف میکند که در آن نرمافزارهای CAD به جای تکامل از روی میزهای نقشهکشی سنتی، از ماشینهای Lisp و ایدههای پردازشی آنها تکامل یافتهاند. ریشههای این پروژه به کارهای تحقیقاتی در مرکز Bits and Atoms دانشگاه MIT برمیگردد و ابزارهایی نظیر cad_ui و kokopelli پیشران آن بودهاند.
برخلاف ابزارهای سنتی که بر پایه ترسیم مستقیم و رابطهای گرافیکی سنگین بنا شدهاند، Antimony مهندسی نرمافزار و طراحی هندسی را به دنیای برنامهنویسان نزدیک میکند.
پایههای معماری و موتور گراف
هسته مرکزی Antimony بر پایه سه محور اصلی ساخته شده است:
- سیستمی برای ردیابی جریان اطلاعات از طریق گرافهای جهتدار بدون دور (
DAG) - موتور هندسی برای انجام عملیات هندسی ساختاری (
CSG) - کتابخانه استاندارد از اشکال و تبدیلها
در این نرمافزار، مدلسازی از طریق اتصال نودها در قالب یک گراف انجام میشود. هر نود با استفاده از Python 3 به همراه چند کلیدواژه خاص تعریف میشود. نودها معمولاً نشاندهنده یک شکل پایه یا تبدیل هندسی هستند. با اتصال این نودها به یکدیگر، تغییرات به صورت خودکار در جهت جریان گراف به سمت پایین منتشر (Propagate) میشوند.
برای مثال، تعریف یک نود دایره ساده در پایتون به شکل زیر انجام میشود:
import fab.shapes
input('x', float)
input('y', float)
input('r', float)
c = fab.shapes.circle(x, y, r)
output('shape', c)
موتور هندسی و خروجیها
موتور هندسی Antimony از بازنماییهای تابعی (Functional Representations) برای مدلسازی جامد استفاده میکند. این روش برای پیادهسازی عملیات منطقی بولین (مانند اشتراک، اجتماع و تفریق) بسیار بهینه و کارآمد است. موتور گرافیکی، اشکال را به صورت بیتمپهای سایهزن رندر کرده و سپس آنها را به یک نمای سهبعدی (3D Viewport) منتقل میکند.
کاربران میتوانند خروجیهای مختلفی از جمله نقشه ارتفاعی برای فرآیندهای دوبعدی و نیمهسهبعدی و فایلهای .stl برای پرینت سهبعدی تهیه کنند. خروجی STL مجهز به قابلیت تشخیص لبهها است تا گوشهها و لبههای تیز در مدل نهایی حفظ شوند.
رابط کاربری تعاملی و قابلیت توسعه
یکی از جذابترین بخشهای Antimony امکان تعریف ویژگیهای رابط کاربری در کدهای پایتون است. برای مثال، میتوان نقاط کنترلی (UI Points) را روی لبههای یک شکل مستطیلی تعریف کرد که مستقیماً به نودهای گراف متصل هستند. کشیدن این نقاط در نمای سهبعدی، پارامترهای نود مربوطه را در گراف تغییر میدهد.
این پروژه در حال حاضر در سطح پایداری بتا قرار دارد و توسعهدهندگان به راحتی میتوانند نودهای سفارشی خود را بنویسند. هرچند توسعهدهنده اصلی پس از مدتی سرعت توسعه را کاهش داده است، اما نسخهها و فورکهای فعالتری توسط جامعه کاربری با کمک ابزارهای مدرن نگهداری میشوند.
دیدگاه جامعه هکرنیوز
بحثهای هکرنیوز پیرامون این ابزار نشان میدهد که برنامهنویسان معمولاً رویکردهای مبتنی بر کد برای CAD (مانند OpenSCAD) را مفید اما محدود میدانند. با این حال، ترکیب گراف، پایتون و قابلیتهای تعاملی در Antimony توجه مهندسان را به خود جلب کرده است؛ بهویژه برای کسانی که دوست دارند فرآیند طراحی سختافزار را دقیقاً مانند نوشتن کدهای نرمافزاری کنترل کنند.
این مطلب بهصورت کاملاً خودکار و با هوش مصنوعی از مقالهٔ اصلی و بحث هکرنیوز تهیه شده و ممکن است خطا داشته باشد. حقوق مطلب اصلی متعلق به نویسندهٔ آن است. قوانین و گزارش مشکل