יום חמישי, 1 במרץ 2012

CAD קטן | על המרת מידע בין תוכנות CAD ותוכנת MATLAB


"הרשו לי לפנות את הבמה בפוסט הזה לטובת בלוגר אורח – רוני פאר, אשר התארח בבלוג הזה מספר פעמים, האחרונה שבהן - לפני חצי שנה. רוני עובד יחד עמי בחברת סיסטמטיקס, ומתמחה בכלי MathWorks לתחומי מערכות הבקרה והמידול הפיסי"


בתור מהנדס מכונות, יוצא לי לעבוד מפעם לפעם עם תוכנות גרפיקה תלת-מימדיות, דוגמת SolidWorks. לפני מספר ימים הייתי צריך לקחת מודל תלת-מימדי שבניתי ולהעביר אותו למשתמש אחר שעובד באמצעות MATLAB. לצורך ביצוע המשימה קיימות מספר דרכים, כתלות במטרה הסופית.

אם המטרה היא לחבר את המודל למערכת בקרה או ליצור סימולציה מערכתית רחבה יותר, אזי ניתן להשתמש בכלי של MathWorks שנקרא SimMechanics, אשר מאפשר יצירת מודלים של Simulink מתוך מודל ה-CAD. התוצאה היא מודל Simulink לא ליניארי, אשר מכיל את כל התכונות של מודל ה-CAD, לרבות שמות החלקים, תכונות פיסיקליות כמו מסה ואינרציה, אופן חיבור החלקים וכו'. אופציה זו משמשת מהנדסי בקרה ומהנדסי מערכת רבים לתכנון מערכות בקרה אופטימליות.

אם המטרה היא להעביר רק את התוצר הגרפי של המודל, למשל בכדי להציג אותו כחלק מסימולצית MATLAB רחבה יותר, אזי ישנה דרך פשוטה למדי לעשות זאת:

1. בתוכנת ה-CAD, יש לבצע שמירה של המודל בפורמט STL. פורמט סטנדרטי זה מכיל את כל הנתונים הגרפיים הדרושים להצגת החלק בצורה תלת-מימדית.

תמונה 1: שמירת המודל בפורמט STL

2. יש להוריד מתוך אתר שיתוף הקבצים של MathWorks את הקובץ stlread.m

תמונה 2: הורדת הקובץ מאתר שיתוף הקבצים של MathWorks

3. הפונקציה stlread מתועדת היטב, וקל לעקוב אחרי הוראות השימוש בה. ייבוא הנתונים פשוט מאוד, כפי שניתן לראות בתוכנית הקצרה הבאה שכתבתי:

תמונה 3: קוד המשמש לקריאת הנתונים והצגת המודל בתוך MATLAB

ועל ידי השימוש בפונקציה patch, התוצאות ב-MATLAB נראות כך:

תמונה 4: הצגת הנתונים ב-MATLAB על ידי שימוש בפקודת patch

אגב, לא מעט פעמים יוצא לי להישאל גם על הכיוון ההפוך, כלומר כיצד ניתן לטעון תוצרים תלת מימדיים של MATLAB לתוך תוכנת CAD. זה אולי רעיון לפוסט עתידי בנושא, אבל רק כדי לגרום לכם לרצות לעשות זאת בעצמכם, הנה התוצאה הסופית של התהליך הזה עבור גוף תלת-מימדי מוכר:

תמונה 5: צילום מסך מתוך SolidWorks

האם העליתם פונקציה משלכם לאתר שיתוף הקבצים של MathWorks? האם יש פונקציה מסויימת שהורדתם והפכה את החיים שלכם לקלים יותר? האם השתמשתם בעבר ב-SimMechanics? ומה לגבי פונקציית patch?

תגובה 1:

  1. http://www.gizmoparts.com
    לא קשור ל-SolidWorks ו-MatLab אבל זאת מערכת שמציגה קובץ STL בדף אינטרנט ומבצעת עליו חישובים גיאומטריים.

    המערכת נבנתה ע"י מנכ"ל ובעל החברה MecBit המהנדס נמרוד רותם בסיוע קטן של המהנדס רודיון יגדש (הגהה חלקית של הפתרון).
    המערכת למעשה מבצעת מימוש של הפונקציה stlread בתוספת פיצ'רים נוספים.

    השבמחק