明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1747|回复: 2

请教一个问题

[复制链接]
发表于 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)))
       (setq  ssguodu  (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)))
       (setq  ssguodu  (ssadd (vlax-vla-object->ename OBJ) ssguodu ))  
      )
   )
    (set  (read(strcat "ss" (itoa i))) ssguodu)
  (setq i (+ i 1))
   
    )   
都快搞一晚了,都 没有搞出来。

发表于 2012-5-16 01:25:16 | 显示全部楼层
楼主真的太有才了。。。。爱死你了。
发表于 2012-5-16 07:44:50 | 显示全部楼层
这句(setq ssguodu (ssadd (vlax-vla-object->ename OBJ) ssguodu))应该是(ssadd (vlax-vla-object->ename OBJ) ssguodu)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-7-23 08:55 , Processed in 0.159956 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表