stockers 发表于 2022-7-6 10:22:53

计算给定文本的数字

你好
有没有办法让AutoCAD 2010计算给定文字图元出现的数量。
 
我指定了不同标准列的负载,所有列都标有字母和数字。e、 g.F9或D4。。。。等等。所以我有很多这样的计划,需要安排。目前,我打印出图纸,并用手数数。非常缓慢和费力!
 
另一种方法是将所有组合放在不同的层上,这需要更长的时间来计算它们,有没有办法绕过这一点。
 
请帮忙,欢迎大家提出建议。
 
谢谢

ReMark 发表于 2022-7-6 10:28:19

请不要重复张贴。它使讨论过程变得混乱,并将答案/建议分为多个线程。要有耐心。
 
BCOUNT命令不执行您想要的操作?

Lee Mac 发表于 2022-7-6 10:31:53

我写这篇文章是作为我TabSort例程的一部分:
 

(defun StrBrks (str / x slst nLst rLst aLst)

(setq slst (vl-string->list str))

(while (setq x (car slst))
   (setq slst (cdr slst))
   (cond ((and nLst (= 46 x))
            (setq nLst (cons x nLst)))
         ((< 47 x 58)
            (setq nLst (cons x nLst))
            (setq rLst (cons (reverse aLst) rLst) aLst nil))
         (t (setq aLst (cons x aLst))
            (setq rLst (cons (reverse nLst) rLst) nLst nil))))

(mapcar 'vl-list->string
   (vl-remove nil
   (reverse
       (cons (reverse aLst)
         (cons (reverse nLst) rLst))))))

(defun Num_Extract (str)
(mapcar 'read
   (vl-remove-if-not
   (function
       (lambda (x)
         (vl-position (type (read x)) '(INT REAL))))
   (StrBrks str))))
示例:
 

(Num_Extract "AB24n2i4tn4")
(24 2 4 4)

 
编辑:Woww。。。完全看错了帖子。。。!
 
希望这段代码能帮助别人

Lee Mac 发表于 2022-7-6 10:32:35

快速一:
 
区分大小写

Lee Mac 发表于 2022-7-6 10:36:53

实际上,这更快:
 

(defun c:tcnt (/i j ss tStr)

(and (setq i -1 j 0 ss (ssget "_X" (list (cons 0 "TEXT,MTEXT"))))
      (setq tStr (getstring t "\nText to Search For: "))

      (while (setq ent (ssname ss (setq i (1+ i))))
      (if (eq tStr (cdr (assoc 1 (entget ent)))) (setq j (1+ j)) t))

      (princ (strcat "\n << " (itoa j) " Item(s) Found >>")))

(princ))

stockers 发表于 2022-7-6 10:39:35

 
 
你好
对不起,我发了两封信。
这几乎正是我想要的。谢谢。
唯一的问题是它不计算动态块中的文本。
这容易添加吗?
谢谢

ReMark 发表于 2022-7-6 10:42:22

为什么你一开始不提那个小细节(动态块)?提前掌握所有信息真的很有帮助。

Lee Mac 发表于 2022-7-6 10:45:47

 
哎呀!不是真的。。。只是因为我对Dyn Blocks的经验有限。。。

stockers 发表于 2022-7-6 10:49:19

好的,很抱歉,我没有意识到这有什么不同,因为我不理解所有需要知道的是autocad和lisp例程。

stockers 发表于 2022-7-6 10:54:20

 
不用担心,谢谢。
我想我可以绕过它,但复制模型空间中的所有动态块并使用突发命令。谢谢你给我的帮助。
页: [1] 2
查看完整版本: 计算给定文本的数字