🍺相关文章汇总如下🍺:
文章目录
1、简介
3D XML 格式用于所有 Dassault Systèmes 品牌 - CATIA、DELMIA、ENOVIA、
SIMULIA、3DVIA、SolidWorks 和 Virtools。 3D XML 格式规范是“3D For All”的一部分
将 3D 带给大众的倡议。 Dassault Systemes 目前提供免费的 3D XML 播放器
用于 3DXML 格式以及从其他来源 (3D PrintScreen) 捕获 3D 的工具。
该产品将继续增长。
3DXML格式是CATIA中基于可扩展标记语言XML的一种文件格式,是一种通用的、轻量的三维文件格式。 该格式可使用户轻松快捷地捕获并共享实时的、精确的 3D 数据。 3D XML 高度压缩复杂数据,提供快速的文件传输和缩短加载时间,同时保持交换文件的精确几何图形。与现有格式不同,3D XML 完全基于标准 XML。 因此,任何软件程序都将能够使用标准工具读取、写入和丰富 3D XML 内容。
2、文件格式
https://www.3ds.com/3ds-passport/downloads/
- Sample.3dxml:
<?xml version="1.0" encoding="utf-8" ?>
<Model_3dxml xmlns="http://www.3ds.com/xsd/3DXML" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink">
<Header>
<SchemaVersion>4.0</SchemaVersion>
<Title>Quad 3DXml File</Title>
<Author>PVO</Author>
<Generator>CATIA V5</Generator>
<Created>2007-04-19</Created>
</Header>
<ProductStructure root="1">
<Reference3D xsi:type="Reference3DType" id="1" name="Quad"/>
<Instance3D xsi:type="Instance3DType" id="2" name="Chassis.1">
<IsAggregatedBy>1</IsAggregatedBy>
<IsInstanceOf>3</IsInstanceOf>
<RelativeMatrix>1 -1.43656787854329e-016 0 1.43656787854329e-016 1 0 0 0 1 -35.3964099358518 202.211474837735 0</RelativeMatrix>
</Instance3D>
<Reference3D xsi:type="Reference3DType" id="3" name="Chassis"/>
<ReferenceRep xsi:type="ReferenceRepType" id="4" name="Chassis_ReferenceRep" format="UVR" version="1.0" associatedFile="urn:3DXML:Chassis.3DRep">
<PLM_ExternalID>Chassis_ReferenceRep_ReferenceRep</PLM_ExternalID>
<V_discipline>Design</V_discipline>
<V_usage>3DShape</V_usage>
<V_nature>1</V_nature>
</ReferenceRep>
<InstanceRep xsi:type="InstanceRepType" id="5" name="Chassis_InstanceRep">
<IsAggregatedBy>3</IsAggregatedBy>
<IsInstanceOf>4</IsInstanceOf>
</InstanceRep>
<Instance3D xsi:type="Instance3DType" id="6" name="System Direction.1">
<IsAggregatedBy>1</IsAggregatedBy>
<IsInstanceOf>7</IsInstanceOf>
<RelativeMatrix>0.999976282702582 -0.0068872356451857 4.18212442991818e-006 0.00688723564518346 0.999975545259153 -0.00121444177743552 4.18212454184191e-006 0.00121444177743528 0.999999262556567 -33.892135493604 202.211474837734 8.53090922113019</RelativeMatrix>
</Instance3D>
<Reference3D xsi:type="Reference3DType" id="7" name="System Direction"/>
<ReferenceRep xsi:type="ReferenceRepType" id="8" name="System Direction_ReferenceRep" format="UVR" version="1.0" associatedFile="urn:3DXML:System_Direction.3DRep">
<PLM_ExternalID>System Direction_ReferenceRep_ReferenceRep</PLM_ExternalID>
<V_discipline>Design</V_discipline>
<V_usage>3DShape</V_usage>
<V_nature>1</V_nature>
</ReferenceRep>
<InstanceRep xsi:type="InstanceRepType" id="9" name="System Direction_InstanceRep">
<IsAggregatedBy>7</IsAggregatedBy>
<IsInstanceOf>8</IsInstanceOf>
</InstanceRep>
<Instance3D xsi:type="Instance3DType" id="10" name="Axle Assembly.1">
<IsAggregatedBy>1</IsAggregatedBy>
<IsInstanceOf>11</IsInstanceOf>
<RelativeMatrix>0.595836252691761 -0.00312842317081944 0.803099852413572 0.00688723564512438 0.99997554525915 -0.00121444177735138 -0.803076413527011 0.00625474636786796 0.595843227858188 -41.6573762582876 10.0046989184395 -27.7670496220596</RelativeMatrix>
</Instance3D>
<Reference3D xsi:type="Reference3DType" id="11" name="Axle Assembly"/>
<Instance3D xsi:type="Instance3DType" id="12" name="Wheel.1">
<IsAggregatedBy>11</IsAggregatedBy>
<IsInstanceOf>13</IsInstanceOf>
<RelativeMatrix>1 0 0 0 1 0 0 0 1 -0.000299999999999301 -137.788525156015 0.00119999999999365</RelativeMatrix>
</Instance3D>
<Reference3D xsi:type="Reference3DType" id="13" name="Wheel"/>
<ReferenceRep xsi:type="ReferenceRepType" id="14" name="Wheel_ReferenceRep" format="UVR" version="1.0" associatedFile="urn:3DXML:Wheel.3DRep">
<PLM_ExternalID>Wheel_ReferenceRep_ReferenceRep</PLM_ExternalID>
<V_discipline>Design</V_discipline>
<V_usage>3DShape</V_usage>
<V_nature>1</V_nature>
</ReferenceRep>
<InstanceRep xsi:type="InstanceRepType" id="15" name="Wheel_InstanceRep">
<IsAggregatedBy>13</IsAggregatedBy>
<IsInstanceOf>14</IsInstanceOf>
</InstanceRep>
<Instance3D xsi:type="Instance3DType" id="16" name="Wheel.2">
<IsAggregatedBy>11</IsAggregatedBy>
<IsInstanceOf>13</IsInstanceOf>
<RelativeMatrix>1 0 0 0 1 0 0 0 1 -0.000299999999999301 182.211474831485 -0.00040000000000262</RelativeMatrix>
</Instance3D>
<Instance3D xsi:type="Instance3DType" id="17" name="Axle.1">
<IsAggregatedBy>11</IsAggregatedBy>
<IsInstanceOf>18</IsInstanceOf>
<RelativeMatrix>1 0 0 0 1 0 0 0 1 0.000299999999999301 192.211474837735 0.000400000000002621</RelativeMatrix>
</Instance3D>
<Reference3D xsi:type="Reference3DType" id="18" name="Axle"/>
<ReferenceRep xsi:type="ReferenceRepType" id="19" name="Axle_ReferenceRep" format="UVR" version="1.0" associatedFile="urn:3DXML:Axle.3DRep">
<PLM_ExternalID>Axle_ReferenceRep_ReferenceRep</PLM_ExternalID>
<V_discipline>Design</V_discipline>
<V_usage>3DShape</V_usage>
<V_nature>1</V_nature>
</ReferenceRep>
<InstanceRep xsi:type="InstanceRepType" id="20" name="Axle_InstanceRep">
<IsAggregatedBy>18</IsAggregatedBy>
<IsInstanceOf>19</IsInstanceOf>
</InstanceRep>
<Instance3D xsi:type="Instance3DType" id="21" name="Axle Assembly.2">
<IsAggregatedBy>1</IsAggregatedBy>
<IsInstanceOf>11</IsInstanceOf>
<RelativeMatrix>0.999691727774109 -0.00691442879300021 -0.0238461756783509 0.00688742231737249 0.99997554393347 -0.00121447469382495 0.0238539898934834 0.00104986162245696 0.999714901837887 428.098150416237 10.8332393530064 -27.7669834952255</RelativeMatrix>
</Instance3D>
</ProductStructure>
<DefaultView>
<Viewpoint xsi:type="ParallelViewpointType" visualizedHeight="336.4707284" targetDistance="1401.501343" nearPlaneDistance="717.5784302" farPlaneDistance="2069.004395">
<Position>-654.7354126 -704.961853 678.0846558</Position>
<Sight>0.5839541554 0.6828992367 -0.4389148355</Sight>
<Right>0.6628675461 -0.7132402062 -0.2278049141</Right>
<Up>0.4686194956 0.1579147726 0.8691712618</Up>
</Viewpoint>
<DefaultViewProperty>
<OccurenceId>
<id>urn:3DXML:Sample.3dxml#6</id>
</OccurenceId>
<GraphicProperties xsi:type="GraphicPropertiesType">
<SurfaceAttributes xsi:type="SurfaceAttributesType">
<Color xsi:type="RGBAColorType" red="1" green="1" blue="1"/>
</SurfaceAttributes>
</GraphicProperties>
</DefaultViewProperty>
</DefaultView>
</Model_3dxml>
3、代码实现(Python)
3.1 blender(个人测试代码)
https://www.blender.org/download/
- import_3dxml.py(版本4.3,个人实践的)
这个脚本作者经过编写和测试,运行成功。
#***************************************************************
# Purpose: blender通过python实现3dxml((版本4.3))文件格式的导入
# Author: 爱看书的小沐
# Date: 2022-5-1
# Languages: python
# Platform: blender-3.1.2, python3.10
# OS: Win10 win64
# **************************************************************
################################################################
# This addon enables blender to import 3D XML 4.3 documents.
# It partially implemented the 3D XML specification 4.3 from
# Dassault Syst¨¨mes. Testing was done with files exported
################################################################
import xml.etree.ElementTree as etree
import pathlib,zipfile,time,os,tempfile,math
import bpy,bmesh,bpy_extras,mathutils
bl_info={
"name":"3D XML (4.3) import",
"description":"Import 3D XML 4.3",
"author":"Chris Xiong",
"version":(0,1),
"blender":(3,1,2),
"category":"Import-Export",
"support":"TESTING"
}
unitfactor=1
meshes = dict()
meshmat = dict()
NS="{http://www.3ds.com/xsd/3DXML}"
XSI="{http://www.w3.org/2001/XMLSchema-instance}"
texdir="/3dxml/Textures/"
def unflatten2Strips(seq):
seq_j = []
seq=seq