ربما سبق لك أن صادفت ملاحظاتي على الخطوات الأولى في برمجة CAD باستخدام مثال NanoCAD.
تجدر الإشارة إلى أنه بالنسبة للشخص الذي لا يعرف كيفية البرمجة ويعرف CAD على مستوى "culman الإلكترونية" ، كانت مغامرة رائعة. ومع ذلك ، NanoCAD لا يزال في المقام الأول منتج تجاري. لم يتم تحديث نسخته المجانية ، منذ حوالي ست سنوات وأصبحت قديمة من حيث فرص التطوير.
لكنني أردت حقًا ، كما في قصة واحدة رائعة:
"السعادة للجميع ، دون جدوى ، ولا تدع أحداً يهان!" . لذلك ، تقرر الإصغاء إلى نصيحة الرفيق القتالي
DrZugrik وتثبيت FreeCAD بنفسك.
لذلك ، في المطاردة الساخنة ، أكتب لك مادة ، في يوم واحد فقط تعلمت كيفية تكوين صداقات مع هذا البرنامج CAD مع Anaconda ، كتبت نصًا بسيطًا في Python يرسم مربعًا صغيرًا به نص واختبره للعمل على Windows و Linux. ما أنا مستعد فعلاً لإخبارك به في الخطوات والعرض ، بحيث يمكنك أيضًا القيام بذلك.
هل تريد التعرف على زوجين ساحرين من Python و FreeCAD؟ ثم اهلا وسهلا بكم تحت القط.

المحتويات:
الجزء الأول: مقدمة.الجزء الثاني: التثبيت القياسي والعينة الأولىالجزء الثالث: الآن اصنع أصدقاء FreeCad مع أناكونداالجزء الرابع: كتابة مكتبة بسيطةالجزء الخامس: الخاتمةالجزء الأول: مقدمة
ومن الغريب أن هناك عددًا قليلاً جدًا من المنشورات المكرسة لـ FreeCAD على هابري ، وقد نشر
Eddy_Em مقال جيد بعنوان
"Meet: FreeCAD" ، والعديد من الأعمال التي ذكر فيها بطل مقالتنا.
بادئ ذي بدء ، كلمتين فقط عن البرنامج. لن أكرر المعلومات الواردة من
الموقع الرسمي ، لكنني أصفها ببساطة بنقطات عريضة لماذا وجّهت انتباهي إلى CAD.
لذلك ، يعد FreeCAD نظام تصميم مفتوح المصدر بمساعدة الكمبيوتر ، ويركز بشكل أساسي على النمذجة البارامترية ثلاثية الأبعاد. في وقت كتابة هذا التقرير ، كان أحدث إصدار من البرنامج هو 0.18.3. لا تخلط بين أن قيمة رقم الإصدار بعيدة عن الرقم. يعد FreeCAD طويلًا ومتطورًا ويعمل حاليًا بشكل كبير. علاوة على ذلك ، كما أفهمها لفترة طويلة ، تتمتع بشعبية معينة بين الأشخاص المشاركين في النمذجة والطباعة ثلاثية الأبعاد ، وخاصة بين الأيديولوجيين العصاميين الذين يهتمون بأجهزة مفتوحة المصدر / مفتوحة وجميع أنواع DIY.
ولكن إذا لم تفهم فجأة النمذجة ثلاثية الأبعاد على الإطلاق ، فهذا ليس سببًا لتجاوز FreeCAD. تنقسم وظائف CAD إلى وحدات نمطية محددة - طاولة العمل ، ومن بينها أيضًا الرسم ثنائي الأبعاد المعتاد ، بما في ذلك طاولة عمل لتزيين إطارات الألواح وحتى طاولة عمل لتنفيذ مفهوم BIM.
في الواقع ، يحتوي البرنامج على "عربة وعربة صغيرة" ، ولكن اليوم سنحاول القيام بشيء بدائي تمامًا ، فقط "لإثارة شهيتك".
الجزء الثاني: التثبيت القياسي والعينة الأولى
يتوفر FreeCAD لجميع أنظمة التشغيل الثلاثة الشائعة ، لكن بما أنني محروم من تقنية "Apple" ، فسوف ندرس فقط خيارات Windows 10 و Linux Mint.
أسهل طريقة لبدء البرمجة لـ FreeCAD هي تنزيل حزمة التوزيع وتثبيتها بطريقة قياسية لنظام التشغيل. في هذه الحالة ، سيكون لدينا تحت تصرفنا مترجم Python مثبت مسبقًا مع البرنامج (في وقت كتابة إصدار المقالة Python 3.6.6).
لبدء البرمجة لـ FreeCAD ، ربما أسهل من NanoCAD أو AutoCAD ، ما عليك سوى فتح علامة التبويب عرض -> لوحة -> وتشغيل وحدة التحكم Python. في الواقع ، هذا كل شيء ، يمكنك البرمجة بأمان.
لكن أولاً ، دعونا نحاول رسم شيء باستخدام الوسائل العادية. على سبيل المثال ، دائرة.
إيلاء الاهتمام لإخراج وحدة التحكم
Gui.activateWorkbench("DraftWorkbench") >>> App.newDocument("") >>> App.setActiveDocument("____________________") >>> App.ActiveDocument=App.getDocument("____________________") >>> Gui.ActiveDocument=Gui.getDocument("____________________") >>> Gui.activeDocument().activeView().viewDefaultOrientation() >>> import Draft >>> pl=FreeCAD.Placement() >>> pl.Rotation.Q=(0.0,0.0,1.5308084989341915e-17,1.0) >>> pl.Base=FreeCAD.Vector(-1.0610677003860474,-0.31207874417305,0.0) >>> circle = Draft.makeCircle(radius=0.8633861373365326,placement=pl,face=False,support=None) >>> Draft.autogroup(circle

FreeCAD لا يخفي أي شيء تحت غطاء محرك السيارة ، يتم عرض جميع العمليات الرئيسية لرسم دائرة في وحدة التحكم. يمكنك الآن فقط نسخ الكود ورسم دائرة ثانية ، قليلاً إلى اليمين.
دعنا نحاول إدخال متغير ورسم دائرة أخرى ، نقوم من خلالها بنسخ إخراج وحدة التحكم وإدراجها سطراً تلو الآخر لإجراء تعديل صغير.
x=-1.0610677003860474 pl=FreeCAD.Placement() pl.Rotation.Q=(0.0,0.0,1.5308084989341915e-17,1.0) pl.Base=FreeCAD.Vector(x*5,-0.31207874417305,0.0) circle = Draft.makeCircle(radius=0.8633861373365326,placement=pl,face=False,support=None)
كما ترون الآن ، هناك دائرتان ، وكما هو مخطط لها ، واحدة على يمين الإحداثي س للنقطة الأساسية للدائرة الأولى مضروبة في 5.

الجزء الثالث: الآن اصنع أصدقاء FreeCad مع أناكوندا
لكن قدرات CAD لا تقتصر على الاستخدام القياسي باعتباره "كولمان". باستخدام واجهة برمجة التطبيقات ، يمكن تضمين FreeCAD في البرنامج الخاص بك واستخدامه مع أو بدون واجهة رسومية ، لكننا سننظر في هذه المشكلة في وقت آخر.
في هذه الأثناء ، تخيل هذا الموقف ، دعنا نقول أنك مولع بالتعلم الآلي وتحليل البيانات في Python وقمت بالفعل بتثبيت
مجموعة توزيع Anaconda ، فمن المحتمل أن تكون مسرورًا للغاية لتعلم أنه بفضل اللاعبين من conda-forge ، يمكنك الجمع بين جميع ميزات مجموعة التوزيع هذه و FreeCAD.
يوفر
الرابط إرشادات حول كيفية تثبيته إذا كنت تستخدم mini-conda ، وسنقوم بتثبيته في "Anaconda" الكاملة من خلال المستكشف الخاص به.
لذلك ، افتح Anaconda-Navigator ، انتقل إلى علامة التبويب "
البيئات" وقم بإنشاء بيئة جديدة عن طريق النقر فوق الزر "
إنشاء" . اسم البيئة ، يمكنك إعطاء أي ، دعوت - "freecad". نختار الإصدار الضروري من Python ونخلق بيئة جديدة.

ولكن هذا لا يكفي ، فأنت بحاجة إلى إضافة قناة conda-forge ، فقط اكتب في الحقل الذي يظهر بعد النقر فوق الزر
Add "conda-forge" والسماح للنظام بتحديث قائمة الحزم.

جاهزة تقريبا الآن يبقى لتثبيت FreeCAD نفسه
انقر LMB على اسم الحزمة وحدد الإصدار الذي نريد تثبيته ، كما في الصورة أدناه
(قمت بتثبيته بالفعل)
بعد انتظار شاق ، سيكون لديك مجموعة توزيع FreeCad مثبتة بالكامل ، ولن يتم إطلاق الإصدار المطلوب.
في أبسط الحالات ، وبدون معلمات البدء ، تحتاج إلى بدء تشغيل وحدة التحكم conda مع بيئتنا ، وبدء CAD باستخدام أمر FreeCAD الذي يحمل نفس الاسم.

سيتم فتح نافذة FreeCAD فارغة نختار فيها طاولة عمل للرسم ثنائي الأبعاد.

كما ترون ، فإن إصدار Python الآن ليس على الإطلاق كما كان عليه التثبيت القياسي.

لنقم بإنشاء مستند جديد (Control + N) ، وسيكون مفيدًا لاختبار مكتبتنا الصغيرة.
الجزء الرابع: كتابة مكتبة بسيطة
مكتبتنا ستكون بدائية. في جوهر الأمر ، سننشئ أمرًا يرسم مستطيلًا يتم فيه إدخال النص التعسفي المحدد بواسطة المستخدم.
قم بإنشاء ملف
(دعوت لي "drawhabr.py") واكتب الكود التالي فيه:
أو يمكنك فقط نسخ الملف من
جيثبالكود بسيط للغاية ، لكنني أعتقد أنه يجدر شرح بعض النقاط.
import FreeCAD, FreeCADGui, Part, Draft
نحن نستورد المكتبات اللازمة ، ثم ننشئ الفصل.
نظرًا لأنني لم أتعلم بعد كيفية التعامل مع إدخال الماوس ، فسوف ندخل إحداثيات الكائن والنص مباشرةً في وحدة التحكم من لوحة المفاتيح. يتم تطبيق ذلك بواسطة طرق بيثون القياسية. بعد ذلك ، في مُنشئ الفصل ، نسمي وظيفتنا (الطريقة) ، والتي سوف ترسمها كلها.
من ميزات FreeCAD في مُنشئ الفصل ، يمكن تمييز أمرين:
self.view = FreeCADGui.ActiveDocument.ActiveView FreeCAD.Console.PrintMessage("\r\n Your object was successfully created")
الأولى تحدد مساحة مساحة العمل النشطة بالنسبة لنا ، والثانية ، بعد تثبيت الكائن ، تكتب لنا رسالة في أسفل نافذة البرنامج (على شريط رمادي ، لا يجب الخلط بينها وبين وحدة بيثون)
رمز الطريقة بديهي أيضًا ، ولكنني سأشرح لك الموثوقية.
def drawstamp(self, mtext,x=0,y=0 ): "Method for placing a figure in model space." if (mtext==""): mtext="Hello Habr!"
مطلوب في حالة قيام المستخدم بإدخال سلسلة فارغة. بدون هذا ، سيتم إدخال الكلمة تسمية في النص وسيكون طول المستطيل غير صحيح.
point=FreeCAD.Placement(FreeCAD.Vector(x,y,0), FreeCAD.Rotation(0,0,0), FreeCAD.Vector(0,0,0))
حدد إحداثيات النقطة الأساسية في اليوم الخاص بإطارنا المحيط بالنص.
دعني أذكرك أن البيانات مأخوذة من الإدخال إلى وحدة التحكم.
يرجى ملاحظة أننا نعمل مع إحداثيات ثلاثية الأبعاد للنموذج FreeCAD.Vector (x، y، z) ، ولكن في هذا المثال ، يمكننا إهمال الإحداثي Z. المعلمات الأخرى المتعلقة بتدوير الإطار لا تمس.
text = Draft.makeText(mtext,point=FreeCAD.Vector(x+0.25,y+0.55,0.0))
إنشاء النص باستخدام الأمر Draft.makeText ، بتمرير النص الذي أدخلته في وحدة التحكم.
تأخذ الإحداثيات مع إزاحة طفيفة من النقطة الأساسية للإطار.
بطريقة جيدة ، كان من الضروري معرفة كيفية معالجة الإطار (الحد) للنص باستخدام معلمات API ، وبعد ذلك ، بناءً عليه ، يتم حساب عرض وارتفاع إطار الإطارات الخاص بنا. لكن منذ أن تعرفت على البرنامج ، حللت المشكلة من خلال طريقة الفلاحين. سنصلح ارتفاع الخط ، وسنخصص له نمط الخط الأحادي المسافة (Courier) ، وبناءً على ذلك ، حدد طول وعرض الإطار الذي نرسمه حول النص.
text = Draft.makeText(mtext,point=FreeCAD.Vector(x+0.25,y+0.55,0.0)) fontsize = 1.0 textwidth=(len(mtext)*fontsize*0.6)+0.35 textheight=fontsize+0.5 text.ViewObject.FontSize = fontsize text.ViewObject.FontName = "Courier"
يبقى فقط استبدال معلماتنا في وظيفة الرسم للمستطيل
rec = Draft.makeRectangle(length=textwidth,height=textheight,placement=point,face=False,support=None)
هذا ، في الواقع ، هو كل شيء.
يبقى فقط لتوصيل مكتبتنا. للقيام بذلك ، يمكنك ببساطة نسخه إلى المجلد الذي توجد فيه بقية مكتبات Python الخاصة بالبيئة المحددة.
على سبيل المثال ، بالنسبة لنظام التشغيل Windows 10 ، قد يكون المسار كما يلي
(هام من موقع تثبيت Anaconda):C: \ Users \ YourUsernameName \ Anaconda3 \ envs \ freecad \ Lib
بالنسبة لنظام Linux ، سيكون المسار شيئًا مثل هذا:
/home/ourUserName/anaconda3/envs/freecad/lib/python3.7
كل ما تبقى لتحميل مكتبتنا.
للقيام بذلك ، أدخل أولاً اسم الوحدة النمطية لدينا في وحدة التحكم (بدون امتداد الملف)
import drawhabr
ثم اتصل بمنشئ الفصل
drawhabr.stamp()
هذا كل ما في الأمر هو القيادة ، ومعلمات الوظيفة والتمتع بالنتيجة.

فقط في حالة ، وهنا لقطة تؤكد أن كل شيء يعمل على لينكس أيضا.

الجزء الخامس: الخاتمة
اليوم ، اتخذنا خطوة صغيرة فقط على الطريق لفهم FreeCAD API.
على الرغم من حقيقة أنه بالنسبة للرسم ثنائي الأبعاد وتطوير المشروعات ، فإن FreeCAD ليس مألوفًا مثل AutoCAD (NanoCAD) أو أنظمة CAD الشائعة الأخرى ، ولكن من الأسهل بكثير برمجته.
على الرغم من قلة الوثائق والحاجة إلى تحديث بعض المقالات بأمثلة في Wiki FreeCAD ، إلا أن معرفة واجهة API الخاصة بها وتشغيل البرنامج الأول تبين أنه شخص غير مدربين تمامًا ولديه أدنى قدر من المعرفة في كتابة كود Python.
وبالنظر إلى حقيقة أن المطورين ليسوا جشعين ، وإذا لزم الأمر ، فإنهم يسمحون بالتطوير التجاري باستخدام FreeCAD بموجب ترخيص LGPL وبالاقتران مع كل قوة مكتبات Python (على سبيل المثال ، من مجموعة التوزيع Anaconda نفسها) ، يبدو تطوير البرنامج باستخدام FreeCAD مثيراً للاهتمام المهمة.
إذا فهمت أنك مهتم بهذا الموضوع ، فسأحاول إنشاء دورة صغيرة من الملاحظات عن طريق القياس مع Nanocad