From f5fae7102a4911922fb998bbee4f9e88cf88f3c1 Mon Sep 17 00:00:00 2001 From: guga kakhadze Date: Mon, 29 Dec 2025 14:51:31 +0400 Subject: [PATCH] initial version of the cad coordinates extraction and scene generation in OIP --- conveyors.csv | 59 ++++ generate_csv.lsp | 484 ++++++++++++++++++++++++++++++ generate_scene.py | 95 ++++++ generated_conveyors.tscn | 585 +++++++++++++++++++++++++++++++++++++ pick coordinate ( CD1).fas | Bin 0 -> 708 bytes 5 files changed, 1223 insertions(+) create mode 100644 conveyors.csv create mode 100644 generate_csv.lsp create mode 100644 generate_scene.py create mode 100644 generated_conveyors.tscn create mode 100644 pick coordinate ( CD1).fas diff --git a/conveyors.csv b/conveyors.csv new file mode 100644 index 0000000..ed9ad24 --- /dev/null +++ b/conveyors.csv @@ -0,0 +1,59 @@ +conveyor_key,tpe_count,vfd_count,start_x,start_y,end_x,end_y +PS1_2,2,1,3182.112871,1751.627960,3307.631353,1679.668896 +PS1_4,2,1,3377.926229,1655.901734,3931.089961,1657.733689 +PS1_5,1,1,3931.089961,1657.733689,4262.417377,1656.646266 +PS2_2,2,1,3099.843745,2245.419901,3140.391285,2223.245100 +PS2_3,1,1,3140.391285,2223.245100,3588.721702,1959.931507 +PS2_5,2,1,3660.544200,1941.885284,4197.937505,1938.160461 +PS2_6,1,1,4197.937505,1938.160461,4259.627698,1938.547503 +UL1_3,2,1,547.290786,1846.090315,902.762889,1810.459399 +UL1_4,1,1,902.762889,1810.459399,1731.526555,1810.217430 +UL1_5,1,1,1731.526555,1810.217430,1839.227859,1809.167581 +UL1_6,1,1,1839.227859,1809.167581,1876.642886,1807.970923 +UL1_7,1,1,1876.642886,1807.970923,1912.482307,1808.027116 +UL1_8,1,1,1912.482307,1808.027116,1948.547333,1806.790209 +UL1_9,1,1,1948.547333,1806.790209,1985.172076,1809.772901 +UL1_10,5,1,2020.869443,1811.538199,2641.029923,1810.100198 +UL1_11,1,2,2641.029923,1810.100198,2893.829959,1825.589512 +UL1_12,1,1,2893.829959,1825.589512,2785.705008,1813.203468 +UL1_13,1,1,2785.705008,1813.203468,3018.129340,1821.502800 +UL2_3,2,1,553.975614,2012.630135,903.404869,1978.577931 +UL2_4,1,1,903.404869,1978.577931,1719.423553,1977.802191 +UL2_5,1,1,1719.423553,1977.802191,1822.643168,1978.445929 +UL2_7,2,1,1899.557661,1958.742816,1944.517637,1930.951081 +UL2_8,1,1,1944.517637,1930.951081,1976.150833,1915.448512 +UL2_9,1,1,1976.150833,1915.448512,2008.246923,1897.796075 +UL2_10,1,1,2008.246923,1897.796075,2037.918359,1881.625600 +UL3_1,1,1,633.140086,2120.663545,831.814701,2091.737797 +UL3_2,2,1,878.893221,2098.646563,1861.404040,2089.400325 +UL3_3,1,1,1861.404040,2089.400325,2017.419596,2090.046509 +UL3_5,2,1,2082.236933,2070.328821,2282.772670,1950.214639 +UL3_6,1,1,2282.772670,1950.214639,2315.361086,1932.846138 +UL3_7,1,1,2315.361086,1932.846138,2348.664717,1919.645834 +UL3_8,1,1,2348.664717,1919.645834,2378.129323,1897.913034 +UL3_9,1,1,2378.129323,1897.913034,2408.907201,1881.035163 +UL4_3,2,1,552.788849,2350.626783,905.700382,2315.449436 +UL4_4,1,1,905.700382,2315.449436,1712.101194,2313.812375 +UL4_5,1,1,1712.101194,2313.812375,1819.964891,2317.864418 +UL4_6,1,1,1819.964891,2317.864418,1856.812083,2304.600063 +UL4_7,1,1,1856.812083,2304.600063,1892.551907,2306.435269 +UL4_8,1,1,1892.551907,2306.435269,1928.981908,2306.047462 +UL4_9,1,1,1928.981908,2306.047462,1965.024016,2306.234051 +UL4_10,5,1,2001.418905,2307.809246,2557.362372,2308.264495 +UL4_12,2,1,2718.741165,2320.506810,2815.749256,2323.832156 +UL4_13,1,1,2815.749256,2323.832156,2914.786899,2322.882657 +UL5_3,2,1,546.894209,2453.798891,903.442508,2479.527764 +UL5_4,1,1,903.442508,2479.527764,1691.840905,2484.924653 +UL5_5,1,1,1691.840905,2484.924653,1789.119716,2480.254441 +UL5_7,2,1,1854.915951,2464.288039,1913.811244,2428.171974 +UL5_8,1,1,1913.811244,2428.171974,1946.027358,2411.078652 +UL5_9,1,1,1946.027358,2411.078652,1976.288196,2392.094872 +UL5_10,1,1,1976.288196,2392.094872,2008.055527,2375.211118 +UL6_1,1,1,633.808413,2684.658977,830.713568,2651.384227 +UL6_2,2,1,889.155446,2663.081118,1706.522553,2653.949825 +UL6_3,1,1,1706.522553,2653.949825,1811.247017,2651.041122 +UL6_5,2,1,1876.189950,2633.114258,2190.222142,2447.433453 +UL6_6,1,1,2190.222142,2447.433453,2221.929865,2428.342256 +UL6_7,1,1,2221.929865,2428.342256,2254.419133,2412.811656 +UL6_8,1,1,2254.419133,2412.811656,2285.596047,2394.811656 +UL6_9,1,1,2285.596047,2394.811656,2315.906936,2377.311656 diff --git a/generate_csv.lsp b/generate_csv.lsp new file mode 100644 index 0000000..ea8acb1 --- /dev/null +++ b/generate_csv.lsp @@ -0,0 +1,484 @@ +; ============================================================ +; EXPORT_CONVEYORS (v5 - TPE-first geometry + EPC bootstrap only at chain start + VFD count) +; +; Conveyor definition: +; - Source blocks: +; CLX_TPE (photoeye anchors) +; CLX_EPC (EPC blocks - may be chained across multiple conveyors) +; VFD_v2 (drive blocks) +; - Logical name from attribute: P_TAG1 +; e.g. UL5_4_TPE1, UL6_2_EPC2, UL6_3_VFD1 +; - Conveyor key = _
+; - Section change ALWAYS = new conveyor +; +; GEOMETRY (IMPORTANT): +; - TPEs define conveyor boundaries. EPCs DO NOT split conveyors. +; - For each conveyor key: +; * If TPE count >= 2: +; end = last TPE (highest index) +; start = first TPE (lowest index) +; BUT if this is the first conveyor in the prefix chain (no previous section exported) +; and EPC exists on this conveyor, EPC may be used as the START ONLY (bootstrap) if it extends the belt. +; * If TPE count == 1: +; end = that single TPE +; start = previous conveyor end (if exists & within MAX_STITCH_DISTANCE) +; else (ONLY if first conveyor in chain) bootstrap start from EPC farthest from the end TPE +; else start = own TPE +; * If TPE count == 0: +; not exported (out of scope / unreliable geometry) +; +; Output: CSV +; conveyor_key,tpe_count,vfd_count,start_x,start_y,end_x,end_y +; ============================================================ + +(vl-load-com) + +;; ------------------------ +;; Tuning / safety +;; ------------------------ +(setq *MAX_STITCH_DISTANCE* 1000.0) ; inches (normal neighbor stitching) +(setq *MAX_BOOTSTRAP_DISTANCE* 5000.0) ; inches (EPC bootstrap guardrail for FIRST conveyor only) + +;; ------------------------ +;; Attribute helper +;; ------------------------ +(defun getAttVal (attList tag) + (setq tag (strcase tag)) + (setq a + (vl-some + (function + (lambda (a) + (if (= (strcase (vla-get-tagstring a)) tag) a) + ) + ) + attList + ) + ) + (if a + (strcase (vl-string-trim " " (vla-get-textstring a))) + "" + ) +) + +;; ------------------------ +;; Simple underscore splitter +;; ------------------------ +(defun splitUnderscore (s / parts cur i ch) + (setq parts '() cur "" i 1) + (while (<= i (strlen s)) + (setq ch (substr s i 1)) + (if (= ch "_") + (progn + (setq parts (append parts (list cur))) + (setq cur "") + ) + (setq cur (strcat cur ch)) + ) + (setq i (1+ i)) + ) + (append parts (list cur)) +) + +;; ------------------------ +;; Parse P_TAG1 like: UL6_3_TPE1 / UL6_3_EPC2 / UL6_3_VFD1 +;; returns: (prefix section kind index) or nil +;; kind is "TPE" / "EPC" / "VFD" +;; ------------------------ +(defun parse-ptag1-anchor (ptag / s parts prefix section third kind idx) + (setq s (strcase (vl-string-trim " " ptag))) + (if (and s (vl-string-search "_" s)) + (progn + (setq parts (splitUnderscore s)) + (if (= (length parts) 3) + (progn + (setq prefix (nth 0 parts)) + (setq section (atoi (nth 1 parts))) + (setq third (nth 2 parts)) ; TPE#, EPC#, VFD# + + (cond + ((wcmatch third "TPE*") + (setq kind "TPE") + (setq idx (atoi (substr third 4)))) + ((wcmatch third "EPC*") + (setq kind "EPC") + (setq idx (atoi (substr third 4)))) + ((wcmatch third "VFD*") + (setq kind "VFD") + (setq idx (atoi (substr third 4)))) + (t + (setq kind nil) + (setq idx 0)) + ) + + (if (and kind prefix (> section 0) (> idx 0)) + (list prefix section kind idx) + nil + ) + ) + nil + ) + ) + nil + ) +) + +;; ------------------------ +;; Helpers: key parsing + distance +;; ------------------------ +(defun parse-key (key / parts prefix section) + (setq parts (splitUnderscore (strcase key))) + (if (= (length parts) 2) + (progn + (setq prefix (nth 0 parts)) + (setq section (atoi (nth 1 parts))) + (if (and prefix (> section 0)) + (list prefix section) + nil + ) + ) + nil + ) +) + +(defun dist2d (p q / dx dy) + (setq dx (- (car p) (car q))) + (setq dy (- (cadr p) (cadr q))) + (sqrt (+ (* dx dx) (* dy dy))) +) + +(defun within? (p q maxd) + (and p q (<= (dist2d p q) maxd)) +) + +;; ------------------------ +;; Find neighbor record in a chain (by prefix + section) +;; Each chain entry: +;; (section key tpeCount tpeSorted firstTPE lastTPE epcPoints) +;; ------------------------ +(defun find-by-section (chain targetSec / r) + (setq r nil) + (foreach e chain + (if (= (car e) targetSec) (setq r e)) + ) + r +) + +;; ------------------------ +;; Pick EPC point farthest from a reference point (usually endTPE) +;; Returns EPC xy or nil +;; ------------------------ +(defun farthest-from (pts ref / bestD bestP d) + (setq bestD -1.0 bestP nil) + (foreach p pts + (setq d (dist2d p ref)) + (if (> d bestD) + (progn + (setq bestD d) + (setq bestP p) + ) + ) + ) + bestP +) + +;; ------------------------ +;; Main command +;; ------------------------ +(defun c:EXPORT_CONVEYORS ( / ss i ent blk effName attList ptag parsed + prefix section kind idx insPt xy key + tpeMap epcMap vfdMap entries + outPath fh + chainMap kv parsedKey chainKey secNum + tpeEntries epcEntries tpeCount epcPoints + tpeSorted firstTPE lastTPE + chains rec + prevRec prevEnd + startXY endXY + vfdEntries vfdCount + allKeys + endRef baseLen epcCandidate epcLen) + + ;; Maps: + ;; tpeMap = ( (key . ( (idx xy) ... )) ... ) + ;; epcMap = ( (key . ( (idx xy) ... )) ... ) + ;; vfdMap = ( (key . ( "UL6_3_VFD1" ... )) ... ) ; unique P_TAG1 values + (setq tpeMap '()) + (setq epcMap '()) + (setq vfdMap '()) + + (setq ss (ssget "X" '((0 . "INSERT")))) + + (if (not ss) + (progn + (princ "\nNo INSERT blocks found.") + (princ) + ) + (progn + ;; ------------------------ + ;; 1) Collect TPE + EPC points + VFD unique tags by conveyor key + ;; ------------------------ + (setq i 0) + (while (< i (sslength ss)) + (setq ent (ssname ss i)) + (setq blk (vlax-ename->vla-object ent)) + (setq effName (strcase (vla-get-EffectiveName blk))) + + ;; VFD_v2 -> "VFD_V2" + (if (or (= effName "CLX_TPE") (= effName "CLX_EPC") (= effName "VFD_V2")) + (progn + (setq attList (vlax-invoke blk 'GetAttributes)) + (setq ptag (getAttVal attList "P_TAG1")) + (setq parsed (parse-ptag1-anchor ptag)) + + (if parsed + (progn + (setq prefix (nth 0 parsed)) + (setq section (nth 1 parsed)) + (setq kind (nth 2 parsed)) + (setq idx (nth 3 parsed)) + (setq key (strcat prefix "_" (itoa section))) + + (cond + ;; --- TPE --- + ((= kind "TPE") + (setq insPt (vlax-get blk 'InsertionPoint)) + (setq xy (list (car insPt) (cadr insPt))) + (setq entries (cdr (assoc key tpeMap))) + (if (not entries) (setq entries '())) + (setq entries (cons (list idx xy) entries)) + (setq tpeMap + (if (assoc key tpeMap) + (subst (cons key entries) (assoc key tpeMap) tpeMap) + (cons (cons key entries) tpeMap) + ) + ) + ) + + ;; --- EPC --- + ((= kind "EPC") + (setq insPt (vlax-get blk 'InsertionPoint)) + (setq xy (list (car insPt) (cadr insPt))) + (setq entries (cdr (assoc key epcMap))) + (if (not entries) (setq entries '())) + (setq entries (cons (list idx xy) entries)) + (setq epcMap + (if (assoc key epcMap) + (subst (cons key entries) (assoc key epcMap) epcMap) + (cons (cons key entries) epcMap) + ) + ) + ) + + ;; --- VFD (unique by P_TAG1 text) --- + ((= kind "VFD") + (setq vfdEntries (cdr (assoc key vfdMap))) + (if (not vfdEntries) (setq vfdEntries '())) + (if (and (/= ptag "") (not (member ptag vfdEntries))) + (setq vfdEntries (cons ptag vfdEntries)) + ) + (setq vfdMap + (if (assoc key vfdMap) + (subst (cons key vfdEntries) (assoc key vfdMap) vfdMap) + (cons (cons key vfdEntries) vfdMap) + ) + ) + ) + ) + ) + ) + ) + ) + + (setq i (1+ i)) + ) + + ;; ------------------------ + ;; 2) Build chainMap by prefix. + ;; Only EXPORT if tpeCount > 0 (TPE-first geometry). + ;; Each record: + ;; (section key tpeCount tpeSorted firstTPE lastTPE epcPoints) + ;; ------------------------ + (setq chainMap '()) + + ;; keys to consider: union of tpeMap and epcMap (so EPCs are available for bootstrap) + (setq allKeys '()) + (foreach kv tpeMap (setq allKeys (cons (car kv) allKeys))) + (foreach kv epcMap + (if (not (assoc (car kv) tpeMap)) + (setq allKeys (cons (car kv) allKeys)) + ) + ) + + (foreach key allKeys + (setq parsedKey (parse-key key)) + (if parsedKey + (progn + (setq chainKey (nth 0 parsedKey)) + (setq secNum (nth 1 parsedKey)) + + (setq tpeEntries (cdr (assoc key tpeMap))) + (setq epcEntries (cdr (assoc key epcMap))) + + (setq tpeCount (if tpeEntries (length tpeEntries) 0)) + + ;; EPC points list (xy only) + (setq epcPoints '()) + (if epcEntries + (foreach it epcEntries (setq epcPoints (cons (cadr it) epcPoints))) + ) + + ;; TPE-sorted + endpoints + (if (> tpeCount 0) + (progn + (setq tpeSorted (vl-sort tpeEntries '(lambda (a b) (< (car a) (car b))))) + (setq firstTPE (cadr (car tpeSorted))) + (setq lastTPE (cadr (car (reverse tpeSorted)))) + + (setq rec (list secNum key tpeCount tpeSorted firstTPE lastTPE epcPoints)) + + (setq chains (cdr (assoc chainKey chainMap))) + (if (not chains) (setq chains '())) + (setq chains (cons rec chains)) + + (setq chainMap + (if (assoc chainKey chainMap) + (subst (cons chainKey chains) (assoc chainKey chainMap) chainMap) + (cons (cons chainKey chains) chainMap) + ) + ) + ) + ) + ) + ) + ) + + ;; sort each chain by section ascending + (foreach kv chainMap + (setq chainKey (car kv)) + (setq chains (cdr kv)) + (setq chains (vl-sort chains '(lambda (a b) (< (car a) (car b))))) + (setq chainMap (subst (cons chainKey chains) kv chainMap)) + ) + + ;; ------------------------ + ;; 3) Write CSV with: + ;; - TPE-first geometry + ;; - Stitch START from previous conveyor end for single-TPE + ;; - EPC bootstrap START only if first in chain (no prevRec) + ;; - vfd_count + ;; ------------------------ + (setq outPath + (getfiled + "Save conveyors CSV" + (strcat (getvar "DWGPREFIX") "conveyors.csv") + "csv" + 1 + ) + ) + + (if outPath + (progn + (setq fh (open outPath "w")) + (write-line "conveyor_key,tpe_count,vfd_count,start_x,start_y,end_x,end_y" fh) + + (foreach kv chainMap + (setq chainKey (car kv)) + (setq chains (cdr kv)) ; sorted + + (foreach rec chains + (setq secNum (nth 0 rec)) + (setq key (nth 1 rec)) + (setq tpeCount (nth 2 rec)) + (setq firstTPE (nth 4 rec)) + (setq lastTPE (nth 5 rec)) + (setq epcPoints (nth 6 rec)) + + ;; Default: TPE-defined endpoints + (setq startXY firstTPE) + (setq endXY lastTPE) + + ;; Neighbor (previous section) record in same prefix chain + (setq prevRec (find-by-section chains (1- secNum))) + + ;; ----- If single-TPE, end is that TPE (already), start may stitch from prev end ----- + (if (= tpeCount 1) + (progn + (setq endXY lastTPE) ; the only TPE + (if prevRec + (progn + (setq prevEnd (nth 5 prevRec)) ; prev lastTPE + (if (within? prevEnd endXY *MAX_STITCH_DISTANCE*) + (setq startXY prevEnd) + (setq startXY endXY) + ) + ) + (setq startXY endXY) + ) + + ;; EPC bootstrap START only if NO prevRec (first conveyor in chain) + (if (and (not prevRec) epcPoints) + (progn + (setq epcCandidate (farthest-from epcPoints endXY)) + (if (and epcCandidate (within? epcCandidate endXY *MAX_BOOTSTRAP_DISTANCE*)) + (setq startXY epcCandidate) + ) + ) + ) + ) + ) + + ;; ----- If multi-TPE, allow EPC bootstrap only for FIRST conveyor in chain ----- + (if (and (>= tpeCount 2) (not prevRec) epcPoints) + (progn + ;; Only use EPC as START if it meaningfully extends beyond firstTPE->lastTPE + (setq endRef lastTPE) + (setq baseLen (dist2d firstTPE endRef)) + + (setq epcCandidate (farthest-from epcPoints endRef)) + (if epcCandidate + (progn + (setq epcLen (dist2d epcCandidate endRef)) + (if (and (> epcLen baseLen) + (within? epcCandidate endRef *MAX_BOOTSTRAP_DISTANCE*)) + (setq startXY epcCandidate) + ) + ) + ) + ) + ) + + ;; vfd_count (unique VFD_v2 P_TAG1s) + (setq vfdCount 0) + (if (assoc key vfdMap) + (setq vfdCount (length (cdr (assoc key vfdMap)))) + ) + + (write-line + (strcat + key "," + (itoa tpeCount) "," + (itoa vfdCount) "," + (rtos (car startXY) 2 6) "," (rtos (cadr startXY) 2 6) "," + (rtos (car endXY) 2 6) "," (rtos (cadr endXY) 2 6) + ) + fh + ) + ) + ) + + (close fh) + (princ (strcat "\nExported conveyors to: " outPath)) + (princ "\nGeometry: TPE-first. EPC used only as START bootstrap for first conveyor in chain when it extends the belt.") + (princ (strcat "\nStitch: single-TPE start may stitch from previous end (MAX_STITCH_DISTANCE=" (rtos *MAX_STITCH_DISTANCE* 2 2) ").")) + (princ (strcat "\nBootstrap: EPC->endTPE guarded by MAX_BOOTSTRAP_DISTANCE=" (rtos *MAX_BOOTSTRAP_DISTANCE* 2 2) ".")) + (princ "\nAdded vfd_count from VFD_v2 (unique P_TAG1 values per conveyor_key).") + ) + ) + ) + ) + + (princ) +) + +(princ "\nLoaded. Run command: EXPORT_CONVEYORS") +(princ) diff --git a/generate_scene.py b/generate_scene.py new file mode 100644 index 0000000..f5c5470 --- /dev/null +++ b/generate_scene.py @@ -0,0 +1,95 @@ +import csv +import math +from pathlib import Path + +# ----------------------- +# CONFIG +# ----------------------- +CSV_PATH = "conveyors.csv" +OUT_TSCN = "generated_conveyors.tscn" + +SCALE = 0.0254 # AutoCAD units → Godot units +FIXED_Y = 2.5 + +BELT_RESOURCE_ID = "3_38ygf" # BeltConveyorAssembly.tscn + +# ----------------------- +# HELPERS +# ----------------------- +def transform_from_points(x1, y1, x2, y2): + dx = x2 - x1 + dy = y2 - y1 + + length = math.hypot(dx, dy) * SCALE + angle = math.atan2(dy, dx) + + mid_x = (x1 + x2) / 2 * SCALE + mid_z = (y1 + y2) / 2 * SCALE + + return { + "length": length, + "pos": (mid_x, FIXED_Y, mid_z), + "rot_y": -angle + } + +def transform3d(rot_y, x, y, z): + c = math.cos(rot_y) + s = math.sin(rot_y) + return ( + f"Transform3D({c}, 0, {s}, " + f"0, 1, 0, " + f"{-s}, 0, {c}, " + f"{x}, {y}, {z})" + ) + +# ----------------------- +# READ CSV +# ----------------------- +conveyors = [] + +with open(CSV_PATH, newline="") as f: + reader = csv.DictReader(f) + for row in reader: + conv = transform_from_points( + float(row["start_x"]), + float(row["start_y"]), + float(row["end_x"]), + float(row["end_y"]), + ) + conv["name"] = row["conveyor_key"] + conveyors.append(conv) + +# ----------------------- +# WRITE TSCN +# ----------------------- +lines = [] +lines.append('[gd_scene load_steps=2 format=3]') +lines.append('') +lines.append( + '[ext_resource type="PackedScene" path="res://parts/assemblies/BeltConveyorAssembly.tscn" id="3_38ygf"]' +) +lines.append('') +lines.append('[node name="GeneratedConveyors" type="Node3D"]') +lines.append('') + +for i, c in enumerate(conveyors, start=1): + x, y, z = c["pos"] + t = transform3d(c["rot_y"], x, y, z) + + lines.append( + f'[node name="{c["name"]}" parent="." instance=ExtResource("{BELT_RESOURCE_ID}")]' + ) + lines.append(f"transform = {t}") + lines.append("right_side_guards_enabled = false") + lines.append("left_side_guards_enabled = false") + lines.append("head_end_leg_enabled = false") + lines.append("tail_end_leg_enabled = false") + lines.append("enable_comms = true") + lines.append(f'speed_tag_name = "{c["name"]}_OIP"') + lines.append( + f"size = Vector3({c['length']:.6f}, 0.5, 1.524)" + ) + lines.append("") + +Path(OUT_TSCN).write_text("\n".join(lines)) +print(f"Generated: {OUT_TSCN}") diff --git a/generated_conveyors.tscn b/generated_conveyors.tscn new file mode 100644 index 0000000..0a29fd8 --- /dev/null +++ b/generated_conveyors.tscn @@ -0,0 +1,585 @@ +[gd_scene load_steps=2 format=3] + +[ext_resource type="PackedScene" path="res://parts/assemblies/BeltConveyorAssembly.tscn" id="3_38ygf"] + +[node name="GeneratedConveyors" type="Node3D"] + +[node name="PS1_2" parent="." instance=ExtResource("3_38ygf")] +transform = Transform3D(0.8675449395504647, 0, 0.49735880193315224, 0, 1, 0, -0.49735880193315224, 0, 0.8675449395504647, 82.4197516448, 2.5, 43.5774700712) +right_side_guards_enabled = false +left_side_guards_enabled = false +head_end_leg_enabled = false +tail_end_leg_enabled = false +enable_comms = true +speed_tag_name = "PS1_2_OIP" +size = Vector3(3.674933, 0.5, 1.524) + +[node name="PS1_4" parent="." instance=ExtResource("3_38ygf")] +transform = Transform3D(0.9999945161112113, 0, -0.003311758974397826, 0, 1, 0, 0.003311758974397826, 0, 0.9999945161112113, 92.824505613, 2.5, 42.083169872099994) +right_side_guards_enabled = false +left_side_guards_enabled = false +head_end_leg_enabled = false +tail_end_leg_enabled = false +enable_comms = true +speed_tag_name = "PS1_4_OIP" +size = Vector3(14.050436, 0.5, 1.524) + +[node name="PS1_5" parent="." instance=ExtResource("3_38ygf")] +transform = Transform3D(0.9999946142179093, 0, 0.0032820017024387353, 0, 1, 0, -0.0032820017024387353, 0, 0.9999946142179093, 104.0575431926, 2.5, 42.0926254285) +right_side_guards_enabled = false +left_side_guards_enabled = false +head_end_leg_enabled = false +tail_end_leg_enabled = false +enable_comms = true +speed_tag_name = "PS1_5_OIP" +size = Vector3(8.415762, 0.5, 1.524) + +[node name="PS2_2" parent="." instance=ExtResource("3_38ygf")] +transform = Transform3D(0.8773678141674687, 0, 0.479818422596505, 0, 1, 0, -0.479818422596505, 0, 0.8773678141674687, 79.250984881, 2.5, 56.7520455127) +right_side_guards_enabled = false +left_side_guards_enabled = false +head_end_leg_enabled = false +tail_end_leg_enabled = false +enable_comms = true +speed_tag_name = "PS2_2_OIP" +size = Vector3(1.173861, 0.5, 1.524) + +[node name="PS2_3" parent="." instance=ExtResource("3_38ygf")] +transform = Transform3D(0.8622787824202933, 0, 0.5064339062382932, 0, 1, 0, -0.5064339062382932, 0, 0.8622787824202933, 85.4597349349, 2.5, 53.1263429089) +right_side_guards_enabled = false +left_side_guards_enabled = false +head_end_leg_enabled = false +tail_end_leg_enabled = false +enable_comms = true +speed_tag_name = "PS2_3_OIP" +size = Vector3(13.206393, 0.5, 1.524) + +[node name="PS2_5" parent="." instance=ExtResource("3_38ygf")] +transform = Transform3D(0.9999759795503059, 0, 0.006931112638399028, 0, 1, 0, -0.006931112638399028, 0, 0.9999759795503059, 99.8027176535, 2.5, 49.276580961499995) +right_side_guards_enabled = false +left_side_guards_enabled = false +head_end_leg_enabled = false +tail_end_leg_enabled = false +enable_comms = true +speed_tag_name = "PS2_5_OIP" +size = Vector3(13.650118, 0.5, 1.524) + +[node name="PS2_6" parent="." instance=ExtResource("3_38ygf")] +transform = Transform3D(0.9999803192739637, 0, -0.006273839712780541, 0, 1, 0, 0.006273839712780541, 0, 0.9999803192739637, 107.41107807809999, 2.5, 49.2341911428) +right_side_guards_enabled = false +left_side_guards_enabled = false +head_end_leg_enabled = false +tail_end_leg_enabled = false +enable_comms = true +speed_tag_name = "PS2_6_OIP" +size = Vector3(1.566962, 0.5, 1.524) + +[node name="UL1_3" parent="." instance=ExtResource("3_38ygf")] +transform = Transform3D(0.9950139648061078, 0, 0.0997356999315168, 0, 1, 0, -0.0997356999315168, 0, 0.9950139648061078, 18.4156816725, 2.5, 46.4381813678) +right_side_guards_enabled = false +left_side_guards_enabled = false +head_end_leg_enabled = false +tail_end_leg_enabled = false +enable_comms = true +speed_tag_name = "UL1_3_OIP" +size = Vector3(9.074236, 0.5, 1.524) + +[node name="UL1_4" parent="." instance=ExtResource("3_38ygf")] +transform = Transform3D(0.9999999573785687, 0, 0.0002919638005547997, 0, 1, 0, -0.0002919638005547997, 0, 0.9999999573785687, 33.4554759388, 2.5, 45.9825957283) +right_side_guards_enabled = false +left_side_guards_enabled = false +head_end_leg_enabled = false +tail_end_leg_enabled = false +enable_comms = true +speed_tag_name = "UL1_4_OIP" +size = Vector3(21.050598, 0.5, 1.524) + +[node name="UL1_5" parent="." instance=ExtResource("3_38ygf")] +transform = Transform3D(0.999952493743362, 0, 0.009747320474448184, 0, 1, 0, -0.009747320474448184, 0, 0.999952493743362, 45.3485810578, 2.5, 45.9661896397) +right_side_guards_enabled = false +left_side_guards_enabled = false +head_end_leg_enabled = false +tail_end_leg_enabled = false +enable_comms = true +speed_tag_name = "UL1_5_OIP" +size = Vector3(2.735743, 0.5, 1.524) + +[node name="UL1_6" parent="." instance=ExtResource("3_38ygf")] +transform = Transform3D(0.9994889246433396, 0, 0.03196700666782072, 0, 1, 0, -0.03196700666782072, 0, 0.9994889246433396, 47.1915584615, 2.5, 45.9376590008) +right_side_guards_enabled = false +left_side_guards_enabled = false +head_end_leg_enabled = false +tail_end_leg_enabled = false +enable_comms = true +speed_tag_name = "UL1_6_OIP" +size = Vector3(0.950828, 0.5, 1.524) + +[node name="UL1_7" parent="." instance=ExtResource("3_38ygf")] +transform = Transform3D(0.9999987708307951, 0, -0.0015679084472148372, 0, 1, 0, 0.0015679084472148372, 0, 0.9999987708307951, 48.121889951099995, 2.5, 45.923175095299996) +right_side_guards_enabled = false +left_side_guards_enabled = false +head_end_leg_enabled = false +tail_end_leg_enabled = false +enable_comms = true +speed_tag_name = "UL1_7_OIP" +size = Vector3(0.910322, 0.5, 1.524) + +[node name="UL1_8" parent="." instance=ExtResource("3_38ygf")] +transform = Transform3D(0.9994123906802922, 0, 0.03427642564070694, 0, 1, 0, -0.03427642564070694, 0, 0.9994123906802922, 49.035076427999996, 2.5, 45.908180027499995) +right_side_guards_enabled = false +left_side_guards_enabled = false +head_end_leg_enabled = false +tail_end_leg_enabled = false +enable_comms = true +speed_tag_name = "UL1_8_OIP" +size = Vector3(0.916590, 0.5, 1.524) + +[node name="UL1_9" parent="." instance=ExtResource("3_38ygf")] +transform = Transform3D(0.9967002282899721, 0, -0.08117052991521904, 0, 1, 0, 0.08117052991521904, 0, 0.9967002282899721, 49.9582364943, 2.5, 45.930351497) +right_side_guards_enabled = false +left_side_guards_enabled = false +head_end_leg_enabled = false +tail_end_leg_enabled = false +enable_comms = true +speed_tag_name = "UL1_9_OIP" +size = Vector3(0.933348, 0.5, 1.524) + +[node name="UL1_10" parent="." instance=ExtResource("3_38ygf")] +transform = Transform3D(0.999997311695526, 0, 0.0023187500342096348, 0, 1, 0, -0.0023187500342096348, 0, 0.999997311695526, 59.20612194819999, 2.5, 45.9948076419) +right_side_guards_enabled = false +left_side_guards_enabled = false +head_end_leg_enabled = false +tail_end_leg_enabled = false +enable_comms = true +speed_tag_name = "UL1_10_OIP" +size = Vector3(15.752119, 0.5, 1.524) + +[node name="UL1_11" parent="." instance=ExtResource("3_38ygf")] +transform = Transform3D(0.9981282001527524, 0, -0.0611563247737067, 0, 1, 0, 0.0611563247737067, 0, 0.9981282001527524, 70.29272050140001, 2.5, 46.173259317) +right_side_guards_enabled = false +left_side_guards_enabled = false +head_end_leg_enabled = false +tail_end_leg_enabled = false +enable_comms = true +speed_tag_name = "UL1_11_OIP" +size = Vector3(6.433163, 0.5, 1.524) + +[node name="UL1_12" parent="." instance=ExtResource("3_38ygf")] +transform = Transform3D(-0.9935026741492011, 0, 0.11380877144748693, 0, 1, 0, -0.11380877144748693, 0, -0.9935026741492011, 72.1300940809, 2.5, 46.212670846) +right_side_guards_enabled = false +left_side_guards_enabled = false +head_end_leg_enabled = false +tail_end_leg_enabled = false +enable_comms = true +speed_tag_name = "UL1_12_OIP" +size = Vector3(2.764335, 0.5, 1.524) + +[node name="UL1_13" parent="." instance=ExtResource("3_38ygf")] +transform = Transform3D(0.9993630900498375, 0, -0.03568493023729351, 0, 1, 0, 0.03568493023729351, 0, 0.9993630900498375, 73.7086962196, 2.5, 46.160769603599995) +right_side_guards_enabled = false +left_side_guards_enabled = false +head_end_leg_enabled = false +tail_end_leg_enabled = false +enable_comms = true +speed_tag_name = "UL1_13_OIP" +size = Vector3(5.907340, 0.5, 1.524) + +[node name="UL2_3" parent="." instance=ExtResource("3_38ygf")] +transform = Transform3D(0.9952852133168667, 0, 0.09699146432959523, 0, 1, 0, -0.09699146432959523, 0, 0.9952852133168667, 18.508732134099997, 2.5, 50.6883424382) +right_side_guards_enabled = false +left_side_guards_enabled = false +head_end_leg_enabled = false +tail_end_leg_enabled = false +enable_comms = true +speed_tag_name = "UL2_3_OIP" +size = Vector3(8.917547, 0.5, 1.524) + +[node name="UL2_4" parent="." instance=ExtResource("3_38ygf")] +transform = Transform3D(0.9999995481421035, 0, 0.0009506395682917928, 0, 1, 0, -0.0009506395682917928, 0, 0.9999995481421035, 33.309920959399996, 2.5, 50.2460275494) +right_side_guards_enabled = false +left_side_guards_enabled = false +head_end_leg_enabled = false +tail_end_leg_enabled = false +enable_comms = true +speed_tag_name = "UL2_4_OIP" +size = Vector3(20.726884, 0.5, 1.524) + +[node name="UL2_5" parent="." instance=ExtResource("3_38ygf")] +transform = Transform3D(0.9999805530651744, 0, -0.006236464660995434, 0, 1, 0, 0.006236464660995434, 0, 0.9999805530651744, 44.9842473567, 2.5, 50.244351124) +right_side_guards_enabled = false +left_side_guards_enabled = false +head_end_leg_enabled = false +tail_end_leg_enabled = false +enable_comms = true +speed_tag_name = "UL2_5_OIP" +size = Vector3(2.621829, 0.5, 1.524) + +[node name="UL2_7" parent="." instance=ExtResource("3_38ygf")] +transform = Transform3D(0.8506089942191302, 0, 0.5257987627919258, 0, 1, 0, -0.5257987627919258, 0, 0.8506089942191302, 48.8197562846, 2.5, 49.3991124919) +right_side_guards_enabled = false +left_side_guards_enabled = false +head_end_leg_enabled = false +tail_end_leg_enabled = false +enable_comms = true +speed_tag_name = "UL2_7_OIP" +size = Vector3(1.342548, 0.5, 1.524) + +[node name="UL2_8" parent="." instance=ExtResource("3_38ygf")] +transform = Transform3D(0.8979644689927908, 0, 0.4400679634175786, 0, 1, 0, -0.4400679634175786, 0, 0.8979644689927908, 49.79248956899999, 2.5, 48.8492748311) +right_side_guards_enabled = false +left_side_guards_enabled = false +head_end_leg_enabled = false +tail_end_leg_enabled = false +enable_comms = true +speed_tag_name = "UL2_8_OIP" +size = Vector3(0.894783, 0.5, 1.524) + +[node name="UL2_9" parent="." instance=ExtResource("3_38ygf")] +transform = Transform3D(0.8762206638502454, 0, 0.4819101039009612, 0, 1, 0, -0.4819101039009612, 0, 0.8762206638502454, 50.601851501199995, 2.5, 48.4282062549) +right_side_guards_enabled = false +left_side_guards_enabled = false +head_end_leg_enabled = false +tail_end_leg_enabled = false +enable_comms = true +speed_tag_name = "UL2_9_OIP" +size = Vector3(0.930406, 0.5, 1.524) + +[node name="UL2_10" parent="." instance=ExtResource("3_38ygf")] +transform = Transform3D(0.8780689921649024, 0, 0.47853405834748336, 0, 1, 0, -0.47853405834748336, 0, 0.8780689921649024, 51.3862990814, 2.5, 47.998655272499995) +right_side_guards_enabled = false +left_side_guards_enabled = false +head_end_leg_enabled = false +tail_end_leg_enabled = false +enable_comms = true +speed_tag_name = "UL2_10_OIP" +size = Vector3(0.858309, 0.5, 1.524) + +[node name="UL3_1" parent="." instance=ExtResource("3_38ygf")] +transform = Transform3D(0.9895668328462597, 0, 0.14407457558716869, 0, 1, 0, -0.14407457558716869, 0, 0.9895668328462597, 18.6049257949, 2.5, 53.49749704339999) +right_side_guards_enabled = false +left_side_guards_enabled = false +head_end_leg_enabled = false +tail_end_leg_enabled = false +enable_comms = true +speed_tag_name = "UL3_1_OIP" +size = Vector3(5.099540, 0.5, 1.524) + +[node name="UL3_2" parent="." instance=ExtResource("3_38ygf")] +transform = Transform3D(0.9999557211215563, 0, 0.009410408932047861, 0, 1, 0, -0.009410408932047861, 0, 0.9999557211215563, 34.801775214699994, 2.5, 53.1881954776) +right_side_guards_enabled = false +left_side_guards_enabled = false +head_end_leg_enabled = false +tail_end_leg_enabled = false +enable_comms = true +speed_tag_name = "UL3_2_OIP" +size = Vector3(24.956880, 0.5, 1.524) + +[node name="UL3_3" parent="." instance=ExtResource("3_38ygf")] +transform = Transform3D(0.9999914228893805, 0, -0.0041417565925802435, 0, 1, 0, 0.0041417565925802435, 0, 0.9999914228893805, 49.2610601772, 2.5, 53.0789747918) +right_side_guards_enabled = false +left_side_guards_enabled = false +head_end_leg_enabled = false +tail_end_leg_enabled = false +enable_comms = true +speed_tag_name = "UL3_3_OIP" +size = Vector3(3.962829, 0.5, 1.524) + +[node name="UL3_5" parent="." instance=ExtResource("3_38ygf")] +transform = Transform3D(0.8578838473591786, 0, 0.5138436575848861, 0, 1, 0, -0.5138436575848861, 0, 0.8578838473591786, 55.4356219581, 2.5, 51.060901941999994) +right_side_guards_enabled = false +left_side_guards_enabled = false +head_end_leg_enabled = false +tail_end_leg_enabled = false +enable_comms = true +speed_tag_name = "UL3_5_OIP" +size = Vector3(5.937410, 0.5, 1.524) + +[node name="UL3_6" parent="." instance=ExtResource("3_38ygf")] +transform = Transform3D(0.8824876952810232, 0, 0.47033548417867427, 0, 1, 0, -0.47033548417867427, 0, 0.8824876952810232, 58.39629870119999, 2.5, 49.3148718679) +right_side_guards_enabled = false +left_side_guards_enabled = false +head_end_leg_enabled = false +tail_end_leg_enabled = false +enable_comms = true +speed_tag_name = "UL3_6_OIP" +size = Vector3(0.937969, 0.5, 1.524) + +[node name="UL3_7" parent="." instance=ExtResource("3_38ygf")] +transform = Transform3D(0.9296382309209145, 0, 0.36847355347464555, 0, 1, 0, -0.36847355347464555, 0, 0.9296382309209145, 59.233127698100006, 2.5, 48.9266480444) +right_side_guards_enabled = false +left_side_guards_enabled = false +head_end_leg_enabled = false +tail_end_leg_enabled = false +enable_comms = true +speed_tag_name = "UL3_7_OIP" +size = Vector3(0.909937, 0.5, 1.524) + +[node name="UL3_8" parent="." instance=ExtResource("3_38ygf")] +transform = Transform3D(0.8047682926335156, 0, 0.5935890793905632, 0, 1, 0, -0.5935890793905632, 0, 0.8047682926335156, 60.030284308000006, 2.5, 48.4829976236) +right_side_guards_enabled = false +left_side_guards_enabled = false +head_end_leg_enabled = false +tail_end_leg_enabled = false +enable_comms = true +speed_tag_name = "UL3_8_OIP" +size = Vector3(0.929958, 0.5, 1.524) + +[node name="UL3_9" parent="." instance=ExtResource("3_38ygf")] +transform = Transform3D(0.8768162540239772, 0, 0.4808255990266744, 0, 1, 0, -0.4808255990266744, 0, 0.8768162540239772, 60.7953638548, 2.5, 47.992642101899996) +right_side_guards_enabled = false +left_side_guards_enabled = false +head_end_leg_enabled = false +tail_end_leg_enabled = false +enable_comms = true +speed_tag_name = "UL3_9_OIP" +size = Vector3(0.891587, 0.5, 1.524) + +[node name="UL4_3" parent="." instance=ExtResource("3_38ygf")] +transform = Transform3D(0.9950689105870448, 0, 0.09918600295965033, 0, 1, 0, -0.09918600295965033, 0, 0.9950689105870448, 18.5228132337, 2.5, 59.2591679813) +right_side_guards_enabled = false +left_side_guards_enabled = false +head_end_leg_enabled = false +tail_end_leg_enabled = false +enable_comms = true +speed_tag_name = "UL4_3_OIP" +size = Vector3(9.008374, 0.5, 1.524) + +[node name="UL4_4" parent="." instance=ExtResource("3_38ygf")] +transform = Transform3D(0.9999979393868175, 0, 0.002030079338077881, 0, 1, 0, -0.002030079338077881, 0, 0.9999979393868175, 33.24608001519999, 2.5, 58.7916249997) +right_side_guards_enabled = false +left_side_guards_enabled = false +head_end_leg_enabled = false +tail_end_leg_enabled = false +enable_comms = true +speed_tag_name = "UL4_4_OIP" +size = Vector3(20.482623, 0.5, 1.524) + +[node name="UL4_5" parent="." instance=ExtResource("3_38ygf")] +transform = Transform3D(0.9992951314680424, 0, -0.03753984848488273, 0, 1, 0, 0.03753984848488273, 0, 0.9992951314680424, 44.8572392795, 2.5, 58.8222952711) +right_side_guards_enabled = false +left_side_guards_enabled = false +head_end_leg_enabled = false +tail_end_leg_enabled = false +enable_comms = true +speed_tag_name = "UL4_5_OIP" +size = Vector3(2.741670, 0.5, 1.524) + +[node name="UL4_6" parent="." instance=ExtResource("3_38ygf")] +transform = Transform3D(0.9408925721778789, 0, 0.33870513373802713, 0, 1, 0, -0.33870513373802713, 0, 0.9408925721778789, 46.6950675698, 2.5, 58.705298908699994) +right_side_guards_enabled = false +left_side_guards_enabled = false +head_end_leg_enabled = false +tail_end_leg_enabled = false +enable_comms = true +speed_tag_name = "UL4_6_OIP" +size = Vector3(0.994714, 0.5, 1.524) + +[node name="UL4_7" parent="." instance=ExtResource("3_38ygf")] +transform = Transform3D(0.9986842389497732, 0, -0.051281486652711435, 0, 1, 0, 0.051281486652711435, 0, 0.9986842389497732, 47.616922673, 2.5, 58.56014871639999) +right_side_guards_enabled = false +left_side_guards_enabled = false +head_end_leg_enabled = false +tail_end_leg_enabled = false +enable_comms = true +speed_tag_name = "UL4_7_OIP" +size = Vector3(0.908988, 0.5, 1.524) + +[node name="UL4_8" parent="." instance=ExtResource("3_38ygf")] +transform = Transform3D(0.9999433439860244, 0, 0.010644661481103306, 0, 1, 0, -0.010644661481103306, 0, 0.9999433439860244, 48.533479450499996, 2.5, 58.578530683699995) +right_side_guards_enabled = false +left_side_guards_enabled = false +head_end_leg_enabled = false +tail_end_leg_enabled = false +enable_comms = true +speed_tag_name = "UL4_8_OIP" +size = Vector3(0.925374, 0.5, 1.524) + +[node name="UL4_9" parent="." instance=ExtResource("3_38ygf")] +transform = Transform3D(0.9999865997475034, 0, -0.005176903072933443, 0, 1, 0, 0.005176903072933443, 0, 0.9999865997475034, 49.4538752348, 2.5, 58.575975215099994) +right_side_guards_enabled = false +left_side_guards_enabled = false +head_end_leg_enabled = false +tail_end_leg_enabled = false +enable_comms = true +speed_tag_name = "UL4_9_OIP" +size = Vector3(0.915482, 0.5, 1.524) + +[node name="UL4_10" parent="." instance=ExtResource("3_38ygf")] +transform = Transform3D(0.9999996647208671, 0, -0.0008188761526801148, 0, 1, 0, 0.0008188761526801148, 0, 0.9999996647208671, 57.8965222179, 2.5, 58.6241365107) +right_side_guards_enabled = false +left_side_guards_enabled = false +head_end_leg_enabled = false +tail_end_leg_enabled = false +enable_comms = true +speed_tag_name = "UL4_10_OIP" +size = Vector3(14.120969, 0.5, 1.524) + +[node name="UL4_12" parent="." instance=ExtResource("3_38ygf")] +transform = Transform3D(0.9994129903588115, 0, -0.03425893609057608, 0, 1, 0, 0.03425893609057608, 0, 0.9994129903588115, 70.2880283467, 2.5, 58.98310486819999) +right_side_guards_enabled = false +left_side_guards_enabled = false +head_end_leg_enabled = false +tail_end_leg_enabled = false +enable_comms = true +speed_tag_name = "UL4_12_OIP" +size = Vector3(2.465453, 0.5, 1.524) + +[node name="UL4_13" parent="." instance=ExtResource("3_38ygf")] +transform = Transform3D(0.9999540454520701, 0, 0.009586813028279828, 0, 1, 0, -0.009586813028279828, 0, 0.9999540454520701, 72.7778091685, 2.5, 59.0132781251) +right_side_guards_enabled = false +left_side_guards_enabled = false +head_end_leg_enabled = false +tail_end_leg_enabled = false +enable_comms = true +speed_tag_name = "UL4_13_OIP" +size = Vector3(2.515672, 0.5, 1.524) + +[node name="UL5_3" parent="." instance=ExtResource("3_38ygf")] +transform = Transform3D(0.9974065210227826, 0, -0.0719738273348684, 0, 1, 0, 0.0719738273348684, 0, 0.9974065210227826, 18.419276305900002, 2.5, 62.65324851849999) +right_side_guards_enabled = false +left_side_guards_enabled = false +head_end_leg_enabled = false +tail_end_leg_enabled = false +enable_comms = true +speed_tag_name = "UL5_3_OIP" +size = Vector3(9.079875, 0.5, 1.524) + +[node name="UL5_4" parent="." instance=ExtResource("3_38ygf")] +transform = Transform3D(0.9999765711890427, 0, -0.006845222641044972, 0, 1, 0, 0.006845222641044972, 0, 0.9999765711890427, 32.9600993451, 2.5, 63.0485456959) +right_side_guards_enabled = false +left_side_guards_enabled = false +head_end_leg_enabled = false +tail_end_leg_enabled = false +enable_comms = true +speed_tag_name = "UL5_4_OIP" +size = Vector3(20.025788, 0.5, 1.524) + +[node name="UL5_5" parent="." instance=ExtResource("3_38ygf")] +transform = Transform3D(0.9988495791288503, 0, 0.047953292630627475, 0, 1, 0, -0.047953292630627475, 0, 0.9988495791288503, 44.2081998867, 2.5, 63.0577744938) +right_side_guards_enabled = false +left_side_guards_enabled = false +head_end_leg_enabled = false +tail_end_leg_enabled = false +enable_comms = true +speed_tag_name = "UL5_5_OIP" +size = Vector3(2.473728, 0.5, 1.524) + +[node name="UL5_7" parent="." instance=ExtResource("3_38ygf")] +transform = Transform3D(0.8524790224883632, 0, 0.522761433368305, 0, 1, 0, -0.522761433368305, 0, 0.8524790224883632, 47.862835376499994, 2.5, 62.1342421651) +right_side_guards_enabled = false +left_side_guards_enabled = false +head_end_leg_enabled = false +tail_end_leg_enabled = false +enable_comms = true +speed_tag_name = "UL5_7_OIP" +size = Vector3(1.754812, 0.5, 1.524) + +[node name="UL5_8" parent="." instance=ExtResource("3_38ygf")] +transform = Transform3D(0.8833597213730209, 0, 0.4686956396807836, 0, 1, 0, -0.4686956396807836, 0, 0.8833597213730209, 49.0199502454, 2.5, 61.4584829502) +right_side_guards_enabled = false +left_side_guards_enabled = false +head_end_leg_enabled = false +tail_end_leg_enabled = false +enable_comms = true +speed_tag_name = "UL5_8_OIP" +size = Vector3(0.926338, 0.5, 1.524) + +[node name="UL5_9" parent="." instance=ExtResource("3_38ygf")] +transform = Transform3D(0.8471068986537589, 0, 0.5314225270471795, 0, 1, 0, -0.5314225270471795, 0, 0.8471068986537589, 49.813407535799996, 2.5, 61.000303754799994) +right_side_guards_enabled = false +left_side_guards_enabled = false +head_end_leg_enabled = false +tail_end_leg_enabled = false +enable_comms = true +speed_tag_name = "UL5_9_OIP" +size = Vector3(0.907353, 0.5, 1.524) + +[node name="UL5_10" parent="." instance=ExtResource("3_38ygf")] +transform = Transform3D(0.8830309487153603, 0, 0.4693147596345664, 0, 1, 0, -0.4693147596345664, 0, 0.8830309487153603, 50.6011652821, 2.5, 60.544786073000004) +right_side_guards_enabled = false +left_side_guards_enabled = false +head_end_leg_enabled = false +tail_end_leg_enabled = false +enable_comms = true +speed_tag_name = "UL5_10_OIP" +size = Vector3(0.913773, 0.5, 1.524) + +[node name="UL6_1" parent="." instance=ExtResource("3_38ygf")] +transform = Transform3D(0.9860201232632386, 0, 0.16662627799944335, 0, 1, 0, -0.16662627799944335, 0, 0.9860201232632386, 18.599429158699998, 2.5, 67.76774869079999) +right_side_guards_enabled = false +left_side_guards_enabled = false +head_end_leg_enabled = false +tail_end_leg_enabled = false +enable_comms = true +speed_tag_name = "UL6_1_OIP" +size = Vector3(5.072301, 0.5, 1.524) + +[node name="UL6_2" parent="." instance=ExtResource("3_38ygf")] +transform = Transform3D(0.9999376035906048, 0, 0.01117089635967401, 0, 1, 0, -0.01117089635967401, 0, 0.9999376035906048, 32.965110587299996, 2.5, 67.5262929761) +right_side_guards_enabled = false +left_side_guards_enabled = false +head_end_leg_enabled = false +tail_end_leg_enabled = false +enable_comms = true +speed_tag_name = "UL6_2_OIP" +size = Vector3(20.762420, 0.5, 1.524) + +[node name="UL6_3" parent="." instance=ExtResource("3_38ygf")] +transform = Transform3D(0.9996145027501965, 0, 0.027764111573710868, 0, 1, 0, -0.027764111573710868, 0, 0.9996145027501965, 44.675673538999995, 2.5, 67.3733850269) +right_side_guards_enabled = false +left_side_guards_enabled = false +head_end_leg_enabled = false +tail_end_leg_enabled = false +enable_comms = true +speed_tag_name = "UL6_3_OIP" +size = Vector3(2.661027, 0.5, 1.524) + +[node name="UL6_5" parent="." instance=ExtResource("3_38ygf")] +transform = Transform3D(0.8607868402171976, 0, 0.508965633131445, 0, 1, 0, -0.508965633131445, 0, 0.8607868402171976, 51.6434335684, 2.5, 64.5229559297) +right_side_guards_enabled = false +left_side_guards_enabled = false +head_end_leg_enabled = false +tail_end_leg_enabled = false +enable_comms = true +speed_tag_name = "UL6_5_OIP" +size = Vector3(9.266426, 0.5, 1.524) + +[node name="UL6_6" parent="." instance=ExtResource("3_38ygf")] +transform = Transform3D(0.8566984744886353, 0, 0.5158175295672346, 0, 1, 0, -0.5158175295672346, 0, 0.8566984744886353, 56.034330488900004, 2.5, 61.92235150429999) +right_side_guards_enabled = false +left_side_guards_enabled = false +head_end_leg_enabled = false +tail_end_leg_enabled = false +enable_comms = true +speed_tag_name = "UL6_6_OIP" +size = Vector3(0.940093, 0.5, 1.524) + +[node name="UL6_7" parent="." instance=ExtResource("3_38ygf")] +transform = Transform3D(0.9022179251501843, 0, 0.43128043723045956, 0, 1, 0, -0.43128043723045956, 0, 0.9022179251501843, 56.84963227459999, 2.5, 61.482654682399996) +right_side_guards_enabled = false +left_side_guards_enabled = false +head_end_leg_enabled = false +tail_end_leg_enabled = false +enable_comms = true +speed_tag_name = "UL6_7_OIP" +size = Vector3(0.914665, 0.5, 1.524) + +[node name="UL6_8" parent="." instance=ExtResource("3_38ygf")] +transform = Transform3D(0.866025400060552, 0, 0.5000000064499608, 0, 1, 0, -0.5000000064499608, 0, 0.866025400060552, 57.658192786, 2.5, 61.056816062399996) +right_side_guards_enabled = false +left_side_guards_enabled = false +head_end_leg_enabled = false +tail_end_leg_enabled = false +enable_comms = true +speed_tag_name = "UL6_8_OIP" +size = Vector3(0.914400, 0.5, 1.524) + +[node name="UL6_9" parent="." instance=ExtResource("3_38ygf")] +transform = Transform3D(0.866025402838328, 0, 0.5000000016387117, 0, 1, 0, -0.5000000016387117, 0, 0.866025402838328, 58.439087884100005, 2.5, 60.60596606239999) +right_side_guards_enabled = false +left_side_guards_enabled = false +head_end_leg_enabled = false +tail_end_leg_enabled = false +enable_comms = true +speed_tag_name = "UL6_9_OIP" +size = Vector3(0.889000, 0.5, 1.524) diff --git a/pick coordinate ( CD1).fas b/pick coordinate ( CD1).fas new file mode 100644 index 0000000000000000000000000000000000000000..fd3253b0a42e35e3ca4dd40da14fe48522f37a58 GIT binary patch literal 708 zcmd<(QgCw&HqmwS^l??NR&dEz$jdKLNX|&iOHWnEEK%g;GPE$`P!VAO0!}f8 zKt@ppMg}fU5e6d$Qzl^sW-d-422(~s24*$^24(>UPJW;;h{wmk$qN!NW#nOCHexbj zF=ggvU^Zpq0?KhRaB@K8*fHeT7&uvhwy=O~0cwY__+TtfW*Cc^6V76Tu{fDvEK{HX z%#th&Vk*2`CdS4J778lT=VsOKWSGn4?86bm?(QZMD99U^T+i;z;3NcbIHcHT`&C96O_7{vvUiCtHrsIn!W>#mD z)N;WjeH*t3AAkQ)&&*w4>vm?|V=`7^h-DXc3wIV|kY=|`Vw%Q(es)NM@!VtulL}!M zA$LbdL3U{#Zsv5~>^<9LuY}FDP)#?CX0KB!RWB)ZaCR|BP2umkW%b%`IB1T66aPMni$3g3A>9qhgdnp#s?VcM4g+Rz0=}spfIl>XHu52 ziGE#5Rb>)yJdf#=(^?%yw`x_)>O?%<+(pC$*u{7mjUxP0-oF;S5c5*P%Qi_O*oDo_ zSujY7mnSL6F?-byv1=)ZB4xaTO)|@}O7$yB@_D%}6D#b_&sKezw%($^wnQcbXp}^} zhi9a7lA$Q~`Qvpv3+Gy-r&%+y3zdpU1ldM-S|u5Z@%7B9+hNqGQ