PDA

View Full Version : Entmod not Ent Modding



Borg
2004-10-20, 04:10 PM
I can't figure out what I'm doing wrong here.

As I watch the values change using the watch window in Vlisp, the entity list
"VlvBlkEntInfo" updates. But the entmod doesn't seem to have an effect.
What am I doing wrong?
Here is the code.


(defun UB (/ VlvNum VlvBlk VlvBlkEntInfo SubEntType)
(setq VlvNum "FV-1000");;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Temporary!!!!!!!!!!!!!!!!!!!
;(setq ValveNumber (getstring "\nEnter Valve Number"))
(setq VlvBlk (car (entsel "Select Valve")))
(setq VlvBlkEntInfo (entget VlvBlk))
(while
(/= "SEQEND"
(setq SubEntType (cdr (assoc 0 VlvBlkEntInfo)))
)
(setq VlvBlk (entnext VlvBlk))
(setq VlvBlkEntInfo (entget VlvBlk))
(if (= (cdr (assoc 2 VlvBlkEntInfo)) "A11")
(progn
(subst
(cons 1 VlvNum)
(assoc 1 VlvBlkEntInfo)
VlvBlkEntInfo
)
(entmod VlvBlkEntInfo)
;(entupd VlvBlk)
) ;end progn
) ;end if
;;; (setq VlvBlk (entnext VlvBlk))
;;; (setq VlvBlkEntInfo (entget VlvBlk))
) ;end while

)

jwanstaett
2004-10-20, 06:01 PM
(setq VlvBlkEntinfo (subst
(cons 1 VlvNum)
(assoc 1 VlvBlkEntInfo)
VlvBlkEntInfo
)
)

the subst doesn't change VlvBlkEntinfo so you need to set VlvBlkEntInfo to value return by subst command

Borg
2004-10-20, 06:12 PM
Thanks. I new I was missing something simple. :Oops:

Tom Beauford
2004-10-20, 06:32 PM
The entities following the insert are the ones drawn after a block was inserted there. If you're looking to modify the block definition access the block table.



(defun UB (/ VlvNum VlvBlk VlvBlkEntInfo SubEntType)
(setq VlvNum "FV-1000");;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Temporar y!!!!!!!!!!!!!!!!!!!
(princ "\n = VlvNum")
(princ VlvNum)
;(setq ValveNumber (getstring "\nEnter Valve Number"))
(setq VlvBlk (car (entsel "Select Valve")))
(princ "\n = VlvBlk")
(princ VlvBlk)
(setq VlvBlkEntInfo (entget VlvBlk))
(princ "\n = VlvBlkEntInfo")
(princ VlvBlkEntInfo)
; (entget(tblobjname "block" (cdr (assoc 2 VlvBlkEntInfo))))
(setq VlvBlk (tblobjname "block" (cdr (assoc 2 VlvBlkEntInfo))))
(princ "\n = VlvBlk")
(princ VlvBlk)
(setq VlvBlkEntInfo (entget VlvBlk))
(princ "\n = VlvBlkEntInfo")
(princ VlvBlkEntInfo)
(while(entnext VlvBlk)
; (/= "SEQEND"
; (setq SubEntType (cdr (assoc 0 VlvBlkEntInfo)))
; )
; (princ "\n = SubEntType")
; (princ SubEntType)
(princ "\n = (entnext VlvBlk)")
(princ (entnext VlvBlk))
(setq VlvBlk (entnext VlvBlk))
(princ "\n = VlvBlk")
(princ VlvBlk)
(setq VlvBlkEntInfo (entget VlvBlk))
(princ "\n = VlvBlkEntInfo")
(princ VlvBlkEntInfo)
(if (= (cdr (assoc 2 VlvBlkEntInfo)) "A11")
(progn
(subst
(cons 1 VlvNum)
(assoc 1 VlvBlkEntInfo)
VlvBlkEntInfo
)
(entmod VlvBlkEntInfo)
(princ "\n = VlvBlkEntInfo")
(princ VlvBlkEntInfo)
(entupd VlvBlk)
) ;end progn
) ;end if
;;; (setq VlvBlk (entnext VlvBlk))
;;; (setq VlvBlkEntInfo (entget VlvBlk))
) ;end while

)

This should get you started. Not sure where you're going to find group code 1 though. Try and describe what you want the routine to do and you'll get better help.