For hassle free validation of VSXML files the <VSXML>
node is required to have the following three attributes defined:
<VSXML xmlns="http://viewer.kisters.de/VSXML" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://viewer.kisters.de/VSXML VSXML.xsd" ...>
<!-- Content -->
</VSXML>
Newer versions of 3DViewStation add these attributes per default, if you got a VSXML file without them please feel free to add them using any text editor.
Note
The xsi:schemaLocation="http://viewer.kisters.de/VSXML VSXML.xsd"
specifies the location of the XSD file to validate against.
If the VSXML.xsd
file is not located next to your VSXML file you have to either remove this attribute or update the path to the XSD file on you system.
Please just update the last part of the attribute's value and leave http://viewer.kisters.de/VSXML
as it is.
Necessary extension: XML Extension by Red Hat
RedHat's extension supports different ways to validate XML files as described in this GitHub wiki article.
This extension requires the <VSXML>
node to contain all attributes described in Upgrade old VSXML.
If that's the case and the XSD file can be found, the extension should provide IntelliSense and auto validation capabilities automatically.
XSD validation can be done using the Xml Tools
plugin, the latest version at the time of writing is version 3.1.1.1.
Go to Plugins -> Plugin manager -> Show Plugin manager
, search for Xml Tools
, check the plugin's list entry and click on Install
.
Notepad++ will restart for installation.
If the VSXML contains an xsi:schemaLocation
attribute (see above) the plugin automatically validates against the XSD file defined in it otherwise the plugin will prompt you to manually select an XSD file for validation.
Note
For validation to work correctly please ensure that the <VSXML>
node contains at least the xmlns="http://viewer.kisters.de/VSXML"
attribute mentioned in Upgrade old VSXML.
Name | Type |
---|---|
Version[optional] |
String |
FileVersion[optional] |
Integer |
Created[optional] |
String |
UnitScale[optional] |
Float |
Calibration2D[optional] |
Float |
UpVector[optional] |
UpVector |
Name | Type |
---|---|
BoundingBox[optional] |
BoundingBox |
Node[several] |
Node |
<VSXML xmlns="http://viewer.kisters.de/VSXML" Version="2021.0.119-85407f07" FileVersion="17" Created="Wed Jun 2 16:23:30 2021" UnitScale="1.000000" Calibration2D="1.000000" UpVector="Z">
<BoundingBox Center="42.014015 28.500000 -45.155006" Extents="43.164040 28.845001 45.155006"/>
<Node Name="RootNode" Type="Root" FileName="Test.3dvs"/>
</VSXML>
Name | Type |
---|---|
Attribute[optional] [several] |
Attribute |
VectorExport[optional] |
VectorExport |
Constraints[optional] |
Constraints |
RenderState[optional] |
RenderState |
BoundingBox[optional] |
BoundingBox |
Node[optional] [several] |
Node |
PhysicalProperties[optional] |
PhysicalProperties |
Animation[optional] |
Animation |
Name | Type |
---|---|
Anchors[optional] |
PMIAnchors |
LockVectors[optional] |
PMILockVectors |
PMIText[several] |
PMIText |
LeaderLines[optional] |
PolyLines |
TextLines[optional] |
PolyLines |
PMIReference[several] |
PMIReference |
Name | Type |
---|---|
HelperLines[optional] |
PolyLines |
Name | Type | Description |
---|---|---|
Id[optional] |
Integer |
Id of the node. |
Type[optional] |
NodeType |
Type of the node Root only allowed on first level! |
CustomId[optional] |
String |
Custom node id. |
Name[optional] |
String |
Node name |
FileName[optional] |
FileName |
Relative or full file path for Desktop / ActiveX Relative file path in ModelRepository for WebViewer Importing 3DVS or native CAD Model to a node |
Dimensioning[optional] |
Integer |
|
Material[optional] |
Material |
|
Color[optional] |
Color |
Color and transparency of the node |
A[optional] |
Alpha |
Node alpha Ignored if Color is used |
RGB[optional] |
RGB |
Node color Ignored if Color is used |
ColorOverwrite[optional] |
ColorOverwrite |
Specifies which color is used |
Geometry[optional] |
Integer |
Geometry Id |
UnitScale[optional] |
Float |
|
Transformation[optional] |
Transformation |
Transformation matrix |
Translation[optional] |
Vector3f |
|
Rotation[optional] |
Vector4f |
|
Scale[optional] |
Vector3f |
|
Show[optional] |
Bool |
Initial node visibility If not defined default visisibility is true You can set the initial visibility by VSXML Show attribute in UpdateScene or ImportVSXMLToNode. Default is true ("1") if not defined in VSXML. Same attribute is used by VSXML in SetNodeProperties. No change of visibility if not defined in VSXML. |
Ghost[optional] |
Bool |
|
Replace[optional] |
Integer |
|
TransparencyOverwrite[optional] |
Bool |
Specifies whether the node color is used regardless of transparency |
Constraints[optional] |
Integer |
|
CalloutId[optional] |
Integer |
Name | Type |
---|---|
MarkupType[optional] |
Integer For possible values see MarkupType |
ScreenAligned[optional] |
Bool |
Zoomable[optional] |
Bool |
AlwaysOnTop[optional] |
Bool |
ShowBackground[optional] |
Bool |
Immutable[optional] |
Bool |
AlwaysHighlightReference[optional] |
Bool |
Frame[optional] |
Integer |
ShowFrame[optional] |
Bool |
FrameType[optional] |
Integer For possible values see FrameType |
Alignment[optional] |
Integer For possible values see MarkupAlignment |
CameraScaling[optional] |
Float |
ParallelPosition[optional] |
Vector3f |
BillboardPosition[optional] |
Vector3f |
FixedPosition[optional] |
Vector2f |
ParallelAnchor[optional] |
Vector3f |
LineEnd[optional] |
Integer |
BackgroundColor[optional] |
Color |
TriangleColor[optional] |
Color |
Label[optional] |
String |
Anchor[optional] |
Integer |
BackgroundVertices[optional] |
String |
Name | Type |
---|---|
DocumentId[optional] |
Integer |
<VSXML xmlns="http://viewer.kisters.de/VSXML">
<Node CustomId="15ed4b28-0886-48c7-9949-34c38844786c" Name="Seen Root Node" Type="Root">
<Node Name="Second level" Type="ProductOccurrence">
<Node Name="Dustcap1" Type="ProductOccurrence" Transformation="1 0 0 0 0 1 0 0 0 0 1 0 -300 -200 -100 1">
<Attribute key="InstanceName" value="sample1"/>
<!-- More Attributes -->
</Node>
</Node>
<!-- More Nodes -->
</Node>
</VSXML>
Note
3DViewStation versions prior to version 2020.1.385 require the following attributes to be lower cased, i.e. key
and value
.
From 2020.1.385 on you can use any casing.
Name | Type | Description |
---|---|---|
Key | String |
Attribute Name |
Value | String |
Attribute Value |
<VSXML xmlns="http://viewer.kisters.de/VSXML">
<Node>
<Attribute Key="Cost" Value="156€"/>
<Attribute Key="Product Number " Value="AD1874"/>
</Node>
</VSXML>
Defines how a node is exported to DXF.
Name | Type | Description |
---|---|---|
ExportColor[optional] |
Color |
|
HLRMode[optional] |
HLRMode |
Hidden Line Removal |
Block[optional] |
Block |
DXF group (eg. AutoCAD can highlight this blocks) |
Layer[optional] |
Layer |
DXF layer |
LineReductionMode[optional] |
LineReductionMode |
<VSXML xmlns="http://viewer.kisters.de/VSXML">
<Node>
<VectorExport IllustrationColor="#FFFFFFFF" HLRMode="Silhouette" Block="Part_127-1" Layer="Welding$59" LineReductionMode="None"/>
</Node>
</VSXML>
Defines which attributes can not be changed after loading.
Name | Type |
---|---|
Cut[optional] |
Bool |
Show[optional] |
Bool |
Color[optional] |
Bool |
ColorOverwrite[optional] |
Bool |
Material[optional] |
Bool |
Transparency[optional] |
Bool |
Ghost[optional] |
Bool |
TransparencyOverwrite[optional] |
Bool |
<VSXML xmlns="http://viewer.kisters.de/VSXML">
<Node>
<Constrains Cut="0" Show="0" Color="1" ColorOverwrite="1" Material="0" Transparency="0" Ghost="0"/>
</Node>
</VSXML>
Name | Type | Description |
---|---|---|
Cuttable[optional] |
Bool |
Specifies if this geometry can be cut by sectioning. |
<VSXML xmlns="http://viewer.kisters.de/VSXML">
<Node>
<RenderState Cuttable="0"/>
</Node>
</VSXML>
Name | Type |
---|---|
Center[optional] |
Vector3f |
Extents[optional] |
Vector3f |
Orientation[optional] |
Quaternion |
<VSXML xmlns="http://viewer.kisters.de/VSXML">
<Node>
<BoundingBox Center="-63.5 3.17499 0" Extents="63.5 53.975 42.8625" Orientation="0 0 0 -1"/>
</Node>
</VSXML>
Name | Type |
---|---|
Center[optional] |
Vector3f |
Extents[optional] |
Vector3f |
<VSXML xmlns="http://viewer.kisters.de/VSXML">
<BoundingBox Center="42.014015 28.500000 -45.155006" Extents="43.164040 28.845001 45.155006"/>
</VSXML>
Name | Type |
---|---|
Anchor[several] |
PMIAnchor |
Name | Type | Description |
---|---|---|
ConnectedNode[optional] |
Integer |
Id of the connected node. |
EndType[optional] |
Integer For possible values see AnchorEndType |
|
ConnectionType[optional] |
Integer For possible values see AnchorConnectionType |
|
Color[optional] |
Color |
|
Position[optional] |
Vector3f |
|
KnockOut[optional] |
Bool |
|
Visible[optional] |
Bool |
|
Scale[optional] |
Float |
Specifies the anchor scale. Default is 1.0. |
LineWidth[optional] |
Float |
Sets the PMI markup line width. Default 0.0 uses standard rendering. For multiple anchors, only the first anchor's line width is applied. |
Name | Type |
---|---|
Position[optional] |
Vector3f |
Direction[optional] |
Vector3f |
Normal[optional] |
Vector3f |
Name | Type |
---|---|
Size[optional] |
Float |
GeometrySize[optional] |
Vector2f |
UseModelUnits[optional] |
Bool |
Color[optional] |
Color |
Transformation[optional] |
Transformation |
Font[optional] |
String |
Content[optional] |
String |
Attribute[optional] |
Integer |
Name | Type |
---|---|
Line[optional] |
PolyLine |
Name | Type |
---|---|
Vertices[optional] |
PolyLineVertices |
Name | Type |
---|---|
IsLinelist[optional] |
Bool |
Color[optional] |
Color |
Name | Type | Description |
---|---|---|
NumVertices[optional] |
Integer |
|
Coordinates[optional] |
String |
List of Vector3f elements separated by spaces.Example: "1.0 2.0 3.0 1.0 2.0 3.0" |
Name | Type |
---|---|
NodeId[optional] |
Integer |
Type[optional] |
Integer |
Indices[optional] |
String List of integers, e.g. "1 2 3" |
Color[optional] |
Color |
Name | Type |
---|---|
Density[optional] |
Float |
Name | Type |
---|---|
RotationSpeed[optional] |
Float |
CoordinateSystem[optional] |
UnsignedLong |
8bit hexadecimal value representing a color's alpha channel.
#AA
None = 0
Direct = 1
Rectangle = 2
Curve = 3
Distance = 4
Angle = 5
None = 0
Arrow = 1
AngledLine = 2
Cross = 3
Sphere = 4
Limited to 31 characters to provide DXF R14 compatibility
Letters: A - Z
Numbers: 0 - 9
Special characters: "$", "_", "-"
"1" as true and "0" as false.
For "Color" its an 32 bit ARGB color.
#AARRGGBB
All // Normal visibility of lines in 2D Export
SelfClipping // The Node (Component) geometry itself is clipped.
// You cannot see lines of its back side.
// Lines generated for this Node will not be clipped by any other object
NoClipping // No lines are clipped
Silhouette // Only silhouete (outline) of Node geometry is visible,
// no clipping by other objects.
Rectangle = 0
Circle = 1
Underline = 2
Limited to 31 characters to provide DXF R14 compatibility
Letters: A - Z
Numbers: 0 - 9
Special characters: "$", "_", "-"
None // All lines visible
EdgesOnly // Reducing lines by recognition of hard edges
None = 0
Top = 1
Bottom = 2
Left = 3
Right = 4
TopBottom = 5
LeftRight = 6
Rectangle = 7
Circle = 8
NearToSolid = 9
Chrome shiny
Steel
Steel polished
Gold shiny
Gold matt
Copper shiny
Copper matt
Aluminium
Plastic Rough
Plastic Smooth
Rubber
Mirror
Cabin Glass
Glass light
Solid Paint
Metallic Paint
Powdercoat
Vertex // Vertex color is used if present, otherwise node color.
Node // Node color is used.
Material // Material color is used if render mode is not set to "NoMaterial"
// and the node has a material with color.
// Otherwise node color is used.
None
Root
ProductOccurrence
Ri_BrepModel
Ri_PolyBrepModel
Ri_Set
Ri_PolyWire
Ri_TessMarkup
Part
AxisRoot
Axis
PMIView
Annotation
AnnotationReference
AnnotationSet
Curve
Line
Plane
Direction
Point
PointSet
CoordinateSystem
Handle_Root
Handle_Arrow
Handle_Sphere
Handle_Curlyarrow
Solid
Wire
AnnotationItem
Markup_Text
Dimensioning
PointMarker
EdgeMarker
CircleMarker
AxisMarker
ReferenceLine
LineMarker
TriangleMesh
Markup_Circle
Markup_Rectangle
Markup_Freehand
CutGeometry_Surface
CutGeometry_Wire
PMIMarkup_Text
PMIMarkup_Dimension
PMIMarkup_Arrow
PMIMarkup_Balloon
PMIMarkup_CircleCenter
PMIMarkup_Coordinate
PMIMarkup_Datum
PMIMarkup_Fastener
PMIMarkup_Gdt
PMIMarkup_Locator
PMIMarkup_MeasurementPoint
PMIMarkup_Roughness
PMIMarkup_Welding
PMIMarkup_Table
PMIMarkup_Other
OffsetLine
CutGeometry_Set
MasterRootNode
MarkupSet
DataAnalysisResult
Markup
UnitTranslation
Document2D
AnimationCoordinateSystem
CustomCoordinateSystem
Highlight
SplitSession
SplitDirectionRoot
SplitFaceGroupUp
SplitFaceGroupDown
SplitFaceGroupUnassigned
GlareEffect
PMIMarkup_JT_Start
PMIMarkup_JT_CalloutDimension
PMIMarkup_JT_Centerline
PMIMarkup_JT_Chamfer
PMIMarkup_JT_CuttingPlaneSymbol
PMIMarkup_JT_DatumFeatureSymbol
PMIMarkup_JT_Dimension
PMIMarkup_JT_FeatureControlFrame
PMIMarkup_JT_Section
PMIMarkup_JT_SurfaceFinish
PMIMarkup_JT_ThreadFeature
PMIMarkup_JT_UserDefinedSymbol
PMIMarkup_JT_End
Note: Markup type values might be required in Integer form.
They are numbered in ascending order, i.e. Text
has the value 1
, Dimension
has the value 2
and so on.
Text = 1
Dimension
Arrow
Balloon
Circlecenter
Coordinate
Datum
Fastener
GDT
Locator
MeasurementPoint
Roughness
Welding
Table
Other
AngleDimension
Example:
"0.239 0.370 0.099 0.892"
24 bit color value.
#RRGGBB
4 x 4 Matrix written as space separated String. (Row 1 to 4)
See [Transformation matrix
](#Transformation matrix) for detailed information.
Example:
"1 0 0 0 0 1 0 0 0 0 1 0 10.5 0.05 -5.55 1"
A simple string.
A floating point number
A 64bit unsigned integer value.
String value, valid values are
Vector of two floating point numbers.
"1.0 2.0"
Vector of three floating point numbers.
"1.0 2.0 3.0"
Vector of four floating point numbers.
"1.0 2.0 3.0 4.0"
Identity matrix (no rotation, no movement):
Movement X, Y or Z axis change the last part:
For simple rotations change the first part of the transformation matrix.
Reference orientation (no rotation, identity matrix):
which equals:
row1 | row2 | row3 |
---|---|---|
1 0 0 | 0 1 0 | 0 0 1 |
Rotation by 90 degrees about y axis:
which equals:
row1 | row2 | row3 |
---|---|---|
0 0 1 | 0 1 0 | -1 0 0 |
Rotation by 180 degrees about y axis:
which equals:
row1 | row2 | row3 |
---|---|---|
-1 0 1 | 0 1 0 | 0 0 -1 |
More samples for simple rotations
http://www.euclideanspace.com/maths/geometry/affine/matrix4x4/index.htm
Math on computing the rotation matrix You can compute rotation from any angle about an axis using this formula.
A basic rotation (also called elemental rotation) is a rotation about one of the axes of the Coordinate system. The following three basic rotation matrices rotate vectors by an angle about the x, y and z axis, in three dimensions, using the right hand rule - which codifies their alternating signs. (The same matrices can also represent a clockwise rotation of the axes)
For column vectors, each of these basic vector rotations appears counter-clockwise when the axis about which they are located points toward the observer, the coordinate system is right-handed, and the angle is positive. , for instance, would rotate a vector aligned with the x-axis towards the y-axis, as can easily be checked by operating with on the vector (1,0,0):
This is similar to the rotation produced by the above mentioned 2-D rotation matrix.