danmc 发表于 2017-3-7 11:37:56

如何使我的行命令按预期工作

我很难使这个简单的lisp例程正常工作。代码如下:
(defun C:TDo2 ()
                (setvar "osmode" 512)
                (command "line" (getpoint "\n Pick Insertion Point")
                (setvar "osmode" 128)(princ)
                                                (getpoint "\n Pick Perp point")
                "")
)
它创建了第一行ok,但我想要它;到此为止。我认为“我认为&引用;将终止line命令。我做错了什么?

ronjonp 发表于 2017-3-7 12:03:06

试试这个。欢迎来到TheSwamp(defun c:tdo2 (/ *error* os p1 p2)
(defun *error* (msg)
    ;; Reset snap setting on error
    (and os (setvar 'osmode os))
    (if   (not (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*"))
      (princ (strcat "\nError: " msg))
    )
    (princ)
)
;; Save current snap settings
(setq os (getvar 'osmode))
(setvar 'osmode 512)
;; Check that both points are picked
(if (and (setq p1 (getpoint "\nPick Insertion Point: "))
      (setvar 'osmode 128)
      (setq p2 (getpoint p1 "\nPick Perp Point: "))
      )
    (entmakex (list '(0 . "Line") '(8 . "Line") (cons 10 (trans p1 1 0)) (cons 11 (trans p2 1 0))))
)
;; Reset snap setting
(setvar 'osmode os)
(princ)
)

danmc 发表于 2017-3-7 13:05:20

谢谢你的欢迎
很高兴在离开Autocad 25年后重返赛场
你的例子中有很多代码,所以我可能剪贴错了什么的,但我得到了一个错误:“你的例子是什么?”;;错误:语法错误
你能看看你的代码(我第二次剪贴了,运气不好),看看是否有语法错误吗
请注意,我要完成的(长期目标)是切割一段墙,并创建一个简单的门,放置在切割的墙上。我以前做过一个这样的程序,但现在已经无法访问该代码了。所以为了帮助我重新学习autolisp,我想我会做这个项目
谢谢你的帮助。
页: [1]
查看完整版本: 如何使我的行命令按预期工作