明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3718|回复: 7

[求助]哪位高手请帮忙看看,出错了. 函数被取消

[复制链接]
发表于 2007-7-5 09:11:00 | 显示全部楼层 |阅读模式

(defun C:ZHL_CV  (/ p1 p2 s e cn)
  (defun ttt (ss n / m)
    (setq ee e
      ns (ssadd)
    )
    (while (setq ee (entnext ee))
      (setq ns (ssadd ee ns))
    )
    (command "erase" ns "")
    (command "copy" ss "" "m" "non" p1)
    (setq m 0)
    (repeat (atoi n)
      (setq m (1+ m))
      (cond
    (t
     (command "non"
          (mapcar '(lambda (x y) (+ x (* m (- y x)))) p1 p2)
     )
    )
      )
    )
    ;(command)
  )
  (princ "\n选择要复制的物体:")
  (setq s (ssget))
  (setq p1 (getpoint "\n复制的起点:"))
  (setq p2 (getpoint p1 "\n复制的终点(输入距离或点取):"))
  (setq e (entlast))
  (command "copy" s "" "non" p1 "non" p2)
(setq dist (distance p1 p2))
(setq xx_dis (getdist "\n确定距离: ")
)
 (while (/= 0 (ATOF (setq cn (itoa (/ (fix xx_dis) (fix DIST))))))
 (ttt s cn)
 )
  (princ)
)


需要点或选项关键字。
; 错误: 函数被取消

指定第二个点或 [退出(E)/放弃(U)] <退出>:  *取消*

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2007-7-5 10:19:00 | 显示全部楼层

我这儿 Run 过关!?

请说明测试环境与单步执行时的出错点
最好是顺带提供测试用图档

 楼主| 发表于 2007-7-5 11:35:00 | 显示全部楼层

我的运行环境是CAD2006,我想在(setq xx_dis (getdist "\n确定距离: "))时,点取第二点后就结束命令,但在点取第二点是却出现:

需要点或选项关键字。
; 错误: 函数被取消

指定第二个点或 [退出(E)/放弃(U)] <退出>:

发表于 2007-7-5 12:37:00 | 显示全部楼层

隔行如隔山 :-)

说实在的,您这个程序,还是不甚了了

有些叙述参不透个中玄机,可加注用意说明么
若加上执行前图面,与本欲达成的目标图面 .....

getdist ==>单纯的 keyin/给定两点 皆可
看不出为何不行!?

 楼主| 发表于 2007-7-5 19:26:00 | 显示全部楼层

这个程序是以前下的,我改了一下,功能是:

阵列复制

发表于 2007-7-5 21:36:00 | 显示全部楼层

阵列是阵列(Array)
复制是复制(Copy)

什么是阵列复制? 附个截图如何?

 楼主| 发表于 2007-7-6 08:25:00 | 显示全部楼层
就是按一定的方向和一定的距离,在指定范围内进行复制!
发表于 2007-7-7 20:04:00 | 显示全部楼层
1、1楼的问题出在:(command "copy" s "" "non" p1 "non" p2) 一句。
2、2楼说运行过关,是因为2楼使用的是ACAD2005或其一下更低版本。
3、问题的关键在于acad在版本升级过程中对copy命令做了改动。
即将多重复制作为了默认。
代码高亮显示参见:http://zml84.blog.sohu.com/54114843.html
  
  1. ;;关闭命令回显
  2. (setvar "CMDECHO" 0)
  3. ;;;================================================
  4. ;;功能:在指定的方向上定长复制
  5. ;;日期:zml84 于 2007-07-07
  6. (defun C:tt (/ s p1 p2 ang dist xx_dis n)
  7.     (princ "\n选择要复制的物体:")
  8.     (if (and (setq s (ssget))
  9.       (setq p1 (getpoint "\n1.复制的基点:"))
  10.       (setq p2 (getpoint p1 "\n2.复制的目标点:"))
  11.       (progn
  12.    (setq ang  (angle p1 p2)
  13.          dist (distance p1 p2)
  14.    )
  15.    (princ "\n>>>复制间距=")
  16.    (princ dist)
  17.    (setq xx_dis (getdist p1 "\n3.确定距离范围: "))
  18.       )
  19. )
  20. (progn
  21.      (setq n (fix (/ xx_dis DIST)))
  22.      (princ "\n>>>复制范围=")
  23.      (princ xx_dis)
  24.      (princ "   复制次数=")
  25.      (princ n)
  26.      (repeat n
  27.   ;;小提示:acad2006及其以后版本的copy命令已默认为多重模式。
  28.   ;;为了上下版本兼容,在下面一句中使用了"m"选项。
  29.   (command "_.copy" s "" "m" "non" p1 "non" p2 "")
  30.   (setq p2 (polar p2 ang dist))
  31.      )
  32. )
  33.     ) ;_结束 if
  34.     (princ)
  35. ) ;_结束 defun
  36. ;;;================================================
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-1 12:33 , Processed in 0.172436 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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