CAD二次开发(LISP)_getpoint及坐标计算问题

(defun c:bom()
(setq
p1 (getpoint "请输入插入点: ")
a1 (car p1)
b1 (cadr p1)
a2 (+ a1 10)
b2 (+ b1 10)
p2 ' (a2 b2)
)
(command "rectang" p1 "@200,100")
(command "rectang" p2 "@190,90")
)

想画两个矩形,大的套小的,p2的坐标搞不定,上面的代码错在哪啊?只有2分没法给了,望高人不吝赐教。
另:哪里有C语言做CAD二次开发的教材?LISP感觉怪怪的。。

p2 ' (a2 b2) ;;这一段错了,应该是(list a2 b2)
‘() 里面是不能有变量的,只能用常量,即数,字符等。
另外,你的程序也可以这样写:
(defun c:bom()
(if (setq p1 (getpoint "\n请选择插入点: "))
(progn
(command "_.rectang" p1 "@200,100")
(command "_.rectang" (mapcar '+ p1 (list 10 10)) "@180,80")
)
)
)

(mapcar '+ p1 (list 10 10)) 此段为依次向表 p1 的各个元素进行 '+ 相应的表 (list 10 10)元素的运算。
温馨提示:内容为网友见解,仅供参考
第1个回答  2016-04-26
p2 ' (a2 b2) ;;这一段错了,应该是(list a2 b2)
‘() 里面是不能有变量的,只能用常量,即数,字符等。
另外,你的程序也可以这样写:
(defun c:bom()
(if (setq p1 (getpoint "\n请选择插入点: "))
(progn
(command "_.rectang" p1 "@200,100")
(command "_.rectang" (mapcar '+ p1 (list 10 10)) "@180,80")
)
)
)

(mapcar '+ p1 (list 10 10)) 此段为依次向表 p1 的各个元素进行 '+ 相应的表 (list 10 10)元素的运算。
相似回答