initial version of the cad coordinates extraction and scene generation in OIP
This commit is contained in:
commit
f5fae7102a
59
conveyors.csv
Normal file
59
conveyors.csv
Normal file
@ -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
|
||||
|
484
generate_csv.lsp
Normal file
484
generate_csv.lsp
Normal file
@ -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 = <Prefix>_<Section>
|
||||
; - 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)
|
||||
95
generate_scene.py
Normal file
95
generate_scene.py
Normal file
@ -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}")
|
||||
585
generated_conveyors.tscn
Normal file
585
generated_conveyors.tscn
Normal file
@ -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)
|
||||
BIN
pick coordinate ( CD1).fas
Normal file
BIN
pick coordinate ( CD1).fas
Normal file
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user