بعد از اینکه به تسلط نسبی در اتوکد رسیدیم، می خواهیم کارهای تکراری و روتین را در اتوکد راحتتر انجام دهیم. بنابراین تصمیم می گیریم که برنامه نویسی را یاد بگیریم. با کمی تحقیق متوجه می شویم که زبانهای زیادی برای برنامه نویسی در اتوکد وجود دارد. ممکن است این سوال برایمان پیش بیاید که تفاوت زبانهای برنامه نویسی در اتوکد چیست؟
متداولترین این زبانها برای برنامه نویسی در اتوکد، زبان اتولیسپ (Autolisp) و ویژوال بیسیک (Visual Basic Application (VBA)) میباشد.
حال سوال پیش می آید که کدام زبان برنامه نویسی بهتر است؟ فرق بین اتولیسپ و ماکرو (VBA) چیست؟
اگر بخواهیم یک پاسخ سریع و آسان به این پرسش بدهیم، باید بگوییم که هر دوی این زبانهای برنامه نویسی خوب هستند و باید هر دو را یاد بگیریم.
البته اگر پرسشهای بهتری از خودمان بپرسیم به جوابهای دقیقتری خواهیم رسید و انتخاب زبان برنامه نویسی برایمان راحتتر میشود.
اگر با زبانهای برنامه نویسی دیگر آشنا هستیم، VBA (ماکرو) را انتخاب کنید.
اگر با هیچ زبان برنامه نویسی دیگری آشنا نیستیم، بهتر است زبان برنامه نویسی اتولیسپ را انتخاب کنیم، زیرا ساده تر است.
در صورتی که به یادگیری برنامه نویسی اتولیسپ در اتوکد علاقمند هستید، میتوانید کتاب آموزش اتولیسپ را تهیه کنید. این کتاب کاملترین مرجع یادگیری این زبان برنامه نویسی به زبان فارسی میباشد.
سوالات مهم در زبانهای برنامه نویسی در اتوکد
البته فقط دانش و تجربه ما در زمینه برنامه نویسی نیست که باعث میشود چه زبان برنامه نویسی را در اتوکد یاد بگیریم.
سوال بعدی که باید به آن پاسخ دهیم سختتر است. از زبان برنامه نویسی چه انتظاراتی داریم؟ چون هر زبان برنامه نویسی معایب و مزایای خودش را دارد.
زبان برنامه نویسی اتولیسپ در ساخت دستورات جدید و ایجاد و ترکیب دستورات موجود بسیار خوب عمل میکند.
ماکرونویسی در اتوکد برای کار بر روی موضوعات خارجی مانند کار بر روی اکسل خوب عمل میکند.
البته با اتولیسپ نیز میتوان با موضوعات خارجی کار کرد ولی در ماکرونویسی به تک تک سلولهای اکسل دسترسی داریم.
اتولیسپ در کار با لیستها خوب عمل میکند و به برنامه نویس اجازه میدهد که اطلاعات را به راحتی ذخیره و دستکاری کند.
در ماکرونویسی میتوانیم یک رابط کاربری برای برنامه طراحی کنیم و در آن اطلاعات را ذخیره کنیم.
پاسخ دادن به این سوالات سخت است مگر اینکه هر دو زبان برنامه نویسی را خوب بشناسیم. اما مهم این است که درک کنیم چه چیزی میخواهیم انجام دهیم.
معایب و مزایای زبانهای برنامه نویسی در اتوکد
اگر بخواهیم کارهایی که ساده هستند را انجام دهیم بهتر است با چند خط کد آنها را در اتولیسپ بنویسیم.
در ماکرونویسی (VBA) میتوانیم برنامه های پیچیده ای بنویسیم که شامل چندین پنجره (Dialog Box) میباشند. البته با اتولیسپ هم میتوان برنامه هایی نوشت که دارای پنجره باشد ولی به سادگی ماکرونویسی نیست.
VBA دسترسی به اتوکد را در سطح موضوعات فراهم میکند ولی به خودی خود نمیتوانیم از دستورات اولیه اتوکد در آن استفاده کنیم، کاری که با اتولیسپ به راحتی میتوانیم انجام دهیم.
چیزی که مشخص است این است که دو زبان برنامه نویسی با هم خوب کار نمیکنند. یعنی اینکه نمیتوانیم یک برنامه در اتولیسپ بنویسیم و از آن در VBA استفاده کنیم و بالعکس.
البته این کار غیر ممکن نیست ولی ساده هم نیست.
هنگامی که برنامه ای را با یک زبان برنامه نویسی مینویسیم، نمیتوانیم برای برطرف کردن یک مسئله، برنامه را به زبان دیگری تغییر دهیم و باید با همان زبانی که شروع کردیم برنامه را ادامه دهیم.
ساخت واژه ها در زبانهای برنامه نویسی در اتوکد
در این قسمت میخواهیم این دو زبان را از نظر فنی مورد بحث قرار دهیم. همانطور که قبلاً گفتیم Autolisp به دستورات اولیه اتوکد به راحتی کار میکند.
در اتولیسپ میتوانیم دستورات اتوکد را با یک تابع شرطی یا حلقه ترکیب کرده و دستورات قدرتمندی برای برنامه خود ایجاد کنیم.
از این برنامه ها میتوان برای اتوماتیک کردن کارهای تکراری و همچنین حل محاسبات برای رسیدن به نتیجه دلخواه استفاده کرد.
زمانهایی وجود دارد که برنامه هایی دستور محور از برنامه های شی گرا بهتر هستند.
دستکاری سطح اشیاء در ویژوال لیسپ نیز موجود است. با استفاده از پسوندهای (VL) موجود در Visual LISP می توانیم خصوصیات شی را تغییر داده و در صورت لزوم از روش های شی استفاده کنیم. ما باید از منابع شی استفاده کنیم که می توانند با تبدیل نام موجودیت یا ایجاد اشیاء به طور مستقیم ایجاد شوند. در اکثر موارد، یک برنامه نویس با تجربه اتولیسپ نیازی به استفاده از اشیاء نخواهد داشت. اما مواقعی وجود دارد که آنها مطمئناً مفید هستند.
مزیت دیگری که ویژوال لیسپ و اتولیسپ نسبت به VBA دارد، مطابقت بیشتر با اتوکد است. VBA یک زبان افزدونی به اتوکد است که در سایر نرم افزارها مانند Microsoft Word و Excel نیز کار میکند. ماکرونویسی در اتوکد همچنین از نظر برنامه نویسی مشابه با VB (Visual Basic) میباشد. ویژوال لیسپ فقط درون اتوکد اجرا میشود و رابطه نزدیکتری با اتوکد دارد.
نمونه ای از کدهای زبانهای برنامه نویسی در اتوکد
نمونه ای از این تفاوت را میتوانیم هنگام پیغام دادن در خط فرمان به کاربر ببینیم. در ویژوال لیسپ از عبارت Prompt یا Print برای نوشتن پیغام در خط فرمان استفاده میشود. در VBA باید از Prompt که بخشی از ابزار Utility است و آن هم بخشی از شی Drawing است، استفاده شود.
کد زیر، پیغامی را به خط فرمان اتوکد ارسال میکند:
در ویژوال لیسپ:
(prompt “\nstarting.”)
در ماکرونویسی (VBA):
thisDrawing.Utility.Prompt Chr$(10) & “starting”
در کدهای بالا دو چیز واضح است. در ویژوال لیسپ برای اینکه پیغام در خط جدید نوشته شود از “n\” استفاده میشود. در ماکرونویسی از تابع Chr$(10) استفاده میشود و باید با استفاده از عملگر “&” آنرا در جلوی کد نوشت.
تفاوتهایی دیگر
تفاوت دیگر این دو زبان در طول عبارت برای رسیدن هدف است. همانطور که میبینیم معمولاً در ویژوال لیسپ و اتولیسپ عبارت کوتاه تر است.
در اتولیسپ میتوان از تابع Print استفاده کرد و از “n\” استفاده نکرد چون تابع Print، عبارت مورد نظر را به خط بعد منتقل میکند.
یکی دیگر از ویژگیهای تابع Print هر نوع داده ای را چاپ میکند. این در حالیست که تابع Prompt فقط رشته های متنی را چاپ میکند.
برای شی Utility در VBA و همچنین توابع (Getxxx) در اتولیسپ، همیشه باید از رشته ها استفاده کنیم. AutoLISP شامل چند تابع است که داده های مختلف را به رشته متنی تبدیل میکند.
تابع Rtos اعداد اعشاری را به رشته متنی تبدیل میکند و Itoa اعداد صحیح را به رشته متنی تبدیل میکند.
در ماکرونویسی دو عملکرد Str و Format برای تبدیل عددی داریم. عملکرد Str یک رشته را با یک تفاوت جزئی برمیگرداند. یک فاصله به ابتدای اعداد غیر منفی اضافه میکند و آنها را به رشته متنی تبدیل میکند.
یعنی str(-1.1) رشته “1.1-” را برمیگرداند و str(1.1) رشته “1.1 ” را برمیگرداند.
عملکرد Format به شما این امکان را میدهد که فرمت تبدیل را به طور خاص مشخص کنید. برای آشنایی با عملکرد Format در اینترنت جستجو کنید.
تعادل در مقایسه زبانهای برنامه نویسی در اتوکد
این واقعیت که میتوان برنامه های اتولیسپ را در خط فرمان اجرا کرد، مقایسه ها را برای شخصی سازی اتوکد به نفع اتولیسپ برمیگرداند. در Autolisp میتوانیم یک دستور جدید را فقط با اضافه کردن در جلوی “:C” بسازیم.
برنامه اتولیسپ مانند دستورات اتوکد از طریق خط فرمان و فقط با بارگذاری آن اجرا میشود و در کل اجرای برنامه های اتولیسپ بسیار ساده تر از برنامه های VBA است.
چون VBA دارای ماکرو است و برای بارگذاری آن باید از دستور VBAmanager و پنجره مدیریت فایلهای VBA اقدام کنیم، بنابراین ممکن است این تفاوت کفه ترازو را به سمت اتولیسپ سنگین کند.
این واقعیت که VBA از طریق خط فرمان اجرا نمیشود، مشکل اساسی را ایجاد نمیکند. میتوانیم مدیریت برنامه VBA را با اتولیسپ شروع کنیم و سپس به همان شیوه از ماکرو استفاده کنیم.
هنگام استفاده از عبارت (دستور)، اطمینان حاصل میکنیم که از علامت “-“ در ابتدای دستور مانند زیر استفاده کنیم:
(command “-VBALOAD” “mymacros” “-VBARUN” “mymacro”)
در اتولیسپ و VisualLISP، علامت “-“ باعث میشود که دستوراتی که اجرای آنها باعث ظاهر شدن پنجره دستور میشود، از خط فرمان پیگیری شوند.
در کد بالا به جای عبارت “mymacros”، اسم دستور را مینویسیم.
علاوه بر اجازه راه اندازی از طریق اتولیسپ، VBA مجموعه ای از عملکردهای خوب برای واکنش به ترسیم و کار با چندین نقشه به طور همزمان را دارد. میتوانیم برخی از این کارها را در ویژوال لیسپ انجام دهیم ولی نه به آسانی VBA. راکتورها را میتوان به فایلهای ترسیم وصل کرد و حتی آنها را در تمپلیتها جاسازی کرد. ویژوال لیسپ بدون برنامه نویسی هوشمندانه یا دستکاری منو از این توانایی برخوردار نیست.
قسمتی دیگر از تفاوتهای زبانهای برنامه نویسی در اتوکد
قسمتی دیگر که VBA در آن از ویژوال لیسپ استفاده میکند، انواع داده هاست. VBA تعداد بیشتری داده نسبت به ویژوال لیسپ دارد، مانند تاریخ و زمان. در ویژوال لیسپ تاریخ و زمان به عنوان رشته متنی یا به عنوان مقادیر عددی ذخیره میشوند.
وقتی از طریق متغیرهای سیستمی به اطلاعات تاریخ سیستم دسترسی پیدا میکنیم، به اعداد حقیقی دست پیدا میکنیم که روزهای تقویم جولیان را نشان میدهد.
دستکاری در زمان و تاریخ نمیتوانست ساده تر باشد. از تابع Format، تقریباً برای ایجاد خروجی هر توضیحی استفاده میشود و میتوانیم مقایسه ها و تفاوتهای اساسی بر مبنای عدد را انجام دهیم.
برنامه نویسان اتولیسپ میگویند که VBA به سادگی اتولیسپ از لیست پشتیبانی نمیکند. این گفته درست است.
اما VBA از Variantها پشتیبانی میکند که بسیار شبیه نمادهای لیسپ هستند که در هر نوع داده قرار دارند.
Variantها به VBA اجازه میدهد تا با داده ها و ساختارهای متغیر کار کند ولی به اندازه لیستهای LISP قدرتمند نیستند.
در اتولیسپ از لیستها میتوان برای ذخیره انواع مختلفی از داده ها استفاده کرد و سپس با چند خط کد و با توابع Mapcar, Foreach و Apply سریع آنها را دستکاری کرد. اما این نوع برنامه نویسی نیاز به تسلط دارد.
زبانهای برنامه نویسی در اتوکد و کار با اکسل
پردازش لیست به اندازه دستکاری شیء برای برنامه نویسان جالب نیست. در VBA و ویژوال لیسپ میتوانیم با سایر سیستمهای پشتیبانی اشیاء ارتباط برقرار کنیم. رابط Active X ویندوز، یک سیستم ارتباطی فرآیند به فرآیند شیء گرا برای برنامه نویسان است. این برنامه اجازه میدهد تا برنامه VBA یا Visual LISP شما که در اتوکد اجرا میشود، اکسل یا سایر وظایفی را که از اتوماسیون پشتیبانی میکند، به عهده بگیرد و آنرا اجرا کند.
از آنجا که اکسل از VBA پشتیبانی میکند، میتوانیم اتوکد را از داخل کاربرگ اکسل هدایت کنیم.
وقتی به اتوماسیون فرآیندهای چندگانه فکر میکنیم، دارای پتانسیلهای بسیار جذابی است.
تا اینجا متوجه شدیم که VBA و ویژوال لیسپ بسیار متعادل هستند. آنجایی که یکی ضعیف است، آن یکی قوی است. در حالیکه VBA از برخی مفاهیم جدید برای برنامه نویسان اتولیسپ پشتیبانی میکند، همچنین آن میتواند یک تله باشد برای اینکه یک کار ساده را پیچیده کند.
من در بیشتر موارد تمایل به استفاده از ویژوال لیسپ دارم زیرا گزینه های بیشتری را ارئه میدهد و تجربه زیادی در استفاده از آن برای شخصی سازی اتوکد دارم. اما بارها از VBA برای برنامه های مشتریان استفاده میکنم زیرا رابط کاربری آسان برای برخی از ماژولهای اتوماسیون را فراهم میکند.
تمام دلایلی که در بالا ذکر شد، دلایلی است که هر دو زبان برنامه نویسی ویژوال لیسپ و VBA را یاد بگیریم. اما باز این به آنچه میخواهیم با آنها انجام دهیم بستگی دارد.
یادگیری زبانهای برنامه نویسی در اتوکد را از کجا شروع کنیم
برای اینکه تعیین کنیم که ابتدا کدام زبان را بیاموزیم، باید چند ارزیابی ساده از خود انجام دهیم.
اگر دستورات اتوکد را به خوبی بشناسیم و بخواهیم فرآیند استفاده از آنها را به صورت خودکار انجام دهیم، اولین قدم یادگیری اتولیسپ است.
در صورتی که به یادگیری برنامه نویسی اتولیسپ در اتوکد علاقمند هستید، میتوانید کتاب آموزش اتولیسپ را تهیه کنید. این کتاب کاملترین مرجع یادگیری این زبان برنامه نویسی به زبان فارسی میباشد.
اگر AutoCAD را نشناسیم اما یک برنامه نویس باشیم و بدانیم چگونه با اشیاء کار کنیم، یادگیری VBA پیشنهاد میشود.
در صورتی که به یادگیری برنامه نویسی VBA در اتوکد علاقمند هستید، میتوانید آموزش ماکرونویسی در اتوکد را تهیه کنید.
سخن پایانی
سخن پایانی برای کسانی که میخواهند یاد بگیرند چگونه در اتوکد برنامه نویسی کنند: به دنبال کتاب و مجله ای باشید که مثال محور باشد و با ذکر مثالهای متعدد، برنامه نویسی را آموزش دهد.
Help موجود در اتوکد برای افراد مبتدی گیج کننده است زیرا برخی از توابع از دیدگاه VBA و برخی دیگر از دیدگاه ویژوال لیسپ میباشند.
مهم نیست از چه زبانی استفاده کنیم، چون میتوانیم از زبان دیگری برای یادگیری یک زبان جدید استفاده کنیم.
هر زبانی را که انتخاب کنیم فقط با تمرین و تکرار است که میتوانیم به مهارت در آن دست یابیم.
منبع: CADAlyst