rengised 发表于 2022-7-6 10:53:16

计算多个文本内容

大家好,任何人都可以帮助我,我收到了来自外部的家具布局。现在我的老板要我为所有的家具做一张桌子。例如,我有行政办公桌、会议桌、椅子等。所有行政办公桌标签上都有ed,会议桌标签上有mt,椅子标签上有ch。我想数一数所有标签,然后放在桌子上,标签只是文本。任何lisp都可以提供或技术?我有多个楼层可以做同样的事情。提前感谢。。。

lpseifert 发表于 2022-7-6 11:06:31

尝试数据提取(可能是2007年的Eattext)

ReMark 发表于 2022-7-6 11:08:24

标签是文本而不是属性,对吗?
 
也许你会在这个线程中找到一个解决方案:
 
http://www.cadtutor.net/forum/showthread.php?t=4522

ReMark 发表于 2022-7-6 11:17:31

EATTEXT可以工作,但你会得到很多无关或无用的信息。您必须注意AutoCAD的要求。我对这种提取纯文本的方法印象不深。

alanjt 发表于 2022-7-6 11:22:29

这应该让你开始。。。
(defun _TextCount (ss / lst)
;; Alan J. Thompson, 06.28.10
(if (eq (type ss) 'PICKSET)
   (vl-sort ((lambda (i / str ass)
               (while (setq e (ssname ss (setq i (1+ i))))
               (if (setq str (cdr (assoc 1 (entget e))))
                   (if (setq ass (assoc str lst))
                     (setq lst (subst (cons str (1+ (cdr ass))) ass lst))
                     (setq lst (cons (cons str 1) lst))
                   )
               )
               )
               lst
             )
            -1
            )
            (function (lambda (a b) (< (car a) (car b))))
   )
)
)
 
如。
(_TextCount (ssget '((0 . "MTEXT,TEXT"))))

fixo 发表于 2022-7-6 11:31:54

 
太快了
 
当做
 
~'J'~

alanjt 发表于 2022-7-6 11:34:18

 
 
没有免费的午餐。我不会什么都做。

fixo 发表于 2022-7-6 11:42:23

同意,
 
这并不难,但需要很多时间
 
~'J'~

alanjt 发表于 2022-7-6 11:47:30

确切地我不介意帮忙,但我不会做所有的脏活。我可以暂时放弃我的有偿工作,但我不能停止为人们编写整个程序。毫无意义。

fixo 发表于 2022-7-6 11:58:30

 
试试这个
此例程将允许您在中存储数据。csv文件
还是要绘制acad表?
 
(vl load com)(defun dxf(key-alist)(cdr(assoc key-alist));;基于中的函数http://www.cadtutor.net/forum/showthread.php?t=7230(defun count\u occurs(lst fuzz)(if(car lst)(cons(cons(car lst)(length(vl remove if not)(function(lambda(x)(if(not fuzz)(eq x(car lst))(equal x(car lst)fuzz)))lst))(count\u occurs(vl remove if(function(lambda(x)(if(not fuzz)(eq x(car lst))(eq x(car lst)fuzz)))lst)fuzz))));;==============================================;;(defun C:FURN(/*error*datafile data\u line data\u list elist entlist filename table\u list)(defun*error*(msg)(if datafile(close datafile))(if msg(princ(strcat)“\n错误!”msg)))(princ))(setq filename(strcat(getvar“dwgprefix”)(vl filename base(getvar“dwgname”))。.csv”)(if(setq entlist(vl remove if‘listp(mapcar’cadr(ssnamex(list(cons 0“TEXT”)(cons 1“mt,ed,ch,mt.,ed.,ch.))))))));
页: [1]
查看完整版本: 计算多个文本内容