افتح مشروع فجوال بيزك جديد يحوي إطاراً واحداً Form1 وموديول واحد Module1 وخزنه في أي مكان تختاره وسمه
VBcad .
الآن قم بعمل زر
Command1 وأضفه للفورم وقم بتغيير خاصية caption ليصبح (Open New Drawing) . وقم بعمل زر Command2 وأضفه للفورم وقم بتغيير خاصية
caption ليصبح
(Close New Drawing ) وقم بعمل زر
Command3 وأضفه للفورم وقم بتغيير
خاصية
caption ليصبح
(Exit) .
· يجب الآن تحميل مكتبة كائن الأوتوكاد ضمن المشروع ونقوم
بعمل ذلك من قائمة Project نختار References ، ثم نبحث في مربع الحوار
الذي يظهر لدينا عن مكتبة الأتوكاد ذات الإصدار المرتبط بالنسخة المحملة على جهازك
(2000-2004-2007-2009....) ونفعل هذا الخيار Autocad 2009 Type Library ثم موافق .
· نفتح صفحة الموديول Module1 ونكتب السطر التالي :
كود PHP:
Public Acadapp As AcadApplication
حيث
Acadapp متحول تم تعريفه ليمثل
تطبيق أو كائن الأتوكاد ...أي أن هذا المتحول وكأنه برنامج الأتوكاد نفسه سنتعامل مع الأتوكاد من خلاله
· الآن في حدث النقر Click على زر (Open New Drawing) نكتب السطر التالي :
كود PHP:
Private Sub Command1_Click()
Set Acadapp = CreateObject("AutoCAD.Application.17")
Acadapp.Documents.Add
Acadapp.Visible = True
Acadapp.WindowState = acMax
End Sub
الشرح :
- نقوم أولا بفتح تطبيق أو كائن أتوكاد
(Object) من خلال وظيفة CreateObject وإسناد هذا الكائن إلى المتحول
Acadapp من خلال وظيفة
Set . وهنا أصبح المتحول
Acadapp يمثل التطبيق المفتوح
وسنتعامل مع التطبيق أو الكائن من خلاله . وهنا نلاحظ الجملة "AutoCAD.Application.17" وهي لنسخ الكاد بعد 2004 أما قبل 2004 نكتب "AutoCAD.Application.16"
- من خلال هذا المتحول (الذي سنتعامل معه وكأنه
تطبيق الأتوكاد ) نقوم بفتح ملف جديد من خلال السطر
كود PHP:
Acadapp.Documents.Add
- نقوم بعد ذلك بجعل تطبيق الأتوكاد ظاهراً على
الشاشة من خلال
كود PHP:
Acadapp.Visible = True
- يمكن التحكم بنافذة برنامج الأتوكاد من خلال :
كود PHP:
Acadapp.WindowState = acMax
الآن إحفظ العمل وشغل البرنامج واضغط زر (Open New Drawing) ولاحظ النتيجة .
ولكن :
ماذا لو كان برنامج الأتوكاد مفتوحاً عند تشغيل البرنامج ؟
عندها سيقوم بتشغيل
برنامج الأتوكاد مرة ثانية ... هنا نستطيع اختبار كون أتوكاد مفتوحأ أم لا كما يلي :
سنعدل الكود السابق بشكل
كامل ليصبح على الشكل :
كود PHP:
Private Sub Command1_Click()
On Error Resume Next
Set Acadapp = GetObject(, "AutoCAD.Application.17")
Acadapp.Documents.Add
Acadapp.Visible = True
Acadapp.WindowState = acMax
If Err.Number <> 0 Then
Set Acadapp = CreateObject("AutoCAD.Application.17")
Acadapp.Documents.Add
Acadapp.Visible = True
Acadapp.WindowState = acMax
Err.Clear
End If
End Sub
شرح :
نقوم أولاً باختبار كون
أتوكاد مفتوحاً أو لا من خلال وظيفة GetObject وإسناد التطبيق المفتوح إلى المتحول
Acadapp من خلال وظيفة set . لو كان أتوكاد غير مفتوحأ سنحصل على خطأ
Error .
نختبر قيمة الخطأ فإذا
كانت مختلفة عن الصفر معنى ذلك وقوع خطأ وهو كون التطبيق مغلق عندها نستخدم وظيفة
CreateObject لفتح التطبيق واسناده
للمتحول acadapp من خلال set
الآن إحفظ العمل وشغل
البرنامج واضغط زر (Open New Drawing) ولاحظ النتيجة .
ملاحظة: لاحظ أنه في كل استعمال لتعليمة
Acadapp.Documents.Add نكون قد فتحنا ملف جديد
..أي أنه يمكن فتح عدة ملفات باستخدام هذه التعليمة إلا أن الملف الأخير يكون
هو الفعال ActiveDocument وعند إرسال أي أمر إلى البرنامج سيتم التعامل مع
هذا الملف .
كيف نغلق ملف أتوكاد وننهي البرنامج ؟
قم بكتابة الكود التالي
في حدث النقر على زر Close New Drawing على الشكل :
كود PHP:
Private Sub Command2_Click()
Acadapp.ActiveDocument.Close (False)
Acadapp.Quit
Set Acadapp = Nothing
End Sub
الشرح :
- السطر الأول إغلاق الملف الحالي(الفعال) باستخدام
Close ولاحظ كتابة كلمة
False وهي تعني أغلق الملف بدون حفظ التغييرات (فمثلا لو قمت
بإجراء تعديلات على الملف الرسومي وقمت بمحاولة الإغلاق بدون كلمة
false ستعترضك رسالة للسؤال هل
تريد الحفظ أم لا ).
- نقوم بعد ذلك بإنهاء البرنامج بتعليمة
Quit .
- نفرغ المتحول Acadapp من ارتباطه بكائن الأتوكاد من خلال إسناد
Nothing إليه من خلال وظيفة
Set .
لكن ماذا لو أردنا إغلاق الملف الحالي وحفظ التغييرات ؟
بما أنه قد قمنا بفتح ملف
جديد فارغ فإذا أردنا حفظه عند إغلاقه يجب استخدام SaveAs وسنشرح ذلك كما يلي :
- قم بعمل زر Command4 وأضفه للفورم وقم بتغيير خاصية
caption ليصبح (SaveAs) .
- في حدث النقر على الزر Command4 نكتب :
كود PHP:
Private Sub Command4_Click()
Dim Path0 As String
Path0 = "D:/VBcad.dwg"
Acadapp.ActiveDocument.SaveAs Path0, ac2007_dwg
End Sub
لقد قمنا بعمل نسخة عن
الملف الحالي باستخدام الأمر SaveAs حيث يمثل Path0 إسم ومسار الملف كاملاً و ac2007_dwg يدل على حفظ الملف بصيغة 2007 كملف رسومي (يمكن
مثلا حفظه 2004 ويمكن حفظه بتنسيق dxf ) .
ماذا لو أردنا فتح ملف
رسومي موجود ؟
- قم بعمل زر Command5 وأضفه للفورم وقم بتغيير خاصية
caption ليصبح (OpenExsistDrwing) .
- في حدث النقر على الزر Command5 نكتب :
كود PHP:
Private Sub Command5_Click()
On Error Resume Next
Set Acadapp = GetObject(, "AutoCAD.Application.17")
Path0 = "D:/VBcad.dwg"
Acadapp.Documents.Open Path0
Acadapp.Visible = True
Acadapp.WindowState = acMax
If Err.Number <> 0 Then
Set Acadapp = CreateObject("AutoCAD.Application.17")
Path0 = "D:/VBcad.dwg"
Acadapp.Documents.Open Path0
Acadapp.Visible = True
Acadapp.WindowState = acMax
Err.Clear
End If
End Sub
لاحظ أننا نقوم بفتح
الملف المخزن سابقا من خلال تعليمة Open حيث نكتب بعها مسار الملف كاملا
Path0 .
ماذا لو أردنا حفظ التغييرات في هذا الملف ؟
- قم بعمل زر Command6 وأضفه للفورم وقم بتغيير خاصية
caption ليصبح (Save Changes) .
- في حدث النقر على الزر Command6 نكتب :
كود PHP:
Private Sub Command6_Click()
Acadapp.ActiveDocument.Save
End Sub
لاحظ استخدام تعليمة Save لحفظ التغييرات على ملف مخزن سابقاً .
بعد هذا نستطيع الآن
تجربة ما قمنا بعملة بالترتيب التالي :
1- فتح ملف جديد من خلال النقر على زر
Open New Drawing.
2- عمل نسخة عن الملف (حفظ لأول مرة ) بتحديد اسم
الملف ومساره كاملاً (تستطيع إظهار رسالة للمستخدم ليسأله فيها عن تحديد
المسار واسم الملف ولكن هذا ليس المهم هنا فهدفنا البساطة في الشرح وليس التعقيد
) بالضغط على زر Save As .
3- إغلاق الملف الحالي بالضغط على زر
Close New Drawing.
4- فتح الملف الذي قمنا بتخزينه سابقاً بالضغط على زر
Open Exists Drawing.
5- حفظ التغييرات عليه بالضغط على زر
Save Changes.
6- إغلاق الملف الحالي وإنهاء برنامج أتوكاد بالضغط
على زر
Close New Drawing .
يتبع...
6/14/2015, 7:53 pm من طرف faiez algiousef
» من اجل قطع الشك باليقين
7/17/2014, 10:54 am من طرف asaad affour
» حوار الفاتنات
7/17/2014, 8:24 am من طرف asaad affour
» قصة حب
7/14/2014, 2:52 pm من طرف asaad affour
» حلقة بحث
5/2/2014, 7:49 pm من طرف asaad affour
» الصبي و الكرسونة
1/28/2014, 7:51 pm من طرف asaad affour
» مرض العصر..............السرطان
1/25/2014, 1:41 am من طرف asaad affour
» مشروع بحث علمي محرداوي حصرا
1/25/2014, 12:18 am من طرف asaad affour
» سجل حضورك في بيت عتابا
1/24/2014, 11:56 pm من طرف asaad affour
» أفكارنا هي السبب الرئيسي لأمراضنا
1/24/2014, 9:50 pm من طرف asaad affour
» للأذكياء فقط
1/24/2014, 3:00 am من طرف asaad affour
» حوار الفاتنات
1/24/2014, 2:51 am من طرف asaad affour
» الصيدليات المناوبة لشهر كانون الثاني وشباط 2014
1/19/2014, 10:01 am من طرف TIGER-1
» المجموعة الاولى من البومات صور محردة
1/2/2014, 6:08 pm من طرف TIGER-1
» المجموعة الاولى من فيديوهات محردة
1/2/2014, 5:54 pm من طرف TIGER-1
» من محردة الى عرش انطاكية
11/16/2013, 7:03 am من طرف TIGER-1
» جديد جديد مش عم تظبط معي
11/15/2013, 1:39 pm من طرف TIGER-1
» كيف بتقنع أهلك أنك بتدرس؟؟
11/13/2013, 10:20 pm من طرف FARES SH
» لعبة حرب الشاطئ Beachhead 2000
9/3/2013, 4:46 pm من طرف FARES SH
» طريقة فك قفل الحماية لموبايلات النوكيا !!!
8/17/2013, 6:54 pm من طرف FARES SH
» قصة الأربعين شهيدا
3/14/2013, 4:10 pm من طرف TIGER-1
» الله يرحم جميع الشهداء
3/14/2013, 4:08 pm من طرف TIGER-1
» المزرعة السعيدة
1/14/2013, 9:05 am من طرف mohammed drear
» الياذة العرب (10) الثانيه
12/31/2012, 2:15 pm من طرف انطون سابا
» الياذة العرب (10)
12/30/2012, 3:00 pm من طرف انطون سابا