乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 94|回复: 6

[编程交流] 将文字从autocad导出到ex

[复制链接]

1

主题

3

帖子

2

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 07:42:35 | 显示全部楼层 |阅读模式
大家好。
 
我是这个论坛的新手,也是LISP的新手,但我真的希望你们能帮我。
 
我的问题是,我需要创建一个lisp,它可以将所有文本从modelspace导出到excel,还应该有一个“计数器”函数,它告诉我当前单词重复了多少次。就像数据挖掘一样。
 
我在某处找到了这段代码,它实际上非常好。我唯一需要在这段代码中实现的是一个函数,该函数询问我在哪里保存文本文件?
 
谁能帮帮我吗
 
我不太确定这段代码的作者是谁。
 
  1. (defun c:tsel (/ ss lst tss olst ofile)
  2. (vl-load-com)
  3. (if (setq ss (ssget '((0 . "*TEXT"))))
  4. (progn
  5. (setq lst
  6. (mapcar
  7. (function
  8. (lambda (x)
  9. (vla-get-TextString
  10. (vlax-ename->vla-object x))))
  11. (vl-remove-if 'listp
  12. (mapcar 'cadr (ssnamex ss)))))
  13. (foreach str (unique lst)
  14. (if (setq tss
  15. (ssget "_X"
  16. (list '(0 . "*TEXT") (cons 1 str))))
  17. (setq olst
  18. (cons
  19. (cons str (sslength tss)) olst))
  20. (setq olst
  21. (cons
  22. (cons str 0.) olst))))
  23. (setq ofile
  24. (open
  25. (strcat
  26. (getvar "DWGPREFIX")
  27. (substr
  28. (getvar "DWGNAME") 1
  29. (- (strlen
  30. (getvar "DWGNAME")) 4)) "-StrCnt.txt") "a"))
  31. (mapcar
  32. (function
  33. (lambda (x)
  34. (write-line
  35. (strcat (car x) "\t"
  36. (vl-princ-to-string (cdr x))) ofile))) olst)
  37. (close ofile)
  38. (princ "\n<< Strings Written to File >>"))
  39. (princ "\n<< Nothing Selected >>"))
  40. (princ))
  41. ;; CAB
  42. (defun unique (lst / result)
  43. (reverse
  44. (while (setq itm (car lst))
  45. (setq lst (vl-remove itm lst)
  46. result (cons itm result)))))
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 07:53:49 | 显示全部楼层
欢迎来到CADTutor。
 
首先,请阅读这篇关于代码格式的帖子,并编辑你的帖子。
 
关于您的任务,请尝试以下简单代码:
  1. [color=GREEN];; Text Extraction  -  Lee Mac[/color]
  2. [color=GREEN];; Extracts all Text & MText in Modelspace to a Text file,[/color]
  3. [color=GREEN];; with the number of occurrences of each string.[/color]
  4. ([color=BLUE]defun[/color] c:txtext ( [color=BLUE]/[/color] a d f i l s x )
  5.    ([color=BLUE]cond[/color]
  6.        (   ([color=BLUE]not[/color] ([color=BLUE]setq[/color] s ([color=BLUE]ssget[/color] [color=MAROON]"_X"[/color] '((0 . [color=MAROON]"*TEXT"[/color]) (410 . [color=MAROON]"Model"[/color])))))
  7.            ([color=BLUE]princ[/color] [color=MAROON]"\nNo Text or MText found in Modelspace."[/color])
  8.        )
  9.        (   ([color=BLUE]not[/color] ([color=BLUE]setq[/color] f ([color=BLUE]getfiled[/color] [color=MAROON]""[/color] [color=MAROON]""[/color] [color=MAROON]"txt"[/color] 1)))
  10.            ([color=BLUE]princ[/color] [color=MAROON]"\n*Cancel*"[/color])
  11.        )
  12.        (   ([color=BLUE]setq[/color] d ([color=BLUE]open[/color] f [color=MAROON]"w"[/color]))
  13.            ([color=BLUE]repeat[/color] ([color=BLUE]setq[/color] i ([color=BLUE]sslength[/color] s))
  14.                ([color=BLUE]setq[/color] x ([color=BLUE]cdr[/color] ([color=BLUE]assoc[/color] 1 ([color=BLUE]entget[/color] ([color=BLUE]ssname[/color] s ([color=BLUE]setq[/color] i ([color=BLUE]1-[/color] i)))))))
  15.                ([color=BLUE]if[/color] ([color=BLUE]setq[/color] a ([color=BLUE]assoc[/color] x l))
  16.                    ([color=BLUE]setq[/color] l ([color=BLUE]subst[/color] ([color=BLUE]cons[/color] x ([color=BLUE]1+[/color] ([color=BLUE]cdr[/color] a))) a l))
  17.                    ([color=BLUE]setq[/color] l ([color=BLUE]cons[/color]  ([color=BLUE]cons[/color] x 1) l))
  18.                )
  19.            )
  20.            ([color=BLUE]foreach[/color] x ([color=BLUE]vl-sort[/color] l '([color=BLUE]lambda[/color] ( a b ) ([color=BLUE]<[/color] ([color=BLUE]car[/color] a) ([color=BLUE]car[/color] b))))
  21.                ([color=BLUE]write-line[/color] ([color=BLUE]strcat[/color] ([color=BLUE]car[/color] x) [color=MAROON]"\t"[/color] ([color=BLUE]itoa[/color] ([color=BLUE]cdr[/color] x))) d)
  22.            )
  23.            ([color=BLUE]close[/color] d)
  24.        )
  25.        (   ([color=BLUE]princ[/color] ([color=BLUE]strcat[/color] [color=MAROON]"\nUnable to write to "[/color] f))   )
  26.    )
  27.    ([color=BLUE]princ[/color])
  28. )
  29. ([color=BLUE]princ[/color])
回复

使用道具 举报

1

主题

3

帖子

2

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 08:09:51 | 显示全部楼层
 
不客气,我真的很荣幸我的声誉比我高
 
 
正如您随后发现的那样,警报功能是显示简单对话框消息的最简单方式。
 
关于AutoLISP学习资源,有许多网站提供教程和代码示例,包括我自己的网站。根据我的经验,一些最好的学习材料可以在AutoCAD附带的Visual LISP IDE帮助文档中找到。而且,如果你陷入困境,有几个CAD编程论坛的成员非常乐意伸出援助之手。
 
以下是供您阅读的一小部分网站:
 
http://www.afralisp.net/index.php
http://www.lee-mac.com/
http://www.jefferypsanders.com/
http://ronleigh.com/autolisp/
 
 
谢谢你,也谢谢你。
回复

使用道具 举报

1

主题

3

帖子

2

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 08:14:15 | 显示全部楼层
如何在同名文件夹中创建文本文件?
 
我想使用这个lisp作为脚本从几个图形中提取文本
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 08:28:25 | 显示全部楼层
 
快速更换:
 
  1. (alert
  2. "here i can write the text"
  3. )

 
使用:
 
  1. ([color=BLUE]not[/color] ([color=BLUE]setq[/color] f ([color=BLUE]getfiled[/color] [color=MAROON]""[/color] [color=MAROON]""[/color] [color=MAROON]"txt"[/color] 1)))

 
这个条件实际上不再是必需的,因为上面的条件总是返回nil,但是上面的修改减少了您需要对现有代码进行的更改的数量。
回复

使用道具 举报

51

主题

481

帖子

457

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
262
发表于 2022-7-6 08:42:09 | 显示全部楼层
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 08:42:52 | 显示全部楼层
 
As a quick change, replace:
 
  1. ([color=BLUE]not[/color] ([color=BLUE]setq[/color] f ([color=BLUE]getfiled[/color] [color=MAROON]""[/color] [color=MAROON]""[/color] [color=MAROON]"txt"[/color] 1)))
 
With:
 
  1. (not (setq f (strcat (getvar 'dwgprefix) (vl-filename-base (getvar 'dwgname)) ".txt")))
 
The condition is actually no longer required since the above will always return nil, but the above modification reduces the number of changes you need to make to the existing code.
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-9 21:52 , Processed in 0.443020 second(s), 66 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表