wimal 发表于 2022-7-5 15:11:20

领导者的观点

(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分的领先优势。

tombu 发表于 2022-7-5 15:24:30

使用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命令之前初始化设置。例如,它可以告诉你领导者有多少点。并非所有人都使用默认设置。

Grrr 发表于 2022-7-5 15:26:29

首先定义一个函数,该函数将检查该组码键,并返回其值:
(defun IsItDxf10 ( x )
(if (= (car x) 10) (cdr x))
)
 
其次,学习如何使用vl remove if not函数从列表中检索与函数标准匹配的项。
假设您知道dxf elist是通过(entget)获得的。

Lee Mac 发表于 2022-7-5 15:34:02

使用类似于我在这里描述的方法。

wimal 发表于 2022-7-5 15:42:37

谢谢大家帮助我。

wimal 发表于 2022-7-5 15:46:26

现在我需要为领导者的第三点提供新的价值。怎么能做到呢。Pl.help帮助

Lee Mac 发表于 2022-7-5 15:56:52

 
 
您可以使用类似以下的函数:
(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 发表于 2022-7-5 15:58:38

竖起大拇指,李!

Lee Mac 发表于 2022-7-5 16:10:50

谢谢Grrr

wimal 发表于 2022-7-5 16:16:22

谢谢李先生
页: [1]
查看完整版本: 领导者的观点