1.2 Basic data flow and steps 2
1.3 The XML file output from COMPRESS 2
2 COMPRESS part uniqueness, preventing duplicates, overwriting 3
2.1 How shell and nozzle IDs are created/determined, and how you can manage that in COMPRESS 4
2.2 ID duplicates in the same file 4
3.1 Shell Part Field Mappings 5
3.2 Shell Holes Field Mappings 6
4.1.2 Nozzle End Cut Mappings 8
4.2 What to Expect from different Nozzle types 9
5 Considerations/Limitations 10
5.2 Reimporting Considerations 10
This document covers how PypeServer imports Codeware's COMPRESS XML files. The COMPRESS xml file provides enough information about holes, that the PypeServer import system can derive the parts connecting to the holes as well.
You should always check the data after importing to make sure that everything was interpreted correctly. Contact PypeServer if things are not working as needed.
In this document we'll use "shell" to mean the main component you're designing in COMPRESS. In COMPRESS shells can be of several subtypes, cylinder being one.
We'll use "Nozzles" for the pipe parts (also commonly called headers or pups) that connect to the shell holes. Granted, nozzles typically mean store-bought parts, but in COMPRESS, nozzles refer to any part coming off a shell. Nozzles can be derived (on a best-efforts basis) from the shell hole and nozzle information.
The basic data flow:
COMPRESS CAD File, export to:
?? COMPRESS XML file, open using:
?? PypeServer import staging (part of PypeServer app), import to:
?? PipeServer Database, where it can be used in pypeserver
Steps:
Export data from COMPRESS to an XML file. This is built into COMPRESS.
Start PypeServer, and go to Import Data, select the COMPRESS Import
Select a COMPRESS xml file you exported from COMPRESS.
This parses the file and presents the shells and nozzles you can import
From a dialog, select the parts
Video tutorial:
In your PypeServer application's Training section, you'll find a video on doing an import. You can skip to that, but you really should read section 2 below. It's important for ensuring that your parts in PypeServer stay in sync with your designs in COMPRESS.
Codeware has gone through great lengths to define and publicize as standard output format for pressure vessels and other large shells. It is this xml formatted file type that is being imported.
Because Codeware encourages other companies to use this same format, it may be that other CAD company's may export to this format. The PypeServer import may work for those as well.
You probably won't need to look into the XML file, but if so, the definition of COMPRESS XML format can be found on Codeware's website, last seen at: https://www.codeware.com/compress/xml.html
This section is put before actual importing so you don't miss it. It's important to understand.
It is highly desirable to maintain a unique-link between CAD designs and the parts imported into PypeServer. Put another way, anything imported into PypeServer should reference a specific part in your CAD system, so that you an a) look at a PypeServer design (of a shell or nozzle) and find the information in PypeServer you need to go find the exact (only) drawing that you imported from.
Another reason for this 1:1 link is for both sanity and convenience:
Sanity: Say a user tries to import the same shell (and nozzles) that have already been imported into PypeServer. Confusion will break out in many different ways, followed by a potentiall cumbersome cleanup. (This is no different than mismanaging the CAD files themselves-like creating duplicates all over the place.
For this reason, PypeServer will not re-import the shells or nozzles with the same ID (though it will update them-see "convience" below. If users cannot import new shells or nozzles because of this, you must change your
Convenience: Say a CAD designer makes changes to a shell design after importing to PypeServer, but before cutting the shells and nozzles. The user can re-export from COMPRESS to .xml and re-import (without having to delete all the already imported parts in PypeServer). On the second (or other subsequent) imports, the PypeServer import system will advise the user that the parts already exist (and haven't been cut) and allows the user to update the existing parts.
The CODEWARE xml export does not provide a guaranteed UID for every shell designed, or every hole made in a shell. This is in part because it is a CAD design and would be difficult for Codeware to determine if any given shell is meant to be new, or is just a duplicate file of the same design. As such, you the user need to maintain uniqueness of your shells and nozzles, such that there is always a Unique 1:1 relationship between your COMPRESS parts, and the parts imported into PypeServer.
During import, PypeServer determines "Unique Identifier" of a part using two fields: "idNumber" (of a shell or nozzle (which is used to define a nozzle), and "revNumber" which is the drawing Revision number you can set within the COMPRESS application.
Revision number in XML
This is found at the beginning of the xml file.
<?xml version="1.0" encoding="UTF-8"?>
<cw:vessel xmlns:cw="urn:PressureVessel" creationDate="2014-03-14" version="1.07.0066">
<!-- saved from url=(0024)http://www.codeware.com/ -->
<revNumber>2B</revNumber>
?
</revision>
</revisions>
idNumber number in XML
This is found in the standardComponentData section of a shell/<shelltype>/. E.g:
<identifier>Cylinder #1</identifier>
<idNumber>1394824411</idNumber>
NOTE: For PypeServer, Revision numbers and idNumbers are alphanumeric (they can be letters, not just numbers).
Shells and nozzles with Duplicate IDs in the same COMPRESS .xml file are assumed to be duplicates, thus:
For each duplicate ID found in the .xml file, an additional scheduled parts will be scheduled on import.
The name of the nozzle in PypeServer will be the first nozzle found
Warning, if in COMPRESS you duplicate shells or nozzles in the same file, make sure that the idNumbers vary wherever you change the design of the duplicated shell or nozzle.
You can select which shells you want to import for a given file. (You don't need to import them all.)
PypeServer Field | COMPRESS xml "<> |
---|---|
Part.Name |
<cylinder> <standardComponentData> <identifier>pressure vessel #1</identifier> |
Part.Notes | none |
Part.Customer | From the Customer field in the COMPRESS Import Dialog |
Part.Job | From the Job field in the COMPRESS Import Dialog |
Part.Priority | From the Priority field in the COMPRESS Import Dialog |
Part.Cut Date (desired) | From the Cut Date field in the COMPRESS Import Dialog |
Part.Design Group | A join of these two fields: <generalVesselInfo><identifier>72-20-HT-125-B</identifier> : <idNumber>14164349270</idNumber> |
Part.CAD Import ID | A join of these two fields: <cylinder> <idNumber>14164349270</idNumber> . <revNumber>0</revNumber> |
Material Type |
<cylinder> <material>SA-106 B Smls pipe</material> |
Outer Diameter |
<cylinder> <outerDiameter>3.825 </ outerDiameter > |
Wall Thickness |
<cylinder> <nominalThickness>0.125 </ nominalThickness > |
PypeServer Field | COMPRESS xml |
---|---|
Cut.Name | <nozzle> <drawingMark>N9A</ drawingMark > |
Cut.Note |
<identifier>Drain/Cleanout (N9A)</identifier> |
Cut.Mate1Diameter (Hole Diameter) |
<outerDiameter>5.0</outerDiameter > |
Cut.Mate1Angle (angle rotated around pipe) |
<orientationAngle>90.0</orientationAngle > |
Cut.YStart (dist along pipe) |
<lclIntersectionPointZ>53.0</lclIntersectionPointZ > Or <lclIntersectionPointX>53.0</lclIntersectionPointX > (depending on pressure vessel orientation) |
Cut.Mate1Offset (offset across pipe) |
<offset>6.0</offset > |
Cut.Mate1Angle (angle tilted down pipe) |
90 - <nozzle> <tippingAngle>0.0</tippingAngle > |
Cut.FeedRate | From the Shell Cut Feed Rate field in the COMPRESS import dialog |
Cut.Bevel Angle | Nozzle types 1-4 will use the Bevel Angle field in the COMPRESS import dialog (shown below), or if not set there, then the bevel angle for the default hole in PypeServer. Nozzle types 7 & 8 (anything penetrating) will be set to zero in the importer. |
Cut.Tabs (for holes > than a given ID) | From the Tabs for holes field in the COMPRESS import dialog |
Orientation (used for importing only) |
<orientation>6.0</ orientation > |
You can select which nozzles you want to import for a given file. (Note that you can import nozzles separately from shells.)
Also see Considerations/Limitations about reimporting after deleting nozzles.
The PypeServer import does not distinguish which nozzles in the xml file are store-bought, and which ones need to be cut out of pipe (and therefore be imported into PypeServer).
The CAD designer should consider labelling (via hole naming convention or the nozzles' notes) those parts that should be imported.
The person doing the importing will need to manually select when nozzles are to be imported into PypeServer.
This section describes how PypeServer import parses and maps the COMPRESS xml fields that define nozzles.
PypeServer Field | COMPRESS xml "<nozzle> |
---|---|
Part.Name | <standardComponentData> <identifier>4" Drain/Cleanout (N9A)</identifier> |
Part.Notes | <standardComponentData> <idNumber>1234455335</ idNumber > " for " <drawingMark>N9A</ drawingMark > |
Part.Customer | From the Customer field in the COMPRESS Import Dialog |
Part.Job | From the Job field in the COMPRESS Import Dialog |
Part.Priority | From the Priority field in the COMPRESS Import Dialog |
Part.Cut Date (desired) | From the Cut Date field in the COMPRESS Import Dialog |
Part.Design Group | A join of these two fields: <generalVesselInfo><identifier>72-20-HT-125-B</identifier> : <shell> (note that this is the shell id-NOT the nozzle ID) <idNumber>1416331170</idNumber> |
Part.CAD Import ID | A join of these two fields: <idNumber>1416331170</idNumber> . <revNumber>0</revNumber> |
Material Type |
<material>SA-106 B Smls pipe</material> |
Outer Diameter |
<outerDiameter>3.825 </ outerDiameter > |
Wall Thickness |
<nominalThickness>0.125 </ nominalThickness > |
Nozzle End | PypeServer Field | COMPRESS xml "<nozzle> |
---|---|---|
Shell | Cut.Name | "For shell hole:" <drawingMark>N9A</drawingMark> |
Shell | Cut.Note | "For Nozzle:" <standardComponentData> <identifier>4" Drain/Cleanout (N9A)</identifier> |
Flange | Cut.Name | "Flange end:" <standardComponentData> <identifier>Firetube Flange</identifier> |
Flange | Cut.Note | ID: <standardComponentData> <idNumber>1420003943039</idNumber > Attach to: <standardComponentData> <attachedTo>Head #2 - Firetube End</attachedTo> |
The following chart shows what nozzle types are supported in the PypeServer compress importer.
Nozzle types 1-4 are penetration type nozzles. They create beveled holes on the shell, and no bevel saddles on the connecting (penetrating) header part. The depth of penetration is defined in the COMPRESS export file. See the Cut.Bevel row for more information on how bevel angles get set.
Nozzle types 7 and 8 are set-on types nozzles. They create no-bevel holes with positively beveled saddle cuts for the header part.
Seam Angle:
As of V2.069, PypeServer does not store seam angle on the part. It only stores it on the pipe.
The import appends the desired seam angle onto the notes.
This feature is scheduled for development.
Offset + tilted holes
At PypeServer's last investigation, COMPRESS did not allow for holes that are offset across the pipe and tilted (rotated laterally) down the pipe. PypeServer can make these cuts, but the operator may need to make changes to both the shell holes and the nozzles after import.
PypeServer suggests adding notes to such holes such that the operator can make updates after the import.
12 Nozzle types supported
At the time of writing this import, COMPRESS had 12 nozzle types defined. If additional nozzles have been added, and you need support for them, please contact PypeServer for getting the new nozzles included in the importing system.
Cannot reimport Designs with parts already cut
If you have already cut parts from a design, you cannot reimport these same designs to replace the existing PypeServer designs. Create a new revision in your COMPRESS file, or change the idNumber of the part(s) being reimported.
Reimporting after deleting nozzles
If you import a nozzle on a shell, and then in COMPRESS delete the nozzle from the shell, and then reimport the shell into PypeServer, then the deleted nozzle will remain in PypeServer. You will need to manually locate and delete the nozzles deleted in COMPRESS.
Reimporting with "Schedule Parts" selected will delete existing scheduled parts and recreate new scheduled parts
If you re-import a shell or nozzle and choose to schedule parts when import), will reflect the selected items imported on the re-import.