Skip to content

gi-nx


gi-nx / getParameterNodeDefaultTransform

ts
function getParameterNodeDefaultTransform(nodeType: string): any;

Returns the default transform object for a given generative transform node type.

Parameters

ParameterTypeDescription
nodeTypestringThe node type string (e.g. a NodeIds value).

Returns

any

Throws

If the node type is not registered, or if it does not have a transform object input.

Example

typescript
// Node type GUIDs — see https://gi-docs-beta.web.app/md/nodes.md
const ENVELOPE           = '2fee2ab8-18fb-42d3-bd2e-153c2c291058';
const ENVELOPE_TRANSFORM = '7bc5a2c9-09fe-47f8-961d-f8986f0b76b0';
const READ_FEATURE       = '1a4c8f02-f831-4bdd-b2f8-c9b647b10266';
const WRITE_FEATURE      = 'ed22a41d-e114-4734-876f-2362d02fc5ce';

const transform = gi.getParameterNodeDefaultTransform(ENVELOPE);
// transform:
// {
//   type: 'envelope',
//   parameters: {
//     maxHeight: 12,
//     sideIndices: { rear: [], front: [0] },
//     setbackSteps: {
//       rear:  [{ inset: 0, height: 3 }, { inset: 9 }],
//       side:  [{ inset: 1 }],
//       front: [{ inset: 0, height: 3 }, { inset: 2, height: 3 }, { inset: 5 }],
//     },
//     hasSetbackOutput: true
//   },
// }

const flowId = nanoid();
const entryId = nanoid();
const envelopeId = nanoid();
const envelopeTransformId = nanoid();
const exitId = nanoid();

const makeEdge = (
  source: string, sourceHandle: string,
  target: string, targetHandle: string
) => ({
  id: `reactflow__edge-${source}${sourceHandle}-${target}${targetHandle}`,
  source, sourceHandle,
  target, targetHandle,
  type: 'giraffeNodesEdge'
});

const makeNode = (id: string, type: string, position = { x: 0, y: 0 }, data = {}) => ({
  id, type, position, data
});

const nodes = [
  makeNode(entryId,             READ_FEATURE,       { x:   0, y:   0 }),
  makeNode(envelopeId,          ENVELOPE,            { x: 200, y:   0 }),
  makeNode(envelopeTransformId, ENVELOPE_TRANSFORM,  { x: 200, y: -200 }),
  makeNode(exitId,              WRITE_FEATURE,       { x: 400, y:   0 }),
];

const edges = [
  makeEdge(entryId,             'feature',   envelopeId,           'feature'),
  makeEdge(envelopeId,          'transform', envelopeTransformId,  'transform'),
  makeEdge(envelopeTransformId, 'envelope',  exitId,               'feature'),
];

gi.addFlow({ id: flowId, name: 'Envelope Flow', nodes, edges });

const features = await giGetFeatures();
await gi.updateRawSection({
  properties: {
    id: features[0].properties.id,
    flow: { id: flowId, inputs: { [envelopeTransformId]: transform } }
  }
});