怎样获得块内的直线
我选中一条直线,若这条直线是在块内的直线,怎么样取出这条直线的端点坐标谢谢
用nentsel应该就能行了吧,可以自己查阅下这个函数 遍历块内的对象,获取图元名,然后获取坐标点 阿霸jun 发表于 2013-7-3 09:22 static/image/common/back.gif
遍历块内的对象,获取图元名,然后获取坐标点
怎样遍历? (defun c:tt ()
(if (and
(setq e (nentselp "\n选择块内直线:"))
(= "LINE" (cdr (assoc 0 (setq el (entget (car e))))))
)
(progn
(setq p0 (cdr (assoc 10 el))
p1 (cdr (assoc 11 el))
)
(if (cddr e)
(progn
(setq m (caddr e))
(setq p0 (MXP m p0)
p1 (MXP m p1)
)
)
)
(grdraw (trans p0 0 1) (trans p1 0 1) 1)
)
)
)
(defun mxv (m v)
(mapcar (function (lambda (r) (apply '+ (mapcar '* r v)))) m)
)
(defun mxp (m p)
(reverse (cdr (reverse (mxv m (append p '(1.0))))))
) Gu_xl 发表于 2013-7-3 09:53 static/image/common/back.gif
请问,cddr是个什么函数 本帖最后由 Gu_xl 于 2013-7-3 11:29 编辑
54256 发表于 2013-7-3 11:09 static/image/common/back.gif
请问,cddr是个什么函数
(cddr lst) = (cdr (cdr list))
car、 cdr 可以任意组合,最多四层,操作顺序是自右向左!
cadr = (car (cdr lst))
组合诸如:cadddr/cdaadr/cadr/cdar ... Gu_xl 发表于 2013-7-3 11:27 static/image/common/back.gif
(cddr lst) = (cdr (cdr list))
car、 cdr 可以任意组合,最多四层,操作顺序是自右向左!
cadr = (car ...
谢谢高手,长见识了 Gu_xl 发表于 2013-7-3 09:53 static/image/common/back.gif
(setq e (nentselp "\n选择块内直线:"))
这句话我的程序里没有出现的,我是通过SSGET获得对象的,
我的希望是,有这么一个子函数,输入是对象,若这个对象是块中的直线
则输出直线的2个端点
谢谢 54256 发表于 2013-7-3 12:18 static/image/common/back.gif
(setq e (nentselp "\n选择块内直线:"))
这句话我的程序里没有出现的,我是通过SSGET获得对象的,
我的 ...
这种想法是行不通的!你没有理解块定义对象和块的关系!ssget不可能获得块中的对象!
通过Insert块对象可以构造nentselp返回的矩阵,请在论坛搜索相关知识!
页:
[1]
2