Want to get a head start on reaping the advantages of customized software solutions?
Find out what you need to know before you start your custom software development process.
Below are six key questions we ask ourselves before we kick off a new development project. Yes, every time.
Answer them to get started the right way with your own NX Open custom development project.
1 Does the custom solution already exist in NX/Simcenter?
Yes, we really ask this question. In several cases, customers have approached us to create a custom tool for them without realizing that the functionality or a neat workaround already exists.
Always take the time to do due diligence. The Siemens toolset is so vast that your users may not have realized that what they are looking for is right there for them to use. If you’re not sure, give us a call!
2 What version(s) of the product are you going to support?
If, for example, you are considering a custom tool for NX/Simcenter, you need to consider your current version of NX, but also think about when you might upgrade to a new version.
If you expect to upgrade versions soon, consider writing your tool for the latest version, or even for both versions in parallel.
3 What language should I code in?
It’s a big decision. And a big part of it will be to choose a language you are comfortable with. Unless you have bucket loads of time, you don’t want to have to learn a programming language and deliver a project, so make life a little easier on yourself by choosing a language you know well.
If that doesn’t help you narrow it down – if you don’t have a preferred language, or you have a few to choose from – consider the type of customization you’re doing.
Simple workflow: For a simple workflow using basic NXOpen and a UI, stick with C#. You won’t need to worry about fancy memory handling or oodles of math.
Lots of data: On the other hand, if you are dealing with lots of Simcenter results data, Python coupled with NumPy and maybe Pandas would be more appropriate.
Fast computation: Finally, if you need fast computation with more control on memory management, go all-in with C++.
4 What development environment should I use?
Now that you’ve settled on a language, next you need to choose an integrated development environment (IDE).
There are many to chose from.
At Maya HTT, we’ve had good success with both VSCode and Visual Studio for Python and C# projects.
If you are thinking of future-proofing your development environment, VSCode is a safe bet. It works in most OS platforms and there are a ton of extensions available.
5 How do I know my code (still) works?
This is a subject that crops up time and again. People start off writing a quick application. Then, it gets adopted and, before you know it, your little app is pretty big and you’re not sure how you did without it.
Now, whenever you make changes, not only do you need to make sure the new code works, you also have to test the old stuff – it’s so easy to break old code when making changes.
Even experienced developers can fall into this trap. The answer is simply to test, test, test.
At a bare minimum, you should consider some “end-to-end” test cases to check the workflow from user inputs to application outputs (AKA integration tests).
Guidelines for testing
Ideally, you want to automate these using a test framework such as pytest for python or NUnit for C#.
You want to make sure these always pass after you are done with your changes.
You also want to add new test cases as you add features to the application.
On top of that, you also want to write tests to make sure each function does what you expect it to do – AKA unit tests. Unit tests are a great way to make sure the smallest chunks of code are behaving properly.
With all this testing in place, you can be safe in the knowledge that if you go back to your code later on, you’ll know pretty quickly whether you’ve messed something up (phew!).
6 How do I track changes?
With simpler projects with only one person developing, you could probably get by with a basic changelog. But if you ever need to go back and revert a change of even just a small portion of code, it can get tricky.
This is when we start looking at source control.
There are many different options available. A lot of modern solutions rely on Git, and there are even some free web-based offerings such as GitHub.
GitHub has a few drawbacks. For example, the free version has no access control, which means anyone can see your source code – so you may want to consider self-hosting.
Git is fairly easy to use. You need only a basic network drive and a little research into setting up Git repos.
Or, you can opt for something more polished like GitLab or Azure DevOps.
Kick off your custom solution project
Hopefully this guidance has helped you answer the key questions about custom development for NX/Simcenter, and now you are all set to start writing your application.
If all of this sounds too daunting, give us a call. Ask us about our custom application development services.
We’ve acquired a lot of experience in our years of delivering successful custom software solutions for our clients, and our team is available to help.