明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2061|回复: 2

谁帮我看一下,这个程序为什么到最后出现参数太多,而执行不到最后一步

[复制链接]
发表于 2012-6-26 10:42:40 | 显示全部楼层 |阅读模式
(defun c:cbhh (/ os th thh thhh thhhh p1 p2 p3 p4 x1 x2 x1v10 x2v10 x1v11 x2v11 x2v10v11 x2maxpt

x2minpt ssx1 n1 ssxyx1 en endata v10 v11 ptintx1 ssxyx1 d1 d2 k1 sszd ptth1 ptth2 ptth12 k2 ss pt1

pt2 n2 ssxy k3 ptint v10x v11x boen boen1 boaa boaaa)


(setvar "cmdecho" 0)
(setq os (getvar "OSMODE"))
(if (> os 16383)
(setvar "OSMODE" (- os 16384)))
(setq th (getint "\n起始值"))
(if (null th) (setq th 1))
(setq thh (getdist "\n字高"))
(setq thhh (getdist "\n最小板宽度或高度"))
(setq thhhh (getdist "\n最大板宽度或高度"))
(setq p1 (getpoint "\n左上角点"))
  (setq p3 (getcorner p1 "\n右下角点"))
  (setvar "osmode" 0)
  (setq p2 (list (+ (/ thhh 5) (car p1)) (cadr p3)))
  (setq p4 (list (car p3) (+ (/ thhh 5) (cadr p1))))
  (setq p1 (list (+ (/ thhh 5) (car p1)) (+ (/ thhh 5) (cadr p1))))
  (command "line" p1 p2 "")
  (setq x1 (entlast))
  (command "line" p1 p4 "")
  (setq x2 (entlast))
(setq x1v10 (cdr (assoc 10 (entget x1))))
(setq x1v11 (cdr (assoc 11 (entget x1))))
(setq x2v10 (cdr (assoc 10 (entget x2))))
(setq x2v11 (cdr (assoc 11 (entget x2))))
(setq x2v10v11 (list x2v10 x2v11))
(setq x2v10v11 (vl-sort x2v10v11
                (function (lambda (d1 d2)
                (> (car d1) (car d2))))))
(setq x2maxpt (nth 0 x2v10v11))
(setq x2minpt (nth 1 x2v10v11)) ;此段求两个交点最大最小点
;********
(setq ssx1 (ssget "f" (list x1v10  x1v11) '((0 . "LINE"))))
(setq ssx1 (ssdel x1 ssx1))
;求出每一层的高度
  (setq n1 0)
  (setq ssxyx1 ())
  (repeat (sslength ssx1)
      (setq en (ssname ssx1 n1))
      (setq endata (entget en))
      (setq v10x (cdr (assoc 10 endata)))
      (setq v11x (cdr (assoc 11 endata)))
      (setq ptintx1 (inters x1v10 x1v11 v10x v11x nil))
      (setq ssxyx1 (cons ptintx1 ssxyx1))
      (setq n1 (1+ n1))
   )
   ;排列各个交点
   (setq ssxyx1 (vl-sort ssxyx1
                (function (lambda (d1 d2)
                (< (cadr d1) (cadr d2))))))
   ;以下求得各两点间的中点坐标并加入选择集
   (setq k1 0)
   (setq sszd ())
   (repeat (1- n1)
      (setq ptth1 (nth k1 ssxyx1))
      (setq ptth2 (nth (1+ k1) ssxyx1))
      (setq ptth12 (distance ptth1 ptth2))
      (if (> ptth12 thhh)
      (progn
      (setq ptzd (list (/ (+ (car ptth1) (car ptth2)) 2) (/ (+ (cadr ptth1) (cadr ptth2)) 2)))
      (setq sszd (cons ptzd sszd))))
      (setq k1 (1+ k1)))
;     )
;   )
   (setvar "osmode" os)
   ;按次序排列
   (setq k2 0)
   (repeat (1- n1)
     (setq ss (ssadd))
     (setq pt1 (nth k2 sszd))
     (setq pt2 (list (car x2maxpt) (cadr pt1)))
     (setq pt1 (list (car x2minpt) (cadr pt1)))
     (setq ss (ssget "f" (list pt1 pt2) '((0 . "LINE"))))
     (setq n2 0)
     (setq ssxy ())
     (repeat (sslength ss)
      (setq en (ssname ss n2))
      (setq endata (entget en))
      (setq v10 (cdr (assoc 10 endata)))
      (setq v11 (cdr (assoc 11 endata)))
      (setq ptint (inters pt1 pt2 v10 v11 nil))
      (setq ssxy (cons ptint ssxy))
      (setq n2 (1+ n2))
    )
   ;按顺序排列各点
   (setq ssxy (vl-sort ssxy (function (lambda (d1 d2) (< (car d1) (car d2))))))
   ;以下求得各两点间的中点坐标并在上面编号
   (setq k3 0)
   (repeat (- n2 1)
      (setq ptth1 (nth k3 ssxy))
      (setq ptth2 (nth (1+ k3) ssxy))
      (setq ddptth (distance ptth1 ptth2))
      (if (> ddptth thhh)
        (progn
          (setq ptzd (list (/ (+ (car ptth1) (car ptth2)) 2) (/ (+ (cadr ptth1) (cadr ptth2)) 2)))
          (command "boundary" ptzd "")
          (setq boen (entlast))
          (setq boen1 (vlax-ename->vla-object boen))
          (setq boaa (vla-get-Area boen1))
          (setq boaaa (* thhhh thhhh))
           (if (< boaa boaaa)
             (progn
               (command "text" "m" ptzd thh 0 th)
               (setq th (1+ th))
            )   
          )
       )
     )
      (command "erase" boen "")
      (setq k3 (1+ k3))
   )
   (setq k2 (1+ k2))
  )

(command "erase" x1 x2 "")
(princ "\n完成编号")
(prin1)
)

程序运行不到(command "erase" x1 x2 "")这一句就出现参数太多的错误
哪位高手帮我看一下





该贴已经同步到 雨的节奏的微博
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2012-6-26 11:18:42 | 显示全部楼层
我试了一下,顺利结束。
建议:给出你运行时的dwg和输入的参数。
 楼主| 发表于 2012-6-26 23:21:05 | 显示全部楼层
Student 发表于 2012-6-26 11:18
我试了一下,顺利结束。
建议:给出你运行时的dwg和输入的参数。

谢谢,我已经解决了、、、、
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-7-22 03:56 , Processed in 0.178734 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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