ספריית פייתון בקוד פתוח עבור שרטוטים דו-ממדיים ותלת-ממדיים של CAD
ספריית CAD בקוד פתוח של Python ליצירה וניהול של מודלים דו-ממדיים ותלת-ממדיים. צור קוביות לגו פרמטריות ושימוש בבוררים בתוך אפליקציות Python.
מהי ספריית Build123d?
Build123d היא חבילת CAD תלת-ממדית בקוד פתוח של Python המסייעת למפתחי תוכנה ליצור שרטוטים דו-ממדיים ותלת-ממדיים בתוך יישומי Python משלהם. ספריית Build123d משתמשת במנהל ההקשרים הסטנדרטי של Python ושלושה בונים זמינים לטיפול בשרטוטים. ניתן להשתמש בבונה BuildLine עבור אובייקטים חד-ממדיים, בבונה BuildSketch עבור אובייקטים דו-ממדיים מישוריים, ובונה BuildPart עבור אובייקטים תלת-ממדיים. בונה משתמש בהקשרי מיקום למיקום אובייקטים או פעולות.
הספרייה כוללת תמיכה בפעולות דו-ממדיות ותלת-ממדיות שונות, כגון פילט, שיקוף, היסט, קנה מידה, פיצול, CounterBoreHole, CounterSinkHole, Extrude, Hole, Loft, Revolve, Scale, Section, Split ועוד רבות. מלבד האמור לעיל, ישנם מספר בוררים, אופרטורי בורר, אופרטורי קצה וחוט, אופרטורי מישור, אופרטורי וקטור ואופרטורי קודקודים גם הם חלק מהספרייה.
ספריית Build123d היא אלטרנטיבה שימושית לממשק ה-API של 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 ולהגדיר את מידות קוביית הלגו. כעת נוכל לעבור לחלק הבונה וליצור את המבנה הפנימי של הקוביות. עבור המבנה, עלינו לצייר סקיצה דו-ממדית שתוצג מאוחר יותר לאובייקט תלת-ממדי. לאחר מכן נוכל להגדיר מלבן היקפי וליצור קירות של מלבן הקובייה וליצור רשת פנימית. לאחר מכן, עלינו להמיר את הרשת הפנימית לרכסים, יש להסיר את המרכז. כעת צרו קבוצה של גלילים חלולים פנימיים וליצור סקיצה לקירות. לאחר השלמת הקירות, יש להוסיף את החלק העליון של הקובייה והשלב האחרון הוא הוספת החריצים.
כיצד ליצור ממדים ורשת פנימית של קוביית לגו באמצעות ממשק ה-API של פייתון?
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)