亚洲天堂高清一二三,久久久久久久久久性生活,精品国产污污免费网站AⅤ,色橹橹欧美在线观看视频高清

CuraEngine 基礎功能類介紹 

2017-06-21 18:12
概述
  • 出來混總是要還的,這里不得不開始介紹底層最無聊的類。

點類和矩陣類1.Point3 類(定義在 intpoint.h)
  • 該類定義了點得三維坐標,坐標值是三個 int32 類型,x y z
  • 定義加、減、數(shù)乘、數(shù)除 d、點積、相等、不等 方法,不講。
  1. int32_t max() //返回 x y z 中最大值
  2. bool testLength(int32_t len) //頂點距離原點值不能大于 lenth
  3. int64_t vSize2() const //離原點距離的平方
  4. int32_t vSize() const //離原點距離
復制代碼
2.IntPoint 類(intpoint.h) 和 Point
  • 這個類是用在 ClipperLib 中的。Clipperlib 處理二維封閉圖形。
  • 因此有兩個變量 x 和 y。
  • 該類方法基本與 Point3 一樣。
  1. INLINE int angle(const Point& p) //返回與 x 正半軸夾角,角度制
  2. INLINE Point crossZ(const Point& p0) //繞原點逆時針旋轉(zhuǎn) 90 度
  3. {
  4.      return Point(-p0.Y, p0.X);
  5. }
復制代碼
3.PointMatrix 類(intpoint.h)
A.成員變量 matrix[ 4].是一個二維矩陣。
4.默認初始化單位陣,
  1. PointMatrix(double rotation) //對單位陣旋轉(zhuǎn)一定角度。
  2.       Point apply(const Point p) const //點 p 左乘矩陣
  3.       Point unapply(const Point p) const //點 p 右乘矩陣
復制代碼
5.FPoint3 類(floatpoint.h) 基本與 Point3 完全一樣,用 float 類型
  1. inline FPoint3 normalized()//正則化,單位化
復制代碼
  1.   FPoint3 cross(const FPoint3& p)  //未知
  2. {
  3.     return FPoint3(
  4.         y*p.z-z*p.y,
  5.         z*p.x-x*p.z,
  6.         x*p.y-y*p.x);
  7. }
復制代碼
6.FMatrix3x3 類(floatpoint.h)
  • 跟 PointMatrix 一樣。
7.vSize2f 函數(shù)
  1. INLINE float vSize2f(const Point& p0) //返回 p0 的距離平方
復制代碼
8.vSize2 函數(shù)
  1. INLINE float vSize2(const Point& p0) //返回 p0 的距離
復制代碼
9.vSizeMM 函數(shù) +返回 mm 單位,默認是微米。
時間類
  • Timekeeper(gettime.h)
    • 只有 starttime 這個變量,
    • restart()方法重啟定時器,返回所用時間。
  • TimeEstimatecalculator 類(timeEstimate.h)
    • 這個類估算打印所需的時間。
    • 成員變量:
      • Position 類
    • 定義打印點所處位置
      • Block 類
    • 記錄打印機參數(shù)。
      • 方法

        A.setPosition(Position newPos)
        設置打印位置
        B.reset()
        清空打印位置
        C.void plan(Position newPos, double feedRate)
        對新位置點,新的進料速度進行配置
        D.double TimeEstimateCalculator::calculate()
        返回運動時間
        E.具體實現(xiàn)的代碼還有很多看不懂,很多是計算速度,加速度的,并無任何卵用。
        :recalculate_tranpezoids 方法有筆誤
      1. for(unsigned int n=0; n<blocks.size(); n--)  //TODO: 有問題
      復制代碼

      配置類1.SettingConfig
      • 直接從 json 文件 json 讀取配置的類,Single setting data.有以下成員變量,跟 json 文件項一一對應。
        • std::string label;
        • std::string key;
        • std::string type;
        • std::string default_value;
        • std::string unit;
        • SettingConfig* parent;
        • std::list<SettingConfig> children;
      • 各種 get,set 方法,
      • addchild 方法遞歸添加一個鍵值。
      2.CettingCategory
      • 包含多個子配置 Contains one or more children settings.
      • 基本與 SettingConfig 一樣。
      3.SettingRegistry
      • 注冊類。包含所有的配置設定  This registry contains all known setting keys.
      • 方法:
      1. static SettingRegistry* getInstance() { return &instance; } //得到該類的靜態(tài)實例   
      2. bool settingExists(std::string key) const; // 根據(jù) key 查找值是否存在
      3. const SettingConfig* getSettingConfig(std::string key); // 得到對應值
      4. bool settingsLoaded(); //有數(shù)據(jù)的話返回真
      5. bool loadJSON(std::string filename); //載入 json 文件數(shù)據(jù)
      復制代碼

      • 這里的 loadJSON 方法用到了 libs/rapidjson/中的 json 庫。
        從代碼來看,讀入的 json 文件參數(shù)有 machine_settings、mesh_settings(沒找到)和 categories 三類。
        數(shù)據(jù)存在 categories 和 settings 中。settings 是 map 類型。以后用到的主要是 setitngs 中的數(shù)據(jù)。
    • SettingsBase 類
      • 該類主要是 map 類型的 setting_valuse 成員變量。
      • 各種 get 方法用來讀取對應的格式化鍵值。
      • 沒什么好說的。
      打印相關 1.EFillmethod
    1.    enum EFillMethod  //填充方法選項
    2. {
    3.     Fill_Lines,
    4.     Fill_Grid,
    5.     Fill_Triangles,
    6.     Fill_Concentric,
    7.     Fill_ZigZag,
    8.     Fill_None
    9. }
    復制代碼
    2.Eplatformadhesion
  1.      enum EPlatformAdhesion  //最底層與工作臺的粘合形態(tài)
  2. {
  3.     Adhesion_None, //直接粘合
  4.     Adhesion_Brim,//產(chǎn)生延伸的邊緣
  5.     Adhesion_Raft //產(chǎn)生棧板
  6. };
復制代碼
3.ESupportType
  1.      enum ESupportType  //支撐類型
  2. {
  3.     Support_None, //不試用支撐
  4.     Support_PlatformOnly,//僅支撐底面
  5.     Support_Everywhere//所有斜側(cè)面都產(chǎn)生支撐
  6. };
復制代碼
4.MAX_SPARSE_COMBINE
  1. //Maximum number of sparse layers that can be combined into a single sparse 稀少的 extrusion.
  2.   MAX_SPARSE_COMBINE 8 //稀疏擠出過程中最大的稀疏層數(shù)
復制代碼
5.EGcodeflavor
打印機類型,見前文。

Mesh 類相關
  • 補完之前的基礎類,終于可以開始說 mesh 了。mesh 即網(wǎng)狀物,是 stl 轉(zhuǎn)換成的數(shù)據(jù)結(jié)構(gòu)。
  • MeshVertex 類
    • 記錄 mesh 中 vertex 頂點,相鄰面片索引(face)。其實定義成 struct 更合適吧。
  • MeshFace 類
    • meshFace 是有三個頂點的面片模型,一個面片因為是三角形,所以鄰接了三個其他的面片。
    1.       /* A MeshFace is a 3 dimensional model triangle with 3 points. These points are already converted to integers
    2. A face has 3 connected faces, corresponding to its 3 edges.
    3. Note that a correct model may have more than 2 faces connected via a single edge!
    4. In such a case the face_index stored in connected_face_index is the one connected via the outside; see ASCII art below:
    5. : horizontal slice through vertical edge connected to four faces :*/
    復制代碼
    成員變量
  1. int vertex_index[3]; //頂點索引,逆時針順序
  2. int connected_face_index[3]; //相鄰面片索引,跟頂點相同順序
復制代碼
Mesh 類! Mesh 類是 3d 模型的最基本表征方式(那 stl 呢?),它含有模型中所有的 MeshFace 面片。
由于繼承自 SettingBase,它可以有一些配置。
  1.        /*!
  2. A Mesh is the most basic representation of a 3D model. It contains all the faces as MeshFaces.

  3. See MeshFace for the specifics of how/when faces are connected.
  4. */
復制代碼
  • 成員變量
    • vertices
      所有的頂點。
    • faces
      所有的面片。
  • 方法
  1. Mesh(SettingsBase* parent); //初始化的時候繼承了配置
  2. void addFace(Point3& v0, Point3& v1, Point3& v2); //添加一個面片
  3. void clear(); //清除所有數(shù)據(jù)
  4. void finish(); //所有面片添加完成后,連接相鄰面片
  5. Point3 my_min(); //假設打印空間為長方體,找出角落點(x,y,z 均最小的點)
  6. Point3 my_max(); //同上
復制代碼
  • 說明一下:min 和 max 函數(shù)在 SB 的 vs 下編譯報錯,被我改成 my_min()和 my_max();不過作者也真是,取名取什么不好弄個沖突的。
私有方法
  1. int findIndexOfVertex(Point3& v); //返回指定頂點的索引號,或者新建一個頂點。
  2. int getFaceIdxWithPoints(int idx0, int idx1, int notFaceIdx);//返回與 notFaceIdx 片面鄰接的面片的索引
  3. //http://stackoverflow.com/questions/14066933/direct-way-of-computing-clockwise-angle-between-2-vectors
復制代碼
  • getFaceIdxWithPoints 有一個幾何的算法來計算鄰接面片。
多個 meshPrintObject 類(modelFile.h)
  • 該類是多個 mesh 的集合(成員變量 meshes)。由于可能一次有多個 STL 文件會被打印。
  • 方法。\\一些跟 mesh 類似。
  1. void finalize(); //設置打印的偏移量,即設置整個模型的位置
  2. void offset(Point3 offset) //將模型按 offset 偏移
  3. bool loadMeshFromFile(PrintObject* object, const char* filename, FMatrix3x3& matrix);//載入 stl 到 object 中
復制代碼
next……至此,基礎已經(jīng)講完
聲明:3D打印資源庫(3dzyk)內(nèi)網(wǎng)友所發(fā)表的所有內(nèi)容及言論僅代表其本人,并不代表3D打印資源庫(3dzyk)觀點和立場;如對文章有異議或投訴,請联系kefu@3dzyk.cn。
標簽:
CuraEngine 基礎功能類介紹 
快速回復 返回頂部 返回列表
宾川县| 鄂尔多斯市| 滨海县| 长春市| 邵武市| 会昌县| 虹口区| 蒙山县| 达尔| 尼木县| 乌拉特中旗| 神池县| 瓦房店市| 绍兴县| 武夷山市| 甘肃省| 嘉峪关市| 阿图什市| 洛隆县| 长阳| 外汇| 安吉县| 和田市| 津市市| 武隆县| 平谷区| 沧州市| 九江市| 雅江县| 南乐县| 新津县| 永清县| 沙洋县| 始兴县| 定日县| 永兴县| 兴文县| 霍山县| 松潘县| 东城区| 德安县|