timmy521 发表于 2012-5-15 21:30:22

请教一个问题

(defun lzty_tctocharlist ( adlaylist / wordadlaylist i )
(setq i 0 )
(setq wordadlaylist nil)
(while (< i (length adlaylist))
   (setq wordadlaylist (append (list (strcat (itoa i)"   " (car (nth i adlaylist)) ""(itoa (cadr (nth i adlaylist))) ""(caddr (nth i adlaylist)))) wordadlaylist))
    (setq i (+ i 1))
)
(setq wordadlaylist (reverse wordadlaylist))
wordadlaylist
)
;;;删除列表中的相同元素(保留一个)并返回新表
(defun lzty_list_RemoveItem (item lst / x tmplst)
   (foreach x (vl-remove item lst)
   (if (listp x)
       (setq tmplst (cons (RemoveItem item x) tmplst))
       (setq tmplst (cons x tmplst))
   )
   )
   (reverse tmplst)
);lzty-end


(defun lzty_list_DelSame (lst / x nl)
(foreach x lst
    (if (not (member x nl))
      (setq nl (cons x nl))
    )
)
(setq nl (reverse nl))
nl
)

;;主函数
(defun c:t2()
(setq adlaylist nil)
(setq wordadlaylist nil)
(setq wordadjustedlayerlist nil)
(setq wordrealizelist nil)
(setq wordFineLinelist nil)
(setq wordcenterlinelist nil)
(setq worddottedlinelist nil)

(vl-load-com)
(while (/= (cdr(assoc 0 (entget (setq blname (car (entsel "\n请选择需要调整的块:")))))) "INSERT"))
(setq OBJname(vla-get-name (vlax-ename->vla-object blname))
dwgobj (vla-get-activedocument (vlax-get-acad-object))
      BLOCKS (vla-get-Blocks dwgobj)
layers (vla-get-layers dwgobj)   
)
(setq BLOCK (vla-item BLOCKS OBJname))
(vlax-for OBJ BLOCK
    (setq OBJlayername (vla-get-layer OBJ))
    (setq OBJlay (vla-item layers OBJlayername))   
    (setq OBJcolor (vla-get-color OBJlay))
    (setq OBJltype (vla-get-linetype OBJlay))
    (setq adlaylist (cons (list OBJlayername OBJcolor OBJltype) adlaylist ))
    )   
(setq adlaylist (lzty_list_DelSame adlaylist))
(setq i 0)                      ;;取得所有图层集合
(while (< i (length adlaylist))
    (setq ssguodu (ssadd))   
    (vlax-for OBJ BLOCK
      (if (wcmatch(vla-get-layer OBJ) (car (nth i adlaylist)))
       (setqssguodu(ssadd (vlax-vla-object->ename OBJ) ssguodu ))
      )
   )
    (set(read(strcat "ss" (itoa i))) ssguodu)
(setq i (+ i 1))
   
    )   
)

为什么在这个函数里总是出现参数类型错误啊。
(while (< i (length adlaylist))
    (setq ssguodu (ssadd))   
    (vlax-for OBJ BLOCK
      (if (wcmatch(vla-get-layer OBJ) (car (nth i adlaylist)))
       (setqssguodu(ssadd (vlax-vla-object->ename OBJ) ssguodu ))
      )
   )
    (set(read(strcat "ss" (itoa i))) ssguodu)
(setq i (+ i 1))
   
    )   
都快搞一晚了,都 没有搞出来。

yu54211168 发表于 2012-5-16 01:25:16

楼主真的太有才了。。。。爱死你了。

ljpnb 发表于 2012-5-16 07:44:50

这句(setq ssguodu (ssadd (vlax-vla-object->ename OBJ) ssguodu))应该是(ssadd (vlax-vla-object->ename OBJ) ssguodu)
页: [1]
查看完整版本: 请教一个问题