明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 145|回复: 1

提取桩坐标及编号

[复制链接]
发表于 昨天 17:37 | 显示全部楼层 |阅读模式
按编号顺序提取桩(圆)的编号和坐标


  1. ;;; ======================================================================
  2. ;;; 定义一个新命令: SortTextExport
  3. ;;; 功能:
  4. ;;; 1. 让用户选择单行文字 (TEXT)
  5. ;;; 2. 根据数值大小 (从小到大) 排序
  6. ;;; 3. 将排序后的 "字符串,Y坐标,X坐标" 输出到桌面
  7. ;;;
  8. ;;; v2.0 更新:
  9. ;;;   - 坐标 (X, Y) 优先使用 DXF 11 (对齐点)
  10. ;;;   - 如果 DXF 11 不存在 (如默认左对齐), 则使用 DXF 10 (插入点)
  11. ;;; ======================================================================

  12. (defun c:SortTextExport ( / ss i ent edata text-val ins-pt align-pt pt-to-use num-val x-coord y-coord text-list sorted-list desktop-path outfile-path f item line)
  13.   
  14.   (princ "\n--- 文本排序导出工具 (使用对齐点) ---")
  15.   
  16.   ;; 1. 让用户框选选择单行文字 (DBText 在 LISP/DXF 中称为 "TEXT")
  17.   (prompt "\n请框选要排序的单行文字(DBText): ")
  18.   (setq ss (ssget '((0 . "TEXT"))))
  19.   
  20.   (if ss
  21.     (progn
  22.       (setq i 0)
  23.       (setq text-list '()) ; 初始化一个空列表来存储数据
  24.       
  25.       ;; 遍历选择集
  26.       (while (< i (sslength ss))
  27.         (setq ent (ssname ss i))
  28.         (setq edata (entget ent))
  29.         
  30.         ;; 提取数据
  31.         (setq text-val (cdr (assoc 1 edata)))  ; 文本字符串 (DXF code 1)
  32.         
  33.         ;; --- 坐标提取逻辑 (已更新) ---
  34.         (setq ins-pt (cdr (assoc 10 edata))) ; 插入点 (DXF code 10)
  35.         (setq align-pt (cdr (assoc 11 edata))) ; 对齐点 (DXF code 11), 如果存在
  36.         
  37.         ;; 将文本字符串转换为数值
  38.         (setq num-val (atof text-val))
  39.         
  40.         ;; 确定要使用的坐标
  41.         ;; 如果 DXF code 11 (对齐点) 存在, 则使用它
  42.         ;; 否则, 使用 DXF code 10 (插入点)
  43.         (if align-pt
  44.           (setq pt-to-use align-pt)
  45.           (setq pt-to-use ins-pt)
  46.         )

  47.         (setq x-coord (car pt-to-use))
  48.         (setq y-coord (cadr pt-to-use))
  49.         ;; --- 更新结束 ---

  50.         ;; 将数据存储在一个列表中,格式为: (数值 字符串 Y X)
  51.         (setq text-list (cons (list num-val text-val y-coord x-coord) text-list))
  52.         
  53.         (setq i (1+ i))
  54.       ) ; end while
  55.       
  56.       (if (not (null text-list))
  57.         (progn
  58.           ;; 2. 根据单行文字的数值大小排序 (从小到大)
  59.           (setq sorted-list
  60.             (vl-sort text-list
  61.               (function (lambda (a b) (< (car a) (car b))))
  62.             )
  63.           )
  64.          
  65.           ;; 3. 将排序后的单行文字的...输出到桌面
  66.          
  67.           ;; 找到桌面路径 (适用于 Windows)
  68.           (if (setq desktop-path (strcat (getenv "USERPROFILE") "\\Desktop"))
  69.             (progn
  70.               (setq outfile-path (strcat desktop-path "\\SortedTextData.csv"))
  71.               
  72.               ;; 尝试打开文件进行写入
  73.               (if (setq f (open outfile-path "w"))
  74.                 (progn
  75.                   ;; 写入数据
  76.                   (foreach item sorted-list
  77.                     ;; item 是 (数值 字符串 Y X)
  78.                     (setq line (strcat
  79.                                  (cadr item)    ; 字符串
  80.                                  ","
  81.                                  (rtos (caddr item) 2 8) ; Y坐标 (rtos 转换为字符串, 2=小数, 8=精度)
  82.                                  ","
  83.                                  (rtos (cadddr item) 2 8) ; X坐标
  84.                                ))
  85.                     (write-line line f)
  86.                   )
  87.                   (close f)
  88.                   (alert (strcat "数据已成功导出到: \n" outfile-path))
  89.                 )
  90.                 (alert (strcat "错误: 无法写入文件! \n" outfile-path "\n请检查权限。"))
  91.               )
  92.             )
  93.             (alert "错误: 无法找到桌面路径。")
  94.           )
  95.         )
  96.         (prompt "\n未在所选对象中找到有效的文本。")
  97.       )
  98.     )
  99.     (prompt "\n未选择任何对象。")
  100.   )
  101.   
  102.   (princ) ; 退出时不在命令行显示 nil
  103. )

  104. (princ "\n已加载 SortTextExport  命令 (v2.0),请输入  SortTextExport  运行。")
  105. (princ)


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-11-15 13:04 , Processed in 0.165130 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表