JWDStructure

دروس VBA AutoCAD 

برمجة أوتوكاد - الدرس التاسع - الحصول على إدخالات من المستخدم 3

النقاط الأساسية

  • مقدمة
  • التابع GetOrientation
  • التابع GetAngle
  • التابع GetCorner
  • التابع GetInteger
  • التابع GetReal
  • خاتمة

مقدمة

الغاية من هذا الدرس التعرف على بقية الأوامر التي تمكننا من الحصول على إدخالات المستخدم من سطر أوامر أوتوكاد.

كما ذكرنا سابقاً فإن هذه التوابع تابعة للكائن Utility التابع بدوره للكائن Document.

التابع GetOrientation

يمكننا هذا التابع من الحصول على الزاوية بين المستقيم الواصل بين نقطتين من جهة وبين المحور X في المستوي XY، حيث يتم إهمال قيمة Z، ويكون الاتجاه الموجب بعكس عقارب الساعة.

الشكل العام لهذا التابع كالتالي:

RetVal = Object.GetOrientation([Point][, Prompt])

حيث:

  • Object: هو كائن Utility المشار إليه سابقاً.
  • Prompt: هو السؤال الذي سيظهر للمستخدم في سطر الأوامر ، وهو قيمة اختيارية.
  • Point: متحول اختياري وهو يشير إلى إحداثيات النقطة الأولى من النقطتين اللتين ورد ذكرهما.

ملاحظة: عندما يتم وضع أحد المدخلات (البارامترات) ضمن قوسين [ ] فهذا يعني أنه اختياري

يؤدي هذا التابع إلى توقف أوتوكاد مؤقتاً حتى يقوم المستخدم بإدخال قيمة الزاوية بإحدى الطرق التالية:

  • إما بكتابة قيمة الزاوية في سطر الأوامر بعد السؤال.
  • أو باختيار نقطتين تمثلان المستقيم الأول (وذلك في حالة لم يتم تزويد الأمر بالمتحول Point).
  • أو باختيار نقطة واحدة فقط (في حالة تم تزويد الأمر السابق بالمتحول Point الذي يشير إلى النقطة الأولى).

ملاحظة: واحدة الزاوية المعادة بهذا الأمر هي الراديان (في حالة إدخال الزاوية بواسطة النقط).

ملاحظة: هذا الأمر لا يتأثر بقيمة المتحول ANGBASE العائد لبيئة أوتوكاد.

مثال:

retAngle = ThisDrawing.Utility.GetOrientation(, "Enter an angle: ")
MsgBox "The angle entered was " & retAngle, , "GetOrientation Example"

هذا المثال يقوم بسؤال المستخدم أن يدخل زاوية ، فيستجيب المستخدم إما:

  • بإدخال قيمة الزاوية في سطر الأوامر.
  •  أو باختيار نقطتين لحساب الزاوية بين المستقيم الواصل بينهما والمحور X.

مثال آخر:

Dim basePnt(0 To 2) As Double
basePnt(0) = 2#: basePnt(1) = 2#: basePnt(2) = 0#
retAngle = ThisDrawing.Utility.GetOrientation (basePnt, "Enter an angle: ")
MsgBox "The angle entered was " & retAngle, , "GetOrientation Example"

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

التابع GetAngle

وهو يشبه التابع السابق ويختلف عنه بأنه يتأثر قيمة المتحول ANGBASE الخاص ببيئة أوتوكاد.

التابع GetCorner

وهو يعيد الزاوية الأخرى لمنطقة مستطيلة علمت الزاوية الأولى المقابلة لها، بحيث يقوم أثناء الاختيار برسم مستطيل إحداثيات زاويته الأولى هي الإحداثيات المعلومة، والزاوية المقابلة لها هي زاوية المؤشر.

الشكل العام له هو:

RetVal = Object.GetCorner(Point[, Prompt])

حيث:

  • Point: هي إحداثيات النقطة الأولى.
  • Prompt: السؤال الذي سيظهر للمستخدم، وهو قيمة اختيارية.
  • RetVal: وهو إحداثيات النقطة المعادة.

مثال:

Sub GetCorner()
    Dim returnPnt As Variant
    Dim basePnt(0 To 2) As Double
    basePnt(0) = 2#: basePnt(1) = 2#: basePnt(2) = 0#

    returnPnt = ThisDrawing.Utility.GetCorner _
                (basePnt, "Enter Other corner: ")
    MsgBox "The point picked was " & returnPnt(0) & ", " & _
                returnPnt(1) & ", " & returnPnt(2), , "GetCorner Example"
End Sub

التابع GetInteger

وهو يقوم بسؤال المستخدم أن يدخل عدد صحيح بين القيمتين -32768 و +32767

الشكل العام له:

RetVal = Object.GetInteger([Prompt])

حيث:

  • Prompt: هو السؤال الذي سيظهر للمستخدم وهو قيمة اختيارية.
  • RetVal: القيمة المعادة.

التابع GetReal

نفس التابع GetInteger ولكن يسمح بإدخال أعداد حقيقية.

الشكل العام له هو:

RetVal = GetReal([Prompt])

حيث:

  • Prompt: هو السؤال الذي سيظهر للمستخدم وهو قيمة اختيارية.
  • RetVal: القيمة المعادة.

خاتمة

تعلمت في هذا الدرس الأمور التالية:

  • الحصول على قيمة الزاوية بين خط والمحور X.
  • الحصول على الزاوية المقابلة لزاوية معلومة في مستطيل يتم رسمه.
  • الحصول من المستخدم على عدد صحيح وعدد حقيقي.
  • تطبيق حول هذه الأمور.