Category Archives: trueSpace

trueSpace + Wacom incompatible

Windows 10, Windows 7 + Wacom ET-0405-U (Graphire?) will interfere with the script editor causing slowdown when opening, editing and closing a script.


Workaround is to go to the Windows Control Panel > Human Interface Devices and disable the wacom driver: specifically the Wacom HID Pen

Another workaround windows 10 Control Panel disable  Human Interface Devices > HID-compliant pen also disable Mice and other pointing devices > Wacom Mouse both are needed to fix it

Google Cardboard for Nexus 7 Notes

Previous version was an enlarged version of the official cardboard version 1 design with larger lenses. This post is a collection of my notes taken during the process. Not a tutorial.

I started by cutting out a miniature version of the official cardboard version 2 in order to understand how it goes together. It was overly complex for my needs so I developed a simplified design with the tablet sticking out the top so the screen can be used directly as an input button.

Lens info:
Ajax Scientific Polished Glass Double-Convex (Bi-Convex) Lens, Spherical, 38 mm Diameter, 50 mm Focal Length

Lens was actually 41 mm diameter, not 38 mm


link to turbocad file –
link to dxf file –
link to dwg file –

The viewer was assembled from 3 mm thick cardboard. The shapes were printed and taped to the cardboard to use as a template for creating the pieces. The pieces were assembled using a hot glue gun. The face and bottom pieces were covered with transparent tape to avoid oil and sweat stains on the cardboard.
Nexus 3D model from TurboSquid –
Artist: art_setter factory
Profile QR-Code Generator
from desktop pc open the web page
then open the indicated web address in the tablet
if doesn’t work refresh the desktop web page and use the new indicated web address, repeat until it works
make adjustments on the pc until the tablet looks good then generate the qr code

My Information:
Nexus7Home v2
Primary Button = Touch
Screen to lens = 45.5 mm
Inter-lens distance = 64.0 mm
Screen vertical alignment = Bottom
Distortion K1 = 0.310
Distortion K2 = 0.570
Note that the QR Code needs good lighting to work. Other android scanners will read it in low light, but the cardboard app needs it to be bright.

get shapes from TurboCAD into trueSpace:
remove all text and dimensions
convert circles and arcs to polylines (explode)
make closed shapes via join polylines
export scale depends on viewport scale

Sketchy Unity 3D Notes:
Got it working but a lot of fiddling around and not sure of anything
Daydream technical preview – can be used along side a regular unity install
gvr unity sdk – for samples
to find SDK and JDK path for modern Android Studio
open Android Studio
File > Settings
Appearance & Behavior > System Settings > Android SDK – will show the location for the SDK
The JDK is at C:\Program Files\Android\Android Studio\jre
These path values go into Unity – Edit > Preferences > External Tools
Also enable VR support and set API level 19 also download api 19 inside android studio
Latest Daydream Unity has lag/frame rate problems?


TurboCAD Side Notes: TurboCAD v14 does not work properly with Windows 10. Use of AEC Dimension Styles will cause instant crash. Text tools cause instant crash. The workaround is to save files to v12 format files and ignore the warning messages when using copy and paste. If file is v14 immediately save as v12, close file and reload it. Features unique to v14 will not fully save to v12, but it wasn’t an issue for this project. Printing from model view does not center properly, so page setup values must be set manually.
From old print notes:
in model space
View > Create View, then define the region and give it a name

Workspace > PaperSpace > Insert, or use an existing Paper tab
switch to the paper space
Insert > Viewport then goto the previously defined paper
select the viewport rectangle and right click for it’s properties
Viewport > Scale check “Fixed”
type in the value which does not show in the dropdown list -> “1 in = 25.4 mm”

now will print to size when using the defined paper

truespace 7.5 alpha 3.3 notes

original source – printed emails from tS beta testing, processed with FreeOCR from

Snapping & constraints
Snapping and constraints are used to allow high precision modeling. Snapping tools compute nearest position that may be useful (grid point, vertex, edge…) and constraints lock movement to specified direction(s). These tools are accessible from Player toolbar.
Tool is activated by clicking on it; additional tool properties are accessible by rclicking on the tool icon. Panels for snapping tools are located in preferences encapsulator
(/Preferences/Snapping/ and /Preferences/Snapping/Point edit snapping).
Snapping & constraints can be combined and activated together. For example you can have active grid snapping and snap to edge at once. Then when moving or drawing a polygon nearest point will be used as a snap position. This is also valid for constraints, for example when constraining movement to two non-parallel planes movement will be constrained to their intersection.
You can have as many snapping managers as you wish, movement widget tools are now extended to contain snapping group name. In this way you can add special controls to Widgets that will cause snapping to selected elements, whereas other controls can move without snapping or constraints.
Polygon draw
Polygon draw tool allows directly drawing faces or edges during point edit mode.
Activate the tool by clicking on Polydraw tool icon in Player toolbar.
When selected object is not in point edit mode tool will activate it.
You add vertices connected by edges, by clicking on the mesh faces.
To modify vertex position during polygon draw, drag existing vertex.
To add new vertex on the edge, click on it.
When hovering above edge, Polydraw tool shows high/ite of vertex that will be added.

To remove the vertex, move the vertex you want to delete to another vertex.
Tool will not allow creating invalid geometry. When trying to create bad polygon highlite will show in red.

To close the loop, click on the first vertex.
You can draw polygon across multiple faces, but edges need to pass thru edges or vertices on neighboring faces.

When you draw acceptable set of edges, Polydraw will change highlite to selection color.
When you activate other widget tool in this state, tool will finish without closing whole polygon. This behavior is intended for drawing edges or adding vertices.

Snapping and Polydraw
You can use snapping with Polydraw:
simply enable or disable snapping & constraint tools when drawing polygons.
Activate guideline by snapping current vertex to edge and press shift key. If you want to move in perpendicular direction, hold shift and ctrl.

truespace 7.5 alpha10 notes

original source – printed emails from tS beta testing, processed with FreeOCR from

Defined set of general purpose array data objects for scripting:
Universal Array Data.
Int Array Data.
Number Array Data.
String Array Data.
Boolean Array Data.
All are defined in Common Data package.
You can create single-dimensional as well as multidimensional arrays using these data objects.
Universal Array Data can store items of any type (primitives like int, bool, or rosetta data types), but it is slower and more memory consuming than specialized types (e.g. Int Array Data), so choose the right type carefully.
// Create simple array by adding items
a = System.CreateDO(“Common Data Package\Universal Array Data”);
a.Add(“first string”);
a.Add(“second string”);
// Create 2 dimensional integer array
a = System.CreateDO(“Common Data Package\Int Array Data”)
a.SetSize(10, 10);
for (i = O; i < 10; i++)
for (j = 0;j<10;j++)
a.SetAt(i,j, 50);

truespace 7.5 alpha11 notes

original source – printed emails from tS beta testing, processed with FreeOCR from

Primitive tool
Adding a cube. There are 3 modes how to add a cube.
Diagonal — this is Modeler way. LClick to define first corner, drag and rclick do define second corner.
Edges — define cube by defining two edges. First click & drag defines bottom X edge. Second click&drag defines Z edge.
Corners — cube is created after adding 4 points. (you can either click or drag to use xy or z movements).
For adding torus, sphere, cylinder, cone there are 2 modes.
Diameter — define diameter for base, by ldrag, rdgar defines height
Radius – define center + radius for base, by ldrag, rdgar defines height
Adding text has only one mode; ldrag + rdrag defines orjentation of text XY plane rotation.
Primitive employs extensive snapping.
You can specify height directly by snapping to other objects during rdrag. Primitive base can be precisely aligned by constraining movement to lD and aligning with other objects like in rdrag
mode. Constraining can be done either by locking axes or locking to edges / faces.
You can specify edge endpoint (diagonal, radius…) in plane mode directly by snapping to other objects by holding ALT key.
ALT key can be used to force snapping even if cursor is in nosnap range defined by added primitive and nosnap radius found in tool preferences panel.
To finish primitive tool, rclick in player view.
To access primitive preferences panel, rclick on appropriate tool button. To access primitive tool preferences panel, rclick on any primitive tool and change preferences panel aspect to default.
NOTE: not all primitives are parametric; this means that you cannot change properties for them.
NOTE: there are no magic ring widgets yet, so after adding a primitive no panel/widget is

if maya navigation is installed then need to change snap key from ALT to CTRL in the primitive widget

only cone and cylinder have ldrag and rdrag behavior

text primitive rdrag defines height not orientation

ALT key snapping only seems to snap to edges and maybe faces

base plane = screen only works with cube primitive

text + boolean creation mode = crash

truespace open debug view

    if(!DebugViewFound("Project/Windows Manager Space"))
        CmdPrompt.DebugView('Windows Manager Space', 0);

function NodeSubObject(root, index)
    return root + "/" + Node.SubObject(root, index);

function DebugViewFound()
    var WMS = "Project/Windows Manager Space";
    var numwindows = Node.SubObjectCount(WMS);

    for(var winIndex=0; winIndex < numwindows; winIndex++)
        var currentWindow = NodeSubObject(WMS, winIndex);
        if(Node.SubObjectCount(currentWindow) < 1)

        var shortname = Node.ShortName(NodeSubObject(currentWindow, 0));
        if( shortname == "LogOutput")
            return true;
    return false;