Lisp و استفاده در AutoCAD

سلام
این بخش باید جالب باشه حتما بخونید واستفاده کنید.  

تاریخچه  Visual LISP 

با اینکه چند سالی میشود که لیسپ به تاریخ پیوسته و جای آن را «ویژوآل لیسپ» پر کرده ولی هنوز هستند اکثریت کاربران اتوکدی که هنوز با LISP و یا Visual LISP آشنایی چندانی ندارند.

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

با پیشرفت کردن و متنوع تر شدن دستورات و امکانات اتوکد فقدان یک زبان برنامه نویسی قوی برای عملکردهای پیچیده تر احساس شد. یکی دیگر از عوامل مهم در مهاجرت از LISP به Visual LISP عدم امکانات محافظت از برنامه های نوشته شده در LISP برای جلوگیری از کپی برداری های غیر مجاز از برنامه ها بوده است.

در این مرحله بود ماکروسافت نرم افزار VB معروف خود را تحت عنوان جدیدی به نام VBA (مخفف Visual Basic Application) عرضه کرد و زمینه خوبی برای استفاده این زبان برنامه نویسی که در واقع نسخه غیر مستقل VB شناخته میشد را در بسیاری از نرم افزارهای دیگر از جمله مجموعه office و همچنین مجموعه نرم افزارهای خانواده Autodesk فراهم شد.

VBA ای که در خانواده اتودسک به کار گرفته شد مجهز به مجموعه کدهایی برای استفاده از دستورات و فرمانهای اتوکد به همراه استفاده از متغیرهای سیستمی با امکان استفاده از پنچره های محاوره ای متداول برنامه نویسی میباشد.

و اما لیسپ:

 با اینکه VBA امروزه بسیار قویتر و مجهز تر از LISP میباشد ولی هنوز شاهد ابتکارهای بسیار جالبی با کدهای قدیمی لیسپ هستیم.

چرا که این برنامه ساده تر سالهای سال تنهای ابزار برای نشان دادن مهارت برنامه نویسان اتوکد بوده و سخت است که به زودی به بوته فراموشی سپرده شود.

و اینچنین است که هنوز با جستجوی کلمه LISP در موتور جستجوی گوگل بیش از 14 میلیون نتیجه را می یابیم و سایتهای بسیار بزرگ و معروفی که نسبت به آرشیو کردن مجموعه های ارزشمند LISP همچنان فعال هستند را میینیم. 

 Lisp ها در اصل دستوراتی هستند که از طریق ویژال بیسیک نوشته می شوند ومی توانند خیلی از کارهای تکراری وطولانی را که احتیاج هست چندین بار انجام دهیم را با یک مرتبه اجرا انجام دهیم.
البته باید بدانید که ابتدا چگونه این lisp ها لود کنید واین که چه فرمانی را اجرا کنید تا lisp اجرا شود. معمولا کسی که lisp می نویسد دستور اجرای آن را نیز معرفی می کند اگر هم معرفی نکرد کافی است آن lisp را با notepad اجرا کرده ودستور اجرای آن را از داخل آن بیابید.

مثال برای lisp : مثلا شما تعداد بسیار زیادی polygon دارید که باید داخل آن را hach بزنید ولی اجرای دستور hach وانتخاب آن همه polygon بسیار وقت گیر است(مثلا 10000 polygon) شما با یک lisp که مخصوص این کار نوشته شده است فقط با لود آن واجرای فرمان می توانید فقط رنگتان را انتخاب کنید بقیه کارها را lisp انجام خواهد داد.

روش لود کردن lispها:

برای این کار ابتدا باید اتوکد را باز کنید واز منوی tools گزینه load application را برگزینید. حال در پنجره باز شده lisp خود را که یک فایل با پسوند *.lspاست برگزینید وگزینه load را بزنید. حال lisp شما لود شده است. کافی است در خط فرمان دستور اجرای آن را تایپ کنید وکلید enter را بزنید حال می توانید تا کار تمام شود یک فنجان چای بخورید چون lisp بقیه کارها را انجام می دهد.
من برای شما lisp ای را که در مثال بالا برای شما توضیح دادم می گذارم روش لود آن به صورتی که توضیح دادم است ولی برای استفاده از آن به صورت زیر عمل کنید: قبل از اجرا باید مطمئن شوید که در فایلی که کار میکنید حتما polygon وجود داشته باشد چون برای hach حتما باید فضای بسته داشته باشیم.
بعد از لود lisp مورد نظر در خط فرمان تایپ کنید hh
حال lisp اجرا شده است.کافی است به سوالات جواب دهید. که به صورت زیر است : 

 

Command:HH
enter ferst hatch: solid                    نوع هچ مورد نظرتان
enter secound hatch: solid                 تکرار نام هچ
enter ferst scale: 1               مقیاس هچ
enter secound scale:1               مقیاس هچ
enter ferst rotation: 0              میزان چرخش هچ
enter secound rotation: 0              میزان چرخش هچ
enter color noumber: 32              رنگ هچ
Select object :          انتخاب شی   
لینک دانلود:  

 اصلاح برچسب کد: 
با این فایل می تونیم همزمان که از نقاط ID می گیریم اونو مستقیم به فرمت GSI داخل یه فایل بریزیم و فایل هم به راحتی به توتال انتقال بدیم! 
روش اجرا: 
از منوی Tools > Load Aplication فایل لیسپ رو لود می‌کنیم
بعدش توی خط فرمان تایپ می‌کنیم TPF بعد از اون از ما می خواد که نام فایل رو بنویسیم. توجه داشته باشیم که فقط نام رو بنویسیم و از نوشتن پسوند خودداری کنیم چون اتوماتیک فایل ساخته شده پسوند GSI میگیره.
بعد از نام فایل اینتر می کنیم.
حال از ما سوال میکنه که می خواید پیشوند نقاط چی باشه. با نوشتن حرف C و اینتر کردن از این مرحله صرف نظر می کنیم! سوال بعدی این هست که شماره نقاط از چه شماره ای شروع بشه که می تونیم عدد ۱ رو بزنیم و اینتر کنیم.
بعد از این کار پیام Selection Piont روی خط فرمان ظاهر میشه که با کلیلک کردن بر روی نقاط مخصات اون نقطه به صورت GSI ذخیره میشه.

نکات :

1-لازم به زدن دستور ID نمی باشد.

2-با کلیلک کردن بر روی یک نقطه نرم افزار منتظر نقطه ی بعدی می ماند و هر کلیک بر روی صفحه‌ی Drawing یک مختصات فرض میشود و آن را ذخیره می کند پس مواظب باشید تا مختصات های تصادفی ذخیره نگردد!

3-بعد از کلیک کردن بر روی آخرین نقطه نرم افزار منتظر نقطه‌ی بعدی می باشد که شما با زدن کلیدEnter به آن خاتمه می دهید.

4- در بعضی مواقع Osnap غیر فعال می گردد که شما باید آن را فعال کنید.

لینک دانلود : 
چند نکته در مورد لیسپ TPF:1- فایل خروجی در شاخه C ایجاد میشه.
2- در صورتی که از یک سری ObjectSnap های خاصی به طور دایم استفاده میکنید میتوانید آنها را در خود فایل لیسپ تعریف کرده تا به طور تصادفی برنامه از OSNAP خارج نشود. به عنوان مثال:

کد:(command "OSNAP" "nearest,end,int") 

یک فایل powerpoint زیبا که نحوه برنامه نویسی به زبان اتولیسپ را به سادگی آموزش میدهد:


حجم : 943 کیلوبایت
لینک دانلود : 


http://naghshonama.persiangig.com/document/Lisp/Seattle_CAD_Camp.ppt 


 اتوکد با شما صحبت میکند! 

تعجب نکنید! اگر از سیستم عامل Windows XP و یا بالاتر استفاده میکنید و ضمنا کارت صوتی هم دارید پس میتوانید صدای اتوکد را بشنوید!
با تایپ کردن کد مثال زیر در یک فایل لیسپ و لود کردن آن، صدای اتوکد را میشنوید:

کد:
(setq sapi (vlax-create-object "Sapi.SpVoice"))
(vlax-invoke sapi "Speak" "Here is your AutoCAD" 0)
(vlax-release-object sapi)  
خوب این چه کاربردی میتواند داشته باشد؟ میتوان در برنامه های VBA خود برای کاربران پیامهای صوتی بفرستید... مثلا به آنها اخطار بدهید که میخواهند در یک لایه قفل شده ترسیم کنند و یا ...

نظرات 0 + ارسال نظر
برای نمایش آواتار خود در این وبلاگ در سایت Gravatar.com ثبت نام کنید. (راهنما)
ایمیل شما بعد از ثبت نمایش داده نخواهد شد