From deaaf268403686c4218db23c0d3c2aa433921dbe Mon Sep 17 00:00:00 2001 From: Salijoghli <107577102+Salijoghli@users.noreply.github.com> Date: Fri, 9 Jan 2026 18:38:29 +0400 Subject: [PATCH] exporting S, SS, EPC, and beacons data --- generate_csv.lsp | 219 ++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 188 insertions(+), 31 deletions(-) diff --git a/generate_csv.lsp b/generate_csv.lsp index 7e59401..6cd4107 100644 --- a/generate_csv.lsp +++ b/generate_csv.lsp @@ -45,7 +45,6 @@ (defun getDynPropVal (blk propName / props p n raw v) (setq propName (strcase propName)) (setq v nil) - (if (= :vlax-true (vla-get-isdynamicblock blk)) (progn (setq props (vlax-invoke blk 'GetDynamicBlockProperties)) @@ -64,50 +63,46 @@ ) - (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) + (if (>= (length parts) 3) (progn - (setq prefix (nth 0 parts)) + (setq prefix (nth 0 parts)) (setq section (atoi (nth 1 parts))) - (setq third (nth 2 parts)) + (setq third (nth 2 parts)) + (setq kind nil idx 1) + (cond - ((or - (wcmatch third "TPE*") - (wcmatch third "PE*") - (wcmatch third "LPE*") - (wcmatch third "RPE*") - ) - (setq kind "TPE") - (setq idx - (cond - ((wcmatch third "TPE*") (atoi (substr third 4))) - ((wcmatch third "LPE*") (atoi (substr third 4))) - ((wcmatch third "RPE*") (atoi (substr third 4))) - (T (atoi (substr third 3))) ; PE* - ) - ) + ((or (wcmatch third "TPE*") (wcmatch third "PE*") (wcmatch third "LPE*") (wcmatch third "RPE*")) + (setq kind "TPE") + (setq idx (atoi (substr third 4))) ) ((wcmatch third "EPC*") (setq kind "EPC") (setq idx (atoi (substr third 4)))) + ((wcmatch third "SS*") (setq kind "SS") (setq idx (atoi (substr third 3)))) + ((wcmatch third "S*") (setq kind "BTN") (setq idx (atoi (substr third 2)))) + ((wcmatch third "BCN*") + (setq idx (atoi (substr third 4))) + (if (and (>= (length parts) 4) (= (nth 3 parts) "H")) + (setq kind "HORN") + (setq kind "BCN") + ) + ) ((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)) + + (if (and kind prefix (> section 0)) (list prefix section kind idx) - nil ) ) - nil ) ) - nil ) ) + (defun parse-key (key / parts prefix section) (setq parts (splitUnderscore (strcase key))) (if (= (length parts) 2) @@ -191,11 +186,15 @@ endRef baseLen epcCandidate epcLen included prefixStats maxAny maxGeom - hasT hasE hasV isLastAny isLastGeom reason) + hasT hasE hasV isLastAny isLastGeom reason btnMap beaconMap hornMap ssMap) (setq tpeMap '()) (setq epcMap '()) (setq vfdPresence '()) + (setq btnMap '()) + (setq beaconMap '()) + (setq hornMap '()) + (setq ssMap '()) (setq ss (ssget "X" '((0 . "INSERT")))) (if (not ss) @@ -208,15 +207,32 @@ (setq blk (vlax-ename->vla-object ent)) (setq effName (strcase (vla-get-EffectiveName blk))) - (if (or (= effName "CLX_TPE") (= effName "CLX_EPC") (= effName "VFD_V2")) + (if (or + (= effName "CLX_TPE") + (= effName "CLX_TPE1") + (= effName "CLX_EPC") + (= effName "VFD_V2") + (= effName "CLX_GS") + (= effName "CLX_GS1") + (= effName "CLX_LT") + (= effName "CLX_LT1") + (= effName "AS_LTH") + (= effName "CLX_SS_1") + ) + (progn (setq attList (vlax-invoke blk 'GetAttributes)) (setq ptag (getAttVal attList "P_TAG1")) - ;; >>> ADDED: TPE-specific dynamic properties (Custom section) - (setq tpeRotRaw (getDynPropVal blk "PE ROTATION")) ; numeric + (setq tpeRotRaw (getDynPropVal blk "PE ROTATION")) (setq tpeRot (tpe-rot-deg tpeRotRaw)) + (if (not (numberp tpeRot)) (setq tpeRot 0.0)) + (setq tpeDist (getDynPropVal blk "Distance1")) + (if (not (numberp tpeDist)) (setq tpeDist 0.0)) + (setq blkRot (block-rot-deg blk)) + (if (not (numberp blkRot)) (setq blkRot 0.0)) + (setq parsed (parse-ptag1-anchor ptag)) @@ -241,19 +257,76 @@ (subst (cons key entries) (assoc key tpeMap) tpeMap) (cons (cons key entries) tpeMap)) ) + ) + ;; >>> BUTTONS + ((= kind "BTN") + (setq insPt (vlax-get blk 'InsertionPoint)) + (setq xy (list (car insPt) (cadr insPt))) + (setq entries (cdr (assoc key btnMap))) + (if (not entries) (setq entries '())) + (setq entries (cons (list idx xy ptag) entries)) + (setq btnMap + (if (assoc key btnMap) + (subst (cons key entries) (assoc key btnMap) btnMap) + (cons (cons key entries) btnMap)) + ) + ) + + ;; >>> BEACONS + ((= kind "BCN") + (setq insPt (vlax-get blk 'InsertionPoint)) + (setq xy (list (car insPt) (cadr insPt))) + (setq entries (cdr (assoc key beaconMap))) + (if (not entries) (setq entries '())) + (setq entries (cons (list idx xy ptag) entries)) + (setq beaconMap + (if (assoc key beaconMap) + (subst (cons key entries) (assoc key beaconMap) beaconMap) + (cons (cons key entries) beaconMap)) + ) + ) + + ;; >>> HORN BEACONS (AS_LTH) + ((= kind "HORN") + (setq insPt (vlax-get blk 'InsertionPoint)) + (setq xy (list (car insPt) (cadr insPt))) + (setq entries (cdr (assoc key hornMap))) + (if (not entries) (setq entries '())) + (setq entries (cons (list idx xy ptag) entries)) + (setq hornMap + (if (assoc key hornMap) + (subst (cons key entries) (assoc key hornMap) hornMap) + (cons (cons key entries) hornMap)) + ) + ) + + ;; >>> START/STOP STATIONS + ((= kind "SS") + (setq insPt (vlax-get blk 'InsertionPoint)) + (setq xy (list (car insPt) (cadr insPt))) + (setq entries (cdr (assoc key ssMap))) + (if (not entries) (setq entries '())) + (setq entries (cons (list idx xy ptag) entries)) + (setq ssMap + (if (assoc key ssMap) + (subst (cons key entries) (assoc key ssMap) ssMap) + (cons (cons key entries) ssMap)) + ) ) ((= 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)) + ;; now storing ptag as well + (setq entries (cons (list idx xy ptag) entries)) (setq epcMap (if (assoc key epcMap) (subst (cons key entries) (assoc key epcMap) epcMap) (cons (cons key entries) epcMap)) ) ) + ((= kind "VFD") (if (not (assoc key vfdPresence)) (setq vfdPresence (cons (cons key T) vfdPresence))) @@ -393,7 +466,7 @@ (setq fh (open outPath "w")) ;; >>> ADDED: record_type + TPE columns (write-line - "record_type,conveyor_key,sec,included,reason,has_tpe,has_epc,has_vfd,is_last_any,is_last_geom,start_x,start_y,end_x,end_y,tpe_name,tpe_x,tpe_y,tpe_rotation,tpe_block_rotation,tpe_distance" + "record_type,conveyor_key,sec,included,reason,has_tpe,has_epc,has_vfd,is_last_any,is_last_geom,start_x,start_y,end_x,end_y,tpe_name,tpe_x,tpe_y,tpe_rotation,tpe_block_rotation,tpe_distance,dev_name,dev_x,dev_y" fh) @@ -561,6 +634,90 @@ ) ) ) + + ;; --- START STOP STATIONS --- + (foreach kv ssMap + (setq key (car kv)) + (foreach it (cdr kv) + (setq xy (nth 1 it)) + (setq devName (nth 2 it)) + (write-line + (strcat + "SS," key ",,,,,,,,,,,,,,,,,,," + devName "," (rtos (car xy) 2 6) "," (rtos (cadr xy) 2 6) + ) + fh + ) + ) + ) + ;; --- BUTTONS --- + (foreach kv btnMap + (setq key (car kv)) + (foreach it (cdr kv) + (setq xy (nth 1 it)) + (setq devName (nth 2 it)) + (write-line + (strcat + "S," key ",,,,,,,,,,,,,,,,,,," + devName "," (rtos (car xy) 2 6) "," (rtos (cadr xy) 2 6) + ) + fh + ) + ) + ) + + ;; --- BEACONS --- + (foreach kv beaconMap + (setq key (car kv)) + (foreach it (cdr kv) + (setq xy (nth 1 it)) + (setq devName (nth 2 it)) + (write-line + (strcat + "BCN," key ",,,,,,,,,,,,,,,,,,," + devName "," (rtos (car xy) 2 6) "," (rtos (cadr xy) 2 6) + ) + fh + ) + ) + ) + + ;; --- HORN BEACONS --- + (foreach kv hornMap + (setq key (car kv)) + (foreach it (cdr kv) + (setq xy (nth 1 it)) + (setq devName (nth 2 it)) + (write-line + (strcat + "BCN," key ",,,,,,,,,,,,,,,,,,," + devName "," (rtos (car xy) 2 6) "," (rtos (cadr xy) 2 6) + ) + fh + ) + ) + ) + + ;; --- EPC DEVICES --- + (foreach kv epcMap + (setq key (car kv)) + (foreach it (cdr kv) + (setq xy (nth 1 it)) + (setq devName (nth 2 it)) + + (write-line + (strcat + "EPC," key + ",,,,,,,,,,,,,,,,,,," ;; up to tpe_distance (19 empty fields) + devName "," + (rtos (car xy) 2 6) "," + (rtos (cadr xy) 2 6) + ) + fh + ) + ) + ) + (close fh) (princ (strcat "\nExported conveyors to: " outPath))