Дадлагын тайлан хамгаалалтанд ашигласан слайд
Танилцуулга#
Миний дадлага хийсэн Сусано компани нь AutoCAD, Revit зэрэг Computer Aided Drawing төрлийн програм дээр нэмэлт plug-in болон бусад холбогдох tool хэрэгтэй бүтээгдэхүүний хөгжүүлэлтийг япон компаниудаас авч хийдэг.
Хэрэглэгч амар хялбар байдлаар зурагтай ажиллах боломжийг олгох, гарын ажилгаа шаардсан, олон дахин давтах үйлдлүүдийг автоматжуулах зэрэг нэмэлт үйлдэл үндсэн програмд зориулан бүтээдэг гэсэн үг.
Хөгжүүлэлтийн хэл нь голцуу C#, ямар хөгжүүлэлт хийхээсээ шалтгаалаад янз янз байдаг гэсэн.
Susano Internship week1#
Даалгавар#
Эхний долоо хоногт өгсөн даалгавар бол n×m координатын системд байрлах "x" ширхэг цэгийг дотроо агуулсан хамгийн бага талбайтай тэгш өнцөгтийг зурах даалгавар байсан. (Windows Forms App ашиглан UI гарган C# хэл дээр гүйцэтгэх )

-
Үүсгэх цэгийн тоог оруулан random товчийг дарахад picturebox дотор random байршилтай цэгүүдийг дүрслэнэ.
-
minrectangle1 товч: Эргүүлэлт хийхгүй бүх цэгийг дотроо багтаасан боломжит хамгийн бага талбай бүхий тэгш өнцөгтийг олох
-
minrectangel2 товч: Бүх цэгийг дотроо багтаасан боломжит хамгийн бага талбай бүхий тэгш өнцөгтийг дүрслэнэ.
-
(Нэмэлт: minPolygon товч)бүх цэгийг дотроо багтаасан боломжит хамгийн бага талбай бүхий олон өнцөгтийг олох

Шийдэл#
Шинэ (бараг л шинэ өмнө нь Unity сурах гэж үзээд үндсэн бүтцийг нь л мэднэ) хэл дээр, дасал болоогүй технологи ашиглах хэрэг гарсан учир UI аа хэрхэн удирдах, дугуй болон шулууныг зурахад жоохон хүндрэлтэй байсан. UI-аа дүрсэлсний дараа эргүүлэлт хийлгүй тухайн цэгийн олонлогийг багтаасан тэгш өнцөгтийг хялбар олсон. Харин эргүүлээд хамгийн бага талбайтай тэгш өнцөгтийн олох хэцүү байсан. Бодлогын нөхцөлөөс ажиглалт хийхэд дараах зүйлс тодорхой болсон.
Ажигласан зүйлс :
-
Тэгш өнцөгтийн талууд нь хамгийн захад орших цэгүүдийг дайрсан байдлаар зурагдана.
-
Ийм учир захын цэгүүдийг олох алгоритм хэрэгтэй.
-
Тэдгээрийг олсны дараа тэгш өнцөгтийн талуудыг дайрах цэгүүдийг сонгох хэрэгтэй.
-
Хамгийн бага талбайг олох учир талбайг нь бодох функц хэрэгтэй.
-
Нийтэд эдгээрийг тооцоолонгоо харьцуулах давталт хэрэгтэй.
Дээрх зүйлсийг хайж явахад энэ бодлогын шийдлийг танилцуулсан Best Fit Rectangles гэх нийтлэл олсон. Энэхүү нийтэлд ашиглаж буй арга зам нь ерөнхийдөө :
-
Convex Hull ашиглан хүрээлж буй хамгийн захын цэгүүдийг олох
-
Олсон цэгүүдээ цагийн зүүний дагуу ангилах
-
Хоёр цэг сонгож аван тэгш өнцөгтийн нэг тал болгох
-
Тэр талын уртыг хаших хоёр цэгээр тодорхойлох
-
Олсон талаасаа нөгөө захын цэг хүртэл перпендикулиар шулуун татаж нөгөө талыг олох
-
Caliper-ын алгоритм ашиглах (тойрон эргэж талбайг нь харьцуулан явсаар тухайн тэгш өнцөгтийг олно.)
Demo#
Ойлгож сурсан зүйлс#
-
Convex hull, Caliper's algorithm сурсан
-
Minimum bounding box олох ямар хэрэгтэй мэдсэн.
Susano Internship week2 && week3#
Даалгавар#
᠌Дараагийн даалгавар AutoCAD plugin бичих даалгавар байсан. Доорх зурагт харагдаж буй grid-ийн нэг нүд дээр дарахад тухайн нүдийг сонгож авах(grid-ийн зурааснуудаар үүсэх хүрээг зурах) зорилготой комманд бичих ёстой.
Анхаарах зүйл: Хэрэглэгчийн дарсан цэг хоёр ба түүнээс дээш нүдэнд харьяалагдах бол тэдгээр нүднүүдийг нэгтгэн хүрээлэх
Ашиглах эх сурвалж:

Шийдэл#
Эхэндээ яг яахаа сайн ойлгоогүй. Хэрхэн debug хийх вэ? AutoCAD яг яаж object уудаа хадгалаад байна? Тийшээ яаж нэвтрэх вэ? хэрхэн шулуун зурах вэ? зэрэг танилцаж явсаар байгаад хэдэн хоног алдсан. Яг ямар системээр зураг дүрслэгддэг гэдгийг мэдсэний дараа үндсэн код зөв BlockRefrence сонгож чадахгүй байгаа, хүрээг зурахдаа сонгож авч байгаа цэгүүдийг тодорхойлох логик хэтэрхий энгийн гэдгийг ойлгосон. Эхний ээлжинд нэг BlockRefrence дотор боловсруулалт хийх санаа төрсөн. Гэвч ерөнхий анхнаасаа ерөнхий нөхцөлийг хангах бодолт хэрэгтэй байсан.
Тийм учраас ажлаа 2 хувааж авсан.
-
Дарсан цэг харьяалагдах бүх BlockRefrence дэх grid-ийн нүдийг (тэгш өнцөгт) олох (Билгүүнтүшиг)
-
Бүх олсон grid-ийн нүдийг нэгтгэж олон өнцөгт хүрээ болгох (Мөнхтулга)
Flowchart#

Demo#


Ойлгож сурсан зүйлс#
-
Бодлогын анхны шаардлагын дагуу шийдлээ анхнаас загварчилж боловсруулах
-
Бодлогыг сайтар задалж тооцоолж байж хөгжүүлэлтийн шат руу шилжүүлэх
-
AutoCAD-ын Object manuplation system-ийг ойлгосон
-
Raycasting algorithm сурсан
-
Геометрийн хичээл хэр чухалыг ойлгосон
-
Бидний ашигладаг зураг, дизайны програмууд ид шидээр биш маш нарийн математик суурьтай алгоритм системээр ажилдаг гэдгийг олж мэдсэн
Susano Internship week4#
Даалгавар#
Хамгийн сүүлчийн даалгавар нь Autodesk Platform Services (APS) ашиглан autocad file upload хийн түүн дээр харж, түүн дээр үйлдэл хийх энгийн web хийх
Ашиглах эх сурвалж:
Шийдэл#
Даалгаврын нөхцөлд заагдсан эх сурвалжийн дагуу хийн онолийг судлан хэрэглэсэн бөгөөд хийх явцад бага зэрэг асуудлууд гарж эхэлсэн тухайлбал upload хийж чадсан ч тухайн file-ийг зөвхөн zip file байдлаар bucked -руу илгээх , upload хийх үеийн алдаа , frameworkе ийн зөрүүгээс үүсэх crash мэт алдаа гарсан . Одоогийн байдлаар Autodesk Platform Services (APS) ашиглан дараах алхмууд хүртэл хийсэн:
-
APS App бүртгэл: APS (хуучнаар Forge)-ийн developer порталд бүртгүүлж,
client_idболонclient_secretүүсгэв. -
Authentication: OAuth 2.0 ашиглан APS server-оос
access_tokenавсан. -
Файл upload: AutoCAD (.dwg) файлыг APS-ийн Bucket руу upload хийв (
Data Management APIашиглан). -
Model Derivative API ашиглан хөрвүүлэлт: Upload хийсэн файлыг веб-д үзүүлэх боломжтой формат (SVF) руу хөрвүүлж, URN авсан.
-
Viewer ашиглалт: Autodesk Viewer API-г ашиглан URN дээр тулгуурлан CAD моделийг веб хуудсан дээр харагддаг болгосон. Viewer-ийн үндсэн үйлдлүүд:
-
Загварыг эргүүлэх, томруулах
-
Объект сонгох
-
Metadata харах
-
Demo#






