Spring 2006

66
The annual ramp-up to the PTC/ USER World Event is in full swing. In this issue, President Evan Caille talks about the value of participating in PTC/USER and the World Event. We also have a sneak preview of an Industry Partner presentation from NetIDEAS. Our good friend Edwin Muirhead returns this issue in our cover story with his thoughts on how to efficiently apply the power of Pro/ ENGINEER to build thousands of similar parts. Ron Watson introduces the Windchill Customer Council and their efforts on behalf of all Windchill customers. Last but not least, we have four great new tips for your reading pleasure. Best Regards, Rick Snider, Publisher, Profiles Magazine Time-Saving Techniques for Making Thousands of Parts by Edwin Muirhead, Weatherford UK Opportunity Awaits You in Dallas by Evan Caille, PTC/USER President PLM Pain Relief by Steve Bruneau, NetIDEAS Meet the Windchill Customer Council by Ron Watson, Director of Windchill Operations

Transcript of Spring 2006

Page 1: Spring 2006

The annual ramp-up to the PTC/USER World Event is in full swing. In this issue, President Evan Caille talks about the value of participating in PTC/USER and the World Event. We also have a sneak preview of an Industry Partner presentation from NetIDEAS.

Our good friend Edwin Muirhead returns this issue in our cover story with his thoughts on how to efficiently apply the power of Pro/ENGINEER to build thousands of similar parts. Ron Watson introduces the Windchill Customer Council and their efforts on behalf of all Windchill customers. Last but not least, we have four great new tips for your reading pleasure.

Best Regards,

Rick Snider,Publisher, Profiles Magazine

Time-Saving Techniques for Making Thousands of Partsby Edwin Muirhead, Weatherford UK

Opportunity Awaits You in Dallasby Evan Caille, PTC/USER President

PLM Pain Reliefby Steve Bruneau, NetIDEAS

Meet the Windchill Customer Councilby Ron Watson, Director of Windchill Operations

Page 2: Spring 2006

Regional User Group Calendar

Download a PDF of this issue

Copyright 2006 PTC/USER, Inc. All rights reserved.

Reel 3D from the 50's – Presentations that Popby John Driscoll

Pro/TOOLKIT: Getting Along With UDFsby Vin Jovanovic, Smith International, Inc.

Extending All Four Axis Lines at Once in Pro/ENGINEER Wildfire 2.0by Dan Aurit, Caterpillar, Inc.

Creating a Rectangular Fill Pattern for Regular Hexagonal Cutoutsby Ceferino Sanchez, ASTEC Power

Page 3: Spring 2006

Time-Saving Techniques for Making Thousands of Partsby Edwin Muirhead, Weatherford UK

About 18 months ago at Weatherford, we needed to create a batch of fresh Pro/ENGINEER models for over 8,000 standard o-rings as part of an ongoing clean-up operation. In this article, I highlight some valuable lessons we learned and outline the steps taken to create these models, including templates, family tables, trail files and UI scripting.

Initial attempt

The first step was to create a solid model of a typical o-ring in Pro/ENGINEER. The plan was to use this template as a starting point for all the others, effectively multiplying the model by 8,000. We included a datum axis, datum planes, and renamed dimensions (see simplified version in Fig. 1).

Time-Saving Techniques for Making Thousands of Parts

Opportunity Awaits You in Dallas

PLM Pain Relief

Meet the Windchill Customer Council

Reel 3D From the 50's – Presentations That Pop

Pro/TOOLKIT: Getting Along With UDFs

Extending All Four Axis Lines at Once in Pro/ENGINEER Wildfire 2.0

Creating a Rectangular Fill Pattern for Regular Hexagonal Cutouts

Page 4: Spring 2006

Figure 1.

O-rings are deformed during use, either expanded over a pipe or squeezed into a bore, so they’re a prime candidate for flexibility in Pro/ENGINEER. We chose to make the inner diameter flexible, allowing a user to pick a cylindrical surface to determine the assembled diameter. We also liked the idea of using the component interface capability (Fig. 2), since they’re assembled the same way each time.

Page 5: Spring 2006

Figure 2.

So, this was a great chance to introduce these intelligent capabilities to parts. Even for simple items like o-rings, a bit of foresight can save a lot of time later on. Just think how many hundreds of times these parts will be assembled by our designers in the future…

A bit of a squeeze

We thought it would be good if the cross-section changed shape as the o-ring was deformed (Fig. 3), so I modeled an o-ring with an elliptical cross-section and used relations to tweak the major and minor diameters, giving the appearance of deformation.

Page 6: Spring 2006

Figure 3.

After talking to a few of our engineers, however, we decided to keep things simple and retain the circular cross-section. The overlap would allow a designer to see the potential compression, plus the ellipse did not form a true representation. So it was back to a simple circular cross-section, and then on with the show.

Multiplication

The o-ring part numbers, descriptions, sizes and materials were already available on our Windchill server, so we sorted and filtered the data in a spreadsheet (Fig. 4). There were 369 sizes, each available in 23 materials, resulting in 8,487 possible combinations. Family Tables offered an attractive approach since they should be good at this kind of thing. But past experience with Pro/INTRALINK and Family Tables had taught me to be cautious, so we chose to create 369 parts, each holding a family table for the 23 material options. (We later decided to break up even these family tables.)

Figure 4.

Follow that trail

Faced with modeling 369 parts and having limited dedicated resources (i.e., myself!), I realized it was time to get smart and let the computer take the strain. Trail files sprung to mind as I’d already done my homework and knew they could be used for automation,

Page 7: Spring 2006

much like macros and mapkeys. The great thing about trail files is their editability—allowing you to record, tweak in a text editor, then play back the new version. Plus, Pro/ENGINEER can be run in “no graphics” mode with a trail file, further speeding up the process.

So I blazed a trail:

1. Create new part, using o-ring template. 2. Edit dimensions (Inner diameter, Cross-section size). 3. Edit parameters (Description, Material – use config.pro option

“new_parameter_ui no” to enable accurate parameter editing). 4. Regenerate. 5. Save + erase from memory.

By opening the resulting trail file in a text editor, we replaced the sizes and parameters by “dummy” values such as XXX, YYY, ZZZ etc. The next goal was to merge this master trail with the list of numbers, values and parameters.

Mammoth mail merge

If you’re an administrator or systems flunky, you probably have your own favorite scripting or programming language. Whether it’s batch scripting, C++, Java, Javascript, Perl or whatever, you can put together a few lines of code to accomplish great things. Here I used Javascript to process the text, with the original trail file in a textarea and the values held in arrays. This project actually spawned a useful web-page trail generator that I’ve since used for several other projects, combining lists of values with trail file skeletons and spitting out the goodies (Fig. 5). You can try out an example of the trail-maker discussed here by going to http://www.cadmin.co.uk/proadmin/trail-maker.htm.

Figure 5.

Keeping a low profile

Now that we had our mammoth trail files, we prepared to run them through Pro/ENGINEER. We first played a snippet of the trail file to check to see if it worked properly. With this under our belt, it was time to turn off the graphics and let Pro/

Page 8: Spring 2006

ENGINEER work away “in the background.” We achieved this with a couple of command line switches:

call c:\ptc\proe\bin\proe.bat c:\orings.txt -g:no_graphics

The line includes a call to the usual Pro/ENGINEER startup batch file, then a mention of the trail file and selection of the “no_graphics” mode. Trail files run much quicker without graphics, since there’s no need for the computer to worry about displaying the program and 3D models. Still, it was a case of kicking back and leaving the computer to run through the mountains of o-rings. (Great time for a cup of tea…)

Note: To save the items to an existing workspace (e.g., Work), simply add another switch:

call c:\ptc\proe\bin\proe.bat c:\orings.txt -g:no_graphics -wWork

Chop up the tables

This was about the time we made a decision that probably should have been made earlier (sometimes things move so fast!)—to explode all of those family tables. After presenting the idea to several engineers and thinking it over again, we reckoned it would be better to have separate Pro/ENGINEER parts for each and every o-ring. This would make things tidier in Pro/INTRALINK and Windchill.

Up to this point, we’d used “old-style” o-rings that were controlled via a family table of 100 items. This family table was often updated with new sizes, causing conflicts in Pro/INTRALINK. One aim of the o-ring project was to create all potential o-rings you’d ever be likely to need.

Anyway, I used the trail file method again to break up the family tables:

1. Open generic + instances. 2. Tools > Family Table > Delete Entire Table. 3. Save all instances (they become standalone parts at this point).

The trail file and part numbers were plugged into the trail generator, and this new trail file processed the hundreds of family tables into thousands of separate parts.

Into Pro/INTRALINK

Now we had thousands of parts in several workspaces, all ready to be checked in to Pro/INTRALINK. To conserve bandwidth (and patience), I decided to submit them in batches. The files were destined for various Pro/INTRALINK servers around the company and the world, so the submission process had to be automated and repeatable.

This was a great chance to use Pro/INTRALINK UI scripting. (Read more on this from Matt Meadows in the Fall 2004 issue of Profiles Magazine http://www.profilesmagazine.com/p29/tips_meadows.html and my own explanation at http://www.cadmin.co.uk/proihelp/admin_scr.htm).

I recorded a couple of actions, then edited the script and recompiled:

Page 9: Spring 2006

1. Select 100 rows. 2. Object > Checkin > OK. 3. Copy this + paste to loop through all parts.

Figure 6.

Note: Turn off “Key Recording” so that you can use row numbers instead of part numbers. For example, if you select the workspace’s first 100 rows:

...

IL.deselectAll( "WSPI" );

IL.selectRange( "WSPI", 0, 99 );

...

Copy and paste code to check in the rest, i.e.,

...

IL.selectRange( "WSPI", 100, 199 );

...

All’s well that ends well

Since the original o-rings, we’ve successfully repeated this process for other standard parts. The upfront investment is well worth it, reducing errors and duplication of work.

Page 10: Spring 2006

We’re making the software do the repetitive work, leaving designers free to concentrate on their designs rather than drawing up simple or standard parts.

The techniques mentioned here (templates, trail files and UI scripting) can all be used in a variety of situations. Hopefully, this starts you thinking about the power available at the touch of a button.

Edwin Muirhead is CAD manager at Weatherford UK and creator of CADmin.co.uk, a leading website for Pro/ENGINEER tips and CAD Admin resources. He can be reached by email at [email protected].

Page 11: Spring 2006

Opportunity Awaits You in Dallas

by Evan Caille, President of PTC/USER

As the PTC/USER World Event 2006 approaches, it seems apropos to touch upon the theme of this year’s conference—Education-Networking-Training. As past attendees know, this annual event provides a tremendous opportunity to learn new skills and share information with your peers in companies around the globe. In fact, this year’s event brings learning opportunities to a new level.

On the education front, a mix of users, PTC, and PTC partners will present over 140 technical sessions that cover the breadth of PTC’s product line, including Pro/ENGINEER, Windchill, and Arbortext. This is your chance to hear from the experts as they provide case studies, tips, and best practices for maximizing the value of the software applications you own.

As far as networking is concerned, there’s no better venue than the PTC/USER World Event. You can meet one-on-one with your peers and vendor representatives during receptions and within the exhibit hall, or in small groups at special-interest meetings. Year after year, attendees consistently say that these kinds of informal interactions have helped them resolve a tricky problem or learn something they can immediately put to use in their companies. The value of the knowledge gained and applied in the workplace far outweighs the cost of attendance.

World Event Highlights

Executive presentations by PTC’s Dick Harrison, CEO and President, and Jim Heppelmann, Chief Product Officer and Executive Vice President of Software Solutions

140 technical sessions in three product tracks—Pro/ENGINEER, Windchill and Arbortext

Training will be available both during and after the three days of the conference. Classes are focused on a few key topics and provide a variety of opportunities to attend instructor-led skill-building classes. This is a very cost-effective method to gain in-depth knowledge of areas that may be new to you or where you feel you need to improve your expertise. These classes are popular and consistently get high ratings from attendees each year.

One point I want to emphasize is that introducing Arbortext sessions at this year’s

Time-Saving Techniques for Making Thousands of Parts

Opportunity Awaits You in Dallas

PLM Pain Relief

Meet the Windchill Customer Council

Reel 3D From the 50's – Presentations That Pop

Pro/TOOLKIT: Getting Along With UDFs

Extending All Four Axis Lines at Once in Pro/ENGINEER Wildfire 2.0

Creating a Rectangular Fill Pattern for Regular Hexagonal Cutouts

Page 12: Spring 2006

50+ course hours on seven new Precision Learning™ topics

57,000 sq. ft. Exhibit Hall, with special PTC and Arbortext Pavilions and over 140 exhibits and displays

eLearning Laboratory, where you can take any PTC online course free of charge

Keynote address by John K. Solheim and Daniel R. Shoenhair of PING Inc.

New! Industry Leadership Forums in aerospace & defense; retail, footwear & apparel; and electronics & high-tech

Usability Lab lets you help drive the future of PTC software

Don't miss out–register now!

conference in no way detracts from the number of sessions dedicated to Pro/ENGINEER and Windchill. On the contrary, the conference agenda was expanded in order to accommodate Arbortext users. Attendees can therefore be confident that they will get at least the same—if not greater—value compared with prior conferences.

As it does every year, the conference team has worked very hard to deliver a rewarding and informative event for the PTC/USER community. The team of dedicated PTC/USER and PTC professionals work tirelessly throughout the year to plan and execute this event. The small glimpses I get into the process leaves me truly impressed into how much work it is.

In closing, I’d like to personally invite you to attend this year’s PTC/USER World Event on June 4–7 in Dallas, Texas. Visit the conference website at www.ptcuser.org for more detailed information and help in explaining the value of the conference to your boss. I look forward to seeing you there.

Evan Caille works at HP in Houston, TX. He can be reached via e-mail at [email protected].

Page 13: Spring 2006

PLM Pain Reliefby Steve Bruneau, NetIDEAS, Inc.

Product Lifecycle Management (PLM) initiatives are hard, and getting the results you envision once you commit to this initiative is even harder. Success requires a broad strategy that combines a systems approach, an application vision, and sweeping organizational change. By planning for and proactively managing this complex process, companies can reap huge rewards for their business and users alike.

NetIDEAS, Inc. has been deploying, customizing, and maintaining Windchill systems since February 2000. As an application service provider, we are responsible for the technical aspects of the initiative and for guiding clients through the areas they must manage themselves. With over 3,500 users in our production Windchill systems, our clients range from small to large and span a number of industry verticals.

We’ve learned a lot along the way. The general prescription that we offer in each PLM engagement covers seven basic principles for success. This article provides an overview of these requirements to help anyone either planning a PLM initiative or needing to get a current program back on track.

1. Establish a unified application vision.

By definition, Product Lifecycle Management covers a broad array of business processes. At the outset, it’s essential to clearly define the “from” and “to” models and plan a careful evolution between the two.

Engaging the full functionality of an enterprise solution such as Windchill creates enormous cultural upheaval, and resistance to change is the greatest single challenge to success. As a result, most successful programs take a more incremental approach by targeting their long-term desires, but also setting a staged progression that matches their worst pain points and their culture’s ability to embrace that change. For example, they might focus first on project collaboration and, more specifically, document-sharing or simply getting their data management in order.

2. Provide consistent, focused leadership.

Leadership from senior management is needed both upfront and on a day-to-day basis to prepare the organization for the downstream benefits. Given the cultural adoption issues, the role of the senior manager is to serve as cheerleader for the PLM initiative, helping the implementation team keep its eye on the goals and make common sense decisions along the way. The leader also needs to communicate the pros of the new business model/process to the organization while also acknowledging the cons. In the most successful implementations, organizations find a way to generate buy-in from employees so that users “pull” on rather than resist the system.

Time-Saving Techniques for Making Thousands of Parts

Opportunity Awaits You in Dallas

PLM Pain Relief

Meet the Windchill Customer Council

Reel 3D From the 50's – Presentations That Pop

Pro/TOOLKIT: Getting Along With UDFs

Extending All Four Axis Lines at Once in Pro/ENGINEER Wildfire 2.0

Creating a Rectangular Fill Pattern for Regular Hexagonal Cutouts

Page 14: Spring 2006

3. Allocate and support the right resources.

The right team is needed to facilitate a successful deployment and the long-term care of a PLM system. Team members must be problem-solvers who are unafraid of change, experts in their respective business areas, and motivated to “make it work.” They should also be able to work with other disciplines and understand the difference between what is important and what is urgent.

The implementation team also needs a strong project manager who can bring out the best in the rest of the players. This leader must have power to make decisions and not be encumbered by the week’s production issues.

4. Know the application infrastructure, security, performance, business continuity.

As the central system for managing product data over its lifespan, the PLM system must make data available to users so that they can perform their jobs. The organization will expect that the system is there for their use, so the infrastructure must be architected to meet those expectations. A well-structured system is built on four core elements:

Network. If the intent is to collaborate with a distributed enterprise or the supply chain, network and security considerations will require higher priority. The network bandwidth required is a function of the type of data to be shared within the environment. A general rule of thumb is 10MB/minute on T1. For lightweight office documents, a Partial T1 is likely sufficient. When dealing with heavy CAD data, your organization needs to evaluate how big the files are and how often they are checked into and out of the system. Should the performance fail to meet expectations because of the desires/habits of the users, replication appliances can be implemented locally for content caching. Senior leadership needs to communicate to the CAD team that having a check-in take a few more seconds might save many other users hours spent in looking for the right data.

Data center. A PLM rollout will go through several phases that will affect the load on your system. When sizing the servers, the key elements are CPU power, memory, and disk storage. CPU power with Windchill continues to increase with larger HTML pages. Both Oracle and Windchill require plenty of memory for reasonable performance. Disk storage is a function of the number of data objects, their average size, and the frequency of change on those objects. The fact that Windchill saves previous iterations along with visualization and markup files must be taken into consideration as well.

Security. Protecting your organization’s data is paramount. While system security has several dimensions, it is important to keep in mind that the majority of security breaches come from employees rather than from an outside hacker. Proactive firewall management and use of standard HTTPS (128-bit encryption) is our standard approach to minimizing external threats.

Business continuity. Most companies are unprepared for the business continuity issues involved in implementing a PLM system. Network reliability requires 24x7 accessibility and must be redundant and fault tolerant. In our implementations, NetIDEAS servers are directly connected to five tier-1 ISPs, all of which have an SLA with uptime and round-trip performance guarantees. In addition, the data center must be high availability, which includes clustered servers, automatic fail-over and load balancing. We also utilize high availability disk storage and recommend establishing and practicing a routine backup strategy for recovering mission-critical data if circumstances demand. Development servers should be used for testing out new functionality, upgrades, and

Page 15: Spring 2006

bug investigation to protect the production system stability.

5. Proactively manage the business process evolution.

Best practices vs. “our way” is the challenge that all PLM initiatives face. Organizations must realize that no tool will be perfect and the fit between the system and the business processes needs to be worked hard.

Customizations significantly affect initial development costs, schedule, and risk, as well as complicate the ongoing maintenance and upgrades of your system. NetIDEAS recommends that you walk before you run—rather than customize numerous elements, make a slight modification to the business process to achieve the desire outcome. By fully understanding how the system works before making alterations, organizations are better able to make the right trade-offs toward the required fit.

6. Establish a training curriculum that keeps it simple.

Implementing a new system is perhaps one of the hardest changes for an organization to make. The key to helping the culture embrace the new system is to communicate its intended business benefits and acknowledge the extra work and pain that users feel as they begin the process. From the project kickoff, providing a proactive training curriculum highly focused on those users is essential.

The training should, however, be kept very simple and apply directly to the things users do every day. Trainers must also be able to articulate the broader system benefits so that users have an appreciation how the new practices fit into the bigger picture.

7. Prepare for the constant care and feeding.

PLM software is not plug-and-play. As your products evolve to remain competitive in your industry, so too do the technologies, threats, and business processes to create those products. As an organization, you must be proactive to leverage the changing landscape for your benefit rather than find yourself in a reactive posture.

From a software perspective, bug fixes, enhancements, and new functionality are normal occurrences that warrant attention. Full revision upgrades also warrant substantial investment to test out data migration integrity, impacts of customizations, and then the revision of training materials to reflect the changes.

Regardless of how you shape the team that helps you deploy and manage your PLM initiative, the seven key ingredients outlined here have proven time and again to be equally important to long-term success. While it’s possible to overlook some of these areas (and it happens!), doing so directly diminishes the business benefits of your PLM initiative. But by allocating sufficient attention to these priorities, our best clients continue to realize steady returns from their system.

And on that theme, cost per seat is often used as one of the key ROI parameters for a PLM initiative. That parameter needs to be replaced with cost per deployed seat, where the size of the deployment is directly related to the business processes realizing value from the system. Paying attention to these seven ingredients of success will help you attain that value.

Steve Bruneau is vice president at NetIDEAS, Inc. He will be presenting this topic in greater detail at the upcoming PTC/USER World Event in Dallas, TX. Steve can be reached at 856-914-9426 or via email at steve.

Page 16: Spring 2006

[email protected]. You can also leave your contact information at the NetIDEAS booth (#521).

Page 17: Spring 2006

css" mell">

Meet the Windchill Customer Council

by Ron Watson, PTC/USER Director of Windchill Operations

With the annual PTC/USER World Event just weeks away, it’s a good time to introduce Pro/files readers to the Windchill Customer Council (WCC). Through this partnership, PTC/USER and PTC are helping to assure the success of global users of the PTC suite of software products. The PTC/USER mission of providing educational support and services aligns well with PTC’s advancement of product development solutions, creating an operating model that is unique in the industry.

Closer integration of users of Windchill with those of Pro/ENGINEER and now Arbortext will enhance information exchange, learning, and networking opportunities for all PTC/USER members. The fact that Pro/INTRALINK 8.0 is a subset of Windchill PDMLink provides a common framework for knowledge sharing.

A Little Background

Back in the late 1990s—before the advent of the “Link” solutions, Windchill was a highly customized application at many PTC customer sites. In several cases, these same companies

Time-Saving Techniques for Making Thousands of Parts

Opportunity Awaits You in Dallas

PLM Pain Relief

Meet the Windchill Customer Council

Reel 3D From the 50's – Presentations That Pop

Pro/TOOLKIT: Getting Along With UDFs

Extending All Four Axis Lines at Once in Pro/ENGINEER Wildfire 2.0

Creating a Rectangular Fill Pattern for Regular Hexagonal Cutouts

Page 18: Spring 2006

were implementing a Product Data Management (PDM) system for the first time.

To understand the challenges that their Windchill customers were up against, PTC invited a select group to a meeting at PTC headquarters in 2002. As its primary purpose, this group—known as the Windchill Customer Advisory Council—was to help PTC gain clearer insight into the strategic issues related to Windchill implementation. The makeup of the membership differed from that of traditional PTC/USER Technical Committees, comprising senior managers (vice presidents of IT, CIOs, etc.) focused on the strategic and business benefits of an enterprisewide PDM system.

The Windchill Customer Advisory Council was initially independent of PTC/USER. But in late 2003, PTC approached the Board of Directors to discuss how the council might be brought into the PTC/USER organization. The PTC/USER Board agreed to this request, recognizing the value it would bring to the user community in light of the increasingly close integration of Windchill and Pro/ENGINEER.

The PTC/USER Windchill Customer Council (WCC), as it is now known, was formed in May 2004. As its mission, the WCC serves as a common voice of PTC customers in the areas of strategic direction and implementation of Windchill applications. The WCC provides recommendations, feedback, issues, and direction to PTC based on our mutual business requirements.

Windchill Customer Council Companies and Representatives

AGCO Eric Froebel

Bose Bill Jackson

Boston Scientific Marc White

EMC Charles FosterDave Maineri

Guidant Eric Neumann

ITT Ron Watson

PING Dan Shoenhair

Pitney Bowes Amy HandmakerPatrick Leahy

Plug Power Jeff Zemsky

Reebok Chris Murray

Solar Turbines(Caterpillar)

Dan Glenn

Stanley Works Russ Szpot

Steris Bob Priest

PTC and PTC/USER jointly select members for the WCC on the basis of market, size, maturity, and types of Windchill applications. The council was originally made up of major customers only in the Boston area (to minimize travel costs), but has since expanded to include representatives from companies around the world (see sidebar).

How It Works

The WCC interfaces with the PTC/USER Windchill Technical Committees but communicates strategic direction for the Windchill TC to execute the technical changes required. To manage this delicate balance, the Windchill TC leader who serves on the council is also a senior manager concerned with strategic business issues. Jeff Zemsky from Plug Power currently serves in these two important capacities.

Another balancing challenge is managing the relationship between the PTC/USER Board of Directors and PTC’s senior management (see diagram). I serve as chair of the WCC and Director of Windchill Operations for the PTC/USER Board. The primary WCC interface with PTC executive management is through Mark Hodges, the long-time liaison with PTC/USER.

Page 19: Spring 2006

The WCC holds two or three face-to-face meetings each year at PTC’s headquarters, depending on need and subject matter. During these sessions, we first meet as a group (with no PTC representatives present) to share the status of and lessons learned from our respective implementations. But more important, we firm up a common set of priorities to deliver to PTC.

WCC members also meet periodically via webcasting. In some cases, the webcasts are scheduled with PTC as a way to review updates on specific action items or provide feedback on strategic direction. In other cases, we meet independently to facilitate knowledge exchange or discuss a priority issue that we have brought, or need to bring, to PTC’s attention.

As our processes and team evolve, our goal is to tighten the relationship between the strategic business leaders and the technical leaders in Windchill user companies. By pooling our vast knowledge and experience to drive PTC development via a single “voice of the customer,” the broader Windchill customer base will derive better value from their software investments.

What’s on the Table

At the upcoming WCC meeting on April 19, 2006, a key topic is refining the value case around migrating from the Windchill Foundation applications to the “Links” and upgrading from one major release to another. Other important agenda items are the strategic direction of the Arbortext and Polyplan integrations with Windchill, as well as strategies for complying with CMMI (Capability Maturity Model Integration) and Sarbanes-Oxley. We will provide an update on these discussions in future issues of Profiles Magazine.

Ron Watson is Global Product Data Manager at ITT Fluid Technology/ITT Motion & Flow Control. He can be reached at [email protected].

Page 20: Spring 2006

Reel 3D From the 50's–Presentations That Popby John Driscoll

[Editor's Note: There are a large number of high-resolution images in this story. To facilitate your own viewing and experimentation, we are making these available in a Zip archive file (click to download).]

BANG! BAM! POW! WHACK! ZOWIE! *!#/*! "Holy viewmaster, Batman. Its the Molecular Mass Divider right here in 3D.” "Yes Robin, things like that used to happen only in the movies.”

Time-Saving Techniques for Making Thousands of Parts

Opportunity Awaits You in Dallas

PLM Pain Relief

Meet the Windchill Customer Council

Reel 3D From the 50's – Presentations That Pop

Pro/TOOLKIT: Getting Along With UDFs

Extending All Four Axis Lines at Once in Pro/ENGINEER Wildfire 2.0

Creating a Rectangular Fill Pattern for Regular Hexagonal Cutouts

Page 21: Spring 2006

Figure 1.

Stereovision (3D) is the result of each eye looking at an object at a slightly different angle and the brain processing the results. We can duplicate this effect by reproducing the separate images that each eye sees.

There are a number of ways to accomplish this. One is by filtering the light reaching each eye by color—red for the left and blue/cyan for the right (anaglyphic method). The second method is by creating the two pictures each eye sees (Holmes type). The third method involves polarizing the light to each eye (Disneyland and 3d MAX use this technique).

In addition, there’s the "crosseyed" technique, where you strain your eyes and look at a single image (www.studio3d.com/pages2/freeview.html), as well as the "Magic Eye" (www.magiceye.com) technique, where both of the images are hidden in a single pattern. There are also some electronic ways to achieve the 3D effect using special glasses to turn on and off the light reaching each eye one at a time—sort of a shutter effect. A newer and more interesting technique involves a single monitor screen that transmits video output to each eye. It promises superior 3D video without glasses for movies, games and other applications. A typical one is made by Sharp Systems of America (www.sharp3d.com/technology/howsharp3dworks/).

For an unusual and dynamic technical presentation (or just for fun), you can make your own 3D images from Pro/ENGINEER models quite easily. Here’s how to do it using the anaglyphic and Holmes techniques.

Method 1: Anaglyphic Images

You'll need three things to create and view an anaglyphic image of your Pro/ENGINEER model. The first is a pair of stereo glasses of the type usually found in 3D comic books or children's books. You may still have the ones from TV Guide that were used for a 3D episode of the show Medium in November. You can try them out on the pictures shown here.

Page 22: Spring 2006

Figure 2. Stereo glasses.

Figure 3. Audience reaction during a 3D movie presentation.

Alternatively, you can get free glasses from the following websites. (Note that some charge for postage and handling, etc.)

www.rainbowsymphony.com/freestuff.html

www.3dglasses.net

www.3dglasses.com/free3d.htm

www.3dglassesonline.com

Page 23: Spring 2006

Second, you'll need a software program to convert the images. A Google search will bring up quite a few. The one I used in this demonstration is from callipygian.com, which recommends Windows XP.

Since the software is designed for digital photography, we'll create our digital snapshots by exporting images from Pro/ENGINEER as jpeg files. You can try out the software using the images shown in Figures 5 and 6 below. I used rendered images in this demonstration for their higher quality, but the Save As versions will work just fine.

Third, you'll need an active Pro/ENGINEER model of the Molecular Mass Divider.

1. Start by getting your subject in the Pro/ENGINEER window the way you intend to see it in the final picture.

Figure 4.

2. Now make the two images from your Pro/E model—one for what the left eye sees and one for what the right eye sees. In Figures 5 and 6, notice the slight difference between the two at the closest post and the red ball.

For best results:

● Use a white background to start. ● Arrange your object to be viewed at about eye level. ● Make sure your vertical lines are truly vertical. ● Avoid colors with very heavy red and blue content.

Save the Figure 5 view as RIGHT and save the image as RIGHT_EYE jpeg.

Page 24: Spring 2006

Figure 5. Right eye image.

Page 25: Spring 2006

Figure 6. Left eye image.

3. To create the LEFT eye image, rotate the model about the vertical (View, Orient, Reorient Dynamic Orient, Screen). Pick the monitor icon and then Rotate “V” = 2.65. We can approximate the viewing angle using the following formula.

Page 26: Spring 2006

Figure 6b.

Viewing Angle = 2x(Sin 1.25/54) = 2x(1.326 deg) = 2.65 degrees

where:

1.25 is 1/2 of the 2.5” distance between the eyes.

54=(20+34) 20 is the approximate distance of your eye from the screen. 34 is the distance from the center of this object to the surface of the monitor screen. (Get this from View, Model setup, Perspective.)

You can either calculate your own angle or use 2.65 degrees if you move your part to the 34 depth before creating the jpegs. Save this view as LEFT and save the image as LEFT_EYE jpeg.

4. Minimize the Pro/ENGINEER window and start the 3D software.

5. Load the LEFT_EYE and RIGHT_EYE jpeg images (File, Load, Image).

6. Starting in the upper left corner of the LEFT image, draw the red box as shown in Figure 7.

Page 27: Spring 2006

Figure 7.

7. Now Preview the 3D anaglyphic image. You should be looking at the menu screen with the 3D image (Figure 8). Put your glasses on for this.

Page 28: Spring 2006

Figure 8.

You can adjust the image with the sliders on the bottom and right sides. If your image doesn't look as it should, you can go back to the Edit tab in the previous window and try switching the left and right images. You can also adjust the image by selecting a different color version in the lower left (Figures 9, 10, 11).

Figure 9.

Page 29: Spring 2006

Figure 10.

Page 30: Spring 2006

Figure 11.

You can create a very dynamic but low-cost 3D presentation by combining a number of these anaglyphic images as an animation.

Method 2: Holmes Card Viewer

The Callipygian software also lets you create images for a Holmes card viewer. You can look at the cards without the viewer on the screen or printed out using a piece of paper or cardboard held halfway between the views to separate the left and right images.

Page 31: Spring 2006

Figure 12.

Figure 13.

Here are some sample anaglyphic images made from Pro/ENGINEER models.

Page 32: Spring 2006

Figure 14.

Page 33: Spring 2006

Figure 15.

Page 34: Spring 2006

Figure 16.

If you'd like to share your 3D images, send them to me at [email protected].

John Driscoll is a contract engineer. He can be reached by email at [email protected] or (617) 922-6423.

Page 35: Spring 2006

Pro/TOOLKIT: Getting Along With UDFsby Vin Jovanovic, Smith International

Pro/TOOLKIT is an Application Programmers Interface (API) that helps you augment or enhance Pro/ENGINEER’s functionality to meet specific user needs. Specifically, Pro/TOOLKIT lets you customize the standard Pro/ENGINEER user interface, automate processes involving repetitive steps, integrate proprietary and other external applications, and develop customized applications for model creation, design rule verification, and drawing automation.

Unfortunately, Pro/TOOLKIT has gained a (deserved) reputation of being hard to work with. Although PTC’s programmers have added a large number of examples to the Pro/TOOLKIT User Guide, newcomers are likely to feel overwhelmed. What is more troublesome is that some of the functionality is only briefly described in the User Guide and cross-linked references in the API browser.

To address this problem, this article describes a set of API function calls that is not illustrated by examples in the User Guide—automation of a User Defined Feature (UDF). While quite versatile, this commonly used feature in Pro/ENGINEER is not helpful if it involves a large number of repetitive steps. This is where Pro/TOOLKIT can help.

Here you will also find bits and pieces about how to transcend the boundaries of the C programming world that PTC supports for Pro/TOOLKIT. Whenever possible, I try to use a powerful Standard Template Library (STL), which is a usual accompaniment of any C++ compiler today. My development environment is MSVC++ .NET.

The following material assumes some knowledge of Pro/TOOLKIT. If you are completely unfamiliar with this functionality, please read my previous articles here first.

What is a UDF?

Very simply, the need for a user defined feature arises from having to quickly insert one or more existing features into a model. Efficiency dictates that features be created once in some model, stored in a file, and later used for creating similar geometry in another part. This reduces the time for building a new model while still keeping parametric control of the copied feature.

This is exactly what UDFs are designed to achieve. You simply enter a menu to make your choices, select features to be grouped, designate how the existing reference for the features should be handled when inserted into another model, and then store it all in a file with a .gph extension. In this way, you can create a library of specialized groups of features that anyone can reuse. I suspect that this is the way industry deals with repeatedly creating similar geometry.

Time-Saving Techniques for Making Thousands of Parts

Opportunity Awaits You in Dallas

PLM Pain Relief

Meet the Windchill Customer Council

Reel 3D From the 50's – Presentations That Pop

Pro/TOOLKIT: Getting Along With UDFs

Extending All Four Axis Lines at Once in Pro/ENGINEER Wildfire 2.0

Creating a Rectangular Fill Pattern for Regular Hexagonal Cutouts

Page 36: Spring 2006

However, even this can be a source of repetition if a large number of copied groups are needed that still allow for individual parametric adjustments. For example, the manufacturers of computer keyboards face this problem. Here is where we will take off, but first let’s make a simple UDF to illustrate all the steps in the process.

Making a UDF

1. Make an assembly PLATE.ASM, and create a fill pattern table of coordinate systems one inch apart (Fig. 1).

Figure 1. Assembly model.

2. Insert a part that looks like that shown in Figure 2.

Figure 2. Plate part in the plate.asm.

Page 37: Spring 2006

Note a datum plane (TOP) that is one-half inch offset from the surface of the plate. It is important that coordinate systems are in the assembly and that the TOP datum plane is in the plate model. We will use these two references later for our UDF and their location in the models will determine how they need to be handled in Pro/TOOLKIT.

3. Now create a simple protrusion as shown in Figure 3.

Figure 3. Template for UDF feature.

DTM4 and DTM5 (or whatever they are called in your model) are placed at z and y axes of ACS0 coordinate system. The protrusion shown in red is centered at ACS0 and extruded from an ellipse with the dimensions shown. The protrusion is extruded to the TOP plane, which is important because this adds a reference to our UDF.

4. After making the protrusion—and this is important as well—edit it and name two dimensions as Yradius and Xradius to represent Ry and Rx, respectively, in our UDF.

5. Activate PLATE.PRT and make a UDF with these three features (DTM4, DTM5 and the protrusion). In the UDF menu, choose Var Dim, pick Rx and Ry dimensions, and assign the prompts Xradius and Yradius. For references, type “coordinate system” and

Page 38: Spring 2006

“top plane.”

6. Choose UDF dependency “independent,” same dimensions, and display normal.

7. Save UDF as bos.gph and put it into your UDF group directory. Be sure to test whether everything is as expected when you try to place the UDF. Don’t forget to activate PLATE.PRT again.

The Emperor’s New Clothes

Now you are ready to enter the world of Pro/TOOLKIT and expose the emperor’s new clothes (which Pro/TOOLKIT’s documentation fails to do). But first you need a good understanding of the interactive creation of UDFs using Pro/ENGINEER.

The process is reminiscent of an interactive session. The main goal is to create a UDF data structure that describes needed information and supplies it to the ProUdfCreate() function that does the job. Your main concern is how to properly add the necessary references to your UDF. The complete code is provided (click here) for easy copying and pasting.

Let’s begin by obtaining proper part and assembly handles and needed references. This will give you a chance to practice some other things and use often-neglected functions in protoolkit/protk_appls/pt_examples/pt_utils. I recommend that you immediately create a library project with one .c file that contains

#include "TestCollect.c"

#include "TestError.c"

#include "TestQcr.c"

#include "TestRunmode.c"

#include "UtilArcEndPoints.c"

#include "UtilCable.c"

#include "UtilCollect.c"

#include "UtilCollectDtmpnt.c"

#include "UtilError.c"

#include "UtilFiles.c"

#include "UtilGroups.c"

#include "UtilIntfData.c"

#include "UtilMath.c"

#include "UtilMatrix.c"

#include "UtilMenu.c"

Page 39: Spring 2006

#include "UtilMessage.c"

#include "UtilNames.c"

#include "UtilString.c"

#include "UtilTree.c"

#include "UtilTypes.c"

#include "UtilVisit.c"

#include "TestDimension.c"

You can include this library in any of your projects and use the provided functions. A couple of examples of using utility functions are provided below.

As mentioned, we first obtain the handle to our assembly, internal id for our TOP plane, and ids for coordinate systems where we want to place our UDF.

void user_place_udf(){

// FOR DECLARATIONS OF VARIABLES, SEE APPENDIX

ProMdlCurrentGet(&asmbly); // the main assembly handle

err_acomps = ProUtilCollectAsmcomp((ProAssembly)asmbly,&asm_comps);

To collect assembly components using utility functions, asm_coms is declared as a pointer to ProAsmcomp, but what the function returns is really an expandable array containing pointers to assembly components. The expandable array ProArray is now a bit obsolete because of STL’s vector object, and I never use it except in cases where Pro/TOOLKIT functions return it. So the only thing you need to know is how to retrieve from that array, which is done as follows.

ProArraySizeGet ((ProArray)asm_comps, &n_asm_comps);

for (int i=0; i<n_asm_comps; i++)

{

ProAsmcompMdlNameGet (& (asm_comps[i]), &mdl_type, mdl_name);

ProWstringToString(c_mdl_name,mdl_name);

string stl_mdl_name(c_mdl_name);

Page 40: Spring 2006

string::size_type pos = stl_mdl_name.find("PLATE");

if(pos != string::npos){ //found

ProAsmcompMdlGet((ProAsmcomp *) &(asm_comps[i]), &plate);

plate_feat_id = asm_comps[i].id;

break;

}

}

You can examine all components of the assembly (in this case, only one) by extracting their names and types. Observe how easy it is to find some characters using STL’s object string and its “find” method ( find_mdl_name.find("PLATE") ). C++ allows you to declare any object anywhere. Once we find the object with the name PLATE, we store its handle and its internal id.

ProUtilFindFeatureByName((ProSolid)plate,

ProStringToWstring(w_string,"TOP"),&f_top_plane);

ProUtilFindFeatureGeomitemByName(&f_top_plane,PRO_SURFACE,

ProStringToWstring(w_string,"TOP"),&g_top_plane);

Here again we use utility functions to find our top plane geomitem structure. This is an aspect of Pro/TOOLKIT that you need to become familiar with. Features contain geometric items and they need to be extracted so that you can add needed references to your UDF later.

Finally, we get all of the coordinate systems for placing the UDF:

err_csys = ProUtilCollectSolidCsys((ProSolid)asmbly,&p_csys);

ProArraySizeGet ((ProArray)p_csys, &n_csys);

for (int i=0; i<n_csys; i++){

ProModelitem mitem;

ProFeature feature;

Page 41: Spring 2006

string::size_type pos;

ProCsysToGeomitem((ProSolid)asmbly,p_csys[i],&mitem);

ProGeomitemFeatureGet(&mitem,&feature);

ProModelitemNameGet(&feature,w_name);

ProWstringToString(c_name,w_name);

string stl_name(c_name);

pos = stl_name.find("ACS");

if(pos != string::npos){ // FOUND

csys_ids.push_back(mitem.id);

}

}

As before, we can use a utility function to collect the handles to all coordinate systems in the assembly model and then extract the ones that start with the characters ACS. (This assumes you used a default name when constructing the first coordinate system.

A bit of gymnastics is necessary when converting to something that we can get a name of. The coordinate systems must be converted to geomitems (or modelitems). Those geomitems belong to the features whose names we can finally ask for. Again, notice how to use string objects and how you can store internal ids of your coordinate systems. csys_ids is another very useful (and easy to use) STL object “vector” declared as vector<int> csys_ids;. STL’s vector object allows for a dynamically created array that can contain any type of object you want (in this case, integers). This is why you don’t have to use PTC’s expandable arrays.

We can now start to build our UDF data structure.

double Yradius = .2, Xradius = .4;

for (unsigned int i = 0; i<csys_ids.size(); i++){

Page 42: Spring 2006

err = ProUdfdataAlloc(&udf_data);

err = ProUdfdataNameSet(udf_data,ProStringToWstring

(w_string,prof_name),NULL);

err = ProUdfdataDependencySet(udf_data,

PROUDFDEPENDENCY_INDEPENDENT);

err = ProUdfdataScaleSet(udf_data,PROUDFSCALETYPE_SAME_DIMS,0);

err = ProUdfdataDimdisplaySet(udf_data,PROUDFDIMDISP_NORMAL);

Since we are going to place our UDF at each assembly ACS* coordinate system, we will step through a list of ids. With each step you need to work interactively. You will probably recognize above inputs to functions as prompts in Pro/ENGINEER interactive UDF sessions.

Next, we need to add references to TOP datum plane and each coordinate system.

add_ref(asmbly,csys_ids[i],PRO_CSYS,PRO_B_TRUE,"coordinate

system",udf_data);

add_ref(plate,g_top_plane.id,PRO_SURFACE,PRO_B_FALSE,"top

plane",udf_data);

add_ref() is my special little utility, which is explained below. For now, just observe the inputs to it. It takes a model handle where the reference is, internal id of the geomitem, its type, whether the geomitem is an external reference, and the prompt and UDF data structure that we are filling with the data.

Now, since we are placing our UDF into the PLATE.PRT, the coordinate systems in the assembly are external to it, but TOP plane is not (because it is in PLATE.PRT). For that reason, you see PRO_B_TRUE (for external) and PRO_B_FALSE (for not external) as inputs above.

If you do not want default dimensions (the ones you assigned at the time of UDF creation), you need to set the dimension values as shown below. Note how the names of dimensions are specified and added to the UDF data structure.

Page 43: Spring 2006

ProUdfvardimAlloc(ProStringToWstring(w_string,"Yradius"),

Yradius,PROUDFVARTYPE_DIM,&vardim);

ProUdfdataUdfvardimAdd(udf_data,vardim);

ProUdfvardimAlloc(ProStringToWstring(w_string,"Xradius"),

Xradius,PROUDFVARTYPE_DIM,&vardim);

ProUdfdataUdfvardimAdd(udf_data,vardim);

If, at the time of placement, you do not need to perform the flips for the datum references, you can skip the following step. I like to have it so that I know what is going on.

for (int j=0; j<4; j++)

err=ProUdfdataOrientationAdd(udf_data,PROUDFORIENT_NO_FLIP);

Since I did not need to flip the arrows for my UDF, the obvious choice is “no flip.” But beware of problems here. Sometimes when a flip is necessary, features do not get placed as expected. (This may be an issue for PTC’s technical support that I leave to you to explore.)

Finally, we are ready to submit our UDF data structure to ProUdfCreate.

comp_id_table[0]=plate_feat_id;

ProAsmcomppathInit( (ProSolid) plate, comp_id_table, 1, &comp_path);

ProUdfCreate((ProSolid)plate,udf_data,&comp_path,NULL,0,&udf);

ProUdfdataFree(udf_data);

Notice that, because we have an external reference, we need to create a component path object that locates our PLATE.PRT in the assembly (which is why we previously needed that internal id for our part) and provide it to the ProUdfCreate() function. At the end, you should free the memory by freeing the UDF data structure.

Page 44: Spring 2006

The Trick Part of This Tip

Now I will describe my handy add_ref() function. This is the trickiest part of the exercise, because we need to create a selection object with proper reference to objects. Since wrong pointers or id may lead to a Pro/ENGINEER crash here, this is how to handle the error at each step.

ProError add_ref(ProMdl handle,int item_id,

ProType item_type,

ProBoolean ref_bool,

char * c_prompt,

ProUdfdata udf_data){

ProModelitem modelitem;

ProSelection selection;

ProLine prompt;

ProUdfreference reference;

ProError err;

err=ProModelitemInit(handle,item_id,item_type,&modelitem);

if(PRO_TK_NO_ERROR != err) goto error;

err=ProSelectionAlloc(NULL,&modelitem,&selection);

if(PRO_TK_NO_ERROR != err) goto error;

ProStringToWstring(prompt,c_prompt);

err=ProUdfreferenceAlloc(prompt,selection,ref_bool,&reference);

if(PRO_TK_NO_ERROR != err) goto error;

err=ProUdfdataReferenceAdd(udf_data,reference);

if(PRO_TK_NO_ERROR != err) goto error;

err=ProSelectionFree(&selection);

Page 45: Spring 2006

error:

return err;

}

First the geomitem is created and a selection is allocated for it. A reference is then allocated for this selection with information whether the reference is external to the UDF or not. Finally, the allocated reference is added to UDF data structure and selection is freed. This function should work in all cases when adding UDFs, so you can probably use it as is.

If everything went well, your projects should compile now and execute without problems.

Conclusion

We have gone through a simple but illustrative example of inserting UDFs programmatically. Several steps give you a chance to see how to take advantage of some underutilized functionality. In most cases, this example should be the most complex one you would ever see when dealing with UDFs. The reason is that usually UDFs are placed into a part or assembly while avoiding external references because of the difficulties they involve. This article therefore provides a unique chance to learn how to handle external references.

This article also fills the gap that exists in the Pro/TOOLKIT’s documentation with regards to UDF functions.

A Final Note on C++

Even though PTC does not officially support use of Pro/TOOLKIT with C++, I find it much faster for development and use it for all my projects. Once there is an issue, it is easy to extract the problematic code and give it to PTC without C++ functionality. I hope that eventually PTC will provide the abstract C++ layer to make Pro/TOOLKIT programming easier. This is surprisingly easy to do. All that is needed is to create object classes and to wrap Pro/TOOLKIT functions into class members, taking advantage of sophisticated C++ mechanisms such as overloading, polymorphism, and so on.

In the future, I will write about how Objective Oriented Programming can make many Pro/TOOLKIT components transparent to users. Model handles, model items, selection objects, feature structures, etc. can all be embedded into classes, taking advantage of C++ mechanisms. This would not only minimize the likelihood of a crash due to incorrect use of pointers, but also make Pro/TOOLKIT programming much easier than it is now.

Vin Jovanovic is a senior engineer at Smith International, Inc. in Houston, Texas. More Pro/TOOLKIT programming examples can be found at his website www.purplerose.biz. He can be reached by email at [email protected].

Page 46: Spring 2006

Extending All Four Axis Lines at Once in Pro/ENGINEER Wildfire 2.0by Dan Aurit, Caterpillar Inc.

Before Wildfire, Pro/ENGINEER let you extend all four portions of an axis (shown perpendicular to view) at once by making the Axis Tag visible. You first had to show the tag (using proper layering techniques), then select it, and finally drag out from the center (see video).

(Click here for pre-Wildfire video in .AVI format if video does not play...)

Wildfire 2.0 saves a lot of time by eliminating the need to turn the layers containing the tags off and on, and/or the need to toggle the tags themselves off and on. Now, without the tag visible, you can extend all four portions of an axis at once if you:

1. Highlight the axis (after it is shown in drawing). 2. Hover over the axis until the selection arrow becomes the crosshairs. 3. Click and drag out from the center (see video).

(Click here for Pro/ENGINEER Wildfire 2.0 video in .AVI format if video does not play...)

Dan Aurit is a senior designer at Caterpillar Inc. in Joliet, IL. He can be reached by email at [email protected].

Time-Saving Techniques for Making Thousands of Parts

Opportunity Awaits You in Dallas

PLM Pain Relief

Meet the Windchill Customer Council

Reel 3D From the 50's – Presentations That Pop

Pro/TOOLKIT: Getting Along With UDFs

Extending All Four Axis Lines at Once in Pro/ENGINEER Wildfire 2.0

Creating a Rectangular Fill Pattern for Regular Hexagonal Cutouts

Page 47: Spring 2006

Creating a Rectangular Fill Pattern for Regular Hexagonal Cutoutsby Ceferino Sanchez, ASTEC Power, a Division of Emerson Network Power

Vents with regular hexagonal cutouts are in common use in the chassis design of power supply units (PSUs). This article explains how to pattern a hexagonal vent cutout with constant web thickness within the bounds of a given rectangular region first using the new Fill Pattern functionality in Pro/ENGINEER Wildfire 2.0, and then using the Pattern Relations functionality in pre-Wildfire versions.

The example presented here illustrates how to pattern the cutouts with flats along the horizontal. Full instructions for patterning the cutouts with flats along the vertical are available. See the sections on vertical fill patterns and vertical pattern relations. For an explanation of the relations used for centering the pattern, click here.

Getting Started

The parameters to be considered at the outset are:

· width of the rectangle

· height of the rectangle

· width across flats of the regular hexagon

· web thickness

· minimum clearance from the outermost edge of a cutout pattern member to the border of the sketched rectangle

Go to Tools, Parameters to create part parameters for web thickness and clearance. If there are several rectangular regions with varying web thicknesses and clearances, you can index the parameters.

In this example, the parameters are webthk## and clearance##, where ## is the nth rectangular region in the part. Initial values (in millimeters) appear below.

Parameter Type Value

webthk01 Real Number

1

Time-Saving Techniques for Making Thousands of Parts

Opportunity Awaits You in Dallas

PLM Pain Relief

Meet the Windchill Customer Council

Reel 3D From the 50's – Presentations That Pop

Pro/TOOLKIT: Getting Along With UDFs

Extending All Four Axis Lines at Once in Pro/ENGINEER Wildfire 2.0

Creating a Rectangular Fill Pattern for Regular Hexagonal Cutouts

Page 48: Spring 2006

clearance01 Real Number

1

Table 1. Initial part parameters.

Section A: For Wildfire Users

Creating Hexagonal Cutouts Using Fill Pattern

1. Pick a sketch plane.

2. Go to Insert, Model Datum, Sketch or use the Sketch Tool icon.

3. Sketch the rectangle as shown in Figure 1, then click the check icon.

Figure 1. Sketched rectangle.

4. Right-click on the sketched rectangle and click Edit. Right-click on the width dimension. Click Properties, Dimension Text and enter width01 for Name. Rename the height dimension to height01.

Page 49: Spring 2006

5. Go to Info, Switch Dimensions to verify as in Figure 2.

Figure 2. Sketched rectangle named dimensions.

6. Pick the sketch plane used for the sketched rectangle and click on the Extrude tool. Sketch the regular hexagonal section with the flats along the horizontal on the lower left portion of the rectangle as in Figure 3.

Note: You can also go to Sketch, Data from File and use a previously created section. This section should have the lines constrained to equal lengths. The sketch can be saved for reuse. In Wildfire 3.0, the Sketcher Palette provides a hexagon.

Page 50: Spring 2006

Figure 3. Sketched hexagon with flats along the horizontal.

7. Finish the cut by picking on the Extrude to intersect with all surface

icon and Remove Material icon. Change the depth direction

if necessary, then click on the check mark.

8. Select the extruded cut, right-click and pick Edit. Using clicks similar to Step 4, rename the dimensions as shown in Figure 4.

Page 51: Spring 2006

Figure 4. Renamed dimensions for regular hexagonal cutout.

The dimension names are:

· waf## = width across flats

· Ov## = pattern member center offset from the vertical

· Oh## = pattern member center offset from the horizontal

9. Select Tools, Relations and add the following relations:

Nw01=floor(((width01-2*clearance01-waf01/sin(60))/sin(60))/(waf01+webthk01)+1)

Nh01=floor((((height01-2*clearance01)-waf01)*2/(waf01+webthk01))+1)

width01a=waf01/sin(60)+((Nw01-1)*(waf01+webthk01))*sin(60)

height01a=waf01+(Nh01-1)*(waf01+webthk01)/2

if Nw01==1 & (ceil(Nh01/2)-Nh01/2)==0

height01a=waf01+(Nh01-2)*(waf01+webthk01)/2

endif

Page 52: Spring 2006

Ov01=(width01-width01a)/2+waf01/(2*sin(60))

Oh01=(height01-height01a)/2+waf01/2

where:

Nw## = number of columns of pattern members (along the width)

Nh## = number of rows of pattern members (along the height)

width##a = actual width as measured from the outermost edges of the outermost pattern members

width##a = actual height as measured from the outermost edges of the outermost members

10. Click OK. Select Edit, Regenerate or CTRL+G. This correctly locates the lead pattern member observing the minimum clearance requirement from the edges of the sketched rectangle.

11. Select the extruded cut, right-click and select Pattern.

12. Choose Fill, pick the sketched rectangle, select the Triangle grid template. For

spacing , enter waf01+webthk01. Click Yes when prompted to add as a feature relation.

13. For the minimum distance of the pattern members’ center to the sketched border

, enter the smaller value between Oh01 and Ov01 and subtract 0.01. You can add a feature relation later to avoid manually hiding pattern members or having less than the number of pattern members allowable.

14. For the rotation of the grid template , enter 30. Click on the check button. The desired output will be as in Figure 5. Note that the pattern members are centered on the sketched rectangle.

Page 53: Spring 2006

Figure 5. Fill pattern of hexagonal vents.

15. Select Tools, Relations and add the following:

if Ov01>Oh01

ptncl01=Oh01-0.01

else

ptncl01=Ov01-0.01

endif

where: ptncl## is the fill pattern minimum distance from the pattern member centers to the sketch boundary

16. Select the Pattern feature, right-click and choose Edit Definition. Enter ptncl01

for the minimum distance of the pattern members’ center to the sketched border . Click Yes when prompted to add as a feature relation. Click the check icon.

17. Now verify that this will be parametric by changing the parameters defined at the outset. For parameters, choose Tool, Parameters, then enter a different value for the parameter you want to change. For named dimensions such as the sketched rectangle

Page 54: Spring 2006

and the sketched hexagon, just click on the feature and choose Edit. Alternatively, instead of renaming dimensions, you can add parameters and then add relations to assign the parameter value to the corresponding dimension. For example, if height01 is added as a parameter ,then add the relation d##=height01. Figure 6 shows some variations.

height01=25

width01=56

waf01=4

webthk01=1.5

clearance01=1

height01=30

width01=40

waf01=4

webthk01=1.5

clearance01=1

height01=30

width01=40

Page 55: Spring 2006

waf01=3

webthk01=1

clearance01=1

Figure 6. Variations of fill pattern.

Section B: For Users of Pre-Wildfire Versions of Pro/ENGINEER

Note: Although the user interface and steps in Wildfire 2.0 discussed here are different from pre-Wildfire versions of Pro/ENGINEER, pre-Wildfire versions have the Pattern By Relations functionality. There are equivalent clicks in pre-Wildfire versions that are not discussed in this tip. For assistance, please contact the author.

Creating Hexagonal Cutouts Using Pattern Relations

1. Pick a sketch plane.

2. Go to Insert, Model Datum, Sketch or use the Sketch Tool icon.

3. Sketch the rectangle as shown in Figure 1, then click the check icon.

Page 56: Spring 2006

Figure 1. Sketched rectangle.

4. Right-click on the sketched rectangle and click Edit. Right-click on the width dimension. Click Properties, Dimension Text and enter width01 for Name. Rename the height dimension to height01.

5. Go to Info, Switch Dimensions to verify as in Figure 2.

Page 57: Spring 2006

Figure 2. Sketched rectangle named dimensions.

6. Pick the sketch plane used for the sketched rectangle and click on the Extrude tool. Sketch the regular hexagonal section with the flats along the horizontal on the lower left portion of the rectangle as in Figure 3.

Note: You can also go to Sketch, Data from File and use a previously created section. This section should have the lines constrained to equal lengths. The sketch can be saved for reuse. In Wildfire 3.0, the Sketcher Palette provides a hexagon.

Page 58: Spring 2006

Figure 3. Sketched hexagon with flats along the horizontal.

7. Finish the cut by picking on the Extrude to intersect with all surface

icon and Remove Material icon. Change the depth direction

if necessary, then click on the check mark.

8. Select the extruded cut, right-click and pick Edit. Using clicks similar to Step 4, rename the dimensions as shown in Figure 4.

Page 59: Spring 2006

Figure 4. Renamed dimensions for regular hexagonal cutout.

The dimension names are as follows:

· waf## = width across flats

· Ov## = pattern member center offset from the vertical

· Oh## = pattern member center offset from the horizontal

9. Select Tools, Relations and add the following relations:

Nw01=floor(((width01-2*clearance01-waf01/sin(60))/sin(60))/(waf01+webthk01)+1)

Nh01=floor((((height01-2*clearance01)-waf01)*2/(waf01+webthk01))+1)

width01a=waf01/sin(60)+((Nw01-1)*(waf01+webthk01))*sin(60)

height01a=waf01+(Nh01-1)*(waf01+webthk01)/2

if Nw01==1 & (ceil(Nh01/2)-Nh01/2)==0

height01a=waf01+(Nh01-2)*(waf01+webthk01)/2

endif

Page 60: Spring 2006

Ov01=(width01-width01a)/2+waf01/(2*sin(60))

Oh01=(height01-height01a)/2+waf01/2

ph01=(waf01+webthk01)/2

pv01=(waf01+webthk01)*sin(60)

total01=ceil(Nw01/2)*ceil(Nh01/2)+floor(Nw01/2)*floor(Nh01/2)

initf01=ceil(Nw01/2)

inits01=Nw01

ntuple01=Nw01

where:

ph## = spacing of pattern members’ centers from row to row

pv## = spacing of pattern members’ centers from column to column

total## = total number of pattern members

initf## = first idx1 value where the pattern member goes to next row

inits## = second idx1 value where the pattern member goes to next row

ntuple## = every nth value of idx1 from initf## or inits## where the pattern member goes to the next row

10. Select the extruded cut, right-click and select Pattern.

11. Click the Dimensions button. For the first direction, choose the dimension named Oh01. Tick on the check box Define increment by relation. Click Edit and add the following relations:

f01hi=ceil((idx1-initf01)/ntuple01)

f01lo=(idx1-initf01)/ntuple01

n01hi=ceil((idx1-inits01)/ntuple01)

n01lo=(idx1-inits01)/ntuple01

if (f01hi-f01lo)==0 | (n01hi-n01lo)==0

memb_i=ph01

else

memb_i=0

endif

Page 61: Spring 2006

if Nw01==1

memb_i= 2*ph01

endif

where:

f##hi = high value to check if the value of (idx1-initf##) is an ntuple##

f##lo = low value to check if the value of (idx1-initf##) is an ntuple##

n##hi = high value to check if the value of (idx1-inits##) is an ntuple##

n##lo = low value to check if the value of (idx1-inits##) is an ntuple##

12. With the Dimensions dialog box still open, press and hold the CTRL button and pick the dimension named Ov01. Verify that this is added to the Direction 1. Tick the check box Define increment by relation. Click Edit and add the following relations:

f01hi=ceil((idx1-initf01)/ntuple01)

f01lo=(idx1-initf01)/ntuple01

n01hi=ceil((idx1-inits01)/ntuple01)

n01lo=(idx1-inits01)/ntuple01

odd01hi=ceil(Nw01/2)

odd01lo=Nw01/2

if odd01hi-odd01lo==0

t01=0

else

t01=1

endif

memb_i=2*pv01

if ((f01hi-f01lo)==0 )

memb_i=(3-2*initf01)*pv01

else

if ((n01hi-n01lo)==0)

Page 62: Spring 2006

memb_i=(3-2*initf01-2*(1-t01))*pv01

endif

endif

if Nw01==1

memb_i=0

endif

if Nw01==2

memb_i=(-1)^(idx1+1)*pv01

endif

where:

odd##hi = high value to check if the value of Nw## is odd

odd##lo = low value to check if the value of Nw## is odd

t## = gets the value of 1 when Nw## is odd; 0 if otherwise

13. Accept the default number of pattern members in the first direction (i.e., 2), then click the check icon.

14. Select the Pattern feature, right-click and choose Edit. Go to Info, Switch Dimensions and note the number of extrudes, p## (p36 in Figure 5).

Page 63: Spring 2006

Figure 5. Number of pattern members driver dimension.

15. Go to Tools, Relations and add the following part relations:

p##=total01

where: ## is taken from the previous step

16. Select Edit, Regenerate or CTRL+G. Verify the hexagonal pattern as shown in Figure 6 by selecting the Pattern feature and right-clicking on Edit Definition.

Page 64: Spring 2006

Figure 6. Pattern By Relations of hexagonal vents.

17. Option: You can go Tool, Relations and add the following:

far01 = total01*1.5*waf01^2*tan(30)/(height01a*width01a)

where:

far## = the free area ratio of the vent consisting of the pattern hexagonal cuts bounded by the rectangular region formed from the outermost edges of the pattern members

18. Now verify that this will be parametric. Figure 7 shows some variations.

height01=30

width01=40

Page 65: Spring 2006

waf01=3

webthk01=1

clearance01=1

height01=20

width01=60

waf01=4

webthk01=1

clearance01=1

height01=32

width01=46

waf01=4

webthk01=1.5

clearance01=1

Page 66: Spring 2006

Figure 7. Variations of fill pattern.

Ceferino Sanchez is a lead engineer, thermal engineer and Pro/ENGINEER administrator at ASTEC Power, a division of Emerson Network Power in Quezon City, Philippines. He can be reached by email at [email protected].