明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 638|回复: 10

求一个将AUtoCAD摸个类型文字导出到excel 然后再从excel导入的程序

[复制链接]
发表于 2024-3-7 23:26 | 显示全部楼层 |阅读模式


  因为课题需要,需要将CAD中的某个类型的文本文字导出到已经打开的excel中,在excel中编辑后,输入命令,将选定的excel中的文字导入AutoCAD中,要求求autoCAD中文字位置不发生变化,只是内容变化。
下面的程序只能实现导出具体到excel文件功能,但是导入函数报错:
通过xyz坐标将文字导出到excel, excel文字导出到CAD的程序,现在可以从CAD导出,但是目前没法导入。最佳的方式是将文件导出到已经打开excel中,然后在excel中修改后再导回CAD中。

导出函数
(defun c:EXTCSV (/ ss i f ename text pos)
  (setq ss (ssget "X" '((0 . "TEXT,MTEXT"))))
  (if ss
    (progn
      (setq f (open "D:/autocad_text.csv" "w"))
      (if f
        (progn
          (write-line "TextString,X,Y,Z" f)
          (setq i -1)
          (repeat (sslength ss)
            (setq i (1+ i))
            (setq ename (ssname ss i))
            (setq text (cdr (assoc 1 (entget ename))))
            (setq pos (cdr (assoc 10 (entget ename))))
            (write-line (strcat text "," (rtos (car pos)) "," (rtos (cadr pos)) "," (rtos (caddr pos))) f)
          )
          (close f)
          (princ "\nText has been exported to D:/autocad_text.csv")
        )
        (princ "\nFailed to open file for writing.")
      )
    )
    (princ "\nNo text found in the drawing.")
  )
  (princ)
)

导入函数出错
(defun c:IMTCSV (/ f line fields text pos)
  (setq f (open "D:/autocad_text.csv" "r"))
  (if f
    (progn
      (read-line f) ; Skip the header line
      (while (setq line (read-line f))
        (setq fields (strtok line ","))
        (setq text (nth 0 fields))
        (setq pos (list (atof (nth 1 fields)) (atof (nth 2 fields)) (atof (nth 3 fields))))
        (command "TEXT" pos "" "" text)
      )
      (close f)
      (princ "\nText has been imported from D:/autocad_text.csv")
    )
    (princ "\nFailed to open file for reading.")
  )
  (princ)
)        


发表于 2024-3-8 15:02 | 显示全部楼层
CAD自带的数据链接功能可实现此功能,缺点是CAD的表格编辑功能比较弱,可能无法很好的满足格式要求

本帖子中包含更多资源

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

x
回复 支持 1 反对 0

使用道具 举报

发表于 2024-3-8 08:28 | 显示全部楼层
(setq fields (strtok line ","))
好像是差 strtok 函数吧
发表于 2024-3-8 08:36 | 显示全部楼层
有图有真像。特殊的要求一般需要定制才能达到目的,或者自己慢慢学习
发表于 2024-3-8 09:03 | 显示全部楼层
vba做个类似功能的,acad和excel表格互转。
发表于 2024-3-8 09:20 | 显示全部楼层
(defun STRTOK (str del / pos)
  (if (setq pos (vl-string-search del str))
    (cons (substr str 1 pos)
          (STRTOK (substr str (+ pos 1 (strlen del))) del)
    )
    (list str)
  )
)

评分

参与人数 1金钱 +20 收起 理由
yimiyangguang55 + 20 不胜感激,将全部积分送给您都不足以表达我.

查看全部评分

发表于 2024-3-8 15:04 | 显示全部楼层
再或者随便找个CAD表格和EXCEL表格互转的插件都能实现,比如TRUETABLE
 楼主| 发表于 2024-3-8 15:34 | 显示全部楼层
yoyoho 发表于 2024-3-8 09:20
(defun STRTOK (str del / pos)
  (if (setq pos (vl-string-search del str))
    (cons (substr str 1  ...

太感谢了。非常感谢。大侠
 楼主| 发表于 2024-3-8 15:54 | 显示全部楼层
yoyoho 发表于 2024-3-8 09:20
(defun STRTOK (str del / pos)
  (if (setq pos (vl-string-search del str))
    (cons (substr str 1  ...

您好,能否再加一个语句,让导出的文字维持原来CAD中文字的字体等格式样式呢。谢谢您了
发表于 2024-3-9 22:51 | 显示全部楼层
yimiyangguang55 发表于 2024-3-8 15:34
太感谢了。非常感谢。大侠

可以共享一下吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-3 05:20 , Processed in 0.518752 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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