似乎您错过了复制我的示例中的一些行-我将它们与每个操作的注释一起添加到您的代码中。OSNAP模式存储在OSMODE系统变量中:1、当前设置存储在局部变量中;第二,禁用该模式以不干扰命令调用;第三,恢复先前存储的状态。
请记住,在完成例程后恢复用户环境是一种非常好的编程实践。
- (defun c:TZP ( / OldOsm a b c s)
- [color=blue] (setq OldOsm (getvar "OSMODE")) ;retain current state of OSNAP mode[/color]
- (princ "Select objects: ")
- (if (and (setq s (ssget))
- (setq a (getpoint "\nSelect item base point: "))
- (setq b (getpoint "\nSelect target point: ")))
- (progn
- (setq c (list (car a) (cadr a) (caddr b)))
- [color=blue];[/color](COMMAND "_OSNAP" "")
- [color=blue](setvar "OSMODE" 0) ;disable OSNAP mode
- [/color] (vl-cmdf "_move" s "" a c)
- )
- )
- [color=blue] (setvar "OSMODE" OldOsm) ;restore previous state of OSNAP mode[/color]
- [color=blue];[/color](COMMAND "_OSNAP" "_END,_INT,_MID,_CEN,_INS,_PER")
- (princ)
- )
当做
米尔恰 |