مكتبة بايثون مفتوحة المصدر للرسومات CAD ثنائية وثلاثية الأبعاد
مكتبة بايثون مفتوحة المصدر لتصميم CAD لإنشاء وإدارة نماذج ثنائية وثلاثية الأبعاد. أنشئ كتل ليغو بارامترية واستخدم محددات داخل تطبيقات بايثون.
Build123d هي حزمة مفتوحة المصدر للتصميم بمساعدة الحاسوب (CAD) ثلاثية الأبعاد، تعمل بلغة بايثون، تُمكّن مطوري البرامج من إنشاء رسومات ثنائية وثلاثية الأبعاد داخل تطبيقات بايثون الخاصة بهم. تستخدم مكتبة Build123d مدير سياق بايثون القياسي، وتتوفر ثلاثة برامج بناء للتعامل مع الرسومات. يُمكن استخدام برنامج بناء BuildLine للأشياء أحادية البعد، وبرنامج بناء BuildSketch للأشياء ثنائية الأبعاد المستوية، وبرنامج بناء BuildPart للأشياء ثلاثية الأبعاد. يستخدم برنامج البناء سياقات الموقع لتحديد مواقع الأشياء أو العمليات.
تدعم المكتبة العديد من العمليات ثنائية وثلاثية الأبعاد، مثل التقطيع، والانعكاس، والإزاحة، والقياس، والتقسيم، وثقب التجويف، وثقب الغمر، والبثق، والثقب، والعلوية، والدوران، والقياس، والقسم، والتقسيم، وغيرها الكثير. بالإضافة إلى ما سبق، تتضمن المكتبة العديد من المحددات، ومشغلات المحددات، ومشغلات الحواف والأسلاك، ومشغلات المستويات، ومشغلات المتجهات، ومشغلات الرؤوس.
تُعد مكتبة Build123d بديلاً مفيدًا لواجهة برمجة التطبيقات Build123d، وتتميز بالعديد من المزايا، وأهمها تمكينها لمجموعة أدوات بايثون الكاملة عند تصميم الكائنات. المكتبة سهلة الاستخدام للغاية، ويمكن بسهولة وضع الكائنات وإدارتها في أي مكان.
البدء باستخدام Build123d
أسهل طريقة لتثبيت الإصدار المستقر من Build123d هي استخدام GitHub. يُرجى استخدام الأمر التالي لتثبيت سلس.
قم بتثبيت Build123d عبر GitHub
python3 -m pip install git+https://github.com/gumyr/build123d.git#egg=build123d
يمكنك تنزيل المكتبة المشتركة المجمعة من مستودع Github.
كيفية استخدام المحددات عبر مكتبة بايثون
عند استخدام نظام تصميم بمساعدة الحاسوب (CAD) قائم على واجهة رسومية، غالبًا ما ينقر المستخدم على خاصية لتحديدها لإجراء عملية ما. المحددات هي إجراءات توضح كيفية فصل الخاصية عن التصميم باستخدام مرشحات بايثون وطرق الفرز التي تُنفذ عادةً كمجموعة من عمليات بايثون المخصصة. vertices() وedges() وwires() وsolids() وfaces() هي أمثلة على المحددات. أنواع المعاملات هي: Axis وSortBy وGeomType. يُرجى تذكر أن طرق القائمة القياسية مثل sorted أو filtered مفيدة في إنشاء محددات معقدة.
إنشاء مكعبات ليغو بارامترية عبر مكتبة بايثون
تتيح مكتبة بايثون مفتوحة المصدر Build123d لمطوري البرامج إنشاء مكعبات ليغو بارامترية داخل تطبيقات بايثون الخاصة بهم. أولًا، عليكَ تثبيت بيئة build123d وتحديد أبعاد مكعبات الليغو. الآن، ننتقل إلى مرحلة البناء لإنشاء الهيكل الداخلي للمكعبات. للهيكل، نحتاج إلى رسم تخطيطي ثنائي الأبعاد، ثم تحويله إلى كائن ثلاثي الأبعاد. بعد ذلك، يمكننا تحديد محيط المستطيل وإنشاء جدرانه وإنشاء شبكة داخلية. بعد ذلك، نحتاج إلى تحويل الشبكة الداخلية إلى نتوءات، مع إزالة المركز. الآن، أنشئ مجموعة من الأسطوانات الداخلية المجوفة، ثم استخرج الرسم التخطيطي إلى جدران. بعد الانتهاء من الجدران، يجب إضافة الجزء العلوي من المكعب، والخطوة الأخيرة هي إضافة النقاط.
كيفية إنشاء أبعاد وشبكة داخلية لكتلة ليغو عبر واجهة برمجة تطبيقات بايثون؟
from build123d import *
pip_count = 6
lego_unit_size = 8
pip_height = 1.8
pip_diameter = 4.8
block_length = lego_unit_size * pip_count
block_width = 16
base_height = 9.6
block_height = base_height + pip_height
support_outer_diameter = 6.5
support_inner_diameter = 4.8
ridge_width = 0.6
ridge_depth = 0.3
wall_thickness = 1.2
// instantiate a BuildPart
with BuildPart() as lego:
//create a sketch builder
with BuildPart() as lego:
# Draw the bottom of the block
with BuildSketch() as plan:
//create Perimeter Rectangle
with BuildPart() as lego:
# Draw the bottom of the block
with BuildSketch() as plan:
# Start with a Rectangle the size of the block
perimeter = Rectangle(width=block_length, height=block_width)
//create the walls of the block
ith BuildPart() as lego:
# Draw the bottom of the block
with BuildSketch() as plan:
# Start with a Rectangle the size of the block
perimeter = Rectangle(width=block_length, height=block_width)
# Subtract an offset to create the block walls
Offset(
perimeter,
amount=-wall_thickness,
kind=Kind.INTERSECTION,
mode=Mode.SUBTRACT,
)
//Create Internal Grid
with BuildPart() as lego:
# Draw the bottom of the block
with BuildSketch() as plan:
# Start with a Rectangle the size of the block
perimeter = Rectangle(width=block_length, height=block_width)
# Subtract an offset to create the block walls
Offset(
perimeter,
amount=-wall_thickness,
kind=Kind.INTERSECTION,
mode=Mode.SUBTRACT,
)
# Add a grid of lengthwise and widthwise bars
with GridLocations(x_spacing=0, y_spacing=lego_unit_size, x_count=1, y_count=2):
Rectangle(width=block_length, height=ridge_width)
with GridLocations(lego_unit_size, 0, pip_count, 1):
Rectangle(width=ridge_width, height=block_width)