[ آموزش اتولیسپ ] زبان برنامه نویسی اتوکد

Auto Lisp چیست؟
Auto Lispیک نوع زبان برنامه نویسی می باشد که با استفاده از آن قابلیت های نرم افزار Auto Cad به صورت قابل ملاحظعه ای افزایش می یابد، اگر LISP ها به طور صحیح استفاده شوند قادر خواهیم بود علاوه بر برخورداری از سرعت بسیار بالا در ترسیم، کارهائی نظیر جمع و ضرب درText های Auto Cad (مورد استفاده در لیستفر بندی نقشه ها) ، طراحی های تخصصی ،طراحی اجزاء ساختمان،فلوچارت،رسم توابع ریاضی، و مدل سازی برای روش المان محدود وحتی محاسبات مقاومت مصالح انجام دهیم.
 
آخرین ویرایش توسط مدیر:

miladrahaneh

عضو جدید
آموزش لیسپ lisp

آموزش لیسپ lisp

سلام به دوستان قدیمی و جدید که منو میشناسن یا با من آشنا میشن

بابا شما نقشه بردارا تازه وارد به تایپیک رو تحویل نمیگیرین....آه به این سرنوشت

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

E mial's of me (Faraji) : miladrahaneh@yahoo.com for surveyor

واسه اونایی که دوس شون دارم
اتوکد برای پاکت pc را دانلود کنید

http://shortcad.com/download.php?version=2009.04.26.1&type=cab


راستی کسی از قضیه شتره خبر داره؟
 

عمو رسول

عضو جدید
[ آموزش اتولیسپ ] زبان برنامه نویسی اتوکد

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


اول یه مقدمه ای از لیسپ مینویسم و بعد شروع به توضیح درس میکنم.


این آموزشایی که میذارم از کتاب خودآموز استفاده از اتولیسپ از انتشارات عبد هست. چون دیگه تجدید چاپ نمیشه و پیدا کردن چاپای قدیمی کتاب هم خیلی سخته، به همین خاطر این آموزشارو با کمی تغییر که با ورژنای جدید اتوکد بخوره، اینجا قرار میدم.

فقط یه خواهش، توو این تاپیک چیزی ننویسید و اگه سوالی داشتید به این تاپیک (پرسش و پاسخ در مورد اتولیسپ) و سوالتونو توو اونجا بپرسید.
 
آخرین ویرایش:

عمو رسول

عضو جدید
طریقه Load کردن فایلهای Lisp در اتوکد

طریقه Load کردن فایلهای Lisp در اتوکد

از 2 طریق میتوان فایلهای Lisp را در اتوکد Load و استفاده کرد:

1- Load شدن به صورت موقت: در این نوع Load کردن، فایل Lisp را میتوانیم فقط در همان صفحه کاری جاری (صفحه کاری ای که باز است) استفاده کنیم و اگر صفحه جدیدی باز کنیم، آن فایل Lisp دیگر کار نمیکند و باید دوباره Load شود.

2- Load شدن به صورت دائم: در این نوع Load کردن، فایل Lisp، به صورت دائم Load میشود. یعنی وقتی اتوکد را باز میکنیم، فایل Lisp همرا با اتوکد Load خواهد شد.

طریقه Load کردن به صورت موقت:برای Load کردن فایلهای Lisp به صورت موقت دو راه وجود دارد:1- در منوی آبشاری Tools گزینه Load Application… را انتخاب کنید:




2- نوشتن ap و اینتر در خط فرمان
بعد از این دستور پنجره Load/Unload Applications باز میشود



بعد از باز شدن این پنجره، در جعبه ای که در جلوی Look in قرار دارد، درایوی را که فایل درون آن است انتخاب کنید و در زیر قسمت Look in فایل Lisp را انتخاب کنید تا نام فایل مورد نظرتان در جعبه ای که در جلوی File name است ظاهر شود و دکمه Load را که در جلوی File name است، بزنید تا فایل مورد نظرتان Load شود (میتوانید دو بار روی فایل مورد نظرمان کلیک کنید تا Load شود)
بعد از Load شدن، پنجره Load/Unload Applications را ببندید و از فایل Lisp استفاده کنید.

طریقه Load کردن به صورت دائم:برای Load کردن فایلهای Lisp به صورت دائم دو راه وجود دارد:

1- در منوی آبشاری Tools گزینه Load Application… را انتخاب کنید:

2- نوشتن ap و اینتر در خط فرمان بعد از این دستور پنجره Load/Unload Applications باز میشوددر قسمت Startup Suit، دکمه Contents… را بزنید. پنجره Startup Suit باز میشود. در این پنجره دکمه Add را بزنید تا پنجره Add File to Startup Suit باز شود. فایل مورد نظر را انتخاب کنید.

بعد از انتخاب فایل مورد نظر، نام فایل و مسیر فایل در پنجره Startup Suit ظاهر میشود. بعد انتخاب فایلهای مورد نظر، پنجره های Startup Suit و Load/Unload Applications را ببندید.



حالا اتوکد را یکبار ببندید و باز کنید. تمامی فایلهای Load شده قابل استفاده است.

یک پیشنهاد: فقط فایلهایی را که زیاد مورد استفاده تان قرار میگیرد را به صورت دائم Load کنید.
 

عمو رسول

عضو جدید
[FONT=tahoma,verdana,arial,helvetica,sans-serif]چرا AutoLISP را میخوانیم؟[/FONT]

[FONT=tahoma,verdana,arial,helvetica,sans-serif] [/FONT]
[FONT=tahoma,verdana,arial,helvetica,sans-serif]AutoLISP ابزار بسیار قدرتمندی در ایجاد تغییر در اتوکد است و با کمک این ابزار می‏توان در وقت صرفه‏ جویی کرد و برنامه‎های قدررتمندی نوشت. با کمک این ابزار می‏توان برای کنترل ترسیمات، بانک اطلاعاتی و برنامه‏های کاربردی خودتان برنامه‏ هایی بنویسید.[/FONT]

[FONT=tahoma,verdana,arial,helvetica,sans-serif] [/FONT]
[FONT=tahoma,verdana,arial,helvetica,sans-serif]نکته ای در مورد لیسپ و اتولیسپ[/FONT]

[FONT=tahoma,verdana,arial,helvetica,sans-serif] [/FONT]
[FONT=tahoma,verdana,arial,helvetica,sans-serif]لیسپ اولین زبان برنامه نویسی است که به برنامه نویس امکان توسعه ی برنامه با استفاده از عبارت‏های شبیه به زبان انگلیسی را می‏دهد.[/FONT]

[FONT=tahoma,verdana,arial,helvetica,sans-serif] [/FONT]
[FONT=tahoma,verdana,arial,helvetica,sans-serif]نگارش اتولیسپ برای اتوکد یکی از زیر مجموعه‏ های این زبان برنامه نویسی است. توسعه دهندگان نرم افزار Autodesk تنها فرامینی که مناسب این نیاز بوده است را انتخاب کرده‏اند و حتا برخی از آنها را تغییر داده‏ اند.
[/FONT]

[FONT=tahoma,verdana,arial,helvetica,sans-serif] [/FONT]
[FONT=tahoma,verdana,arial,helvetica,sans-serif]شاید تعجب کنید که چرا اتودسک زبانی مثل بیسیک یا زبان‏های مشهور دیگر را به عنوان ابزار برنامه‏ نویسی انتخاب نکرده است. در صورتی که با اتولیسپ آشنا شوید درمیابید که اتولیسپ تنها زبانی است که می‏تواند با قدرت زیاد با لیستی از مقادیر ( مثل مختصات x.y.z) کار کند و بنابراین انتخاب لیسپ یک انتخاب دقیق و هوشیارانه است.
[/FONT]

[FONT=tahoma,verdana,arial,helvetica,sans-serif] [/FONT]
[FONT=tahoma,verdana,arial,helvetica,sans-serif]برای وارد شدن به محیط برنامه نویسی لیسپ به روش زیر عمل میکنیم:
[/FONT]

[FONT=tahoma,verdana,arial,helvetica,sans-serif] [/FONT]
[FONT=tahoma,verdana,arial,helvetica,sans-serif]از منوی Tools زیر گروه auto LISP گزینه Visual LISP Editor را انتخاب کنید[/FONT]





بعد از انتخاب گزینه، صفحه Visual LISP For Editor باز میشه و میتونید برنامه هاتونو تووش بنویسید.



 

عمو رسول

عضو جدید
آموزش برنامه نویسی اتولیسپ (فصل اول) (قسمت دوم)

آموزش برنامه نویسی اتولیسپ (فصل اول) (قسمت دوم)

مستندسازی با سمی‏ کالن ( ; )

وقتی که خطی را با سمی‏ کالن شروع میکنید، محتوای نوشته شده در خط مذکور به داخل حافظه بارگذاری نمیشود. خطوطی که به این ترتیب به برنامه اضافه میشوند برای توضیحاتی پیرامون برنامه و مستندسازی برنامه به کار میرود. زمانی که برنامه به داخل حافظه بارگذاری میشود از توضیحات بعد از سمی‏ کالن صرف نظر می‏شود. باید با افزودن مستند به برنامه‏ های خود عادت کنید و مطالبی در مورد عمل انجام شده، متغیرها یا روش تجدید نظر کردن در برنامه را به عنوان مستند به برنامه‏ های خود بیافزایید. این توضیحات به هنگام اشکال زدایی یا ایجاد تغییر در برنامه یاریتان می‏دهد. توضیحاتی که به این ترتیب به برنامه اضافه می‏شود، حافظه ارزشمندی را در اتوکد اشغال نمی‏کند به طوری که تغییر محسوسی بعد از نوشتن این توضیحات احساس نمی‏کنید . مثال:

(prompt "This Will Print");This is a comment.

از جایی که سمی‏ کالن قرار گرفته است تا پایان خط یک عبارت توضیحی فرض می‏شود. در صورتی که می‏خواهید خط بعد نیز به عنوان یک عبارت توضیحی شناخته شود، این خط را نیز باید با سمی‏ کالن شروع کنید.
پرانتز ها ()پرانتزها در برنامه ‏های اتولیسپ از نقش حیاتی برخوردارند. تمامی فرمان‏ها باید در داخل پرانتز قرار گیرند. اتولیسپ با استفاده از پرانتزهای تودرتو، امکان نوشتن فرمانی بر روی فرمان دیگر را فراهم می‏آورد. وقتی پرانتزها را به برنامه ‏ی خود می‏افزایید، فرمان‏های تودرتو عمیق‏تر و عمیق‏تر می‏شوند.

Defun
اولین دستور اتولیسپ این دستور می‏باشد. همه‏‏ ی برنامه‏ های اتولیسپ با این دستور شروع میشود.
(defun drawline ()

مفهوم این عمل این است که کلیه متغیرهایی که برای استفاده از آنها طرحی دارید سراسری هستند. یک متغیر سراسری در اینجا به این معنی است که این متغیر بعد از پایان یافتن برنامه مقدار خود را از دست نمی‏دهد. برای مثال اگر R مقداری برابر 17 داشته باشد، بعد از شروع برنامه‏ ی بعدی نیز، مقدار آن همان 17 خواهد بود.
دومین حالتی که می‏توانیم به کار ببریم، تعریف متغیرها به صورت محلی است. برای مثال در صورتی که در یک برنامه به R مقدار 17 را بدهید، این مقدار تنها در همان برنامه برای R باقی می‏ماند. چنین متغیری در اصطلاح متغیر محلی خوانده می‏شود. در صورتی که بخواهید متغیری را به صورت محلی تعریف نمایید، باید آن را بعد از نام برنامه قرار داده و قبل از نام متغیر یک علامت / قرار دهید. برای مثال:

(defun drawline (/ pnt1 pnt2)

به خاطر داشته باشید که drawline نام تابع است. در مثال فوق، بعد از نام برنامه متغیرهایی که باید در تابع به صورت محلی به کار گرفته شوند، لیست شده است. یک متغیر محلی، متغیری است که مقدار آن تنها برای برنامه در حال اجرا معتبر است. یک تابع در صورتی که متغیری برای آن تعریف نشود، باید با () همراه باشد.
به خاطر داشته باشید که بستن پرانتز به معنای پایان یافتن تابع است. در صورتی که در یک فایل بیش از یک تابع قرار داشته باشد هر تابع باید به روش گفته شده به وسیله‏ ی پرانتزها محصور گردد.سومین انتخاب، لیست کردن متغیر ها بدون به کار گرفتن علامت / است. این روش برخورد با تابع به این معناست که متغیرها باید توسط مقادیر ارسالی از برنامه‏ های خارجی مقدار دهی شوند. برای مثال:

(defun dtr (a)

در صورتی که قبل از نام تابع از C: استفاده نمایید، نباید به هنگام فراخوانی تابع از پرانتز استفاده نمایید. این موضوع مهم است زیرا در این صورت اتوکد فکر می‏کند تابع مذکور می‏تواند به صورت یک فرمان اتوکد که در خط فرمان به کار گرفته می‏شود، مورد استفاده قرار گیرد. در حقیقت هنگامی که تابع با C: همراه می‏شود، می‏تواند مانند دیگر فرمان‏های اتوکد مورد استفاده قرار گیرد. برای مثال:

(defun C: drawline()

 

عمو رسول

عضو جدید
آموزش برنامه نویسی اتولیسپ (فصل اول) (قسمت سوم)

آموزش برنامه نویسی اتولیسپ (فصل اول) (قسمت سوم)

استفاده از متغیر ها

متغیرها شبیه X ، Yدر جبر هستند. این اجزا نمایانگر مقادیر دیگر هستند و میتواند با ذخیره سازی داده در خود برای کار در آینده مورد استفاده قرار گیرد. در اتولیسپ، متغیر ها میتوانند هر مجموعه ای از حروف یا اعداد باشند با این شرط که با یک حرف شروع شوند. تنها در نام یک متغیر از حروف A-Z و ارقام 0-9 میتوان استفاده کرد. برای مثال:

A

Arc1

Point1

Pnt1

D3
یکی از عمده ترین تفاوت های بین یک متغیر اتولیسپ با متغیر های دیگر زبان ها این است که در این نوع متغیر ها میتوان چندین مقدار را در یک متغیر نگه داشت. یک مقدار میتواند هر یک از انواع زیر باشد:

اعداد حقیقی اعداد ده‏دهی مثل 134.2039 رشته john jay jones صحیح اعداد شمارشی مثل 3،9
بنابراین یک متغیر میتواند هر چیزی را ذخیره کند.

لیست ها

یک لیست میتواند به چندین مقدار تخصیص داده شود. هر مقدار یک عنصر نامیده میشود. توانایی کار با لیست ها قدرت ویژه ای به اتولیسپ برای کار در اتوکد میدهد. برای مثال، یک نقطه ی دو بعدی در ترسیمات به وسیله ی دو مقدار که نشان دهنده ی مختصات X,Y هستند، تعیین میشود. در اتولیسپ نقطه ی فوق میتواند توسط یک متغیر توصیف شود. یک لیست با دو عنصر که اولین عنصر آن نشان دهنده ی مقدار X و دومین مقدار نشان دهنده ی Y است.

یک لیست در اتولیسپ در یک جفت پرانتز قرار میگیرد و میتواند ظاهری شبیه به مثال های زیر داشته باشد:

(7 9) (3 5 9 7) (3.203 6.902 8.203)
در صورتی که مقدار یک متغیر منحصر به یک ارزش باشد، در داخل پرانتز قرار داده نمیشود، مثل 6، در این صورت این متغیر یک لیست نیست. موجودیت خط سه بعدی یک مثال کامل برای یک لیست است. اطلاعات مربوط به خط میتواند، اطلاعات مختصات X,Y,Z ابتدای خط و مختصات X,Y,Z انتهای خط، لایه، نوع خط، اندازه خط باشد.

منبع: http://cadman2013.blogfa.com/post/9
 

عمو رسول

عضو جدید
آموزش برنامه نویسی اتولیسپ (فصل اول) (قسمت چهارم)

آموزش برنامه نویسی اتولیسپ (فصل اول) (قسمت چهارم)

آغاز اجرای برنامه ها

بعد از نوشتن برنامه و بارگذاری فایل دربرگیرنده‏ ی آن، مابقی کار ساده است.

برنامه باید از طریق خط فرمان در اتوکد و یا از طریق خط اعلان وارد شود و یا به منو یا toolbar اضافه گردد. به خاطر داشته باشید که ابتدا باید فایل را بارگزاری نمود و نام برنامه نیز باید توسط پرانتز محصور گردد، مگر اینکه نام برنامه همراه با C: باشد.
(graphscr) صفحه تصویر گرافیکی

بعضی از دستورات باعث میشوند که پنجره متنی اتوکد روی پنجره گرافیکی اتوکد باز شود. این دستور باعث میشود که پنجره ی متنی اتوکد بسته شود.این دستور در اتولیسپ همان F2 در اتوکد است.


(graphscr)

(prompt) عبارت عمومی چاپ متن

این فرمان برای چاپ متن، بر روی خط فرمان به کار گرفته میشود. در خط فرمان اتوکد تایپ کنید:
(prompt "hello how are you")

پیامی که در داخل کوتیشن قرار دارد در خط فرمان چاپ میشود.

نکته: برای دیدن نتیجه سریع فرمان‏هایی مانند فرمان بالا باید این فرمان‏ها را در خط فرمان اتوکد تایپ نمود. منظور از <Enter> این است‏ که بعد از نوشتن دستور دکمه Enter را بزنید.

منبع: http://cadman2013.blogfa.com/post/10

 

عمو رسول

عضو جدید
آموزش برنامه نویسی اتولیسپ (فصل اول) (قسمت پنجم)

آموزش برنامه نویسی اتولیسپ (فصل اول) (قسمت پنجم)

(terpri) پایان چاپ و \n

این فرمان جهت تعویض خط به کار میرود و سبب میشود که چاپ متن بعدی بر روی خط بعدی ظاهر گردد. به طور کلی این فرمان بعد از دستورات لیسپ به کار میرود.

تایپ کنید:
(prompt "hello how are you") (terpri)

اتولیسپ راه دیگری برای پایان دادن به خط دارد و آن استفاده از \n قبل از چاپ عبارت بعدی است.گاهی نیاز میشود که متن بعدی درست بر روی همان خط چاپ گردد.این کار شبیه به کاریست که اتوکد به طور خودکار انجام میدهد.در برخی از مواقع نیز نیاز میشود که متن بر روی خط بعدی شروع شود.

تایپ کنید:
(prompt "pick a point: ")(prompt "pick 2[SUP]nd[/SUP] point: ")
به روش ظاهر شدن دو فرمان بر روی یک خط توجه کنید.

تایپ کنید:
(prompt "pick a point: ")(terpri)(prompt "pick 2[SUP]nd[/SUP] point: ")

دو عبارت حالا بر روی دو خط متفاوت ظاهر میشوند.

راه دیگری که برای تعویض سطر وجود دارد، به صورت زیر است

تایپ کنید:
(prompt "pick a point: \n")(prompt "pick 2[SUP]nd[/SUP] point: ")

معمول ترین و بهترین روش استفاده از این دستورات، استفاده از \n قبل از متن مورد نظر است.

تایپ کنید:
(prompt "\npick a point: ")(prompt "\npick 2[SUP]nd[/SUP] point: ")

این روش بدون توجه به آنچه که سابق رخ داده است شروع متن بر روی خط جدید را تضمین میکند.

به خاطر داشته باشید که \n باید در داخل کوتیشن قرار بگیرد و حتمن از حروف کوچک در نوشتن آنها استفاده شود.

(prompt "\n") عملکردی شبیه به (terpri) دارد.

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

منبع: http://cadman2013.blogfa.com/post/11
 

عمو رسول

عضو جدید
آموزش برنامه نویسی اتولیسپ (فصل اول) (قسمت ششم)

آموزش برنامه نویسی اتولیسپ (فصل اول) (قسمت ششم)

Set equal یا set quote

(setq) متغیر اتولیسپ و سمبل مشخص شده را میگیرد و متغیر را برابر با مقدار سمبل قرار میدهد. دستور فوق یک عبارت تخصیص است و مقدار یک متغیر یا ثابت را به متغیر دیگری تخصیص میدهد.

نکته مهم: (setq) یک فرمان تخصیص ابتدایی در اتولیسپ است. در اتولیسپ، علامت = به عنوان علامت تخصیص به کار نمیرود. = به غیر از دستور (if…) و دیگر دستورات غیر تخصیصی کاربردی ندارد. این علامت نمیتواند متغیری را مساوی با متغیر دیگری قرار دهد. این کار تنها از فرمان (setq) بر می آید. در اولویت عبارت (setq) باید کمی دقت کرد.

(setq a b)

این عبارت مقدار b را به متغیر a تخصیص میدهد.اولین متغیر بعد از (setq) متغیری است که مقدار را دریافت میکند.دومین متغیر مقدار خود را به متغیر اول میدهد.این دستور تنها برای تخصیص مقادیر متغیر ها به کار نمیرود.

میتوانید از مقادیر ثابت، اعداد و یا رشته ها نیز استفاده نمایید:
(setq a "hello how are you")

در صورتی که اقدام به چاپ a نمایید، hello how are you را خواهید دید.
(setq a 7)

بعد از اجرای دستور فوق، مقدار a برابر 7 خواهد شد.

تایپ کنید:
(setq a 7)

تایپ کنید:
!a

مقدار 7 بر روی خط فرمان ظاهر خواهد شد. به نحوه عمل «!» در چاپ مقادیر متغیر ها دقت کنید.

هر زمانی که بخواهید مقدار یک متغیر را بدانید، به سادگی میتوانید «!» را در ابتدای نام متغیر قرار دهید تا مقدار متغیر چاپ شود.

تایپ کنید:
(setq b "john")

تایپ کنید:
!b

لغت john باید بر روی خط فرمان ظاهر شود.

تایپ کنید:
(setq a b)

تایپ کنید:
!a

لغت john باید بر روی خط فرمان ظاهر گردد. در این مثال، مقدار متغیری را به متغیر دیگر تخصیص داده اید. هر دو متغیر a و b حالا مقدار یکسانی دارند.

منبع: http://cadman2013.blogfa.com/post/12
 

عمو رسول

عضو جدید
آموزش برنامه نویسی اتولیسپ (فصل اول) (قسمت هفتم)

آموزش برنامه نویسی اتولیسپ (فصل اول) (قسمت هفتم)

(getpoint) انتخاب یک نقطه
دستور فوق یک دستور ورودی است که برای انتخاب یک نقطه استفاده می‏شود. تا زمانی‏که نقطه ‏ای بر روی صفحه اتوکد انتخاب نکنید اتفاقی نخواهد افتاد. در صورتی که از دستور (setq) همراه با فرمان (getpoint) استفاده نمایید، مختصات X، Y و Z نقطه انتخاب شده به متغیری که توسط (setq) مشخص شده است، اختصاص می‏یابد.

می‏توانید همواره با دستور (getpoint) پیامی را نیز داشته باشید تا کاربر از کاری که باید انجام دهد مطلع شود.

تایپ کنید:
(getpoint)

چه اتفاقی رخ می‏دهد؟ اتوکد منتظر انتخاب نقطه‏ ای از طرف شما خواهد ماند.

نقطه‏ ای را بر روی صفحه اتوکد انتخاب نمایید. مختصات نقطه بر روی خط فرمان بین دو پرانتز ظاهر می‏شود.

تایپ کنید:
(setq a (getpoint “Pick first point”))

فرمان (setq …) مختصات X، Y و Z نقطه انتخاب شده به وسیله فرمان (getpoint …) را به متغیر a اختصاص خواهد داد. به پیام موجود در کوتیشن‏ها که بعد ار (getpoint) آمده است، دقت نمایید. این پیام بر روی خط فرمان ظاهر خواهد شد. در صورتی که می‏خواهید پیام بعدی در خط بعد ظاهر شود به یک فرمان (terpri) نیاز دارید.

توجه: بهترین راه برای نوشتن چنین دستوراتی استفاده از شیوه زیر می‏باشد:
(setq a (getpoint “\nPick first point”))

توجه داشته باشید که (getpoint) با پرانتزهای خود به صورت تودرتو قرار گرفته است. کلیه فرامین باید با پرانتز شروع شوند؛ حتا اگر دربردارنده فرمان دیگری باشند.

نکته: پرانتزها در برنامه نویسی لیسپ بسیار مهم هستند. اما جای نگرانی نیست چون وقتی در محیط ویژوال لیسپ برنامه نویسی می‏کنید، وقتی پرانتزی را میبندید، پرانتز مقابلش پررنگ خواهد شد. برای روشن شدن این قضیه، این‏کار را در محیط ویژوال لیسپ امتحان کنید.

تایپ کنید:
!a

مقدار نهایی a حالا شامل سه مقدار می‏باشد. مقادیر حقیقی X، Y و Z.

(setq …) راه بسیار مناسبی برای به قرار دادن لیستی از مقادیر در یک متغیر است. در صورتی که این مقادیر را در یک متغیر لیست ذخیره کنید، می‏توانید در آینده از آنها استفاده کنید.

مثال:
(setq a (getpoint “\nPick first point”))
(setq b (getpoint “\nPick first point”))

الان دو لیست دارید که در دو متغیر متفاوت ذخیره شده ‏اند.



منبع: http://cadman2013.blogfa.com/post/13
 

عمو رسول

عضو جدید
آموزش برنامه نویسی اتولیسپ (فصل اول) (قسمت هشتم)

آموزش برنامه نویسی اتولیسپ (فصل اول) (قسمت هشتم)

(command) استفاده از فرمان‏های اتوکد
یکی از پرکاربردترین دستورات لیسپ می‏باشد. این دستور اجازه استفاده از همه فرامین اتوکد را در یک برنامه لیسپ فراهم می‏آورد.

متغیرهایی که به دنبال فرمان می‏آیند، در فرمان مورد استفاده قرار می‏گیرند.

تایپ کنید:

(command “line” a b)

در صورتی‏که مختصات یک نقطه در متغیر a ذخیره شده باشد و مختصات نقطه دیگر در متغیر b ذخیره شده باشد، دستور بالا یک خط سه بعدی از نقطه a به نقطه b ترسیم می‏کند. اگر دقت کنید مکان نما از نقطه b قطع نشده است. فرمان را کنسل کنید و خط رسم شده را پاک کنید.

تایپ کنید:
(command “line” a b ““)

توجه داشته باشید حالا خط مورد نظر رسم شده ولی در فرمان باقی نمانده است. کوتیشن مضاعف مانند کنسل عمل می‏کند.

(command “line” a b c d “c”)

اگر تعداد متغیرها زیاد باشد و بین دو کوتیشن‏ها c بنویسید، اولین نقطه به آخرین نقطه وصل می‏شود. (در دستور بالا نقطه d به نقطه a وصل می‏شود)


نکته: از این به بعد برنامه‏ هایی که نام Les دارند را باید به صورت کامل بنویسید. برای این کار پنجره Visual LISP For Auto Cad را فعال می‏کنیم و دکمه New را می‏زنیم تا صفحه Untitled باز شود. برای بارگذاری موقت و امتحان برنامه‏ ها، از دکمه
Load active edit window استفاده کنید و بعد از زدن دکمه، اسم برنامه (اسمی که در جلوی c: نوشته شده است) را در خط فرمان بنویسید و اینتر کنید.


منبع: http://cadman2013.blogfa.com/post/14
 

عمو رسول

عضو جدید
آموزش برنامه نویسی اتولیسپ (فصل اول) (قسمت نهم)

آموزش برنامه نویسی اتولیسپ (فصل اول) (قسمت نهم)

برنامه Les1.lsp
حالا به بررسی اولین برنامه اتولیسپ می‏پردازیم. این برنامه طرز کار کلیه فرامینی که تا به حال آموخته ‏اید را نشان می‏دهد. در این برنامه باید دو نقطه را در صفحه انتخاب کنید و بعد از انتخاب دو نقطه یک خط راست کشیده می‎شود.

(defun c: drawline (/ p0 p1)

(graphscr)

(setq p0 (getpoint “\nPick First Point “))

(setq p1 (getpoint “\nPick 2[SUP]nd[/SUP] Point “))

(prompt “\nThank You”)

(command “line” p0 p1 ““)

)

توضیح خط به خط برنامه
(defun c: drawline (/ p0 p1)

تعیین نام برنامه و محلی کردن متغیرها
(graphscr)

صفحه گرافیکی اتوکد نشان داده می‏شود.
(setq p0 (getpoint “\nPick First Point “))

تعیین متغیر p0 به عنوان نقطه اول و جمله Pick First Point در خط فرمان نمایش داده می‏شود. باید نقطه‏ ای را در اتوکد انتخاب نمایید.
(setq p1 (getpoint “\nPick 2[SUP]nd[/SUP] Point “))

تعیین متغیر p1 به عنوان نقطه دوم و جمله Pick 2[SUP]nd[/SUP] Point در خط فرمان نمایش داده می‏شود. باید نقطه‏ ای را در اتوکد انتخاب نمایید.

(prompt “\nThank You”)

جمله Thank You در خط فرمان نشان داده می‏شود.
(command “line” p0 p1 ““)

ترسیم خط از نقطه p0 به p1 (نقاطی که در اتوکد انتخاب کردید)
)

برنامه را به اتمام می‏رساند.

برنامه را با نام Les1 در یک پوشه ذخیره کنید.


منبع: http://cadman2013.blogfa.com/post/15
 

عمو رسول

عضو جدید
آموزش برنامه نویسی اتولیسپ (فصل دوم) (قسمت اول)

آموزش برنامه نویسی اتولیسپ (فصل دوم) (قسمت اول)

مدیریت لیست‏ها

گرفتن جزئی از یک لیست

هنگامی که در فصل یک (setq a (getpoint)) را به کار گرفتید، مختصات X،Y و Z را به متغیری به نام a اختصاص دادید. این متغیر لیستی است که از سه عنصر تشکیل شده است. در صورتی که بخواهید محتویات متغیر را بررسی کنید، اتولیسپ راه ساده‏ای برای این کار تدارک دیده است.

در خط فرمان تایپ کنید:
!a

با قرار دادن علامت «!» در جلوی نام متغیر مقدار یا مقادیر متغیر نشان داده می‏شود.

(3.0 5.0 0.0)

وقتی «!a» نوشته و اینتر بزنید، مقادیری دیده می‏شود که به معنای وجود لیستی با سه متغیر است. 3 مختصات X، 5 مختصات Y و 0 مختصات Z است. ترکیب مختصات X از یک نقطه و Y از نقطه دیگر، در ترسیم چهارضلعی‏ها، ساخت شبکه‏ ها، مشتق کردن نقطه ‏ای برای شروع یک متن و انتخاب شیء‏ها بسیار سودمند است. بنابراین نیاز به به راهی وجود دارد که با کمک آن بتوان مختصات را جدا کرد، به طوری‏که بتوان آن را به مختصات سومی اختصاص داد.


(car) مختصات X (اولین عنصر) برخی از فرمان‏های اتولیسپ به سادگی توسط زبان محاوره ‏ای قابل ترجمه نیستند. (car) یکی از فرامین است. این فرمان، دستوری ابتدایی برای کار با بخشی از لیست است.

(car) اولین عنصر لیست را در اختیارتان می‏گذارد. برای مثال، در صورتی که a در برگیرنده مقادیر زیر باشد:
(3.0 5.0 0.0)

در این صورت (setq b (car a)) به متغیر b اولین عنصر در a را اختصاص می‏دهد. بنابراین بعد از اجرای فرمان فوق، b مقدار 3 را خواهد داشت.


در خط فرمان تایپ کنید:

(setq a (getpoint “Pick a Point “))

حالا نقطه‏ ای را در صفحه انتخاب کنید.


در خط فرمان تایپ کنید:

!a

مقدار a لیستی خواهد بود شامل دو یا سه عدد که نشان‏دهنده مختصات X،Y و Z نقطه انتخاب شده است. این مختصات در داخل پرانتز قرار می‏گیرند و بین آنها تنها یک فاصله خالی وجود دارد.


در خط فرمان تایپ کنید:

(setq b (car a))
!b

توجه کنید که مقدار b در پرانتز قرار ندارد که به معنای این است که متغیر b حالا تنها شامل یک مقدار می‏باشد و جزئی از یک لیست محسوب نمی‏شود.

منبع: http://cadman2013.blogfa.com/post/16
 

عمو رسول

عضو جدید
آموزش برنامه نویسی اتولیسپ (فصل دوم) (قسمت دوم)

آموزش برنامه نویسی اتولیسپ (فصل دوم) (قسمت دوم)

(cdr) از دوم به بعد

(cdr) به شما عنصر دوم به علاوه بقیه عناصر موجود در لیست را می‏دهد. برای مثال، در صورتی که متغیر a لیستی به صورت زیر باشد:
(3 5 7 9)

در این صورت (setq b (cdr a)) متغیر b در برگیرنده دومین عنصر لیست به علاوه بقیه عناصر موجود در لیست a خواهد بود. بنابراین b دربرگیرنده عناصر زیر است:
(5 7 9)

(cadr) مختصات Y (دومین عنصر)

در خط فرمان تایپ کنید:
(setq a (getpoint “Pick a Point “))

حالا نقطه ‏ای را در صفحه انتخاب کنید.

در خط فرمان تایپ کنید:
(setq b (cadr a))

در خط فرمان تایپ کنید:
!b

همان طور که خواهید دید، حاصل فرمان فوق، مقدار مختصات Y برای متغیر b خواهد بود.

(caddr) مختصات Z (سومین عنصر)

تمام نقاط به وسیله مختصات X،Y و Z مشخص می‏شوند. (caddr) فرمانی است که سومین عنصر (مختصات Z) را باز می‏گرداند.

در خط فرمان تایپ کنید:
(setq a (getpoint “Pick a Point “))

حالا نقطه ‏ای را در صفحه انتخاب کنید.

در خط فرمان تایپ کنید:
(setq b (caddr a))

در خط فرمان تایپ کنید:
!b

این فرمان تنها مختصات Z را در اختیارتان می‏گذارد.


منبع: http://cadman2013.blogfa.com/post/17
 

عمو رسول

عضو جدید
آموزش برنامه نویسی اتولیسپ (فصل دوم) (قسمت سوم)

آموزش برنامه نویسی اتولیسپ (فصل دوم) (قسمت سوم)

(list) ساخت یک لیست

تا به حال عناصر مختلفی از لیست را به متغیر اختصاص داده‏ ایم. اما تا کنون تغییری که به وجود آمده است، تنها شامل یک مقدار از مختصات X،Y و Z می‏شود و یک لیست می‏شود.

اگر بخواهیم لیستی از متغیرهایی که داریم، بسازیم، از دستور (list) استفاده می‏کنیم. برای انجام این کار می‏توانید مقادیر را بعد از فرمان (list) قرار دهید.

در خط فرمان تایپ کنید:
(setq a (getpoint “Pick a Point “))

حالا نقطه‏ ای را در صفحه انتخاب کنید.

در خط فرمان تایپ کنید:
(setq b (getpoint “Pick 2[SUP]nd[/SUP] Point “))

حالا نقطه دیگری را در صفحه انتخاب کنید.

در خط فرمان تایپ کنید:
(setq c (list (car a) (cadr b)))

دستور فوق متغیر c را برابر با لیستی قرار می‏دهد که مختصات X از متغیر a و مختصات Y از متغیر b را شامل می‏شود.


منبع: http://cadman2013.blogfa.com/post/18
 

عمو رسول

عضو جدید
آموزش برنامه نویسی اتولیسپ (فصل دوم) (قسمت چهارم)

آموزش برنامه نویسی اتولیسپ (فصل دوم) (قسمت چهارم)

برنامه Les2.lsp
حالا با دستوراتی که یاد گرفتیم یک چهار ضلعی ترسیم میکنیم. این برنامه برای مشخص کردن دو نقطه که نشان‏دهنده گوشه ‏های چهار ضلعی هستند، سوالاتی می‏کند و سپس چهار ضلعی را رسم می‏کند.

دستورات زیر را تایپ کنید:
(defun c:rectan (/ p1 p2 p3 p4)
(setq p1 (getpoint “\nPick Corner of Rectangle “))
(setq p2 (getpoint “\nPick Other Corner of Rectangle “))
(setq p3 (list (car p1) (cadr p2)))
(setq p4 (list (car p2) (cadr p1)))
(command “line” p1 p2 p3 p4 “c”)
)

توضیح خط به خط برنامه
(defun c:rectan (/ p1 p2 p3 p4)

تعیین نام برنامه و محلی کردن متغیرها

(setq p1 (getpoint “\nPick Corner of Rectangle “))

تعیین متغیر p1 به عنوان نقطه اول و جمله Pick Corner of Rectangle در خط فرمان نمایش داده می‏شود. باید نقطه‏ ای را در اتوکد انتخاب نمایید.

(setq p2 (getpoint “\nPick Other Corner of Rectangle “))

تعیین متغیر p2 به عنوان نقطه دوم و جمله Pick Other Corner of Rectangle در خط فرمان نمایش داده می‏شود. باید نقطه دیگری را در اتوکد انتخاب نمایید.

(setq p3 (list (car p1) (cadr p2)))

تعیین متغیر p3 به عنوان نقطه سوم (مختصات X را از نقطه p1 و مختصات Y را از نقطه p2 گرفته و به نقطه p3 تخصیص می‏دهد)

(setq p4 (list (car p2) (cadr p1)))

تعیین متغیر p4 به عنوان نقطه سوم (مختصات X را از نقطه p2 و مختصات Y را از نقطه p1 گرفته و به نقطه p4 تخصیص می‏دهد)


(command “line” p1 p3 p2 p4 “c”)

نقاط به دست آمده را به هم متصل می‏کند و تشکیل یک چهار ضلعی را می‏دهد.
)

برنامه را به اتمام می‏رساند.

منبع: http://cadman2013.blogfa.com/post/19
 

عمو رسول

عضو جدید
آموزش برنامه نویسی اتولیسپ (فصل دوم) (قسمت پنجم)

آموزش برنامه نویسی اتولیسپ (فصل دوم) (قسمت پنجم)

(getcorner) انتخاب گوشه دیگر

(getcorner) شبیه به (getpoint) کار می‏کند با این تفاوت که یک نقطه انتخاب می‏شود و به یک متغیر اختصاص می‏ یابد. حالا احتیاج به نقطه دوم دارید، این نقطه به عنوان نقطه دوم در نظر گرفته می‏شود.

برنامه Les3.lsp
حالا با این دستور یک چهار ضلعی ترسیم میکنیم.

دستورات زیر را تایپ کنید:
(defun c:rectan1 (/ p1 p2 p3 p4)
(setq p1 (getpoint “\nPick Corner of Rectangle "))
(setq p2 (getcorner “\nPick Other Corner of Rectangle “ p1))
(setq p3 (list (car p1) (cadr p2)))
(setq p4 (list (car p2) (cadr p1)))
(command “line” p1 p2 p3 p4 “c”)
)

توضیح خط به خط برنامه

(defun c:rectan1 (/ p1 p2 p3 p4)

تعیین نام برنامه و محلی کردن متغیرها

(setq p1 (getpoint “\nPick Corner of Rectangle “))

تعیین متغیر p1 به عنوان نقطه اول و جمله Pick Corner of Rectangle در خط فرمان نمایش داده می‏شود. باید نقطه ‏ای را در اتوکد انتخاب نمایید.

(setq p2 (getcorner “\nPick Other Corner of Rectangle “ p1))

تعیین متغیر p2 به عنوان نقطه دوم و جمله Pick Other Corner of Rectangle در خط فرمان نمایش داده می‏شود. این‏بار مکان‏ نما به صورت پنجره در می‏آید.

(setq p3 (list (car p1) (cadr p2)))

تعیین متغیر p3 به عنوان نقطه سوم (مختصات X را از نقطه p1 و مختصات Y را از نقطه p2 گرفته و به نقطه p3 تخصیص می‏دهد)

(setq p4 (list (car p2) (cadr p1)))

تعیین متغیر p4 به عنوان نقطه سوم (مختصات X را از نقطه p2 و مختصات Y را از نقطه p1 گرفته و به نقطه p4 تخصیص می‏دهد)

(command “line” p1 p3 p2 p4 “c”)

نقاط به دست آمده را به هم متصل می‏کند و تشکیل یک چهار ضلعی را می‏دهد.

)

برنامه را به اتمام می‏رساند.

منبع: http://cadman2013.blogfa.com/post/20


 

Similar threads

بالا