removed revision numbers from network diagrams and updated the zone numbers. removed the device label in the layout base. modified the cable placement code. added exception for the SSP device
This commit is contained in:
parent
0ac953eb1d
commit
68f882eb7e
@ -164,7 +164,6 @@
|
||||
(progn
|
||||
(princ (strcat "\n[devlay_update] Found blocks named \"" blkName "\"."))
|
||||
(setq pairs (build-pairs maxDesca))
|
||||
(setq sioLikeBlocks '("PLCIO_ARMORBLOCK_SIO" "PLCIO_ARMBLOCK_FIOM" "PLCIO_ARMORBLOCK_FIOH"))
|
||||
(setq i 0)
|
||||
(while (< i (sslength ss))
|
||||
(setq ent (ssname ss i))
|
||||
@ -235,7 +234,13 @@
|
||||
;; EXISTING CODE for all other blocks
|
||||
(if (and val1 val2
|
||||
(or (and (vl-string-search "SEL" val1) (vl-string-search "SEL" val2))
|
||||
(and (vl-string-search "DPM" val1) (vl-string-search "DPM" val2))))
|
||||
(and (vl-string-search "DPM" val1) (vl-string-search "DPM" val2))
|
||||
;; NEW: Additional conditions for single straight block
|
||||
(and (vl-string-search "VFD" val1) (vl-string-search "STO" val1)
|
||||
(vl-string-search "VFD" val2) (vl-string-search "STO" val2))
|
||||
(and (vl-string-search "JR" val1) (vl-string-search "_PB" val1) (vl-string-search "JR" val2) (vl-string-search "_PB_LT" val2))
|
||||
(and (vl-string-search "EPC" val1) (vl-string-search "EPC" val2))
|
||||
(and (vl-string-search "SSP" val1) (vl-string-search "SSP" val2))))
|
||||
(progn
|
||||
;; Insert single straight block
|
||||
(command "_-INSERT" "HC01_CORDSET_STR-STR_STRAIGHT" newPt1 1 1 0)
|
||||
@ -259,6 +264,28 @@
|
||||
)
|
||||
)
|
||||
|
||||
;; === NEW: Move single straight block left/right depending on side ===
|
||||
(if (or (and (= blkName "PLCIO_ARMORPOWERFLEX") (>= tagNum 7))
|
||||
(and (member blkName sioLikeBlocks) (>= tagNum 8)))
|
||||
;; Right side: move left 1 unit
|
||||
(progn
|
||||
(setq basePt (vlax-get finalBlock 'InsertionPoint))
|
||||
(setq targetPt (list (- (car basePt) 0.5) (cadr basePt) (caddr basePt)))
|
||||
(vla-move finalBlock (vlax-3d-point basePt) (vlax-3d-point targetPt))
|
||||
)
|
||||
;; Left side: move right 0.5 unit
|
||||
(if (or (and (= blkName "PLCIO_ARMORPOWERFLEX") (<= tagNum 7))
|
||||
(and (member blkName sioLikeBlocks) (< tagNum 8)))
|
||||
(progn
|
||||
(setq basePt (vlax-get finalBlock 'InsertionPoint))
|
||||
(setq targetPt (list (+ (car basePt) 1.0) (cadr basePt) (caddr basePt)))
|
||||
(vla-move finalBlock (vlax-3d-point basePt) (vlax-3d-point targetPt))
|
||||
)
|
||||
|
||||
)
|
||||
)
|
||||
;; === END NEW ===
|
||||
|
||||
;; Move all SEL blocks 1 unit down. Also move 4 units left for DESCA07 - 09 (SIO)
|
||||
(setq shiftX (if (>= tagNum mirrorThreshold) -3 0))
|
||||
(setq shiftY -0.5)
|
||||
@ -324,23 +351,31 @@
|
||||
(if (< tagNum mirrorThreshold) 0.5 -1.4)
|
||||
)
|
||||
) ; inward move
|
||||
(setq newX1 (+ (car newPt1) moveVecX))
|
||||
(setq newX2 (+ (car newPt2) moveVecX))
|
||||
|
||||
;; Additional right shift of 0.5 for SIO-like blocks on right side (tagNum >= 9)
|
||||
(setq rightShift (if (and (member blkName sioLikeBlocks) (>= tagNum 9)) 0.5 0.0))
|
||||
;; Additional downward shift of 0.5 for SIO-like blocks on right side (tagNum >= 9)
|
||||
(setq downShift (if (and (member blkName sioLikeBlocks) (>= tagNum 9)) 0.1 0.0))
|
||||
|
||||
(setq newX1 (+ (car newPt1) moveVecX rightShift))
|
||||
(setq newX2 (+ (car newPt2) moveVecX rightShift))
|
||||
(setq newX3
|
||||
(if (or (= tagNum 7) (= tagNum 8))
|
||||
(+ (car newPt3) -1.5)
|
||||
(+ (car newPt3) moveVecX)
|
||||
(+ (car newPt3) -1.5 rightShift)
|
||||
(+ (car newPt3) moveVecX rightShift)
|
||||
)
|
||||
)
|
||||
(setq newY1 (- (cadr newPt1) downShift))
|
||||
(setq newY2 (- (cadr newPt2) downShift))
|
||||
(setq newY3
|
||||
(if (or (= tagNum 7) (= tagNum 8))
|
||||
(+ (cadr newPt3) -0.015)
|
||||
(cadr newPt3)
|
||||
(+ (cadr newPt3) -0.015 downShift)
|
||||
(- (cadr newPt3) downShift)
|
||||
)
|
||||
)
|
||||
|
||||
(vla-move newBlock1 (vlax-3d-point newPt1) (vlax-3d-point newX1 (cadr newPt1) (caddr newPt1)))
|
||||
(vla-move newBlock2 (vlax-3d-point newPt2) (vlax-3d-point newX2 (cadr newPt2) (caddr newPt2)))
|
||||
(vla-move newBlock1 (vlax-3d-point newPt1) (vlax-3d-point newX1 newY1 (caddr newPt1)))
|
||||
(vla-move newBlock2 (vlax-3d-point newPt2) (vlax-3d-point newX2 newY2 (caddr newPt2)))
|
||||
(vla-move (vlax-ename->vla-object (entlast)) (vlax-3d-point newPt3) (vlax-3d-point newX3 newY3 (caddr newPt3)))
|
||||
)
|
||||
)
|
||||
@ -376,7 +411,7 @@
|
||||
(setq y (- (cadr pt) 0.5))
|
||||
(setq xAdjust
|
||||
(if (and (member blkName sioLikeBlocks) (>= tagNum 9))
|
||||
0.5 ; right side → move slightly left
|
||||
0.0 ; right side → move slightly left
|
||||
(if (member blkName sioLikeBlocks)
|
||||
0.7 ; left side → move slightly right
|
||||
0.0 ; other blocks → no change
|
||||
@ -422,9 +457,32 @@
|
||||
(progn
|
||||
(command "_MIRROR" newEnt "" insPt (list (car insPt) (+ (cadr insPt) 0.1)) "N")
|
||||
(entdel newEnt)
|
||||
(setq newBlock (vlax-ename->vla-object (entlast)))
|
||||
)
|
||||
)
|
||||
|
||||
;; === NEW: Move single straight block left/right depending on side ===
|
||||
(if (or (and (= blkName "PLCIO_ARMORPOWERFLEX") (>= tagnum 7))
|
||||
(and (member blkName sioLikeBlocks) (>= tagnum 8) (= tagnum 15)))
|
||||
;; Right side: move left 1 unit (only for last DESCA in SIO-like blocks)
|
||||
(progn
|
||||
(setq basePt (vlax-get newBlock 'InsertionPoint))
|
||||
(setq targetPt (list (+ (car basePt) 0.5) (cadr basePt) (caddr basePt)))
|
||||
(vla-move newBlock (vlax-3d-point basePt) (vlax-3d-point targetPt))
|
||||
)
|
||||
)
|
||||
|
||||
;; === NEW: Move SIO-like single blocks on left side to the left ===
|
||||
(if (and (member blkName sioLikeBlocks) (< tagnum 8))
|
||||
;; Left side SIO-like blocks: move left 0.5 unit
|
||||
(progn
|
||||
(setq basePt (vlax-get newBlock 'InsertionPoint))
|
||||
(setq targetPt (list (- (car basePt) 0.7) (cadr basePt) (caddr basePt)))
|
||||
(vla-move newBlock (vlax-3d-point basePt) (vlax-3d-point targetPt))
|
||||
)
|
||||
)
|
||||
;; === END NEW ===
|
||||
|
||||
(setvar "ATTDIA" oldAttdia)
|
||||
(setvar "ATTREQ" oldAttreq)
|
||||
)
|
||||
|
||||
@ -9,6 +9,42 @@
|
||||
)
|
||||
)
|
||||
|
||||
(defun placeDeviceLabel (vlaBlock / insPt labelText labelPt ent)
|
||||
(setq insPt (vlax-get vlaBlock 'InsertionPoint))
|
||||
(setq labelPt (list (+ (car insPt) 3.6) (+ (cadr insPt) 1.2) (caddr insPt)))
|
||||
|
||||
(setq labelText
|
||||
(cond
|
||||
((wcmatch (strcase (vla-get-effectivename vlaBlock)) "*POWERFLEX*") "APF")
|
||||
((wcmatch (strcase (vla-get-effectivename vlaBlock)) "*SIO*") "SIO")
|
||||
((wcmatch (strcase (vla-get-effectivename vlaBlock)) "*FIOM*") "FIO")
|
||||
((wcmatch (strcase (vla-get-effectivename vlaBlock)) "*FIOH*") "FIOH")
|
||||
(T "")
|
||||
)
|
||||
)
|
||||
|
||||
(if (/= labelText "")
|
||||
(progn
|
||||
;; Create text entity with alignment point for justification
|
||||
(setq ent (entmakex
|
||||
(list
|
||||
(cons 0 "TEXT")
|
||||
(cons 8 "0")
|
||||
(cons 7 "WD")
|
||||
(cons 62 7) ;; white color
|
||||
(cons 10 labelPt) ;; insertion point
|
||||
(cons 11 labelPt) ;; alignment point (required for vertical just >0)
|
||||
(cons 40 0.5)
|
||||
(cons 72 0) ;; Horizontal Left
|
||||
(cons 73 3) ;; Vertical Top
|
||||
(cons 1 labelText)
|
||||
(cons 50 0.0) ;; rotation angle
|
||||
)
|
||||
))
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(defun insertBlockAt (blockName basePt targetPt)
|
||||
(command "_.-INSERT" blockName basePt 1 1 0)
|
||||
(setq ent (entlast))
|
||||
@ -66,42 +102,6 @@
|
||||
)
|
||||
)
|
||||
|
||||
(defun placeDeviceLabel (vlaBlock / insPt labelText labelPt ent)
|
||||
(setq insPt (vlax-get vlaBlock 'InsertionPoint))
|
||||
(setq labelPt (list (+ (car insPt) 3.6) (+ (cadr insPt) 1.2) (caddr insPt)))
|
||||
|
||||
(setq labelText
|
||||
(cond
|
||||
((wcmatch (strcase (vla-get-effectivename vlaBlock)) "*POWERFLEX*") "APF")
|
||||
((wcmatch (strcase (vla-get-effectivename vlaBlock)) "*SIO*") "SIO")
|
||||
((wcmatch (strcase (vla-get-effectivename vlaBlock)) "*FIOM*") "FIO")
|
||||
((wcmatch (strcase (vla-get-effectivename vlaBlock)) "*FIOH*") "FIOH")
|
||||
(T "")
|
||||
)
|
||||
)
|
||||
|
||||
(if (/= labelText "")
|
||||
(progn
|
||||
;; Create text entity with alignment point for justification
|
||||
(setq ent (entmakex
|
||||
(list
|
||||
(cons 0 "TEXT")
|
||||
(cons 8 "0")
|
||||
(cons 7 "WD")
|
||||
(cons 62 7) ;; white color
|
||||
(cons 10 labelPt) ;; insertion point
|
||||
(cons 11 labelPt) ;; alignment point (required for vertical just >0)
|
||||
(cons 40 0.5)
|
||||
(cons 72 0) ;; Horizontal Left
|
||||
(cons 73 3) ;; Vertical Top
|
||||
(cons 1 labelText)
|
||||
(cons 50 0.0) ;; rotation angle
|
||||
)
|
||||
))
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
;; Function to read device list from a text file
|
||||
(defun readDeviceListFromFile ( / file filePath line result)
|
||||
;; Open file dialog for user to pick device list text file
|
||||
@ -198,7 +198,7 @@
|
||||
(setq vlaEnt (vlax-ename->vla-object ent))
|
||||
(vla-move vlaEnt (vlax-3d-point 0 0 0) (vlax-3d-point pos))
|
||||
(setDESCAtoSpare vlaEnt)
|
||||
(placeDeviceLabel vlaEnt)
|
||||
; (placeDeviceLabel vlaEnt)
|
||||
)
|
||||
(princ (strcat "\nFailed to insert block: " blk))
|
||||
)
|
||||
@ -210,7 +210,7 @@
|
||||
)
|
||||
|
||||
|
||||
(defun update20ZoneBlockAttributes (blockEnt layoutIndex startValue / blockObj attrList attr attrName newValue)
|
||||
(defun update20ZoneBlockAttributes (blockEnt layoutIndex startValue / blockObj attrList attr attrName newValue formattedValue)
|
||||
|
||||
(setq blockObj (vlax-ename->vla-object blockEnt))
|
||||
(setq attrList (vlax-invoke blockObj 'GetAttributes))
|
||||
@ -226,11 +226,11 @@
|
||||
;; Convert string to number, add index
|
||||
(setq newValue (+ (atoi startValue) layoutIndex))
|
||||
|
||||
;; Format as 5-digit string with leading zeros, add "."
|
||||
(setq newValue (strcat (substr (strcat "00000" (itoa newValue)) (- (strlen (strcat "00000" (itoa newValue))) 4)) "."))
|
||||
;; Format as string with period, no leading zeros
|
||||
(setq formattedValue (strcat (itoa newValue) "."))
|
||||
|
||||
;; Apply value
|
||||
(vlax-put-property attr 'TextString newValue)
|
||||
(vlax-put-property attr 'TextString formattedValue)
|
||||
(vlax-invoke attr 'Update)
|
||||
)
|
||||
)
|
||||
|
||||
@ -136,7 +136,7 @@
|
||||
|
||||
(setq labelPt
|
||||
(list (- (car basePt) 0.05) ; left
|
||||
(+ (cadr basePt) 0.9) ; up
|
||||
(+ (cadr basePt) 0.65) ; up
|
||||
(caddr basePt)))
|
||||
|
||||
;; Create label text
|
||||
@ -285,6 +285,8 @@
|
||||
(setq deviceGroups (cadr csvData))
|
||||
(setq count (length dpmList))
|
||||
|
||||
(setq userInput (getstring "\nEnter zone number (e.g., 01, 02): "))
|
||||
|
||||
|
||||
(if (and blockName (> count 0))
|
||||
(progn
|
||||
@ -348,13 +350,17 @@
|
||||
;; Move the inserted block from (0,0,0) to desired point
|
||||
(if ent
|
||||
(progn
|
||||
|
||||
(setq vlaObj (vlax-ename->vla-object ent))
|
||||
(vla-move vlaObj (vlax-3d-point 0 0 0) (vlax-3d-point desiredX desiredY 0))
|
||||
;; Set ALL attributes in the ZONE_32H block to E8912., E8913., etc.
|
||||
|
||||
(setq zoneName (strcat userInput (itoa (+ 702 i)) "."))
|
||||
(foreach att (vlax-invoke vlaObj 'GetAttributes)
|
||||
(vla-put-textstring att zoneName)
|
||||
)
|
||||
;; Label the ZONE_32H lines
|
||||
(labelZone32Lines ent)
|
||||
(setq insPt targetPt)
|
||||
(setq revTriPt (list (+ (car insPt) 42.7) (+ (cadr insPt) desiredY) (caddr insPt)))
|
||||
(command "_.-INSERT" "REVTRIANGLE2" revTriPt 1 0 1)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
@ -131,7 +131,7 @@
|
||||
|
||||
(setq labelPt
|
||||
(list (- (car basePt) 0.05) ; left
|
||||
(+ (cadr basePt) 0.9) ; up
|
||||
(+ (cadr basePt) 0.65) ; up
|
||||
(caddr basePt)))
|
||||
|
||||
;; Create label text
|
||||
@ -266,6 +266,27 @@
|
||||
(vlax-3d-point targetPt)
|
||||
)
|
||||
)
|
||||
|
||||
;; Add layout label text at the top
|
||||
(setq layoutLabel (strcat "Layout " (itoa (+ i 1))))
|
||||
(setq labelPt (list (+ x 20.0) (+ y 40.0) 0)) ; Adjust position as needed
|
||||
(entmake
|
||||
(list
|
||||
(cons 0 "TEXT")
|
||||
(cons 8 "0")
|
||||
(cons 7 "WD")
|
||||
(cons 62 7) ; White color
|
||||
(cons 10 labelPt)
|
||||
(cons 11 labelPt)
|
||||
(cons 40 2.0) ; Text height
|
||||
(cons 72 1) ; Center alignment
|
||||
(cons 73 2)
|
||||
(cons 1 layoutLabel)
|
||||
(cons 50 0.0) ; Rotation
|
||||
(cons 100 "AcDbEntity")
|
||||
(cons 100 "AcDbText")
|
||||
)
|
||||
)
|
||||
|
||||
;; Insert DPM-UPS at fixed offset inside layout
|
||||
(setq dpmPair (nth i dpmList))
|
||||
@ -310,11 +331,15 @@
|
||||
(progn
|
||||
(setq vlaObj (vlax-ename->vla-object ent))
|
||||
(vla-move vlaObj (vlax-3d-point 0 0 0) (vlax-3d-point desiredX desiredY 0))
|
||||
|
||||
;; Set ALL attributes in the ZONE_32H block to E8912., E8913., etc.
|
||||
(setq zoneName (strcat "E" (itoa (+ 8912 i)) "."))
|
||||
(foreach att (vlax-invoke vlaObj 'GetAttributes)
|
||||
(vla-put-textstring att zoneName)
|
||||
)
|
||||
|
||||
;; Label the ZONE_32H lines
|
||||
(labelZone32Lines ent)
|
||||
(setq insPt targetPt)
|
||||
(setq revTriPt (list (+ (car insPt) 42.7) (+ (cadr insPt) desiredY) (caddr insPt)))
|
||||
(command "_.-INSERT" "REVTRIANGLE2" revTriPt 1 0 1)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user