برمجة أوتوكاد - الدرس الثالث - التعرف على كائن أوتوكاد
النقاط الأساسية
- مقدمة
- كائن أوتوكاد
- الكائن ThisDrawing
- مثال عن استخدام الكائن ThisDrawing
- خاتمة
مقدمة
يهتم هذا الدرس بتعريف القارئ بالأمور الأساسية في كائن أوتوكاد وكيفية الوصول إلى الكائنات الأبناء.
مكونات الكائن أوتوكاد
يتكون الكائن أوتوكاد من عدة كائنات رئيسية، تتفرع عنها مجموعة من الكائنات الأخرى بشكل هرمي.
ويكفي مبدئياً معرفة أن الكائن الرئيسي هو Application ويتفرع عنه الكائنات الموضحة بالشكل (3-1):
- الكائن Prefrences: يمثل إعدادات بيئة أوتوكاد الحالية.
- الكائن Documents: ويمثل اللوحات المفتوحة في جلسة أوتوكاد الحالية.
- كائن MenuBar: ويمثل شريط القائمة الحالي في أوتوكاد.
- كائن MenuGroups: يمثل كافة القوائم المحملة في جلسة أوتوكاد الحالية.
فإذا أردنا استدعاء كائن ما نكتب اسم الكائن الأب ثم نقطة ثم اسم الكائن الابن من دون أن يفصل بينها فراغ، فلاستدعاء الكائن Prefrences مثلاً نكتب:
Application.Prefrences
الكائن ThisDrawing
أهم الكائنات في تطبيق أوتوكاد هو كائن Documents وهو الذي يحوي مرجعاً لكافة اللوحات المفتوحة في جلسة أوتوكاد الحالية، والكائن الذي يمثل كل لوحة على حدة هو Document (في لغة VBA اسمه AcadDocument).
لنفرض مثلاً أننا نريد التعامل مع اللوحة المفتوحة الأولى (بفرض وجود عدة لوحات مفتوحة) فإننا يمكن الوصول إليها عن طريق العبارة:
Application.Documents(0)
ملاحظة: أول لوحة تأخذ الرقم صفر، والثانية تأخذ رقم 1، وهكذا...
من خلال الكائن Document يمكننا التعديل على اللوحة التي يشير إليها هذا الكائن، وستكون معظم الدروس القادمة حول التعامل مع هذا الكائن.
عادة نريد التعامل مع اللوحة الفعالة، فبدلاً من تحديد رقم اللوحة الفعالة ثم استخدام العبارة السابقة كل مرة، فإن VBA تؤمن إمكانية الوصول إليها بسرعة دون تحديد اسم الأب عن طريق الكائن المعرف سابقاً وهو ThisDrawing والذي هو بالأصل كائن من النوع Document.
وأما بالنسبة لبنية الكائن Document فهي مبينة بالشكل (3-2):
لن أتطرق إلى شرح الشكل السابق بالتفصيل لأن الشرح سيطول ولكن سنمر على بعض التفاصيل في دروس قادمة إن شاء الله.
مثال عن استخدام الكائن ThisDrawing
سأقوم الآن بشرح مثال لتوضيح عمل الكائن ThisDrawing وقد يحتوي بعض الأمور الغامضة والتي سيتم شرحها في الدروس القادمة إن شاء الله.
هذا المثال يقوم برسم دائرة مركزها النقطة (10,50,0) بالتنسيق (x,y,z) ونصف قطرها r = 100.
افتح بيئة عمل VBA كما تعلمت في الدروس السابقة ثم أضف وحدة نمطية Module جديدة إن لم توجد وحدة سابقة وأضف إليها الماكرو التالي:
Public Sub AddTheCircle()
Dim p(0 To 2) As Double, r As Double
p(0) = 10: p(1) = 50: p(2) = 0
r = 100
ThisDrawing.ModelSpace.AddCircle p, r
End Sub
ثم نفذ الماكرو (كما تعلمت سابقاً) ولاحظ النتيجة، لقد تم إضافة دائرة إلى لوحة أوتوكاد الحالية بالخصائص السابقة من مركز ونصف قطر، وقد تم إضافتها في الطبقة الحالية وتم استخدام نمط ولون الخط الحاليين، وطبعاً يمكننا تغيير الطبقة ونمط الخط ولونه كما سنرى ذلك في دروس قادمة.
مايهمنا في هذا المثال مبدئياً هو السطر الأخير:
ThisDrawing.ModelSpace.AddCircle p, r
يتكون هذا السطر من ثلاثة أجزاء وهي:
- ThisDrawing: وهو كائن من النوع Document ويشير إلى اللوحة الحالية.
- ModelSpace: وهو كائن ابن للكائن ThisDrawing وهو من النوع ModelSpace ويمثل صفحة Model في اللوحة (راجع الشكل (3-2)).
- AddCircle: وهو أمر أو وظيفة (Method) من أوامر الكائن ModelSpace لإضافة كائن Circle.
أما p فهو متحول أنشأناه ليحمل إحداثيات مركز الدائرة، و r متحول يحمل قيمة نصف قطرها.
لاحظ أننا عندما نستدعي كائن ابن نقوم أولاً بكتابة اسم الكائن الأب ثم نقطة ثم اسم الكائن الابن ثم نقطة وهكذا …
خاتمة
تعرفت في هذا الدرس بشكل مبسط على ما يلي:
- مكونات الكائن أوتوكاد.
- الكائن Documents والكائن Document.
- يمكن الوصول مباشرة إلى اللوحة الحالية باستخدام الكائن المعرف سابقاً ذو الاسم ThisDrawing وهو من النوع Document.
- مكونات الكائن Document.
- مثال يبين كيفية استدعاء الكائنات الأبناء.
قصدت جعل هذا الدرس قصيراً وذلك لفصل الأفكار الأساسية عن بعضها البعض، وربما أدى هذا إلى إظهار الأمور بأنها معقدة ولكن مع الدروس القادمة ستتوضح الأمور أكثر بإذن الله.
هاتف: +963-31-2220008
جوال: +963-999-824193
سوريا - حمص