Snownut 发表于 2022-7-5 23:13:16

对不起,我对表格一无所知,也许其他人可以插话在表格中获取结果列表。

anjan008 发表于 2022-7-5 23:14:21

谢谢你的努力。但是
 
它仅在该图形中工作,在另一个具有相同类型的图形中不工作,并且当其具有多行文字时也不工作。
 
谢谢
22.dwg

BIGAL 发表于 2022-7-5 23:19:48

一些额外的建议从拾取文字或多行文字返回assoc 8 ssget this way its layer Independent的层名称开始
 
使用文本、多行文字过滤器制作列表显然需要2个defuns,如果需要,请使用正确的一个制作列表。
 
为什么vlsort list不先通过a-z或a-z,然后用一个例程向文本添加1*。
 
若你们制作一个列表,那个么我在一周前发布了一个代码示例,介绍了如何从列表中制作一个表。搜索表格示例。将尝试查找。

pBe 发表于 2022-7-5 23:21:11

>
>
 
(defun c:addme (/trunc data ss i e match var opt fr sy)
;;;        pBe04Mar2014                ;;;

(defun trunc (s m v w)
(atoi        (if m
(substr s (+ 2 (vl-string-position v s)))
(substr s (+ 2 (vl-string-position w s nil t)))
)
)
)
(initget "Pack Bolt")
(setq opt (getkword "\nChoose Option "))
(setq var
      (if (eq opt "Bolt")
'(77 42"*M##`**")
'(80 45"*PW-*mm")
      )
fr (car var)
   sy (cadr var))

(if(setq data nil
    ss       (ssget        "_X"
                (list '(0 . "TEXT")
                      (cons 1 (last var))
                  '(8 . "25_Bolt designation,7_Graphics")
               )
       )
   )
   (progn
   (repeat (setq i (sslength ss))
(setq e (ssname ss (setq i (1- i))))
(setq data (cons (cdr (assoc 1 (entget e))) data))
   )
(setq
data (vl-sort        data
                '(lambda (b c)
                   (cond
                     ((< (setq d (trunc b t fr sy )) (setq f (trunc c t fr sy))) t)
                     ((= d f) (< (trunc b nil fr sy) (trunc c nil fr sy)))
                   )
               )
       )
)
   (While (setq a (car data))
(setq ref (substr a (1+ (vl-string-position (car var) a))))
(setq match (vl-remove-if-not
              '(lambda (s) (wcmatch s (strcat "*" ref)))
              data
          )
)
(princ (strcat "\n"
             ref
             " = "
             (itoa (apply '+
                          (mapcar '(lambda (k)
                                     (if (zerop (atoi k))
                                       1
                                       (atoi k)
                                     )
                                     )
                                  match
                          )
                     )
             )
       )
)
(setq data (vl-remove-if '(lambda (y) (member y match)) data))
   )
   )
)
(princ)
)
(vl-load-com)

anjan008 发表于 2022-7-5 23:23:26

谢谢你的建议,但我不知道如何做lisp程序。我对此一无所知。
 
你能帮帮我吗。
 
我们的一个朋友在某种程度上帮助了我。
 
谢谢

anjan008 发表于 2022-7-5 23:28:06

哇,它的工作非常感谢pBe。。。
 
谢谢你的帮助。

BIGAL 发表于 2022-7-5 23:32:21

这个例子为任何感兴趣的人制作一个表格,因为你需要添加这个来制作表格http://www.cadtutor.net/forum/showthread.php?84472-Entmake Table with AutoLISP&高亮显示=Table。
 
Pbe发布的代码创建了一个名为“Data”的列表,您可以通过(nth 2 Data)查看它。第三个变量从0开始。请参阅示例中的代码需要更改列表的名称。
 
如果你幸运的话,Pbe会在他的代码中添加一个表。

anjan008 发表于 2022-7-5 23:33:59

这是可行的,但要做得更好一些。可以按顺序给出这样的结果吗
 
无需将此文本设置为表格格式。如下命令提示符中的结果适合我
 
M16*35=1
M16*45=1
M16*50=16
M16*55=6
M16*60=4
M16*65=126
M16*75=8
M16*70=2
M16*80=2
M24*75=32
M24*95=36
M24*100=12
M24*110=44
 
对不起,如果我问这是不可能的
 
谢谢

pBe 发表于 2022-7-5 23:38:44

这是可能的,但你必须等到明天anjan008,我甚至可以添加一个表来配合

anjan008 发表于 2022-7-5 23:40:56

谢谢你真是太好了
页: 1 [2]
查看完整版本: lisp for for sum text number b