13816600495 发表于 2018-7-6 17:17:06

ssgetfirst求助

(defun c:mm (/ ww p1)
(if (= (cadr (ssgetfirst)) nil)
(progn
(setq ww (ssget))
)
(progn
(setq ww (cadr (ssgetfirst)))
))
(setq p1 (getpoint "\n[指定第一点]:"))
(command "MIRROR" ww "" p1 (polar p1 (angtof "90") 500) "Y")
(princ))
以上代码先执行命令后选择可以运行,但是先选择就无法运行,请问大能之士怎么修改呢?

Andyhon 发表于 2018-7-6 20:26:06

或许是版本差异
我这儿 后选择/先选择皆正常运行

yoyoho 发表于 2018-7-6 22:43:10

autocad2012測試o.k.

479274135 发表于 2018-7-7 08:22:44

2006测试没问题      首先确认下图是不是有问题

本函数只能分析当前图形中模型空间和图纸空间中的图元,而不能分析非图形对象和其他块定义中的图元。
再不行换下方法
(setq ss (ssget "i"))
(if (= ss nil)
   )

还有个相关的系统变量

PICKFIRST 系统变量
命令和系统变量      
类型: 整数
保存位置: 注册表
初始值: 1
控制在发出命令之前(先选择后执行)还是之后选择对象
此主题没有相关的操作步骤。


lifuq1979 发表于 2018-7-9 11:29:42

本帖最后由 lifuq1979 于 2018-7-9 11:36 编辑

測試o.k,progn在这里没啥用
(defun c:mm (/ ww p1)
(if (= (setq ww(cadr (ssgetfirst))) nil)
(setq ww (ssget))
)
(setq p1 (getpoint "\n[指定第一点]:"))
(command "MIRROR" ww "" p1 (polar p1 (angtof "90") 500) "Y")
(princ))

namezg 发表于 2018-7-9 14:00:13

;在执行mm命令之前执行(setvar "pickfirst" 1)
(defun c:mm (/ ww p1)
        (setvar "qaflags" 0)
        (setq ww (cadr (ssgetfirst)));(setq ww (ssget "I"));判断当前图形是否有己选取的对象
        (if (or ww (setq ww (ssget)))
                (if (setq p1 (getpoint "\n[指定第一点]:"))
                        (command "MIRROR" ww "" p1 (polar p1 (angtof "90") 500) "Y")
                )
        )
)

13816600495 发表于 2018-7-9 14:31:42

明经大神多,已解决,谢谢各位!

ysq101 发表于 2018-7-10 01:22:16

13816600495 发表于 2018-7-9 14:31
明经大神多,已解决,谢谢各位!

COMMAND新手加油
页: [1]
查看完整版本: ssgetfirst求助