cancel
Showing results for 
Search instead for 
Did you mean: 

Distribution rights of nxopen.dll

Solution Partner Creator Solution Partner Creator
Solution Partner Creator
Hi Everyone,

I'm planning on distributing some of my own custom plugins for NX.
I would like to include the nxopen.dll
(as well as any others required) with my installer. Is there any official distribution agreement anywhere for these api dll's??
Thanks,

Mark
15 REPLIES

Re: Distribution rights of nxopen.dll

Esteemed Contributor
Esteemed Contributor

The customer needs NX to be installed, so why ship the NXOpen DLLs too?

In addition you will really get into trouble, since the DLLs also change with MRs and MPs.

I would never include these since the customer already has the correct version applicable for his NX release.

Stefan Pendl, Systemmanager CAx, HAIDLMAIR GmbH
Production: NX10.0.3, VERICUT 8.0, FBM, MRL 3.1.4 | TcUA 10.1 MP7 Patch 0 (10.1.7.0) | TcVis 10.1
Development: VB.NET, Tcl/Tk    Testing: NX11.0 EAP, NX12.0 EAP

How to Get the Most from Your Signature in the Community

Re: Distribution rights of nxopen.dll

Solution Partner Creator Solution Partner Creator
Solution Partner Creator
Hi Stefan,

Thanks for your reply.

Following best practice, I recompile the code for each version of NX.
I also employ code to launch the correct version of the code for which version of nx is being run, at point of launching.
It would actually be harder for me to try and figure out which is the correct version to install via script.
So my choices are to ship the dlls with my installer or try and copy them from user directories. This still could be deemed to be breaking copyright?? I'm not sure
The issue with copying from the user dirs are:
Not everyone installs nx in the same location.
What happens when a user installs a new version of NX? (My current solution copes with this seamlessly)
Stability. I will have tested with a known set of dlls and my code won't need the newer versions that may be included in a MP or MR.

I'm just struggling to find information on what we can and can't do with these dlls.

Re: Distribution rights of nxopen.dll

Esteemed Contributor
Esteemed Contributor

Why copy the DLLs they are automatically found for internal extensions and you can use the run_managed.exe for external extensions.

Generally anything shipping with NX is copyrighted by Siemens and not redistributable, except noted otherwise. That is my personal understanding.

Request a syslog of the failing NX session and you get all the information needed.

Add logging of issues of your extension to the syslog and you get everything in one go.

A NX syslog is created for internal and external extensions.

If still in doubt, GTAC or your CSR should be able to help you.

Stefan Pendl, Systemmanager CAx, HAIDLMAIR GmbH
Production: NX10.0.3, VERICUT 8.0, FBM, MRL 3.1.4 | TcUA 10.1 MP7 Patch 0 (10.1.7.0) | TcVis 10.1
Development: VB.NET, Tcl/Tk    Testing: NX11.0 EAP, NX12.0 EAP

How to Get the Most from Your Signature in the Community

Re: Distribution rights of nxopen.dll

Solution Partner Creator Solution Partner Creator
Solution Partner Creator
Stefan,

From experience, the NX open dlls must be in the same folder as the custom code or fully included in the code project, as the nxopen dlls are not registered in GAC.
I think it has to work this way as you can have multiple versions of NX running at the same time. GAC would struggle with multiple versions of the same dlls
Unless you have a solution for this?

Re: Distribution rights of nxopen.dll

Esteemed Contributor
Esteemed Contributor

I would never force a specific version to be used with my NXOpen extensions, works best for me and removes the clutter from the NX syslog, that the specific version of the DLL isn't found and instead the one shipping with NX is used.

See Executing batch applications => NXOpen for .NET for how to use run_managed.exe shipping with NX. You need to update your knowledge constantly, since run_managed was introduced at least with NX 8.5.

A VB project file of mine contains the following lines:

  <ItemGroup>
    <Reference Include="NXOpen">
      <HintPath>$(UGII_ROOT_DIR)\managed\NXOpen.dll</HintPath>
      <SpecificVersion>False</SpecificVersion>
      <Private>False</Private>
    </Reference>
    <Reference Include="NXOpen.UF">
      <HintPath>$(UGII_ROOT_DIR)\managed\NXOpen.UF.dll</HintPath>
      <SpecificVersion>False</SpecificVersion>
      <Private>False</Private>
    </Reference>
    <Reference Include="NXOpen.Utilities">
      <HintPath>$(UGII_ROOT_DIR)\managed\NXOpen.Utilities.dll</HintPath>
      <SpecificVersion>False</SpecificVersion>
      <Private>False</Private>
    </Reference>
    <Reference Include="NXOpenUI">
      <HintPath>$(UGII_ROOT_DIR)\managed\NXOpenUI.dll</HintPath>
      <SpecificVersion>False</SpecificVersion>
      <Private>False</Private>
    </Reference>
    <Reference Include="System" />
    <Reference Include="System.Core">
      <RequiredTargetFramework>3.5</RequiredTargetFramework>
    </Reference>
    <Reference Include="System.Deployment" />
    <Reference Include="System.Drawing" />
    <Reference Include="System.Windows.Forms" />
  </ItemGroup>

I start my development environment through a batch file that sets the correct NX environment.

Stefan Pendl, Systemmanager CAx, HAIDLMAIR GmbH
Production: NX10.0.3, VERICUT 8.0, FBM, MRL 3.1.4 | TcUA 10.1 MP7 Patch 0 (10.1.7.0) | TcVis 10.1
Development: VB.NET, Tcl/Tk    Testing: NX11.0 EAP, NX12.0 EAP

How to Get the Most from Your Signature in the Community

Re: Distribution rights of nxopen.dll

Solution Partner Creator Solution Partner Creator
Solution Partner Creator
Hi Stefan,

Thanks for the information on run_managed. It's got some interesting text in there:

"Copy the NX .NET libraries to your local working directory. To do so, copy all of the libraries from the %UGII_ROOT_DIR%\managed directory to your working directory."

So Siemens does suggest users have the right to copy these files....but still doesn't answer my question on distribution rights though Smiley Surprised(

unless I can remove the requirement for the api dll's to be in the same folder as the application or included in the code project, I will still need to look at making copies/supplying copies of the dlls.

Can you use run_managed to run dll's? And also can you use it to run in the current session, or this only for running 'spawned' NX sessions?
The documentation suggests this is for batch mode.

I've tested it this morning just in case but it is failing to call any of my code in the current NX session Smiley Surprised(

Re: Distribution rights of nxopen.dll

Siemens Phenom Siemens Phenom
Siemens Phenom

I would agree with @Stefan_Pendl. If OOTB dll's are not being found, then there is a configuration problem with the NX runtime environment. Copying/distributing dll's is just a band-aid applied over the root problem. A correctly configured runtime environment should not need NX Open dlls in the custom code folder.

 

I've got .NET applications written in NX 6 that still function without recompile in NX 12. The only time applications NEED to be rebuilt is if the API is deprecated. If you distribute NXOpen dlls, applications could fail if the entry points into the NX Open dlls from NX change, which is very likely from release to release.

Re: Distribution rights of nxopen.dll

Creator
Creator

It's my understanding that if you are going to distribute NX plugins or market them as a product for sale that you are required to have a partnership agreement with Siemens.  They have a program that provides you with a variety of tools needed to develop the apps, some kind of partner emblem that you can use on your web site, and some other benefits.  This partnership does have a significant cost from what I recall but it does allow you to provide your programs without the copyright concerns.

 

https://www.plm.automation.siemens.com/en_us/partners/software_technology/program_value.shtml

Re: Distribution rights of nxopen.dll

Esteemed Contributor
Esteemed Contributor

To copy the DLLs was the only way to do things before run_managed.exe was introduced.

Now the preferred way is to use the run_managed.exe, since it provides better stability due to always using the DLLs shipping with NX.

I would never include any files in a distribution, that are not created by myself, especially if these are DLLs of the software I am creating an extension for.

In addition there is no need at all to copy these DLLs for an internal NX extension shipping as a DLL.

You only need run_managed.exe for an external EXE that runs in batch mode and creates its own NX session.

Stefan Pendl, Systemmanager CAx, HAIDLMAIR GmbH
Production: NX10.0.3, VERICUT 8.0, FBM, MRL 3.1.4 | TcUA 10.1 MP7 Patch 0 (10.1.7.0) | TcVis 10.1
Development: VB.NET, Tcl/Tk    Testing: NX11.0 EAP, NX12.0 EAP

How to Get the Most from Your Signature in the Community