乐筑天下

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

[编程交流] 帮助完成此脚本

[复制链接]

1

主题

6

帖子

5

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 16:05:08 | 显示全部楼层 |阅读模式
大家好,我是AutoLisp的新手
我的剧本很简单,我已经完成了99%的工作,
我的DWG文件中有很多文本,我想输出每个文本的XY坐标(向下查找脚本),然后获取文本的百分位并将其放入Z坐标(向下查找用于输出文本名称的脚本)
最后,我想将这些脚本结合起来,以这种格式输出某个文件中的所有数据,文本的X,Y,Centent(我们是Z分量)
 
///////用于导出文本名称的脚本////////
 
用于XY导出的脚本////////
 
  1. (defun c:PO2TXT (/ file points c i) ;POints to TeXT
  2. (setq file (open (getfiled "specify output file" "c:/" "TXT" 1) "w"))
  3. (setq points (ssget) i 0)
  4. (repeat (sslength points)
  5.    (if (= "TEXT" (cdr (assoc 0 (entget (ssname points i)))))
  6.      (setq c (cdr (assoc 10 (entget (ssname points i))))
  7.     i (1+ i)
  8.      )
  9.    )
  10.    (write-line
  11.      (strcat (rtos (car c)) " , "
  12.       (rtos (cadr c))
  13.          ) file)
  14. )
  15. (close file)
  16. (Princ)
  17. )
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 16:11:56 | 显示全部楼层
这将写入内容:
 
  1. (defun C:txtex (/ fl ss ssl index ent)
  2.    (setq fl    (open "dtext.txt" "w")
  3.      ss    (ssget "x" (list (cons 0 "TEXT,MTEXT")))
  4.      ssl    (sslength ss)
  5.      index    0
  6.    ) ;_  end setq
  7.    (repeat ssl
  8.    (setq ent (entget (ssname ss index)))
  9.    (write-line (cdr (assoc 1 ent)) fl)
  10.    (setq index (1+ index))
  11.    ) ;_  end repeat
  12.    (close fl)
  13.    (princ)
  14. ) ;_  end defun
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 16:15:05 | 显示全部楼层
这将写入点:
 
  1. (defun c:PO2TXT    (/ file points c i)
  2.    (setq file (open (getfiled "Specify Output File" "c:/" "txt" 1) "w"))
  3.    (setq points (ssget "X" (list (cons 0 "TEXT,MTEXT")))
  4.      i     0
  5.    ) ;_  end setq
  6.    (repeat (sslength points)
  7.    (setq c    (cdr (assoc 10 (entget (ssname points i))))
  8.          i    (1+ i)
  9.    ) ;_  end setq
  10.    (write-line
  11.        (strcat (rtos (car c))
  12.            " , "
  13.            (rtos (cadr c))
  14.        ) ;_  end strcat
  15.        file
  16.    ) ;_  end write-line
  17.    ) ;_  end repeat
  18.    (close file)
  19.    (princ)
  20. ) ;_  end defun
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 16:16:32 | 显示全部楼层
也许这能把他们联系起来?
 
  1. (defun c:PO2TXT    (/ file points c vl i)
  2.    (setq file (open (getfiled "Specify Output File" "c:/" "txt" 1) "w"))
  3.    (setq points (ssget '((0 . "TEXT,MTEXT")))
  4.      i     0
  5.    ) ;_  end setq
  6.    (repeat (sslength points)
  7.    (setq c     (cdr (assoc 10 (entget (ssname points i))))
  8.          vl (cdr (assoc 1 (entget (ssname points i))))
  9.          i     (1+ i)
  10.    ) ;_  end setq
  11.    (write-line
  12.        (strcat (rtos (car c))
  13.            " , "
  14.            (rtos (cadr c))
  15.            "\t"
  16.            vl
  17.        ) ;_  end strcat
  18.        file
  19.    ) ;_  end write-line
  20.    ) ;_  end repeat
  21.    (close file)
  22.    (princ)
  23. ) ;_  end defun
(所有三个都未经测试)
回复

使用道具 举报

1

主题

6

帖子

5

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 16:22:22 | 显示全部楼层
我真的很感谢你的帮助,
我将深入研究代码并测试它们,
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 16:25:30 | 显示全部楼层
没问题smallpixel,很乐意帮忙。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 16:31:02 | 显示全部楼层
LISPs已更新。-->他们没有包括多行文字-很抱歉
 
还有两种方法:
 
有一个LISP,用户可以在其中选择要打印到文件的文本:
 
  1. (defun c:PO2TXT1    (/ file points c vl i)
  2.    (setq file (open (getfiled "Specify Output File" "c:/" "txt" 1) "w"))
  3.    (setq points (ssget '((0 . "TEXT,MTEXT")))
  4.      i     0
  5.    ) ;_  end setq
  6.    (repeat (sslength points)
  7.    (setq c     (cdr (assoc 10 (entget (ssname points i))))
  8.          vl (cdr (assoc 1 (entget (ssname points i))))
  9.          i     (1+ i)
  10.    ) ;_  end setq
  11.    (write-line
  12.        (strcat (rtos (car c))
  13.            " , "
  14.            (rtos (cadr c))
  15.            "\t"
  16.            vl
  17.        ) ;_  end strcat
  18.        file
  19.    ) ;_  end write-line
  20.    ) ;_  end repeat
  21.    (close file)
  22.    (princ)
  23. ) ;_  end defun
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 16:32:06 | 显示全部楼层
或者使用LISP自动选择所有文本实体并打印它们:
 
  1. (defun c:PO2TXT    (/ file points c vl i)
  2.    (setq file (open (getfiled "Specify Output File" "c:/" "txt" 1) "w"))
  3.    (setq points (ssget "X" (list (cons 0 "TEXT,MTEXT")))
  4.      i     0
  5.    ) ;_  end setq
  6.    (repeat (sslength points)
  7.    (setq c     (cdr (assoc 10 (entget (ssname points i))))
  8.          vl (cdr (assoc 1 (entget (ssname points i))))
  9.          i     (1+ i)
  10.    ) ;_  end setq
  11.    (write-line
  12.        (strcat (rtos (car c))
  13.            " , "
  14.            (rtos (cadr c))
  15.            "\t"
  16.            vl
  17.        ) ;_  end strcat
  18.        file
  19.    ) ;_  end write-line
  20.    ) ;_  end repeat
  21.    (close file)
  22.    (princ)
  23. ) ;_  end defun
回复

使用道具 举报

1

主题

6

帖子

5

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 16:36:25 | 显示全部楼层
你能告诉我你的电子邮件地址吗smallpixel@gmail.com
我想谢谢你。。。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 16:42:30 | 显示全部楼层
恕我冒犯,你就不能在这里谢谢我吗?
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-4 20:24 , Processed in 0.370046 second(s), 72 queries .

© 2020-2025 乐筑天下

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