本帖最后由 snddd2000 于 2011-11-15 11:09 编辑
还是不能用ATTEDIT来编辑
先把对象反应器的代码发上来看看吧。望能找到解决attedit问题的办法。
 - (vl-load-com)
- (defun mxbzdszzl ( / attblock_object)
- (setq ss0 (ssget "X" '((0 . "INSERT"))))
- ;;;筛选明细表图块
- (setq attblock_object
- '()
- n 0
- ss1 (ssadd)
- )
- (repeat (sslength ss0)
- (setq ent0 (ssname ss0 n))
- (setq ent0-val (vlax-ename->vla-object ent0))
- (setq BlkName (vla-get-effectivename ent0-val))
- (if (= "明细(DW)" BlkName)
- (progn
- (setq arr (vlax-invoke-method ent0-val 'GetAttributes))
- (setq arrlist (vlax-safearray->list (vlax-variant-value arr)))
- (setq attblock_object (cons (nth 9 arrlist) attblock_object))
- ;单重对象
- (setq attblock_object (cons (nth 5 arrlist) attblock_object))
- ;数量对象
- ) ;_ end progn
- ) ;_ end if
- (setq n (1+ n))
- ) ;_ end repeat
- ;;;加对象反应器
- (if attblock_objectReactor (vlr-remove attblock_objectReactor)) ;释放之前的反应器
- (setq attblock_objectReactor
- (vlr-object-reactor
- attblock_object
- nil
- '((:vlr-objectClosed . total_mass))
- )
- )
- ) ;_ end defun mxbzdszzl
- (defun total_mass (notifier-object reactor-object parameter-list)
- (setq ent0 (vlax-vla-object->ename notifier-object))
- (setq entlist0 (entget ent0))
- (setq Blk0 (cdr (assoc 330 entlist0)))
- (setq Blk0-val (vlax-ename->vla-object Blk0))
- (setq arr (vlax-invoke-method Blk0-val 'GetAttributes))
- (setq arrlist (vlax-safearray->list (vlax-variant-value arr)))
- (setq att-text5 (vla-get-TextString (nth 5 arrlist)))
- ;数量数值-字符串
- (setq att-text9 (vla-get-TextString (nth 9 arrlist)))
- ;单重数值-字符串
- (setq att-text10 (vla-get-TextString (nth 10 arrlist)))
- (setq olddimzin (getvar "dimzin"))
- (setvar "dimzin" 0)
- (setq zzl (* (atof att-text9) (atof att-text5)))
- (setq zzl-rtos (rtos zzl))
- (setq zzl-5 (substr zzl-rtos 5 1))
- (cond
- ((< zzl 0.005) (setq zzl "0.00"))
- ((< zzl 100.0)
- (progn
- (if (>= (atoi zzl-5) 5)
- (setq zzl (strcat (substr zzl-rtos 1 3)
- (itoa (1+ (atoi (substr zzl-rtos 4 1))))
- )
- )
- (setq zzl (substr zzl-rtos 1 4))
- )
- )
- )
- (t (setq zzl (itoa (fix (+ 0.5 zzl)))))
- )
- (setvar "dimzin" olddimzin)
- (if (or (= "" att-text9) (= "" att-text5))
- (setq zzl att-text10)
- )
- (setq att-text10
- (vla-put-TextString
- (nth 10 arrlist)
- zzl
- )
- ) ;赋值总重数值-字符串
- ;;; (alert "Ok!-Object")
- ) ;_ end defun total_mass
- (mxbzdszzl)
- ;;加载即运行
|