مكتبة بايثون مفتوحة المصدر لتنسيقات ملفات CAD ثلاثية الأبعاد

مكتبة Python CAD مجانية لإنشاء نماذج CAD ثلاثية الأبعاد بارامترية. يقوم بإنشاء تنسيقات CAD عالية الجودة مثل STEP و AMF و 3MF بالإضافة إلى STL التقليدية

مكتبة Python مفتوحة المصدر CadQuery هي مكتبة Python سهلة الاستخدام لبناء نماذج CAD ثلاثية الأبعاد حدودي. المكتبة قوية للغاية ويمكن من خلال كتابة نصوص قصيرة إنتاج نماذج CAD عالية الجودة داخل تطبيقات Python. من الممكن أيضًا تخصيص البرنامج النصي وإنشاء العديد من الكائنات المختلفة باستخدام برنامج نصي واحد. نصوص CadQuery سريعة جدًا ويمكنها إنشاء STL و STEP و AMF و 3MF بشكل أسرع من المكتبات الأخرى المتاحة.

تقدم المكتبة قدرات النمذجة المتقدمة مثل الشرائح ، والبثق المنحني ، والمنحنيات البارامترية ، والغرف العلوية. إنها مكتبة قائمة على البرنامج النصي يمكنها إنشاء نموذج حدودي يمكن تخصيصه بسهولة من قبل المستخدمين النهائيين. يقوم بإنشاء نماذج ثلاثية الأبعاد بنصوص أقرب ما يمكن إلى كيفية وصف الكائن للإنسان. تم ترخيص CadQuery بموجب شروط رخصة Apache العامة ، الإصدار 2.0.

تم تصميم مكتبة CadQuery هذه عن قصد لتكون بدون واجهة مستخدم رسومية ، بحيث يمكن استخدامها داخل التطبيقات الهندسية والعلمية لإنشاء نماذج ثلاثية الأبعاد برمجيًا. إذا كنت بحاجة إلى استخدام واجهة المستخدم الرسومية ، فيمكنك التفكير في محرر GUI CQ القائم على Qt أو Jupyter extension jupyter-cadquery. من الممكن أيضًا استخدام المكتبة مع مكتبات Python الأخرى.

Previous Next

الابتداء مع CadQuery

أسهل طريقة لتثبيت الإصدار المستقر من CadQuery هي استخدام النقطة. الرجاء استخدام الأمر التالي للتثبيت السلس.

قم بتثبيت CadQuery عبر النقطة

pip install cadquery 

يمكنك تنزيل المكتبة المشتركة المترجمة من مستودع Github .

اعمل مع Polygon عبر مكتبة Python 3D

المضلع شكل ثنائي الأبعاد ذو جوانب مستقيمة. النمذجة متعددة الأضلاع هي طريقة لنمذجة الكائنات عن طريق تمثيل أو تقريب أسطحها باستخدام شبكات مضلعة. يتيح CadQuery لمكتبة Python مفتوحة المصدر لمطوري البرامج إنشاء مضلعات لكل نقطة مكدس باستخدام سطرين فقط من كود Python. إنه مفيد جدًا في الطابعات ثلاثية الأبعاد التي لا تصلح برامجها الثابتة لأحجام الفتحات الصغيرة.

قم بإنشاء طائرات عمل على الوجوه عبر مكتبة Python ثلاثية الأبعاد

قدمت مكتبة Python مفتوحة المصدر CadQuery دعمًا كاملاً لإنشاء طائرات العمل على الوجوه داخل تطبيقات Python. يعد استخدام طائرات العمل بهذه الطريقة ميزة أساسية في CadQuery. إنه يحرر المستخدمين من البحث في موضع الميزات المختلفة في المتغيرات ، ويمكّن النموذج من حذف الأبعاد الزائدة عن الحاجة. يمكن للمستخدمين تحديد أوجه المادة الصلبة الناتجة عن طريق استدعاء طريقة Workplane.faces (). يرجى تذكر أنه يتم حساب أصل طائرة عمل جديدة بشكل افتراضي عن طريق إنشاء مستوى من الوجه المحدد وإسقاط الأصل السابق على ذلك المستوى.

إنشاء طائرات عمل على الوجوه عبر بايثون

result = cq.Workplane("front").box(2, 3, 0.5)  # make a basic prism
result = result.faces(">Z").workplane().hole(0.5)  # find the top-most face and make a hole
 

العمل مع 3D LEGO Bricks عبر Python

قدمت مكتبة CadQuery دعمًا كاملاً لإنشاء رسوم متحركة ثلاثية الأبعاد تمثل طوب Lego بأحجام مختلفة باستخدام أوامر Python. من الممكن أيضًا إعادة إنشاء الطوب بربط عدة مكعبات وأسطوانات معًا. يمكننا إنشاء كائن مركب لربط هذه الأشكال ثلاثية الأبعاد معًا في كائن واحد (لبنة). يوضح المثال التالي كيفية إنشاء أي حجم لبنة Lego (TM) عادية مستطيلة. إنه معقد فقط بسبب المنطق المتعلق بالجانب السفلي من الطوب.

قم بإنشاء مكعبات LEGO ثلاثية الأبعاد عبر Python

#####
# Inputs
######
lbumps = 6       # number of bumps long
wbumps = 2       # number of bumps wide
thin = True      # True for thin, False for thick
#
# Lego Brick Constants-- these make a lego brick a lego :)
#
pitch = 8.0
clearance = 0.1
bumpDiam = 4.8
bumpHeight = 1.8
if thin:
    height = 3.2
else:
    height = 9.6
t = (pitch - (2 * clearance) - bumpDiam) / 2.0
postDiam = pitch - t  # works out to 6.5
total_length = lbumps*pitch - 2.0*clearance
total_width = wbumps*pitch - 2.0*clearance
# make the base
s = cq.Workplane("XY").box(total_length, total_width, height)
# shell inwards not outwards
s = s.faces("Z").workplane(). \
    rarray(pitch, pitch, lbumps, wbumps, True).circle(bumpDiam / 2.0) \
    .extrude(bumpHeight)
# add posts on the bottom. posts are different diameter depending on geometry
# solid studs for 1 bump, tubes for multiple, none for 1x1
tmp = s.faces(" 1 and wbumps > 1:
    tmp = tmp.rarray(pitch, pitch, lbumps - 1, wbumps - 1, center=True). \
        circle(postDiam / 2.0).circle(bumpDiam / 2.0).extrude(height - t)
elif lbumps > 1:
    tmp = tmp.rarray(pitch, pitch, lbumps - 1, 1, center=True). \
        circle(t).extrude(height - t)
elif wbumps > 1:
    tmp = tmp.rarray(pitch, pitch, 1, wbumps - 1, center=True). \
        circle(t).extrude(height - t)
else:
    tmp = s
# Render the solid
build_object(tmp)
 عربي