1. מוצרים
  2.   CAD
  3.   Python
  4.   CadQuery
 
  

ספריית קוד פתוח של Python עבור פורמטי קבצים תלת מימדיים של CAD

ספריית Python CAD בחינם ליצירת דגמי CAD תלת מימדיים פרמטריים. זה יוצר פורמטי CAD באיכות גבוהה כמו STEP, AMF ו-3MF בנוסף ל-STL המסורתי

ספריית הקוד הפתוח Python CadQuery היא ספריית Python קלה לשימוש לבניית מודלים פרמטריים של 3D CAD. הספרייה חזקה מאוד ועל ידי כתיבת סקריפטים קצרים יכולה לייצר דגמי CAD באיכות גבוהה בתוך יישומי Python. אפשר גם להתאים אישית את הסקריפט וליצור אובייקטים רבים ושונים באמצעות סקריפט בודד. הסקריפטים של CadQuery מהירים מאוד ויכולים לבנות STL, STEP, AMF ו-3MF מהר יותר מאשר ספריות זמינות אחרות.

הספרייה מציעה יכולות דוגמנות מתקדמות כגון פילטים, אקסטרודים עקומים, עקומות פרמטריות ולופטים. זוהי ספרייה מבוססת סקריפט שיכולה ליצור מודל פרמטרי שניתן להתאים אישית בקלות על ידי משתמשי קצה. זה יוצר מודלים תלת מימדיים עם סקריפטים שקרובים ככל האפשר לאופן שבו היית מתאר את האובייקט לאדם. CadQuery מורשה על פי תנאי הרישיון הציבורי של Apache, גרסה 2.0.

ספריית CadQuery זו תוכננה בכוונה להיות נטולת GUI, כך שניתן להשתמש בה בתוך יישומים הנדסיים ומדעיים ליצירת מודלים תלת מימדיים באופן פרוגרמטי. אם אתה צריך להשתמש ב-GUI, אתה יכול לשקול GUI CQ-editor מבוסס Qt או Jupyter סיומת jupyter-cadquery. אפשר גם להשתמש בספרייה יחד עם ספריות Python אחרות.

Previous Next

תחילת העבודה עם CadQuery

הדרך הקלה ביותר להתקין את המהדורה היציבה של CadQuery היא באמצעות pip. אנא השתמש בפקודה הבאה להתקנה חלקה.

התקן CadQuery באמצעות pip

pip install cadquery 

אתה יכול להוריד את הספרייה המשותפת שהורכבה ממאגר Github.

עבודה עם מצולע באמצעות ספריית 3D Python

מצולע הוא צורה דו מימדית עם צלעות ישרות. מידול מצולע הוא גישה למידול עצמים על ידי ייצוג או קירוב של משטחים שלהם באמצעות רשתות מצולעים. הקוד הפתוח Python Library CadQuery מאפשרת למפתחי תוכנה ליצור מצולעים עבור כל נקודת מחסנית עם כמה שורות של קוד Python. זה מאוד מועיל במדפסות תלת מימד שהקושחה שלהן לא מתאימה לגדלי חורים קטנים.

צור מטוסי עבודה על פנים באמצעות ספריית Python 3D

ספריית הקוד הפתוח Python CadQuery סיפקה תמיכה מלאה ליצירת מטוסי עבודה על פניים בתוך יישומי Python. השימוש במטוסי עבודה בצורה זו הם תכונה מרכזית של CadQuery. זה משחרר את המשתמשים מחיפוש המיקום של תכונות שונות במשתנים, ומאפשר למודל למחוק את הממדים המיותרים. משתמשים יכולים לבחור את הפנים של המוצק שנוצר על ידי קריאה לשיטת Workplane.faces (). זכור כי כברירת מחדל, המקור של מישור עבודה חדש מחושב על ידי יצירת מישור מהפנים שנבחרו והקרנת המקור הקודם על המישור הזה.

יצירת מטוסי עבודה ב-Faces באמצעות Python

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 סיפקה תמיכה מלאה ליצירת אנימציה תלת מימדית המייצגת את לבני הלגו בגדלים שונים באמצעות פקודות Python. אפשר גם ליצור מחדש לבנים על ידי חיבור של כמה קוביות וצילינדרים יחד. אנו יכולים ליצור אובייקט מורכב כדי לחבר את הצורות התלת-ממדיות הללו יחד באובייקט בודד (לבנה). הדוגמה הבאה מדגימה כיצד ליצור כל גודל לבנת לגו מלבנית רגילה(TM). זה מסובך רק בגלל ההיגיון לגבי החלק התחתון של הלבנה.

צור לבני LEGO 3D באמצעות 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)
 עִברִית