I need Button Config drop-down list explanations

Questions and answers about 3Dconnexion devices on Windows.

Moderator: Moderators

jimRedfield
Posts: 15
Joined: Tue Feb 12, 2008 11:55 am
Location: southern California

I need Button Config drop-down list explanations

Post by jimRedfield »

There is a huge list of possibilities for button configurations on the Button Config tab in the Control Panel, but no explanation for what any of them actually do. Is there a URL or a pdf or something that lays out what the less obvious of these button options do?

For example, I'd love to see a button option to limit the mouse to Pan and Zoom only when I'm working up flat profiles in an ortho view. I suspect that'd doable, but how...?

And while I'm at it, what is "Dominant Axis" all about?

I poured thru everything I could find for answers unsuccessfully. 'Seems like the product manual could use some embellishment.

Tnx in advance.

Jim
jwick
Moderator
Moderator
Posts: 3341
Joined: Wed Dec 20, 2006 2:25 pm
Location: USA
Contact:

Post by jwick »

That's a good idea...we should right a doc on all that.

Anyhow, most of those possible button functions filter out different degrees of freedom (DOF). Given 6 DOF from the device, these filters zero out some of them.

The dominant filter chooses the one that has the largest magnitude and zeroes out the rest. This is often useful for first time users.

The Rotations filter passes only rotations (translations are zeroed out).
The Translations filter passes only translations (rotations are zeroed out).
Similarly, Pan Only, Zoom Only filter out everything except pan or zoom.

If you want Pan and Zoom only, you'd turn off the rotations.
Hopefully TX Only, TY Only, etc. are self-explanatory.

These are just shortcuts to things you can do in the GUI. The state you end up with is displayed in the GUI.

Jim
jimRedfield
Posts: 15
Joined: Tue Feb 12, 2008 11:55 am
Location: southern California

Post by jimRedfield »

Thanks, Jim.

...so, I set myself up in Top View (or whatever) and parallel projection in the GUI and I'm so to speak in "blueprint" mode on some plane, ready to work up a 2D profile for Push/Pull. I use my 3D mouse to pan, rotate and zoom as I develop the line work, but -- oops! -- not an expert driver, I tilt the mouse a bit which takes me out of "blueprint mode" (and I may not even notice the slight tilt). Not good.

I'd like to see a button config ability to set or disable a selection of functions all at once so I can limit the mouse to just what I need. Or if that won't work, maybe just one button option that sets "blueprint mode" all at once. You'd set the plane in which you want to work on the screen, then hit the button to dumb the mouse down to nuttin' but pan, rotate and zoom, everything else zero'd out). Seems like a valuable option.

Re a new doc to explain this to all of us newbies, why not just add an explanatory 'graf to the Button Config page that simply changes to explain whatever button option the mouse is rolling over in the drop down?

BTW, my critiques notwithstanding, I LOVE this mouse. Takes productivity to the max.

Jim
jwick
Moderator
Moderator
Posts: 3341
Joined: Wed Dec 20, 2006 2:25 pm
Location: USA
Contact:

Post by jwick »

Hi Jim,

We have tried to provide every option we could think of with those buttons. In fact, I think too many--I'm removing many of the more esoteric ones in the next major release.

You can store completely different settings in different config files for your application, and switch between them. The SpacePilot is the only device that has a "config" button that allows you to do switch configs via a button though. I forget which device you bought.

Also, some of these filters are overwritten by the applications. The response depends on whatever application you are running. Many of the applications have help pages that describe all the different options. We can't create total consistency between apps because of app limitations.

Play with it for a while then get back to us on your experiences.

Jim
3Dx Software Development
lhmncantoni
Posts: 18
Joined: Wed May 28, 2008 11:35 am

Post by lhmncantoni »

jwick,
Hello, I am really new to these devices myself. I have a spacepilot, and I am looking to modify the buttons to fit my criteria. There are six buttons that display to the LCD and I need one for each to turn off one of the 6 axises(sp?). I know you can use the translation/rotation buttons to to limit those DoF's but I need to limit only 1 axis at a time.

So I have a few questions:
1) Is there any way I can create a button that allows me to limit only one axis at a time?

2) Is there any way I can create a button that has the "toggle" ability (press it once and it reads as "Button 1 Off", press it again it reads as "Button 1 On")?

3) Is there any way within a program I'm writing to chage the button names? Let's say in my program I have a drop down menu with different names of options that can be applied to those buttons, let's say I select "Lock Tilt" for button 1, it would update button 1's name on the LCD from "Button 1" to "Lock Tilt".

I thought I had a couple more questions but I can't think of them right now. Thank you in advance for any help you can offer, and eventually I'll get those other questions out here on the forum. Thanks!

~Nick~
"Know something about eveyrthing, and everything about something."
jwick
Moderator
Moderator
Posts: 3341
Joined: Wed Dec 20, 2006 2:25 pm
Location: USA
Contact:

Post by jwick »

Hi Nick,

There is no preexisting way inside the driver to turn off one axis at a time via the buttons. You can toggle ON just one axis at a time (TX Only, TY Only, etc), but that's the inverse of what you want to do. The only way to turn off one axis at a time in the driver is in the GUI.

That being said, if you are writing a program to handle the device, then you have no problem at all. Always leave all the axes on in the driver and turn them off one at a time as you want in your code. You can change the labels on the SpacePilot to "Toggle TX, Toggle TY, etc.) in a scg file that you can make for your application. When you get the associated button event, just turn on/off that axis in your code.

You can set the LCD labels live from your program only if you use the "old 3DxWare SDK". If you are using the COM interface, you can only use LoadPreferences to choose a different scg file. The different scg files could have different labels, but that will quickly get quite unwieldy.

Jim
3Dx Software Development
lhmncantoni
Posts: 18
Joined: Wed May 28, 2008 11:35 am

Post by lhmncantoni »

Hi again,
Can you send me a link for this old 3dxware SDK, I think that is what is going to eventually solve my problem.

Thanks again!
~Nick~
"Know something about eveyrthing, and everything about something."
jwick
Moderator
Moderator
Posts: 3341
Joined: Wed Dec 20, 2006 2:25 pm
Location: USA
Contact:

Post by jwick »

www.3dconnexion.com->support->driver downloads->SpaceTraveler->Archive->3DxWare SDK (32 or 64 bit)
lhmncantoni
Posts: 18
Joined: Wed May 28, 2008 11:35 am

Post by lhmncantoni »

Sorry to keep bothering you about this, but is there an API for 3DxWare-SDK_v2-0-4. I'm trying to figure out how to instantiate a variable and decide which function calls I need/can use.

As I stated earlier I'm trying to change the names of buttons on the space pilot. Which library files will I need to declare that I'm using?

Thanks again,
~Nick~
"Know something about eveyrthing, and everything about something."
jwick
Moderator
Moderator
Posts: 3341
Joined: Wed Dec 20, 2006 2:25 pm
Location: USA
Contact:

Post by jwick »

Hi Nick,

It's no bother. It's only a bother when you point out a problem we don't have a fix for <GGG>

You need to use the SiSync functions to send data to the LCD. There is a GUISync_SDK demo that shows how to do this. There is extensive documentation on it that you will have to read (GUI Synchronization). There are four steps that are particularly important:

1) You have to create a .scg file that sets APP_CONTROLS_BUTTONS=TRUE (just start with the Inventor.scg file (rename it and change the EXECUTABLE name). Make sure the device buttons are set to "Button 1, Button 2, etc" so you get the events, rather than have them used by internal driver functions.

2) Open the device as shown with SiOpen and set up your event loop.

3) Handle the SI_SYNC_REQUEST event.

4) Call SiSyncSetButtonName to change the name of a function (displayed on the LCD).

Jim
3Dx Software Development
lhmncantoni
Posts: 18
Joined: Wed May 28, 2008 11:35 am

Post by lhmncantoni »

Jim,
So I've tried to read through all of the documentation. However, I can't figure out exactly what I have to do. All I want to be able to do is call the SiSyncSetButtonName function and just change the name whenever I want. This function has it listed that it takes an event handler, the button number, and a String for the new name as its arguments.

What exactly do I have to do to be able to use this funciton? What files need to be included, do I have to have an event handler?

Also, how do I declare an instance variable to call this method through. Nowhere that I saw explained what the type is that I need a variable of.

Thank you again,
~Nick~
"Know something about eveyrthing, and everything about something."
jwick
Moderator
Moderator
Posts: 3341
Joined: Wed Dec 20, 2006 2:25 pm
Location: USA
Contact:

Post by jwick »

Hi Nick,

What language are you using? This older SDK is for C/C++ development. It certainly can be called from other languages, but that would be quite a pain.
All I want to be able to do is call the SiSyncSetButtonName function and just change the name whenever I want. This function has it listed that it takes an event handler, the button number, and a String for the new name as its arguments.
Take a look at the GUISync_SDK demo. You don't need an event handler, you need a device handle. You get that when you open the device. It takes a WCHAR array, not a String. To make use of the device, of course, you need an event loop. Remember those?!
What exactly do I have to do to be able to use this function? What files need to be included, do I have to have an event handler?
You have to setup a scg file with APP_CONTROLS_BUTTONS=TRUE, open the device (SiOpen), respond to a SI_SYNC_EVENT, then you can call SiSyncSetButtonName. The scenario in the GUI Synchronization section is the most important thing to understand.
Also, how do I declare an instance variable to call this method through. Nowhere that I saw explained what the type is that I need a variable of.
Which variable are you referencing here? Are you currently using our COM interface now? This sounds like you are thinking in COM or managed code. You have to dust off your C brain cells. Steal code liberally from the demo code.

Jim
3Dx Software Development
lhmncantoni
Posts: 18
Joined: Wed May 28, 2008 11:35 am

Post by lhmncantoni »

Hello,
Hopefully this will finally clear everything up or help put me on the right track. I feel lost right now to be honest.

I'm currently programming in C# not in C++. Is this going to make things really difficult? Here's how I understand the situation right now, I have downloaded the old 3DxWare SDk which contained 3 things: setup.exe, Data1.cab, and 3DConnexion 3DxWare SDK.msi. Now what I believe I have to do if run the .exe and put the library files in the same library path with all of the other libraries that I am utilizing. Is this correct? If it is, how do I go about finding out where that library directory is?

Once I get the libraries in place, I believe I just have to make the "using" statements which are:

using si.h;
using siapp.h;

I think. After putting in those using statements I should just be able to make direct calls right? I read that I have to make those 5 calls first in order to instantiate a link to the device like SiOpen, and SiGetDeviceHandle or something like that. Then once I have all of that information I can then finally call SiSyncSetButtonName and change the label on the LCD.

Please let me know exactly how I'm supposed to be doing this.

Thanks in advance,
~Nick~
"Know something about eveyrthing, and everything about something."
jwick
Moderator
Moderator
Posts: 3341
Joined: Wed Dec 20, 2006 2:25 pm
Location: USA
Contact:

Post by jwick »

Hi Nick,

I have bad news for you. Those files are nearly useless for you if you are using C#.

Your best bet is to use the COM interface. We have not exposed a way for you to directly modify the LCD via that interface.

Do you really not have any idea what should be displayed on the LCD ahead of time? You can preset any strings you want for the LCD in the .scg file for your application.

Via COM, you can use the LoadPreferences call to load different config files. That is the current extent of support. Don't get too deep into the current config file structure. It is changing completely in the next major release.

Jim
3Dx Software Development
lhmncantoni
Posts: 18
Joined: Wed May 28, 2008 11:35 am

Post by lhmncantoni »

Ok, I'll look into using the LoadPreference idea. That was my first idea on this project until I heard there was an older version with better(?) functionality.

Where can I find that .scg file with all of my saved preferences in it?

Thanks again,
~Nick~
"Know something about eveyrthing, and everything about something."
Post Reply