دورات هندسية

 

 

فكره عن الاتوليسب الخاص بالاتوكاد

صفحة 1 من 2 12 الأخيرةالأخيرة
النتائج 1 إلى 10 من 13
  1. [1]
    الصورة الرمزية م_عمرو
    م_عمرو
    م_عمرو غير متواجد حالياً

    عضو

    تاريخ التسجيل: Jul 2006
    المشاركات: 48
    Thumbs Up
    Received: 1
    Given: 0

    فكره عن الاتوليسب الخاص بالاتوكاد

    اخواني قرات هذا المقال من موقع CAD GIS GPS MAGAZINE و وددت ان يقرأه كل من هو مثلي ليس عنده خلفيه عن هذا الموضوع و لا ننسي ان ننسب الفضل اولا و اخيرا لكاتب المقال الفاضل : سهيل زخّور جامعة قطر - قسم الهندسة المدنية والمعمارية

    الموضوع :


    سهيل زخّور

    جامعة قطر - قسم الهندسة المدنية والمعمارية

    [email protected] هذا البريد الإلكتروني محمي من المتطفلين و برامج التطفل، تحتاج إلى تفعيل جافا سكريبت لتتمكن من مشاهدته


    إذا كنت من مستخدمي برنامج أوتوكاد، فلا بد أنك قد سمعت بكلمة أوتوليسب تطرق بابك من حين لآخر، سواء كان ذلك من مستخدمين آخرين، أو عند تصفح الشبكة العالمية، أو حتى عند مطالعتك لإحدى المقالات المختصة بنظم التصميم بالحاسوب (CAD Systems). فما هو أوتوليسب إذاً؟

    شيء من التاريخ:

    أوتوليسب (AutoLISP) لغة برمجة طورتها شركة أوتوديسك (الشركة المنتجة لأوتوكاد) لتزيد من إمكانيات مستخدم أوتوكاد، بمنحه إمكانية تعريف مجموعة من الأوامر و التعليمات معاً، بحيث تُنفذ كأمر مستقل، يُضاف إلى مكتبة أوامر أوتوكاد المعروفة.

    أُطلقت أوتوليسب في مايو 1985، كرزمة مستقلة عن أوتوكاد، ثم ما لبثت أوتوديسك أن ضمتها إلى أوتوكاد 2.18 في كانو ن الثاني/يناير 1986، وعندئذٍ أصبحت أوتوليسب في متناول أيدي مستخدمي أوتوكاد، كونها غدت جزءاً لا يتجزأ من البرنامج نفسه.

    ومما لابد من ذكره أن أوتوليسب نسخة مبسطة و مطورة في الأصل عن لغة الذكاء الصناعي الشائعة LISP و التي استمدت اسمها من عبارة "معالجة اللوائح" (LISt Processor)، ولغة البرمجة هذه لغة برمجة كائنية المنحى، طورها John McCarthy في أواخر الخمسينات، و تعتبر بحق من أقدم لغات البرمجة التي لم تزل مستخدمة حتى اليوم بشكل أساسي في تطبيقات الذكاء الصناعي و الأنظمة الخبيرة (Expert Systems)، و تعتبر أوتوليسب نسخة معدّلة و مبسطة عن هذه اللغة طورت خصيصاً بحيث تتوافق مع البيئة الرسومية التي يتمتع بها أوتوكاد.

    فسر أوتوليسب:

    أتوليسب لغة مفسرة (Interpreted Language)، يعني ذلك أن كل شفرة تدخل إلى نافذة الأوامر في أوتوكاد يقرؤها مفسر (Interpreter) أوتوليسب مباشرة، فيتم تحديد ما إذا كانت هذه الشفرة خاصة بأوتوليسب أم لا، فإن كانت كذلك، يقوم عندها المفسر بالمعالجة ويعيد الجواب إلى المستخدم فور الانتهاء منها، سواء عبر سطر الأوامر ذاته أو من خلال تنفيذ عملية ما على الشاشة. فإذا أدخلنا مثلاًَ في سطر أوامر أوتوكاد العبارة (+ 0.618 1) يعيد مفسر أوتوليسب الرقم 1.618 كناتج لهذه العملية، كما يلي:

    Command: (+ 0.618 1)
    1.618
    Command:

    بعد أن قرأ مفسر أوتوليسب العبارة السابقة و حدد ماهيتها على أنها شفرة أوتوليسب و ليست أمر أوتوكاد عادي، قام بمعالجتها و إظهار الناتج، تسمى هذه العملية في اللغات المفسّرة بحلقة القراءة – التقييم – الطباعة (Read-Eval-Print).

    ُيظهر هذا آلية عمل مفسر أوتوليسب داخل أوتوكاد و يميزه بالتالي عن معظم لغات البرمجة الأخرى مثل سي وباسكال وفورتران التي تعتمد مبدأ اللغة المصرفة (أو المترجمة) Compiled Language، حيث يتم تحويل الشفرة المصدرية المكتوبة بأحد هذه البرامج من صيغة ASCII إلى مجموعة من التعليمات الثنائية Binary بلغة الآلة، ليتمكن الحاسوب من تنفيذها لاحقاً.



    تعبير أوتوليسب:

    إن البنية التي اعتمدناها في المثال السابق والمحاطة بقوسين تدعى تعبيراً (expression) في اصطلاح أوتوليسب، و يتألف التعبير عادة من الأجزاء التالية:

    الوظيفة (function): مثل عملية الجمع في مثالنا السابق.

    الوسائط (arguments): وهي المتحولات التي نمررها إلى الوظيفة، فتنفذ الوظيفة عليها، وهي الرقم 0.681 والرقم 1 في المثال السابق. ويمكن أن تكون هذه الوسائط أرقاماً أو نصوصاً الخ، كما يمكنها أن تكون تعبير أوتوليسب آخر، وتسمى في هذه الحالة تعبيراً معشّشاً.

    الأقواس المتوازنة (balanced parenthesis): وهي مهمة جداً في بناء التعبير، ويجب أن يكون لكل قوس على الجهة اليسرى من التعبير ما يماثله على الجهة اليمنى، وبعد انتهاء مفسر أوتوليسب من قراءة وتقييم التعبير، فإنه يعيد قيمة (value) كنتيجة لتقييم التعبير.

    ويمكننا القول إنه يجب أن يكون لكل ما يوجّه إلى مفسّر أوتوليسب البنية السابقة ذاتها، من أبسط شفرة إلى أعقد برنامج، كونها تشكل قالباً نموذجياً للعمليات داخل أوتوليسب.


    الشكل (1): أجزاء تعبير أوتوليسب.


    أنواع البيانات في أوتوليسب:

    تتوزع البيانات المستخدمة في برامج أوتوليسب إلى أنواع، كما هو مبين في الجدول التالي:



    نوع البيانات
    الشرح

    عدد صحيح (Integer) الأعداد الخالية من فواصل عشرية، مثل -247 و 15

    عدد حقيقي (Real) الأعداد التي تتضمن فواصل عشرية، مثل 0.23 و3.1

    سلسلة (String) مجموعة من الحروف المحاطة بعلامتي اقتباس، مثل "أدخل النقطة الأولى".

    لائحة (List) مجموعة من القيم المرتبطة، يفصل بينها فراغ، ومحاطة بقوسين، مثل ("This" "That").

    مجموعة انتقاء (Selection Set) مجموعة من كائن رسومي واحد أو أكثر، مثل .

    اسم كيان (Entity Name) تسمية رقمية للكائن في الرسم، مثل .

    واصف ملف (File Descriptor) مؤشر إلى ملف فتحه أوتوليسب، مثل #.

    رمز (Symbol) أسماء المتحولات، مثل point1.

    إجراء (Subr) أسماء الوظائف المبنية في أوتوليسب، مثل + وsetq الخ، أو الوظائف الخارجية التي يستطيع أوتوليسب التعامل معها، أو الوظائف التي يعرّفها المستخدم، .



    لن أخوض في شرح محتويات الجدول أعلاه، لأن ذلك يقع خارج حدود المقالة، لكن سأشير فقط إلى أن أهمّية تقسيم البيانات إلى أنواع، تكمن في جعل مفسر أوتوليسب أكثر دقة في تحديد طريقة التعامل مع هذه البيانات، مما يسرع تشغيل البرنامج، كما أن الكومبيوتر عادة ما يخزن أنواع البيانات المختلفة بطرق مختلفة، مما يسهل على أوتوليسب عملية إدارة الذاكرة بشكل أفضل.



    كتابة و تحميل ملفات أوتوليسب:

    اكتب في نافذة أوامر أوتوكاد العبارة التالية متقيداً بما فيها من أقواس وعلامات الإقتباس، ثم اضغط زر الإدخال:

    Command: (alert "Hello World!")

    سترى أن مفسر أوتوليسب قد نفذ التعبير السابق بإظهاره صندوق حوار يحتوي عبارة "Hello World!".



    الشكل (2): صندوق حوار "مرحباً أيتها الدنيا!".


    لقد قُمت لتوك بتنفيذ شفرة مكونة من تعبير وحيد في أتوليسب، مستفيداً من إمكانية تنفيذ شفرة أوتوليسب في سطر الأوامر، هذا هو الحال مع شفرة قصيرة، و لكن الوضع سيختلف تماماً عند العمل مع برنامج قد يمتد إلى عشرات أو ربما مئات الأسطر، عندها لن تستطيع إدخال كل ذلك في سطر الأوامر، بل ستحتاج إلى تنظيم ذلك ضمن ملفات أوتوليسب ليتم تحميلها و تنفيذها لاحقاً.

    تُكتب الشفرة في برامج أوتوليسب عادة باستخدام أي محرر نصوص متوفر مثل برنامج المفكرة في ويندوز، وحفظه في ملف ينتهي بالامتداد LSP، بحيث تخزن وظائف أوتوليسب بشكل إفرادي، أو يجمّع أكثرها استخداماً في ملف واحد. وإذا وجد أوتوكاد أثناء إقلاعه ملفاً يحمل الاسم acad.lsp فإنه يقوم بتحميل الوظائف الموجودة في ذلك الملف تلقائياً. وعادة يلجأ معظم مستخدمي أوتوكاد إلى وضع الوظائف التي يتكرر استخدامهم لها في ملف acad.lsp للاستفادة من ميزة التحميل التلقائي. ويتوضع هذا الملف عادة في مجلد Support في أوتوكاد، ويمكن أيضاً وضعه في أي مجلد آخر لكن عندئذ يجب إضافة مسار الملف إلى مسارات الدعم (Support) باختيار Tools>Options من قائمة أوتوكاد، والانتقال إلى لسان التبويب File، واختيار Support File Search Path، ثم ننقر على زر إضافة (Add) لإضافة المسار الجديد، وبعدها نستخدم زر استعراض (Browse) لتحديد المسار المطلوب، وذلك حتى يتمكن أوتوكاد من تحميل الملف عند الإقلاع.

    ومن الجدير بالذكر أن الملف المذكور يحمّل عند إقلاع أوتوكاد، مع أول ملف يفتح في جلسة العمل، و لايحمّل عند فتح ملفات أخرى في جلسة العمل ذاتها، وأما لتحميل acad.lsp تلقائياً مع كل ملف أوتوكاد يفتح، فلا بد عندها من تحديد سلوك أوتوكاد تجاه هذا الملف، و يتم ذلك في أوتوكاد 2000 في صندوق الحوار السابق في لسان تبويب نظام (System):



    الشكل (3): الخيارات العامة في صندوق حوار "خيارات".


    يمكن التحكم بآلية تحميل ملف acad.lsp بتعديل قيمة متغير البيئة ACADLSPASDOC كما يلي:



    القيمة
    الشرح

    0
    تجعل أوتوكاد يحمّل الملف acad.lsp مع أول ملف أوتوكاد يفتح في جلسة العمل فقط.

    1
    تجعل أوتوكاد يحمّل ملف acad.lsp مع كل ملفات أوتوكاد التي تفتح.



    كما يمكن تحميل ملفات أوتوليسب يدوياً بشكل منفرد، أي دون الحاجة لتجميعها في acad.lsp، باستخدام الأمر "أدوات > أوتوليسب > تحميل" (Tools > AutoLISP > Load). ولكن تحميل الملف بهذه الطريقة يقتضي إعادة تحميله في كل مرة نفتح ملف أوتوكاد، إلا إذا استخدمنا ميزة "مجموعة الإقلاع" (Startup Suite) من نفس صندوق الحوار السابق، بالنقر على زر "إضافة" (Add)، واختيار الملفات المراد تحميلها بشكل دائم، عندها سيتم تحميل هذه الملفات تلقائياً مع كل ملف يفتح، أما استخدام هذه الملفات فيتم عبر إدخال اسم وظيفة أوتوليسب المراد تنفيذها، و ليس أسم الملف نفسه، في نافذة الأوامر، مثل أي أمر من أوامر أوتوكاد العادية.

    وإلى جانب الطرق السابقة هناك العديد من الطرق لتحميل و تنفيذ برامج أوتوليسب، نكتفي بذكر إمكانية تصميم قائمة جديدة، وتحديد اسم وظيفة أوتوليسب المراد تشغيلها عند انتقاء أي من بنود هذه القائمة، حيث يتم تنفيذ البرنامج المطلوب. ويندرج كل ذلك ضمن الإمكانيات الواسعة لتخصيص أوتوكاد بهدف تلبية حاجات محددة.



    فيجوال ليسب:

    بقي مبرمجو أوتوليسب محرومين لفترة طويلة من أداة لكتابة ومراجعة وتطوير برامجهم، ومع أن بعض المبرمجين لجأ إلى محررات نصوص صُمّمت لهذا الغرض، مثل Vital Lisp وغيرها من البرامج غير المجانية في معظم الأحيان، إلا أن السواد الأعظم من مبرمجي أوتوليسب بقي بانتظار ما ستجود به أوتوديسك.

    جاءت بيئة التطوير "فيجوال ليسب" كإصدارة تجريبية بعد إطلاق أوتوكاد 14 بفترة، ولكنها لم تظهر بشكلها الأكمل إلا مع أوتوكاد 2000، كأداة تطوير صممت لتزيد من إمكانيات أوتوليسب، باحتوائها على بيئة تطوير متكاملة (IDE: Integrated Development Environment) تعمل على تسهيل كتابة الشفرة و معالجتها، إضافة إلى تحسينها بإيجاد تقاطعات مشتركة مع الكائنات عبر تقنية ActiveX من مايكروسوفت. وظهرت في هذه البيئة أفكار ووظائف جديدة لم يحلم بها مبرمجو أوتوليسب من قبل، مثل الأحداث والتحكم بالملفات وسجل ويندوز، على سبيل المثال لا الحصر.



    الشكل (4): محرر فيجوال ليسب.


    يعتبر محرر VLISP إضافة مميزة دعمت أوتوكاد، كونه جلب العديد من المزايا إلى جانب كونه محرر للشفرة، من هذه المزايا ما هو وثيق الصلة بالتسمية ذاتها (أي الليسب المرئي Visual LISP) كتمييز أنواع البيانات بألوانها، إضافة لإمكانية تصريف Compile ملفات أوتوليسب ذات اللاحقة LSP إلى ملفات أوتوليسب ذات اللاحقة FAS (نوع آخر من ملفات أوتوليسب تتميز بسرعة تعاملها داخل أوتوكاد، و عدم إمكانية التعديل عليها)، إلى جانب تمكين المبرمج من اختبار برامجه آنياً و اكتشاف عيوبها مبكراً.



    فيجوال ليسب أم فيجوال بيسك للتطبيقات؟

    مع أوتوكاد 14 أصبح بإمكان مبرمجي أوتوكاد العمل مع بيئة برمجة جديدة، طالما تعامل معها مستخدمي برامج مايكروسوفت، و هي فيجوال بيسك للتطبيقات والتي تعرف اختصاراً باسم VBA، حينها بدأ المستخدمون طرح الأسئلة تطرح عن مستقبل أوتوليسب و علاقتها بـ VBA. ومن هذه الأسئلة: هل ستحتل VBA مكان أوتوليسب كبيئة برمجة داخل أوتوكاد، وأيهما أفضل للاستخدام أوتوليسب أم VBA؟.

    إن الإجابة على هذا السؤال لا يمكن أن تكون إجابة متسرعة، إذ تقتضي أخذ العديد من العوامل بعين الاعتبار...

    إن أهم هذه العوامل هو أن لكل بيئة برمجة مزاياها الفريدة التي لا تشاركها بها البيئة الأخرى، فأوتوليسب مثلاً، تتميز بمرونتها الفائقة في تجميع الأوامر و التعليمات بغية إنشاء أوامر جديدة، ذلك بالاعتماد على نفس نسق العمل و استخدام الأوامر داخل أوتوكاد، كون هذه اللغة أصيلة رافقت أوتوكاد منذ نشأته تقريباً، حتى أن مستخدم أوتوكاد المتمرس لا يواجه عادة مشاكل كبيرة في تعلم هذه اللغة، كونه قد اعتاد نفس بيئة العمل.

    أما VBA فهي تعتمد أسلوباً آخر، و ذلك عبر التعامل مباشرة مع كائنات أوتوكاد، و بنفس المستوى الذي يتم فيه التعامل عادة مع الكائنات في تطبيقات مايكروسوفت المختلفة مثل وورد وإكسل، كون هذه البيئة ليست أصيلة في أوتوكاد، بل طُوّعت للعمل معه عبر إضافة العديد من الوظائف التي تسمح بالتعامل مع كائناته، وتكمن أهمية ذلك في السماح لمبرمجي أوتوكاد بالعمل على الأنظمة التي تدعم برمجة الكائنات و هي كثيرة، مما يجعل الرقعة التي يقف إليها هؤلاء تتسع لتشمل الكثير من التطبيقات.

    أما العامل الآخر فهو نوع البرنامج المراد تطويره، فبعض روتينات أوتوليسب مثلاً يمكن برمجتها سريعاً داخل أوتوكاد لتؤدي وظيفة محددة، بينما قد يستغرق العمل وقتاً أطول في حال العمل مع VBA للحصول على نفس النتيجة، و العكس صحيح. وإلى جانب ما تقدم هناك عوامل ثانوية أخرى منها إمكانية تنفيذ روتينات أوتوليسب من سطر الأوامر تماماً كما هو حال أوامر أوتوكاد العادية، أما في VBA فعلينا تشغيل الماكرو من مدير برنامج VBA أي VBA Program Manager، أو كتابة أوامر أوتوليسب قصيرة لتشغيل برامج VBA.

    يمكن القول إذاً أن لكل بيئة نقاط ضعف ونقاط قوة، ولذا فإن معرفة كليهما أمر ضروري لمبرمج أوتوكاد، حتى يساعده ذلك في تحديد أي البيئتين من الأفضل استخدامها في برمجة تطبيق معين، لكن يبقى السؤال الأكثر أهمية لمبتدئ البرمجة في أوتوكاد:

    مع أي بيئة برمجية يجب أن أبدأ أولاً؟

    إن كنت مستخدما متمرساً لأوتوكاد، و تريد أتمتة أعمالك و إضافة بعض الوظائف الجديدة لزيادة إنتاجيتك فعليك بأوتوليسب، وبخاصة إذا كان اهتمامك ينصب على أوتوكاد ذاته، وكنت لا تهتم بربطه مع باقي التطبيقات. وأما إذا كنت مستخدماً جديداً غير متمرس في أوتوكاد، ولديك بعض الخبرة في إحدى لغات البرمجة و خاصة تلك التي تتعامل مع الكائنات (فيجوال بيسك مثلاُ) فيمكنك عندئذ البدء بفيجوال بيسك للتطبيقات، كونها تتقاطع مع العديد من لغات البرمجة.

    وبقي أن أقول أن هناك إمكانيات عديدة لتحقيق ربط البيئتين بعضها ببعض للاستفادة من أهم ما يميزهما معاً، و أعتقد أن خير مثال على هذه الإمكانية المقال المنشور في هذا الموقع بعنوان استخدام صناديق حوار فيجوال بيسك في أوتوليسب.



    كلمة أخيرة:

    إن أهم ما يميز أوتوكاد عن غيره من البرامج، هو المرونة الفائقة التي يبديها عند تخصيصه، ما يجعله يلبي حاجات المستخدم الخاصة، سواء كان ذلك عبر إنشاء أنماط خطوط جديدة أو نقوش تظليل أو إنشاء قوائم، أو استحداث وظائف جديدة كلياً باستخدام بيئة برمجة معينة مثل أوتوليسب أو VBA أو غيرها، تبدو أهمية ذلك جليةً عندما ندرك أن وظائف بعض برامج أوتوليسب الشهيرة و التي اعتاد مستخدمو أوتوكاد عليها منذ زمن كبرامج مساعدة أصبحت اليوم جزء أساسياً من صميم البرنامج، مثل مطابقة الخصائص (Match Properties) وجعل طبقة الكائن حالية (Make Object Layer Current)، على سبيل المثال لا الحصر.

    خيراً، أرجو أن أكون قد وفقت في إلقاء بعض الضوء على إحدى طرق تخصيص أوتوكاد الشائعة، عسى أن تكون هذه الأسطر حافزاً لمن يسعى إلى تلمّس خطواته الأولى في هذه الطريق، عندها أكون قد أديت الرسالة و أتممت السعي.

  2. [2]
    شهاب الحق
    شهاب الحق غير متواجد حالياً
    عضو فعال
    الصورة الرمزية شهاب الحق


    تاريخ التسجيل: Aug 2006
    المشاركات: 113
    Thumbs Up
    Received: 3
    Given: 0
    جزاك الله خير اخى الكريم

    0 Not allowed!



  3. [3]
    وليد سليم
    وليد سليم غير متواجد حالياً
    جديد
    الصورة الرمزية وليد سليم


    تاريخ التسجيل: May 2009
    المشاركات: 9
    Thumbs Up
    Received: 0
    Given: 0
    [شكرأ على هز ا الجهد

    0 Not allowed!


    لا اله الا الله محمد رسول الله

  4. [4]
    نور الحسين
    نور الحسين غير متواجد حالياً
    عضو


    تاريخ التسجيل: Mar 2010
    المشاركات: 12
    Thumbs Up
    Received: 0
    Given: 0
    جزاك الله خيرا

    0 Not allowed!



  5. [5]
    taha aref
    taha aref غير متواجد حالياً
    عضو فعال جداً
    الصورة الرمزية taha aref


    تاريخ التسجيل: Apr 2009
    المشاركات: 187
    Thumbs Up
    Received: 5
    Given: 0
    جزاك الله خيراوالف شكر

    0 Not allowed!



  6. [6]
    ahmed9443
    ahmed9443 غير متواجد حالياً
    جديد


    تاريخ التسجيل: Nov 2009
    المشاركات: 1
    Thumbs Up
    Received: 0
    Given: 0
    اقولك ايه كلمة شكرا مش كفاية
    ماعندكش ليسب يعلمنى كيف اشكرك

    0 Not allowed!



  7. [7]
    فارسي
    فارسي غير متواجد حالياً
    عضو متميز
    الصورة الرمزية فارسي


    تاريخ التسجيل: Jan 2005
    المشاركات: 1,286
    Thumbs Up
    Received: 16
    Given: 0
    جزاك الله خيراً على هذا النقل الطيب

    وجزا الله عنا كل الخير من كتب هذا الموضوع الأستاذ سهيل زخور

    والسلام عليكم

    0 Not allowed!



  8. [8]
    mohdaoui
    mohdaoui غير متواجد حالياً
    جديد


    تاريخ التسجيل: Dec 2010
    المشاركات: 2
    Thumbs Up
    Received: 0
    Given: 0
    شكر وكل الشكر على هدا المشروع الجيد

    0 Not allowed!



  9. [9]
    عمر أبوالفتوح
    عمر أبوالفتوح غير متواجد حالياً
    جديد


    تاريخ التسجيل: Oct 2011
    المشاركات: 5
    Thumbs Up
    Received: 1
    Given: 0
    جزاك الله خيرا

    0 Not allowed!



  10. [10]
    محمد الجفري
    محمد الجفري غير متواجد حالياً
    عضو متميز جداً
    الصورة الرمزية محمد الجفري


    تاريخ التسجيل: Apr 2007
    المشاركات: 1,011
    Thumbs Up
    Received: 71
    Given: 3
    جزاك الله خيرا

    0 Not allowed!



  
صفحة 1 من 2 12 الأخيرةالأخيرة
الكلمات الدلالية لهذا الموضوع

عرض سحابة الكلمة الدلالية

RSS RSS 2.0 XML MAP HTML