找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 644|回复: 5

[已解决] [已解决]:镜像lsp求助

[复制链接]
发表于 2006-10-10 23:43:36 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
运行后提示:
错误: 参数太少

要怎样解决呢?


  1. (defun c:MIRRORYES(mirrorpt1 mirrorpt2 / gp)
  2.         (prompt "\n 选择要镜像的对象")
  3.         (setvar "cmdecho" 0)
  4.         (setq gp (ssget))
  5.         (setq mirrorpt1 (getpoint "\n 镜像基准点1"))
  6.         (if
  7.                 (= mirrorpt1 NIL)
  8.                 (command "mirror" gp "" mirrorpt1 mirrorpt2 "y")
  9.                 (setq mirrorpt2 (getpoint "\n 镜像基准点2"))
  10.         )        
  11.         (command "mirror" gp "" mirrorpt1 mirrorpt2 "y")
  12.         (prin1)
  13. )


原程序如下:


  1. (defun c:MIRRORYES(/ gp)
  2.   (prompt "\n 选择要镜像的对象")
  3.   (setvar "cmdecho" 0)
  4.   (setq
  5.     gp (ssget)
  6.      )
  7.   (command "mirror" gp "" pause pause "y")
  8.   (prin1)
  9. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2006-10-11 00:22:11 | 显示全部楼层
有几处错误:
1. c:MIRRORYES(mirrorpt1 mirrorpt2 / gp)定义有误。
mirrorpt1 和mirrorpt2 定义为变元,程序中调用有问题。
2. 当(= mirrorpt1 NIL)时,if判断语句中之(command "mirror" gp "" mirrorpt1 mirrorpt2 "y")因mirrorpt1和mirrorpt2为nil出错;当(/= mirrorpt1 NIL)时,如果mirrorpt2为nil,if结束 后的(command "mirror" gp "" mirrorpt1 mirrorpt2 "y")这句因mirrorpt2为nil同样会出错。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-10-11 00:42:42 | 显示全部楼层
楼主的正解。
在cmmand 里调用mirror,里面的每一个参数都不能为空。
楼主mirrorpt1 mirrorpt2这两个参数应为“点”,但却没有定义或只定义了一个,当然会报参数错。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-10-11 00:43:38 | 显示全部楼层

  1. ;;;请参考
  2. (defun c:test (/ ss pt1 pt2)
  3.         (prompt "\n 选择要镜像的对象")
  4.         (setvar "cmdecho" 0)
  5.         (setq ss (ssget))
  6.         (if ss
  7.                 (progn
  8.                         (setq pt1 (getpoint "\n 镜像基准点1"))
  9.                         (if pt1
  10.                                 (progn
  11.                                         (setq pt2 (getpoint pt1 "镜像基准点2:"))
  12.                                         (if pt2
  13.                                                 (progn
  14.                                                         (command "mirror" ss "" pt1 pt2 "y")
  15.                                                 )
  16.                                         )
  17.                                 )
  18.                         )
  19.                 )
  20.         )
  21.         (princ)
  22. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-10-11 00:50:12 | 显示全部楼层
最初由 qjcpj 发布
[B]有几处错误:
1. c:MIRRORYES(mirrorpt1 mirrorpt2 / gp)定义有误。
mirrorpt1 和mirrorpt2 定义为变元,程序中调用有问题。
2. 当(= mirrorpt1 NIL)时,if判断语句中之(command "mirror" gp "" mirrorpt1 mirror... [/B]


回复1:要怎样定义呢,
我想将mirrorpt1 mirrorpt2设置为全局变量,以便以后引用。

回复2:
程序的目的是,完成第一次镜像操作后,以后镜像时,选择实体后可以直接右键确认,采用上次的镜像点镜像,免去选择的操作。只要按规定操作,应该不会有什么问题,有问题也只是提示操作有误而已。不影响绘图。

定义*error*函数应该可以解决此类错误问题,不过我没尝试过。

4楼的做法,交互性会好些。

修改完成,谢谢qjcpj。


  1. (defun c:MIRRORYES(/ ss pt1 pt2)
  2.         (prompt "\n 选择要镜像的对象")
  3.         (setvar "cmdecho" 0)
  4.         (setq ss (ssget))
  5.         (if ss
  6.                 (progn
  7.                         (setq pt1 (getpoint "\n 镜像基准点1"))
  8.                         (if pt1
  9.                                 (progn
  10.                                         (setq mirrorpt1 pt1)
  11.                                         (setq pt2 (getpoint pt1 "镜像基准点2:"))
  12.                                         (if pt2
  13.                                                 (progn
  14.                                                         (setq mirrorpt2 pt2)
  15.                                                         (command "mirror" ss "" pt1 pt2 "y")
  16.                                                 )
  17.                                         )
  18.                                 )
  19.                                 (command "mirror" ss "" mirrorpt1 mirrorpt2 "y")
  20.                         )
  21.                 )
  22.         )
  23.         (princ)
  24. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-10-11 12:56:13 | 显示全部楼层
直接在程序中将pt1和pt2用mirrorpt1和mirrorpt2替代,注意将mirrorpt1和mirrorpt2设为局部变量。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-18 06:31 , Processed in 0.386835 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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