For over 20 years I worked in the manufacturing industry as a designer, CAD or IT manager. One issue I have seen and experienced many times is the difficulty of getting upper management to understand the need and benefit of getting the latest CAD, PLM systems, or any other IT systems. In each role there was always the need for new software to keep my teams and systems as productive as possible. In this blog I will, at a very high-level, outline how I was able to get upper management to buy in on projects I felt were needed.

Very early in my career I was a CAD administrator. At the time we needed new CAD software. I was able to talk to upper management very often. I would try to explain and tell them the need. I would verbally walk through the benefits and even give them demos of the software. But… they would not want to pull the trigger on buying the latest software. I could theorize with them until I was blue in the face. It just didn’t matter.

Then, a mentor of mine recommended I put everything to numbers, such as creating a ROI and roadmap of what was required to implement the new software. So, I did. First, I did time studies against what we were doing today. I did this by getting input from various different users. This was basically recording how long it took them to do the most common tasks. I would always take multiple samples and then take the average. Then, using a trial install of the new version of software I was able to get comparisons for each use case tested against current software. I put the time savings to cost savings based on hourly rate averages. I also related it to increased engineering department output capabilities. For instance, our department could produce four projects a year. With the time improvements we can now produce five.

The next time I spoke with my manager, I simply put a one page short summary of total potential time and cost savings in front of him. Which in this case, immediately got his attention. He of course wanted to know how I came up with those numbers. I had to be ready to back my numbers up. I did this by giving him a more detailed page and walked him through my findings at a high-level. I also had a page outlining the general implementation roadmap with a timeline summary. Only three total pages, not a short novel. He could no longer just dismiss or put off the need. I received approval to proceed with my plan in less than a month after presenting my numbers to my manager. In this case my manager was one of the company owners, but having hard numbers and a tentative plan got the ball rolling.

One thing to note from the above example, by doing what I outlined above, it elevated my standing at my company. They were impressed at my willingness to push for, justify, and plan for something I believed in. Not just asking them to take on the burden of something I felt was a good idea.

This scenario was repeated throughout my career. I could bring in vendors to demo their product, put quote after quote in front of management. Meeting after meeting with vendors and upper management, I could not get management to agree until I took the time to document the true benefits in time and money (roadmap and ROI).

If you have product or process improvements you feel will benefit your company, you need to show your management that you truly believe in it. You need to do the needed research and documentation to show the benefit and how you recommend proceeding. You cannot just go and tell management there are problems. You must present a solution for the problem you are identifying. If you do this extra work, it will not only help get your request approved, but will also help how you are viewed by your management.

Look, I know what I am outlining is no small task. It can be time consuming, very time consuming in some cases. That’s why many times this never gets done and needed improvement projects never happen. There is just not enough time for internal staff to do the needed research, and get their day-to-day tasks done as well. That is why you need to partner with a company dedicated to help with product development improvements at your company, such as EAC. We don’t want to just sell you software, we want to help you and your company improve the way you design, manufacture, connect to, and service your products. We do this with our proven people, products and processes. If you and your company improve and succeed, we improve and succeed. We will do as much of the work as we can to help you get the needed numbers and roadmaps put together. There is always going to be some time needed from internal people. However, we try to keep this as minimal as possible.

In summary, if you can see areas where your processes or systems could be improved you need to put it to numbers. You need an ROI and a roadmap to take to upper management. It may seem frustrating at times, but you need to understand where management is coming from. They also have people they answer to. They can’t go to a board, or an owner, or their manager with just a demo and a quote. Not only is that not the information they are concerned with, but you typically don’t get that type of time with them. They need quick and real information to justify the need. You must be willing and ready to get this for them. Just remember, EAC is here to help you do this. Please reach out to us.

Connecting to ThingWorx with the Arduino is easy if you possess an Ethernet or WiFi Shield but you can still connect without one! Using the Processing language you can send data from your Arduino to a computer via a serial connection and push it to ThingWorx.

Requirements:

  • ThingWorx hosted instance
  • Arduino Uno
  • Processing Environment (found at Processing.org)
  • Arduino Environment

In this post:


Introduction to Processing:

Processing is the language that the Arduino language is built on. This means that the syntax is very similar. I would recommend visiting the tutorials and documentation that is provided on the Processing.org site as it is very informative and helpful.

Tutorial:

In order to push data to your ThingWorx thing refer to my previous tutorial, “Getting Started with the Arduino Uno and ThingWorx,” to get a Thing and Service set up. Next, copy and paste the example code that is included with this post. That’s really all you need to do!

More specifically, enter all of your pertinent server and thing information into your processing code. You should now be ready to start pushing data to ThingWorx. Fire up your Arduino and upload the example code to it. Next, push the “play” button at the top of your Processing Environment.

You may run into a few issues. One, if your Processing code throws an error about your serial port (it will say something about a “null exception”) you’ll need to determine which serial port your Arduino is at. The Processing code will print a list of available ports and default to the first one on the list. If your port is different then you can change it in the code:

You will also have an issue if you try and open your Serial Monitor in your Arduino Environment. This will cause your port to become unavailable.

You can either change the highlighted number to match the position that the port is listed or just change the highlighted variable portName to the actual name of the port:

The Processing code will print a list of available ports and default to the first one on the list. If your port is different then you can change it in the code:

You will also have an issue if you try and open your Serial Monitor in your Arduino Environment. This will cause your port to become unavailable.

Advantages and Disadvantages: Now that you know how to connect your Arduino to ThingWorx using three different methods, let’s discuss some possible advantages and disadvantages of each. In the case of the Ethernet Shield, you are able to move from one network to another without much issue. No new coding is needed. With the WiFi shield, you must recode your Arduino any time that you switch networks so you can enter the SSID and Security Code if needed. However, once the Arduino is configured correctly, you merely turn it on and it runs as a standalone device.

The serial connection allows you connect to the internet without the use of a shield. The cost of an Ethernet or WiFi shield is typically between $30 and 80$ depending on the manufacturer. A disadvantage is that you must be tethered to the Arduino with a computer if you want to send data.

The Processing language is very easy to learn and there are tutorials on the web that will instruct you on how to build user interfaces that you can control your Arduino with. This makes the serial connection an attractive option if you want some control over pins or variables on your Arduino!

And now for some code…


/***************************************************************************************************
ThingWorx Serial Example for Arduino Uno

This Arduino and Processing code allows you to connect to ThingWorx without the use of an Ethernet
or WiFi Shield.  The data is sent from the Arduino to the computer via the serial (USB) connection
to your computer.  All server and “Thing” data goes into the Processing code that is commented out
at the end of the Arduino Code. When you are running this code do NOT use the Serial Monitor in the
Arduino environment as it will interrupt the Serial connection to Processing.  The Processing language
can be found at Processing.org.

Created by Nick Milleson
Design Engineer
EAC Product Development Solutions
nmilleson@eacpds.com
***************************************************************************************************/

//Make sure that SENSORCOUNT matches SENSORCOUNT in the Processing code
#define SENSORCOUNT 4

double sensorValues[SENSORCOUNT];

//Denote the pins you will be using
int sensorPins[] = {A0, A1, A2, A3};

void setup() {
//begin Serial connection
Serial.begin(9600);

for (int idx = 0; idx < SENSORCOUNT; idx++)
{
pinMode(sensorPins[idx], INPUT);
}

}

void loop() {

//Read info from the pins
for (int idx = 0; idx < SENSORCOUNT; idx++)
{
sensorValues[idx] = analogRead(sensorPins[idx]);
}

//send out a serial message that tells your Processing code that you are beginning a transmission
Serial.println(“begin”);

for (int idx = 0; idx < SENSORCOUNT; idx++)
{
//Send data over the serial port
Serial.println(sensorValues[idx]);
}

delay(1000);
}

/***************************************************************************************************
ThingWorx Serial Example for Arduino Uno

This Arduino and Processing code allows you to connect to ThingWorx without the use of an Ethernet
or WiFi Shield.  The data is sent from the Arduino to the computer via the serial (USB) connection
to your computer.

Enter your Server, appKey, Thing, Service, and sensorNames to match up with the data being sent by
the Arduino.  Make sure that you do NOT use the Serial monitor in the Arduino Environment. It will
disrupt the connection.

Created by Nick Milleson
Design Engineer
EAC Product Development Solutions
nmilleson@eacpds.com
***************************************************************************************************/
/*
import processing.net.*;
import processing.serial.*;

Client myClient;                     // Client object

Serial myPort;                       // The serial port

final int SENSORCOUNT = 4;           // This value must match SENSORCOUNT in your Arduino Code

String sensorValues[] = new String[SENSORCOUNT];
String junk;
String beginString = “begin”;
String myServer = “enter server here”;
String appKey = “enter appKey here”;
String thingName = “enter Thing here”;
String serviceName = “Enter Service here”;
String myURI = “POST /Thingworx/Things/” + thingName + “/Services/” + serviceName + “?appKey=” + appKey + “&method=post&x-thingworx-session=true<“;
String myHost = “Host: ” + myServer;
String myContent = “Content-type: text/htmln”;
String sensorNames[] = {
“valueOne”, “valueTwo”, “valueThree”, “valueFour”
};  //Enter your variable names (these must match the inputs in your Service)

void setup() {

// Print a list of the serial ports, for debugging purposes:
println(Serial.list());

String portName = Serial.list()[0];
myPort = new Serial(this, portName, 9600);

myClient = new Client(this, myServer, 80);
}

int idx = SENSORCOUNT + 2;

void draw() {

if (myPort.available() > 0)
{
junk = null;
junk = myPort.readStringUntil(‘n’);

// look for the initial “begin” string that Arduino sends
if (junk != null)
{
if (beginString.equals(trim(junk)))
{
junk = null;
idx=0;
}
}

//Read each sensor value
if ((junk != null) && (idx < SENSORCOUNT))
{
sensorValues[idx] = junk;
junk = null;
idx++;
}

//When all sensor values have been read, send the info to ThingWorx
if (idx == SENSORCOUNT)
{

myClient.write(myURI);

for (int index = 0; index < SENSORCOUNT; index++)
{
myClient.write(“&” + sensorNames[index] + “=” + trim(sensorValues[index]));
}
myClient.write(“> HTTP/1.1n”);
myClient.write(myHost + ‘n’);
myClient.write(myContent + ‘n’);

println(“Sending this REST call:”);
print(myURI);
for (int index = 0; index < SENSORCOUNT; index++)
{
print(“&” + sensorNames[index] + “=” + trim(sensorValues[index]));
}
print(“> HTTP/1.1n”);
print(myHost + ‘n’);
print(myContent + ‘n’);
print(‘n’);

idx = SENSORCOUNT + 2;
}
}
}
*/

Creating Ideal Translation Workflows for Optimum Results 

In Part Two of this post on coupling products for translation, we’ll discuss the specific steps that are required to implement complete translation projects – from managing technical content objects to managing costs and file collaboration. Refer to Part One for the overall solution design which shows the strengths of PTC’s Translation Manager, Windchill ProjectLink, workflow, reporting, and multi-lingual publishing and how they can be leveraged for translation.

The Process 

There are six process components to the overall translation solution. The process starts and ends with PTC’s Translation Manager. Windchill ProjectLink is nested in the middle of the process to facilitate the business project, cost collaboration, and file transfers with Translation Service Providers.

Step 1. Designate Objects for Translation 

The first step of the process begins with source content that is ready for translation to the target language(s). The content is stored in Product or Library folders in Windchill/Arbortext Content Manager. Here the project owner identifies complete document structures or document objects to be translated. A translation work package is created for the objects. The Translation Service Provider and target language(s) are designated with the creation of the translation package. Languages and Translation Service Providers are configurable.

At the completion of this step, the content is prepared for translation. It results with a collection of XML objects to be translated in a zip file. The source objects are set to the In Translation lifecycle state and the source content continues to be managed in relation to other content and states.

Step 2. Create Translation Project 

In the second step, ProjectLink is used to create a translation project that contains any business-related activity required for traceability. This activity includes deadlines and due dates, assign internal resources to the project, and expose the project to Translation Service Provider(s) or other external users outside your firewall. Any cost information, such as Requests for Quote and quotations received can also be stored under the project.

To start, the translation zip package is posted to the project. From here, the package is available for workflow and lifecycle activities as well as for collaboration with Translation Service Providers. If a process for approving translation costs is required, the cost approval workflow would be executed on the translation package stored in the project. Providers will be able to see the source content in order to estimate the level of effort and designated project participants can see cost approved or not approved activity.

Step 3. Route Objects for Translation 

This step in the workflow is for actual translation activities. Here Translation Service Providers can:

  1. Checkout and Download the package when it is ready to translate and
  2. Checkin and Upload the package when the work is complete.

This activity makes use of the translation package on ProjectLink so that collaboration with users outside your firewall can work on the project. The user interface is self-serving and provides traceability out-of-the-box. The zipped file is automatically iterated and historical versions are maintained on checkin so that everyone on the project is aware of the project status. Users can schedule alerts to immediately know when a critical threshold is reached. Therefore having the lifecycle states in ProjectLink enables real-time reporting on activities to show key performance indicators. Is the project on time? On budget?

Step 4. Route Translated Collateral for Approval 

The approval workflow activity in step four supports reviewing translated content delivered by the Translation Service Provider. Reviews may be performed by local native language review teams or it may include users that have other roles on the project. This activity uses the translation package on ProjectLink so that collaboration for users inside or outside of your firewall can continue to work on the translation. As a result of this workflow, updates can be made either by the Translation Service Provider or by home team members.

Once the translation is approved, the translation project can be concluded and all ProjectLink activities closed. Even so, an organization may still elect to store invoices and final cost information in the project for matrix reporting and future planning purposes.

Step 5. Store Objects in Translation Library 

After objects are translated, the final translation zip package is returned to the Translation Library where XML objects and images are stored. Here the translated target objects are bound to specific revisions and iterations of source objects for each language. For clarity on object status, objects are marked “Translated” or “Translated, Ready for Publish”.

When the objects are returned to Windchill/Arbortext Content Manager they can be published, updated, and iterated just like any other object. This is important since changes may be necessary to:

  1. validate the markup;
  2. facilitate aesthetics for publishing;
  3. change product names, service marks or other marketing decisions;
  4. change dates or other metadata.

Step 6. Route Assembled PDF Document for Approval 

In an environment with shared document components, status checks are necessary to verify that all objects included in the document are ready for publishing. This is a key element of the process since some objects may be In Translation, others may be at earlier iterations with no recent updates, or they could be universal images that require no translation. When all objects in the translated document are Ready for Publish, the published document is created, and routed for review and approval. This may be the first time that a translated document is being reviewed as a whole, thus it may be the first time that all content is reviewed relative to the content around it. At this point, it is expected that any changes made during this stage would be made by the home team for content stored securely behind the firewall.

The document review and approval process should be the same as your usual published document review process with different resources for languages. Documents can contain a single language or there may be multiple languages per document depending on the style guidelines for your organization.

Summary

For anyone that has been involved in the translation process, you can likely sympathize on how complex and challenging the tasks can be. By putting ProjectLink to work in your translation process, it does not have to be the case. With PTC’s Translation Manager and Windchill ProjectLink, workflow activities can be more transparent, helping to streamline the translation process across all documents and languages that need to be managed. If you have questions about how ProjectLink, Translation Manager, or multi-lingual publishing solutions can be integrated into your organization, connect with our technical publications team today.

Learn More

Be sure to read Part One of this post to learn more about the solutions being deployed in the workflow being described.

Why Translation Workflows Matter

For companies who require product documentation to be localized for regional use, the sheer number of translated objects makes translation management very important to the business and organization as a whole. Suppose, for the purpose of simple math, that you are translating to 9 languages. One source language plus 9 target languages is 10 languages total. That means up to 90% of the content you are managing is translated. 10% of those objects could be global images that do not require translation, which would drop managed translated content to 80%. In global companies, it is fair to say that a large majority of the content you are responsible for is translated.

One might think that the translation process would simply involve handing off copies of documents to translation teams and then waiting a few days/weeks for the local language versions to arrive, but in reality this process is much more complex. Even when the material is developed in a sophisticated technical documentation tool like PTC Arbortext, it remains necessary to closely administer this activity to avoid risks associated with mandates that vary in different geographies, inefficient file tracking, incomplete reviews, and delays throughout the translation lifecycle.

This is the first of a two part series that discusses how to optimize translation processes by coupling two complementary tools, PTC Translation Manager and PTC ProjectLink. By combining these tools, organizations can overcome several obstacles that either slow workflow processes or increase costs during the translation of technical documentation. Part one outlines these tools and the processes they are designed to address. Part two details how more efficient translation workflows can be arranged in order to expand past administering translated XML objects, to include management of peripheral translation activities such as cost quotations, file sharing, collaboration with translation service providers, and quality assurance processes.

PTC’s Translation Manager

Translation Manager is a component of the PTC Windchill Service Information Manager. The Translation Manager prepares content for translation by identifying document components to be translated, creating work packages for translation or translation service providers, and setting the InTranslation lifecycle state. Key features include:

  • Automate the creation of translation packages using workflows
  • Restrict creation of translation packages to authorized translation users
  • Generate a translation package from a Publication Structure or an Information Structure or
  • include select document objects by assigning the proper translation attribute and life cycle state
  • Automatically associate translated dynamic documents with their source objects
  • Identify whether a translation exists for a source document or not
  • Bind specific revisions and iterations of source objects to translated target objects
  • Publish translated dynamic document structures.

Post-translation, the Translation Manager stores content by linking translated objects to source document objects in the translation library and sets the Translated lifecycle state.

Windchill ProjectLink

ProjectLink enables defining and executing project plans as well as associating project tasks with product deliverables. Through a self-administered virtual workspace, ProjectLink provides project management capabilities and access to accurate product information for resources inside or outside of your firewall.

In this solution, Windchill ProjectLink is featured to facilitate translation tasks outside your organization.

Windchill Workflow and Reporting Features

Workflow and Reporting are core features of the PTC product suite and are available in all Windchill-based products including Arbortext Content Manager, Service Information Manager,  and ProjectLink.

Workflow

Windchill Review and Approval Processes are used to automatically set the state of objects to the target lifecycle state and invite a list of Reviewers to provide comments.

Reporting

Windchill offers multiple tools to help decision-makers easily visualize trends, patterns and relationships using graphical and drill-down reports of key performance indicators. Simple and easy-to-use reporting and charting tools enable users to configure and save reports.

Publishing

PTC Arbortext Publishing Engine is a server-based system that assembles XML content and automatically publishes the content in both print and electronic forms, all with high-quality layout and formatting.

Stylesheets

Predefined stylesheets are used for layout and page composition. There can be different formatting options based on the language attribute assigned in the XML file.

XLIFF for Generated Text

Text that is generated by the stylesheet is translated once and stored for future use in an independent file. For example, text like the word “Table” is not translated with content. This is supported using XLIFF technologies. XLIFF is the XML Localization Interchange File Format which is used to store extracted text and carry the data from one step to another in the localization process.

Summary

As you can see, there are some pretty sophisticated tools available to support the translation process. The challenge is knowing how to leverage these tools to create a process that maximizes efficiency. Stay tuned, because we will be discussing just that in part two.

EAC Product Development Solutions (EAC), a leading provider of product development technology and services, is pleased to announce the acquisition of the Arbortext Business Unit of TerraXML. This acquisition makes EAC unique in providing a complete end-to-end systematized solution set for managing product information, executing processes within that system, and publishing relevant information both inside and outside the enterprise.

March 19, 2014 — EAC Product Development Solutions (EAC) expands capabilities and services through the acquisition of TerraXML’s Arbortext Business Unit. This acquisition aligns EAC with industry trends toward Service Information Management (SIM), Service Lifecycle Management (SLM), and automated publishing of technical information. The Arbortext Business Unit will operate as the EAC Product Development Information Services group or PDIS, and provide implementation, customization, development, and support for the Arbortext product line.

Thane Hathaway, President and CEO of EAC said: “Small and medium businesses (SMB’s) need to manage and publish accurate product information in real time, across multiple platforms just like the Fortune 500’s, but they’ve never had a world class and affordable solution. With this acquisition, we’ve gained the unique ability to implement and support an end-to-end PLM and publishing system specifically tailored for SMB. We look forward to satisfying this market need while continuing to grow and develop these tools.”

Cory Huey, Vice President of Services at EAC said: “This acquisition opens the doors to many new possibilities. In the future, we will develop integrated dynamic publishing products that small companies can more easily afford and deploy. I’m excited to see where the market takes us from here.”

Acquiring the Arbortext Business Unit of TerraXML enables EAC to enter new markets and provide end-to-end solutions to the product development and manufacturing industries. Arbortext allows product companies to easily create products and technical publications and make that information available to customers, dealers, and service staff.

I’ve been a Mechanical Engineer for years. This means I’ve had many conversations with people regarding their opinions about the various CAD tools on the market. For the record, I’m a Creo and Pro/ENGINEER man. During these, sometimes heated, conversations I regularly hear people say that it takes too many mouse clicks to do something in Creo; whether that is creating a feature in sketcher mode or getting to the dialogue box to select a sketching plane for an extrude. Every time I hear this I have the same response. I tell them about a simple solution that’s built right into Creo. I use it every day. It’s the right mouse button.
The right mouse button (RMB) gives you several menu options depending on what mode you are in and what you are currently doing. For example if you are editing an extrude and you have the dashboard up and you hold down the right mouse button you will see options such as “Edit Internal Sketch, Clear, Surface, Thicken sketch, Flip Depth Direction, Add Taper, Show Section Dimensions.” I don’t know about you but I find that a lot faster and easier than digging through the dashboard.

This was just one quick example of using the right mouse button in Creo. Feel free to explore the right mouse button in other areas of Creo for different menu options. Let me know your favorite “short cuts” in the comments below.