Skip to content

Instantly share code, notes, and snippets.

View benkoshy's full-sized avatar

Ben Koshy benkoshy

View GitHub Profile
@benkoshy
benkoshy / tekla-api-highlight-object.md
Created July 22, 2024 02:07
Tekla API - How to highlight model objects

We want to:

  • select an object,
  • and we need the user to understand that it has been selected.

This is done through: (i) highlighting it, and (ii) via a display prompt.

Don Norman elaborates on the need to alert users

@benkoshy
benkoshy / tekla-api-test-by-coordinate-systems-method.md
Last active July 11, 2024 08:05
Demonstrates how the ByCoordinateSystems method works using the Tekla Open API

Please review the MatrixFactory.ByCoordinateSystems Method in order to get the most out of this post. Particularly:

Returns a coordinate transformation matrix defined by two coordinate systems. With the returned matrix points can be transformed from the first coordinate system to the second coordinate system. The ByCoordinateSystems method is meant for transforming points between coordinate systems asked in the same work plane.

            //
@benkoshy
benkoshy / tekla-api-filter-parts.md
Last active July 8, 2024 05:20
How to programmatically filter parts by part position using the Tekla "Open" API

Here is the problem: we want to filter all parts which have the part position (or "part mark") of "p/2".

How can we do this programmatically?

Check out this code snippet - it assumes you have set up your references and are ready to go!

this.model = new Model();
if (model.GetConnectionStatus())
@benkoshy
benkoshy / plane-line-intersection-autocad-dot-net.md
Created March 12, 2024 03:45
Intersection of Line with a plane - AutoCAD .net Code

Source: https://paulbourke.net/geometry/pointlineplane/

  • We could use native AutoCAD methods to further simplify - this is just a 'hello world' proof of concept.
        [CommandMethod("TestCoordinates2")]
        public void TestCoordinates2()
        {
            Point3d p0 = new Point3d(0, 2, 0); // plane points
            Point3d p1 = new Point3d(0, 2, 1); // plane points
@benkoshy
benkoshy / idea_api.md
Last active January 31, 2024 02:12
Pagy jsonapi considerations

The Old Way

class QuotesController < ApplicationController  

  def index   
    # assuming jsonapi extra is enabled
    @pagy, @quotes = pagy(Quote.all) 

    # this will fail if we are using a html pagy_nav helper
@benkoshy
benkoshy / debug-tekla-plugin-without-restarting.md
Created December 6, 2023 23:29
How to Debug a Tekla Plugin Without Restarting Visual Studio (Tekla Open API Tutorial)

Post build plugin in visual studio.

Watch out - change the version ID to suit your Tekla version!

set envDir=2022.0\Environments\common\extensions\TestWPFBeamPlugin

set pluginsDir=2022.0\nt\bin\plugins\TestWPFBeamPlugin

set tsDirA=D:\Program Files\Tekla Structures\
@benkoshy
benkoshy / port_forwarding.md
Last active November 14, 2023 06:58
How to enable a port forwarding script - with iptables
#!/bin/bash

echo 1 > /proc/sys/net/ipv4/ip_forward # must be enabled for the forwarding to work

iptables -F 
iptables -t nat -F  # flush the nat table
iptables -t mangle -F
iptables -X
@benkoshy
benkoshy / tekla-api-drawing-revision-no.md
Last active June 5, 2024 14:25
Get Revision Number of Drawings - Tekla Open API

The Tekla API is not very open - one of my peeves is that you cannot access a drawing's revision number, because it is not exposed. Not to worry, you can access it with a hack:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Text;
using System.Threading.Tasks;
@benkoshy
benkoshy / tekla-api-select-model-object-using-picker.md
Created October 2, 2023 02:22
Tekla - How to select an object in the model using a Tekla Picker

This is a console application.

You will need to install the approriate dlls from Tekla. This can now be down via a Nuget package:

We want to select a single object in the model using a picker. Here is some sample code. You can of course, configure this to select model objects if you wish.

using System;
using System.Collections.Generic;