簡體   English   中英

Parasolid v30的新嵌入式架構格式?

[英]New embedded schema format for Parasolid v30?

我有兩個來自v30的二進制Parasolid文件(內部建模器字符串為3000226,架構字符串為SCH_3000226_30000_13006)。 在其中,較舊類型的嵌入式架構信息如我擁有的《 Parasolid XT格式參考》的最新副本中所定義。 但是,對於實體類型204(在28101模式之后引入),嵌入式模式格式完全不同。 幸運的是,其中包含很多字符串,因此對它的基本形式進行反向工程非常容易:

unsigned byte: number of fields
short string: nodename
short string: description

then for each field
  short string: fieldname
  five bytes: maybe somehow correspond to <transmit 1/0> <node class> <n_elements> ?
  byte: (field) type

byte: possibly <variable 1/0> ?

然后,實體會按預期開始。

問題在於,這似乎是二進制版本的可行解析,但是在不知道五個神秘字節實際對應的情況下,我不知道如何在Parasolid文本文件中實現對此的支持。 它可能是兩個short整數和一個無符號字符,可能是一個4字節int和一個無符號字符。 哎呀,因為在兩個示例中我的前三個神秘字節均為零,所以甚至可能還有某種字符串,在這種情況下長度恰好為0,在這種情況下,當然不是五個個字節,但在我的兩個示例中恰好是五個字節。

是否有人知道神秘字節中發生了什么?

另外,我假設此方案對於實體類型204及更高版本將是有效的。 我不知道是實體類型203。我不相信我曾經見過帶有該類型的Parasolid文件。

(此外,是否有人對為什么僅對支持向后兼容性的功能進行非向后兼容更改有任何見解?)

偶然發現了自己的問題的答案。 事實證明,我應該意識到他們不會在這里進行向后不兼容的更改。 實際上,我所遇到的情況非常糟糕。 這是我已經弄清楚的規則:

當您擁有模式13006中不存在的實體類型時,將獲得這種嵌入式模式的“新”形式。(我相信類型為185及以上)。在這種情況下,格式為

unsigned byte: number of fields
short string: type name (aka nodename)
short string: description

then for each field
    short string: name
    short int: ptr_class
    positive integer: n_elts
    if ptr_class == 0
        short string: type
    if n_elts == 2
        logical: xmt_code

筆記:

  • “對於每個字段”代碼與合並在編輯序列版本中的插入和附加(I和A)代碼中的字段數據相同。
  • 二進制中的“正整數”類型類似於指針索引類型,如果整數小於32767,則為2個字節,否則為4個字節。 由於我從未在此處看到大於2的值,並且無法開始想象哪種類型的實體將具有固定的大小且大於2到第15個元素,因此我尚未實現。
  • 同樣,此n_elts字段似乎比標准架構中的等效n_elements字段大一。 (這在上面的n_elts == 2測試中清晰可見-根據文件格式規范,它應該為n_elts == 1,但這根本不起作用。)

請注意,這些基本說明確實出現在文件格式的2016版中(第14頁)。但是,與舊版V15版本的文檔相比,格式已被完全破壞了-應該有兩個級別的項目符號點,而不是一個,表的第一行被錯誤地轉換為標題!

我還必須注意,盡管這使我的代碼適用於實體類型204,但以前似乎從未在X_T文件中看到新類型,這就是為什么我從未在代碼中注意到此漏洞。 因此,我不能保證這在一般情況下都可以工作-我只知道可以在204型情況下使用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM