Unfortunatelly I can't test the code below
because of my AutoCAD is crashed at all
Here is just a quick and dirty that partially was written from memory
- (defun get_wt_by_desc (desc)(cond ((= "6X300-500X5546" desc) 104.49) ((= "10x0-95x142" desc) 1.06) ((= "10x0-80x80" desc) 0.25) ((= "5X80X180" desc) 1.70) ((= "6X150X5546" desc) 39.18) ((= "6X150X5550" desc) 39.21) ((= "16x200x652" desc) 16.38) ) )(defun C:RECALC (/ atable column descript en ent lst row rows sset total wt)(vl-load-com) (setq sset (ssget "+.:S:N" '((0 . "ACAD_TABLE")))) (setq atable (vlax-ename->vla-object (ssname sset 0))) (vla-put-regeneratetablesuppressed atable :vlax-true) (setq column 2 row 3 total 0.0 rows (vla-get-rows atable)) (while (/= row rows) (setq descript (vlax-variant-value (vla-getvalue atable row column 0))) (if (setq wt (get_wt_by_desc descript)); (setq row 0);;here may be the wrong part (change by yourself): (while (wcmatch (vla-gettext atable row column) "*WEIGHT SUM*" ) (setq row (1+ row)) ) (vla-settext atable row (1+ column) (rtos total 2 2)) (vla-put-regeneratetablesuppressed atable :vlax-false) (princ) )
~'J'~ |