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

CuraEngine 基礎(chǔ)功能類介紹 

2017-06-21 18:12
概述
  • 出來(lái)混總是要還的,這里不得不開(kāi)始介紹底層最無(wú)聊的類。

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

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

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

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

Mesh 類相關(guān)
  • 補(bǔ)完之前的基礎(chǔ)類,終于可以開(kāi)始說(shuō) mesh 了。mesh 即網(wǎng)狀物,是 stl 轉(zhuǎn)換成的數(shù)據(jù)結(jié)構(gòu)。
  • MeshVertex 類
    • 記錄 mesh 中 vertex 頂點(diǎn),相鄰面片索引(face)。其實(shí)定義成 struct 更合適吧。
  • MeshFace 類
    • meshFace 是有三個(gè)頂點(diǎn)的面片模型,一個(gè)面片因?yàn)槭侨切危脏徑恿巳齻€(gè)其他的面片。
    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 :*/
    復(fù)制代碼
    成員變量
  1. int vertex_index[3]; //頂點(diǎn)索引,逆時(shí)針順序
  2. int connected_face_index[3]; //相鄰面片索引,跟頂點(diǎn)相同順序
復(fù)制代碼
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. */
復(fù)制代碼
  • 成員變量
    • vertices
      所有的頂點(diǎn)。
    • faces
      所有的面片。
  • 方法
  1. Mesh(SettingsBase* parent); //初始化的時(shí)候繼承了配置
  2. void addFace(Point3& v0, Point3& v1, Point3& v2); //添加一個(gè)面片
  3. void clear(); //清除所有數(shù)據(jù)
  4. void finish(); //所有面片添加完成后,連接相鄰面片
  5. Point3 my_min(); //假設(shè)打印空間為長(zhǎng)方體,找出角落點(diǎn)(x,y,z 均最小的點(diǎn))
  6. Point3 my_max(); //同上
復(fù)制代碼
  • 說(shuō)明一下:min 和 max 函數(shù)在 SB 的 vs 下編譯報(bào)錯(cuò),被我改成 my_min()和 my_max();不過(guò)作者也真是,取名取什么不好弄個(gè)沖突的。
私有方法
  1. int findIndexOfVertex(Point3& v); //返回指定頂點(diǎn)的索引號(hào),或者新建一個(gè)頂點(diǎn)。
  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
復(fù)制代碼
  • getFaceIdxWithPoints 有一個(gè)幾何的算法來(lái)計(jì)算鄰接面片。
多個(gè) meshPrintObject 類(modelFile.h)
  • 該類是多個(gè) mesh 的集合(成員變量 meshes)。由于可能一次有多個(gè) STL 文件會(huì)被打印。
  • 方法。\\一些跟 mesh 類似。
  1. void finalize(); //設(shè)置打印的偏移量,即設(shè)置整個(gè)模型的位置
  2. void offset(Point3 offset) //將模型按 offset 偏移
  3. bool loadMeshFromFile(PrintObject* object, const char* filename, FMatrix3x3& matrix);//載入 stl 到 object 中
復(fù)制代碼
next……至此,基礎(chǔ)已經(jīng)講完
聲明:3D打印資源庫(kù)(3dzyk)內(nèi)網(wǎng)友所發(fā)表的所有內(nèi)容及言論僅代表其本人,并不代表3D打印資源庫(kù)(3dzyk)觀點(diǎn)和立場(chǎng);如對(duì)文章有異議或投訴,請(qǐng)联系kefu@3dzyk.cn。
標(biāo)簽:
CuraEngine 基礎(chǔ)功能類介紹 
快速回復(fù) 返回頂部 返回列表
永寿县| 全椒县| 砀山县| 延长县| 龙陵县| 阆中市| 澄迈县| 华容县| 洱源县| 乾安县| 庄浪县| 绥江县| 宜兰县| 呼玛县| 临夏县| 南城县| 称多县| 莱西市| 大邑县| 巴马| 温州市| 林西县| 嵩明县| 巩义市| 闽侯县| 蒙城县| 勐海县| 常宁市| 鹤岗市| 米脂县| 梁山县| 博野县| 岗巴县| 南宫市| 虞城县| 广德县| 商丘市| 东至县| 苍溪县| 万宁市| 古丈县|