繁体   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