HGHG011 发表于 2014-3-21 09:59:27

菜鸟求教 关于entmake 多段线

(entmake (append (list '(0 . "LWPOLYLINE")
                     '(100 . "AcDbEntity")
                     '(100 . "AcDbPolyline")
                     (cons 90 (length lst))
               )
               (mapcar '(lambda (pt) (cons 10 pt)) lst)
         )
)

上面几行函数 最后两行不太理解,求解释一下
上面的函数其中 pt lst 是不是参数?
lst 是点表?
pt 应该是 什么参数?
求大神给个例子,或者小小解释一下

819534890 发表于 2014-3-21 11:08:05

本帖最后由 819534890 于 2014-3-21 11:14 编辑

lst是点表,是多段线的各个顶点;
pt是lst里面的每一个点,是lambda的参数而已,改为其他参数也行。
例如:
(setq lst '((0 0) (1 1) (2 1) (1 3)))

(entmake (append (list '(0 . "LWPOLYLINE")
                     '(100 . "AcDbEntity")
                     '(100 . "AcDbPolyline")
                     (cons 90 (length lst))
               )
               (mapcar '(lambda (pt) (cons 10 pt)) lst)
         )
)

;在 ‘((0 0) (1 1) (2 1) (1 3)) 四个点生成一条多段线;

自贡黄明儒 发表于 2014-3-21 11:11:26

本帖最后由 自贡黄明儒 于 2014-3-21 11:12 编辑

pt是lambda函数的实参,同你定义的其它函数一样。
lst是点组成的列表,如(setq lst(list(getpoint) (getpoint) (getpoint)))

HGHG011 发表于 2014-3-21 13:41:50

谢谢 两位大神了

xyp1964 发表于 2014-3-21 14:05:55

;; 普通方法
(defun MakePl (ptn / pt)
(command "pline")
(foreach pt ptn (command "non" pt))
(command "")
)
页: [1]
查看完整版本: 菜鸟求教 关于entmake 多段线