乐筑天下

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

[编程交流] 保存“文本”及其坐标

[复制链接]

9

主题

30

帖子

21

银币

初来乍到

Rank: 1

铜币
45
发表于 2022-7-5 23:32:43 | 显示全部楼层 |阅读模式
你好
 
我想保存“文本”及其坐标到txt文件。
 
我有一些剧本:
 
  1. (defun c:TextToFIle( / *error* allText lenTxt idx fName txtFile dName
  2. thisTxtObj thisText)
  3. (vl-load-com)
  4. (defun *error*(msg)
  5. (if msg
  6. (if txtFile
  7. (progn
  8. (close txtfile)
  9. (setq txtFile nil)
  10. (gc)
  11. )
  12. )
  13. )
  14. )
  15. (setq allText(ssget"x"(list(cons 0 "Text"))))
  16. (if allText
  17. (progn
  18. (princ(strcat(itoa(setq lenTxt(sslength allText)))" text objects to
  19. export"))
  20. (setq idx -1)
  21. (setq fName(strcat(getvar"DwgPrefix")(setq
  22. dName(vl-filename-base(getvar"Dwgname")))"-Text.txt"))
  23. (setq txtFile(open fName "w"))
  24. (repeat lenTxt
  25. (setq thisTxtObj
  26. (vlax-ename->vla-object(ssname allText (setq idx(1+ idx))))
  27. thisText (vla-get-textstring thisTxtObj))
  28. (write-line thisText txtFile)
  29. );repeat
  30. (close txtFile)
  31. (setq txtFile nil)
  32. (gc)
  33. (princ"\nDone writing to file")
  34. );progn
  35. );if text
  36. (princ)
  37. )

 
它将所有“文本”保存到txt文件中。我也想保存它们的坐标。
 
类似这样:
 
十、 Y,文本
21233.13123、28402.37293、文本1
21224.2532528443.21432,文本2

 
对我的英语表示问候和抱歉
回复

使用道具 举报

1

主题

475

帖子

481

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 23:44:15 | 显示全部楼层
也许是这样的。。。
  1. (setq thisTxtObj (vlax-ename->vla-object(ssname allText (setq idx(1+ idx))))
  2.      ipt (vlax-get thisTxtObj 'InsertionPoint)
  3.      xdata (rtos (car ipt))
  4.      ydata (rtos (cadr ipt))
  5.      thisText (vla-get-textstring thisTxtObj))
  6. (write-line (strcat xdata ", " ydata ", " thisText) txtFile))

 
HTH公司
亨里克
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 23:48:22 | 显示全部楼层
欢迎来到CADTutor。
 
试试这个。。。
 
  1. (defun c:Test (/ ss fl o)
  2. ;; Tharwat 21. Feb. 2014    ;;
  3. (if (and (setq ss (ssget '((0 . "TEXT")(8 . "Dz 02,Dz 02 new"))))
  4.           (setq fl (strcat (getvar 'DWGPREFIX) (vl-filename-base (getvar 'DWGNAME)) ".txt"))
  5.           )
  6.    (progn
  7.      (setq o (open fl "w"))
  8.      (write-line (strcat "X," "\t" "Y," "\t" "Text") o)
  9.    ((lambda (x / e p)
  10.       (while (setq e (ssname ss (setq x (1+ x))))
  11.         (setq p (cdr (assoc 10 (entget e))))
  12.         (write-line (strcat (rtos (car p) 2) "\t" (rtos (cadr p) 2) "\t" (cdr (assoc 1 (entget e)))) o)
  13.         ))
  14.      -1)
  15.      (close o))
  16.    )
  17. (if fl (startapp "Notepad" fl))
  18. (princ)
  19. )
回复

使用道具 举报

26

主题

1495

帖子

20

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-5 23:54:17 | 显示全部楼层
这可能是一个基本的引擎。
 
文本对齐或旋转时会出现问题。ie是第10组或第11组所需的坐标:
 
  1. [b][color=BLACK]([/color][/b]defun c:extxt [b][color=FUCHSIA]([/color][/b]/ wf ss i en ed tx ip ap[b][color=FUCHSIA])[/color][/b]
  2. [b][color=FUCHSIA]([/color][/b]setq wf [b][color=NAVY]([/color][/b]open [b][color=MAROON]([/color][/b]strcat [b][color=GREEN]([/color][/b]getvar [color=#2f4f4f]"DWGPREFIX"[/color][b][color=GREEN])[/color][/b] [color=#2f4f4f]"\\-TEXT.TXT"[/color][b][color=MAROON])[/color][/b] [color=#2f4f4f]"w"[/color][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
  3. [b][color=FUCHSIA]([/color][/b]and [b][color=NAVY]([/color][/b]setq ss [b][color=MAROON]([/color][/b]ssget '[b][color=GREEN]([/color][/b][b][color=BLUE]([/color][/b]0 . [color=#2f4f4f]"TEXT"[/color][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
  4.       [b][color=NAVY]([/color][/b]setq i 0[b][color=NAVY])[/color][/b]
  5.       [b][color=NAVY]([/color][/b]while [b][color=MAROON]([/color][/b]setq en [b][color=GREEN]([/color][/b]ssname ss i[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
  6.              [b][color=MAROON]([/color][/b]setq ed [b][color=GREEN]([/color][/b]entget en[b][color=GREEN])[/color][/b]
  7.                    tx [b][color=GREEN]([/color][/b]cdr [b][color=BLUE]([/color][/b]assoc  1 ed[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
  8.                    ip [b][color=GREEN]([/color][/b]cdr [b][color=BLUE]([/color][/b]assoc 10 ed[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
  9.                    ap [b][color=GREEN]([/color][/b]cdr [b][color=BLUE]([/color][/b]assoc 11 ed[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
  10.              [b][color=MAROON]([/color][/b]prin1 ip wf[b][color=MAROON])[/color][/b]
  11.              [b][color=MAROON]([/color][/b]princ [color=#2f4f4f]" "[/color] wf[b][color=MAROON])[/color][/b]
  12.              [b][color=MAROON]([/color][/b]prin1 ap wf[b][color=MAROON])[/color][/b]
  13.              [b][color=MAROON]([/color][/b]princ [color=#2f4f4f]" "[/color] wf[b][color=MAROON])[/color][/b]
  14.              [b][color=MAROON]([/color][/b]prin1 tx wf[b][color=MAROON])[/color][/b]
  15.              [b][color=MAROON]([/color][/b]write-line [color=#2f4f4f]""[/color] wf[b][color=MAROON])[/color][/b]
  16.              [b][color=MAROON]([/color][/b]setq i [b][color=GREEN]([/color][/b]1+ i[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
  17. [b][color=FUCHSIA]([/color][/b]close wf[b][color=FUCHSIA])[/color][/b]
  18. [b][color=FUCHSIA]([/color][/b]prin1[b][color=FUCHSIA])[/color][/b][b][color=BLACK])[/color][/b]

 
 
HTH-David
测试。图纸
回复

使用道具 举报

9

主题

30

帖子

21

银币

初来乍到

Rank: 1

铜币
45
发表于 2022-7-6 00:05:59 | 显示全部楼层
非常感谢。我喜欢塔瓦特的剧本,但它有很大的问题。它没有选择功能。我必须有这个功能(最好有这个功能,包括使用隔离层)。
 
David Bethel,我希望我可以假设我不必使用“ap(cdr(assoc 11 ed))”。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 00:11:06 | 显示全部楼层
 
不客气。
 
 
这不是什么大问题,选择集中只包括哪些层名称?
回复

使用道具 举报

9

主题

30

帖子

21

银币

初来乍到

Rank: 1

铜币
45
发表于 2022-7-6 00:14:33 | 显示全部楼层
“Dz 02”和“Dz 02 new”
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 00:19:43 | 显示全部楼层
我更新了上面的代码,试试看,然后告诉我
回复

使用道具 举报

9

主题

30

帖子

21

银币

初来乍到

Rank: 1

铜币
45
发表于 2022-7-6 00:27:16 | 显示全部楼层
感谢上传脚本。我说得对吗,那个名字层不能有“#”符号?这样地:
 
  1.   (if (and (setq ss (ssget '((0 . "TEXT")(8 . "Layer #2"))))
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 00:34:32 | 显示全部楼层
  1. (8 . "*2")
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-11 00:12 , Processed in 0.673200 second(s), 72 queries .

© 2020-2025 乐筑天下

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