- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
I'm having issues with a lisp that i'm writing, where the user selects blocks, the blocks coordinates are placed into a list, the list is sorted from top to bottom, left to right. Then, each entity in the sorted list has values assigned to their attributes EQP_NUM and PCS_NUM. I have create the following, however, i get this error:
error: bad argument type: lselsetp ((<Entity name: 24b78421dc0> -141.226 -726.608 0.0) (<Entity name: 24b78421dd0> -139.436 -726.608 0.0) (<Entity name: 24b78421de0> -136.925 -726.608 0.0) (<Entity name: 24b78421df0> -131.819 -726.608 0.0) (<Entity name: 24b78421e00> -129.16 -726.608 0.0) (<Entity name: 24b78421e20> -133.625 -727.773 0.0) (<Entity name: 24b78421e70> -138.418 -727.822 0.0) (<Entity name: 24b78421e10> -130.49 -727.888 0.0) (<Entity name: 24b78421e60> -140.733 -728.052 0.0) (<Entity name: 24b78421e30> -135.037 -728.577 0.0) (<Entity name: 24b78421e50> -139.551 -729.216 0.0) (<Entity name: 24b78421e80> -136.563 -729.298 0.0) (<Entity name: 24b78421e40> -136.859 -730.463 0.0) (<Entity name: 24b78421eb0> -139.157 -730.758 0.0) (<Entity name: 24b78421e90> -131.589 -731.923 0.0) (<Entity name: 24b78421ea0> -137.729 -732.218 0.0))
(defun c:eqpassign (/ ss i lst en inv inc num2text ssnum ename)
(setq inv (getstring "\nEnter PCS Number")) ;user enters a string
(setq inc 1) ;sets inc to 1
(setq ssnum 0) ;sets ssnum to 0
(if (setq ss (ssget)) ;select entities
(progn
(repeat (setq i (sslength ss))
(setq en (ssname ss (setq i (1- i)))
lst (cons (cons en (cdr (assoc 10 (entget en)))) lst))) ;creates a list of points based on entities selected
(setq s_lst (vl-sort lst '(lambda (a b) (< (cadr a) (cadr b)))) s_lst (vl-sort s_lst '(lambda (a b) (< (caddr b) (caddr a))))) ;sorts list based on top to bottom left to right
(repeat (setq i (sslength ss)) ;repeates numbering
(setq num2text (itoa inc)) ;converts inc to a string
(setq ename (ssname s_lst ssnum)) ;assigns ename the entity name in the current index
(setpropertyvalue ename "PCS_NUM" inv) ;assigns entity inv number
(setpropertyvalue ename "EQP_NUM" num2text) ;assigns entity equipment number
(setq ssnum (+ 1 ssnum)) ;increments ssnum by 1
(setq inc (+ 1 inc))) ;increments inc by 1
)
)
)
Above is my code. Any ideas why it's not working?
Solved! Go to Solution.