• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            eryar

            PipeCAD - Plant Piping Design Software.
            RvmTranslator - Translate AVEVA RVM to OBJ, glTF, etc.
            posts - 603, comments - 590, trackbacks - 0, articles - 0

            Distribution of Data Through OCAF Tree

            OCAF數(shù)據(jù)的分配

            eryar@163.com

            一、作者注 Annotation

            本文檔主要用于說明OCAFOpen CASCADE Application Framework)中數(shù)據(jù)模型的選擇問題。另外,以一個例子來說明OCAF的標準屬性的使用和創(chuàng)建OCAF新的屬性。

            作者假設讀者已經(jīng)熟悉OCAF的一些基礎知識。

            二、簡介 Introduction

            OCAFOpen CASCADE Application Framework)是為快速程序開發(fā)(Rapid Application Development)而提供的一些類。OCAF實現(xiàn)如下功能:撤銷、重做、復制、剪切、粘貼、保存文檔、打開文檔等等。

            OCAF基于標簽-屬性(Label-Attribute)模型。標簽組成樹。在OCAF文檔中,屬性用于保存用戶的數(shù)據(jù),且屬性綁定在標簽上。

            本文檔描述了數(shù)據(jù)保存在OCAF文檔中應考慮的注意事項:

            1. 是使用標準屬性還是創(chuàng)建自定義的新的屬性?

            2. 如何優(yōu)化數(shù)據(jù)的存儲來提高時間和空間上效率,和程序的運行速度?

            三、概述Description

            當開始設計基于OCAF的程序時,對于數(shù)據(jù)的存儲通常要面臨這樣的選擇:是使用標準屬性還是根據(jù)需要自己創(chuàng)建新的屬性?在給出這個問題的答案之前,先簡要回顧一下OCAF的標準屬性:

            所有基本數(shù)據(jù)類型都在OCAF中表示為標準屬性:

            u 整數(shù)Integer

            u 實數(shù)Double

            u 字符串String

            u 整數(shù)數(shù)組Array of integer values

            u 實數(shù)數(shù)組Array of double values

            u 字符串數(shù)組Array of string values

            u 拓樸形狀Topological shapes

            除了拓樸形狀屬性外,其它屬性都在Toolkit TKLCAFPackage TDataStd中:

            u 整數(shù)屬性:TDataStd_Integer

            u 實數(shù)屬性:TDataStd_Real

            u 字符串屬性:TDataStd_AsciiStringTDataStd_Expression

            u 整數(shù)數(shù)組:TDataStd_IntegerArray

            u 實數(shù)數(shù)組:TDataStd_RealArray

            u 字符串數(shù)組:TDataStd_ExtStringArray

            細心的讀者可能發(fā)現(xiàn)沒有Boolean類型,因為通常用Integer來代替了。

            所以使用OCAF的標準屬性可以用來定義任何模型。但是這樣定義對內(nèi)存的使用、程序運行速度、及使用的方便性上來說是否合適?還是要根據(jù)特定的模型具體分析。

            OCAF只有一個限制:每種屬性一個標簽只能包含一個。即只能給一個標簽定義一個整數(shù)屬性,一個實數(shù)屬性等。所以有必要考慮程序數(shù)據(jù)樹的設計。例如:一個標簽有幾個實數(shù)值,是把這幾個實數(shù)值分別存儲到子標簽中還是使用一個實數(shù)數(shù)組來存儲,都是需要事先考慮周全。

            考慮同一個模型在OCAF中不同的存儲方法,并分析每種方法的優(yōu)缺點。

            四、不同方法的比較與分析Comparison and Analysis of Approaches

            這里描述了定義模型的兩種方式:一種是基于OCAF標準屬性;另一種是創(chuàng)建新的屬性。

            A load is distributed through the shape。量度由坐標(x, y, z)來定義。Load通過由每點的局部坐標系投影到X-、Y-和Z-軸上來表示。一個由局部坐標系轉換到世界坐標系的矩陣也可能需要,但這是可選的。

            所以,每個點上有15個數(shù)值需要被存儲。若這樣的點有100000個,則在OCAF文檔中需要存儲1500000個數(shù)值。

            第一種方式是使用OCAF的標準屬性。使用標準屬性也有幾種不同的方式:

            1. 使用實數(shù)數(shù)組屬性來存儲這1500000個數(shù),并將這個實數(shù)數(shù)組綁定到一個標簽;如下圖1所示。

            2. 將每組15個值用一個實數(shù)數(shù)組屬性存儲,并將每個實數(shù)數(shù)組綁定到每個標簽上;如下圖2所示。

            3. 使用實數(shù)數(shù)組屬性來存儲每個點的(XYZ)3個坐標值,并將其綁定到標簽;局部坐標系到世界坐標系的投影軸的3個值也使用實數(shù)數(shù)組屬性來存儲,并將其綁定到子標簽上;同樣地,變換坐標系的9個值也用實數(shù)數(shù)組屬性存儲,并也將其綁定到子標簽上;如下圖3所示。

            4. 當然,其它方法也是可行的。

            圖1 使用一個數(shù)組屬性來存儲所有數(shù)據(jù)

            第一種方法是把所有數(shù)據(jù)都用一個實數(shù)數(shù)組屬性來存儲。這種方法的優(yōu)點是節(jié)省了初始內(nèi)存,并且易于實現(xiàn)。但是數(shù)據(jù)的訪問很不方便,還需要為取得相應數(shù)據(jù)來定個專門的類來處理。如果程序需要對這些值進行編輯,這就意味著整個數(shù)組在每次編輯時都需要備份,這會導致內(nèi)存的使用快速增加。所以,這種方式可能只能用于數(shù)據(jù)不需要編輯的程序。

            圖2 為每個數(shù)據(jù)點使用一個數(shù)組屬性及一個標簽

            考慮每個數(shù)據(jù)點作為一個標簽的第二種方式。這種情況需要創(chuàng)建100000個標簽,每個標簽上綁定了一個包含15個實數(shù)的實數(shù)數(shù)組屬性。如圖2所示。

            現(xiàn)在數(shù)據(jù)的編輯要安全些,且內(nèi)存的使用也在考慮之中。每個數(shù)據(jù)點的編輯(任意值:point coordinate, load, and so on)的備份也只是一個小的實數(shù)數(shù)組。但是這種結構需要更多的內(nèi)存空間,因為使用很多的標簽和屬性。

            另外,數(shù)據(jù)的訪問還是不方便,也需要一個類來處理數(shù)據(jù)的訪問。

            圖3 存儲數(shù)據(jù)到不同的數(shù)組屬性中

            第三種方式的數(shù)據(jù)存儲如圖3所示。在這種情況下引入了子標簽,數(shù)據(jù)的訪問變得容易了,不需要為此專門設計一個類來訪問所需要的數(shù)據(jù)了。

            這種方式一方面為屬性分配更多的內(nèi)存;另一方面,在數(shù)據(jù)編輯需要備份時節(jié)省了內(nèi)存。所以,若程序中所有數(shù)據(jù)都可以修改,則這種方式會更好。

            圖4 使用自定義屬性

            在下結論之前,考慮使用自定義屬性來表示這個模型的方式。

            例如,可以將每組15個值作為一個自定義屬性綁定到標簽上。與使用標準屬性的第三種方式相比,自定義屬性的方法使用更少的內(nèi)存,因為只使用了一個屬性而不是三個屬性。

            使用標準屬性的第二種方式還有些不足:當編輯數(shù)據(jù)時,每個點的所有數(shù)據(jù)都被備份,不管有些數(shù)據(jù)有沒有被修改。

            當有些不可編輯的數(shù)據(jù),最好將之與可編輯的數(shù)據(jù)分開存儲。數(shù)據(jù)編輯備份時將不會對不可編輯的數(shù)據(jù)進行備份,這樣在編輯時內(nèi)存就會有所減少了。

            五、結論Conclusion

            當確定選擇使用哪種數(shù)據(jù)模型時,需要考慮程序響應時間、內(nèi)存分配與內(nèi)存在事務處理中的使用。大部分模型只使用OCAF的標準屬性已經(jīng)足夠。其它需要特別處理的模型需要定義OCAF新屬性。

            国产精品无码久久久久| 人妻无码精品久久亚瑟影视 | 亚洲国产精品久久久久网站| 国产aⅴ激情无码久久| 久久精品国产免费观看| 久久天天躁狠狠躁夜夜不卡| 中文字幕久久久久人妻| 日日躁夜夜躁狠狠久久AV| 亚洲欧美成人综合久久久| 久久香蕉超碰97国产精品| avtt天堂网久久精品| 久久青青草原精品影院| 大蕉久久伊人中文字幕| 精品视频久久久久| 伊人久久大香线蕉av一区| 亚洲级αV无码毛片久久精品| 性高湖久久久久久久久AAAAA| 久久久精品久久久久久| 久久亚洲AV成人无码软件| 蜜臀av性久久久久蜜臀aⅴ麻豆| 久久久久久国产精品无码超碰| 中文字幕热久久久久久久| 久久久中文字幕| 亚洲午夜久久久| 日韩精品久久无码中文字幕| 国产L精品国产亚洲区久久| 狠狠色丁香婷婷久久综合| 69久久夜色精品国产69| 欧美亚洲另类久久综合婷婷| 99久久精品免费看国产一区二区三区| 久久国产视频99电影| 亚洲人成网亚洲欧洲无码久久| 久久精品国产亚洲av麻豆蜜芽| 人妻精品久久久久中文字幕69 | 91久久香蕉国产熟女线看| 久久人人青草97香蕉| 久久久九九有精品国产| 狠狠色婷婷久久一区二区| 亚洲嫩草影院久久精品| 婷婷久久久亚洲欧洲日产国码AV| 久久香蕉超碰97国产精品|