倔强的蚂蚁 发表于 2014-4-13 14:37:54

谁能帮忙看下,关于entmake绘制直线的问题

写了段代码下面这样行
(defun c:sss()
(entmake '((0 . "LINE")
      (62 . 1) ;颜色
      (10 100 100) ;起点
      (11 200 200) ;终点
      (6 . "center")
   )
) ;_ 结束entmake
)
但是写成下面这样就不行
(defun c:sss()
(setq p5 (list 100 100))
(entmake '((0 . "LINE")
      (62 . 1) ;颜色
      (10 p5) ;起点
      (11 200 200) ;终点
      (6 . "center")
   )
) ;_ 结束entmake
)
提示 DXF 组不正确: (10 P5)

不知道是什么原因

ll_j 发表于 2014-4-13 14:58:47

这样试试:
(defun c:sss()
(setq p5 (list 100 100))
(entmake (list '(0 . "LINE")
      '(62 . 1) ;颜色
      (cons 10 p5) ;起点
      '(11 200 200) ;终点
      '(6 . "center")
   )
) ;_ 结束entmake
)

'(...)是表达一个不经处理的表达式,所以,其中包含的变量均不会被替换成“值”,所以,表达式不能符合。
在有变量表和固定的表一起时,要用list进行组合,也就是说,把list提到前面。
式中第二个错误是“(10 p5)”,这样是无法组合的,放一个点也不行,要用cons。
另一个不足之处是200、300这些数值,一般应使用实数,即200.0、300.0,在这里不算错误,但这是习惯,如果不养成好的习惯,以后可能会有意想不到的麻烦,比如除法运算,整数和实数是不同的。

倔强的蚂蚁 发表于 2014-4-13 15:05:04

ll_j 发表于 2014-4-13 14:58 static/image/common/back.gif
这样试试:
(defun c:sss()
(setq p5 (list 100 100))


可以了。非常感谢!

yoyoho 发表于 2014-4-13 21:08:54

感谢 ll_j 解答学习了!
页: [1]
查看完整版本: 谁能帮忙看下,关于entmake绘制直线的问题