领导者的观点
(setq pt(nentsel (strcat "\n Select a leader< exit > : ")));get entity(setq e (entget (car pt)));;association list of entity
(setq p1 (assoc 10 e))
我怎样才能获得3分的领先优势。
使用lisp函数成员,它在列表中搜索表达式的匹配项,并返回列表的其余部分,从表达式的第一个匹配项开始,因此:
(defun C:test (/ e pt p2 p3)
(setq pt(nentsel (strcat "\n Select a leader< exit > : "))
e (entget (car pt));;association list of entity
e (member (assoc 10 e) e)
p1 (cdr (assoc 10 e));; cdr removes the 10 leaving the coordinates.
e (cdr e)
p2 (cdr (assoc 10 e))
e (cdr e)
p3 (cdr (assoc 10 e))
)
(princ "\np1=")(princ p1)(princ ", p2=")(princ p2)(princ ", p3=")(princ p3)(princ)
)应该返回您要查找的内容。
您可能需要搜索qlset。为Autodesk工作的Frank Whaley的lsp。此代码允许您检查当前的QLEADER设置,或在使用QLEADER命令之前初始化设置。例如,它可以告诉你领导者有多少点。并非所有人都使用默认设置。 首先定义一个函数,该函数将检查该组码键,并返回其值:
(defun IsItDxf10 ( x )
(if (= (car x) 10) (cdr x))
)
其次,学习如何使用vl remove if not函数从列表中检索与函数标准匹配的项。
假设您知道dxf elist是通过(entget)获得的。 使用类似于我在这里描述的方法。 谢谢大家帮助我。 现在我需要为领导者的第三点提供新的价值。怎么能做到呢。Pl.help帮助
您可以使用类似以下的函数:
(defun substnthkey ( idx key val lst / cnt )
(setq cnt -1)
(mapcar
(function
(lambda ( itm )
(cond
( (/= key (car itm)) itm)
( (/= idx (setq cnt (1+ cnt))) itm)
( (cons key val))
)
)
)
lst
)
)示例:
也可以递归写入:
5 竖起大拇指,李! 谢谢Grrr 谢谢李先生
页:
[1]