找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2690|回复: 29

[已解决] 求款可以利用读取EXCEL表格,批量替换CAD图中文字的lisp,请大神赐教,十分感谢!

[复制链接]

已领礼包: 272个

财富等级: 日进斗金

发表于 2019-9-8 08:44:35 | 显示全部楼层 |阅读模式
悬赏20D豆已解决
求款可以利用读取EXCEL表格,批量替换CAD图中文字的lisp,请大神赐教,十分感谢!
EXCEL表格.jpg
文字批量替换后.jpg

样例.rar

53.12 KB, 下载次数: 53, 下载积分: D豆 -1 , 活跃度 1

最佳答案

查看完整内容

东拉西扯来的,凑合用吧 (defun c:plth () (vl-load-com) (setvar "cmdecho" 0) (defun Excel-Get-CellValue (xlapp cell) (setq xlsrng (vlax-get-property xlapp "range" cell)) (setq xlsval (vlax-variant-value (vlax-get-property xlsrng "Value")))) (defun th () (setq ss (ssget "X" '((0 . "TEXT"))) i 0) (while (< i (sslength ss)) (setq e (ssname ss i) st (entget e) te ...
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 511个

财富等级: 财运亨通

发表于 2019-9-8 08:44:36 | 显示全部楼层


东拉西扯来的,凑合用吧
(defun c:plth ()
    (vl-load-com)
    (setvar "cmdecho" 0)
    (defun Excel-Get-CellValue (xlapp cell)
        (setq xlsrng (vlax-get-property xlapp "range" cell))
        (setq xlsval (vlax-variant-value (vlax-get-property xlsrng "Value"))))
    (defun th ()
        (setq ss (ssget "X" '((0 . "TEXT"))) i 0)
        (while (< i (sslength ss))
            (setq e    (ssname ss i)
                  st   (entget e)
                  text (cdr (assoc 1 st)))
            (while (setq ks (vl-string-search st1 text))
                (setq len  (strlen text)
                      len1 (strlen st1)
                      fro  (substr text 1 ks)
                      bak  (substr text (+ 1 ks len1)))
                (setq text (strcat fro st2 bak))
                (entmod (subst (cons 1 text) (assoc 1 st) st)))
            (setq i (1+ i))
            ))
    (setq xfile (getfiled "选择包含替换内容的EXCEL文件" "" "xls;xlsx" 8))
    (if        (setq fn (findfile xfile))
        (if (setq xlapp (vlax-get-or-create-object "Excel.Application"))
               (progn
                   (vlax-invoke-method (vlax-get-property xlapp 'WorkBooks) 'Open fn)
                   (setq row 2)
                   (while (setq        st1 (Excel-Get-CellValue xlapp (strcat "A" (rtos row))))
                       (setq st2 (Excel-Get-CellValue xlapp (strcat "B" (rtos row))))
                       (th)
                       (setq row (1+ row))
                   )
                   (vlax-invoke-method xlapp 'quit)
                   (vlax-release-object xlapp)
               );progn
        );if
    );if
    (setvar "cmdecho" 1)
    (princ)
)
(prompt "读取EXCEL文件进行文字替换,命令:plth")(princ)

点评

亲试好用的,十分感谢分享  详情 回复 发表于 2019-9-8 16:56
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 511个

财富等级: 财运亨通

发表于 2019-9-8 12:55:05 | 显示全部楼层
命令行输入PLTH,在弹窗选择EXCEL文件并打开

读EXCEL文件替换文字.rar

1.4 KB, 下载次数: 108, 下载积分: D豆 -1 , 活跃度 1

点评

老师 您好 我有下载您这个插件 但是使用後出现错误的消息,请问是否哪里操作错误呢? Application Error: 2 :- 自动化错误。未提供描述。  详情 回复 发表于 2023-6-23 00:43
老师lisp源码可以发享下吗?发邮箱也行,谢谢老师  详情 回复 发表于 2019-9-8 13:47
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 272个

财富等级: 日进斗金

 楼主| 发表于 2019-9-8 13:47:16 | 显示全部楼层
pxr201419 发表于 2019-9-8 12:55
命令行输入PLTH,在弹窗选择EXCEL文件并打开

老师lisp源码可以发享下吗?发邮箱也行254762580@qq.com,谢谢老师
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 272个

财富等级: 日进斗金

 楼主| 发表于 2019-9-8 16:56:03 | 显示全部楼层
pxr201419 发表于 2019-9-8 13:58
东拉西扯来的,凑合用吧
(defun c:plth ()
    (vl-load-com)

亲试好用的,十分感谢分享
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 1227个

财富等级: 财源广进

发表于 2019-9-9 00:43:50 | 显示全部楼层
感谢分享。。。。。。。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

发表于 2019-9-9 11:04:48 | 显示全部楼层
请问excel怎么编辑呢?有没有什么固定的格式啊

点评

A列放原来的文字,B列放替换后的文字,所有要替换的内容不要隔行就行了  详情 回复 发表于 2019-9-9 11:36
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 511个

财富等级: 财运亨通

发表于 2019-9-9 11:36:32 | 显示全部楼层
嘎小闹 发表于 2019-9-9 11:04
请问excel怎么编辑呢?有没有什么固定的格式啊

A列放原来的文字,B列放替换后的文字,所有要替换的内容不要隔行就行了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 1227个

财富等级: 财源广进

发表于 2019-9-10 08:29:58 | 显示全部楼层
十分感谢分享
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

发表于 2019-9-10 10:42:25 | 显示全部楼层
pxr201419 发表于 2019-9-9 11:36
A列放原来的文字,B列放替换后的文字,所有要替换的内容不要隔行就行了

下载您的样例就可以改 自己随便编辑一下 然后按照您的样例就改不了 不知道问题出在哪了啊

点评

上传你的EXCEL文件和dwg文件  详情 回复 发表于 2019-9-10 11:07
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 511个

财富等级: 财运亨通

发表于 2019-9-10 11:07:19 | 显示全部楼层
嘎小闹 发表于 2019-9-10 10:42
下载您的样例就可以改 自己随便编辑一下 然后按照您的样例就改不了 不知道问题出在哪了啊

上传你的EXCEL文件和dwg文件
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

发表于 2019-9-10 20:44:15 | 显示全部楼层
pxr201419 发表于 2019-9-10 11:07
上传你的EXCEL文件和dwg文件

我就简单做的样例  请大神帮我看看  我的问题出在哪为什么不能替换呢?

例子.rar

14.63 KB, 下载次数: 11, 下载积分: D豆 -1 , 活跃度 1

点评

1、前面程序编得粗糙,只适用于单行文字,没有考虑多行文字,你的图中文字为多行文字。将第8行改为 (setq ss (ssget "X" '((0 . "*TEXT"))) i 0) 就可以了。 2、第28、29行改一下,原来程序的不严谨: (while (s  详情 回复 发表于 2019-9-10 22:38
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 511个

财富等级: 财运亨通

发表于 2019-9-10 22:38:04 | 显示全部楼层
嘎小闹 发表于 2019-9-10 20:44
我就简单做的样例  请大神帮我看看  我的问题出在哪为什么不能替换呢?

1、前面程序编得粗糙,只适用于单行文字,没有考虑多行文字,你的图中文字为多行文字。将第8行改为
        (setq ss (ssget "X" '((0 . "*TEXT"))) i 0) 就可以了。
2、第28、29行改一下,原来程序的不严谨:
(while (setq        st1 (Excel-Get-CellValue xlapp (strcat "A" (rtos row 2 0))))
                       (setq st2 (Excel-Get-CellValue xlapp (strcat "B" (rtos row 2 0))))
多谢你的测试,有问题再说。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

发表于 2019-9-11 11:39:10 | 显示全部楼层
pxr201419 发表于 2019-9-10 22:38
1、前面程序编得粗糙,只适用于单行文字,没有考虑多行文字,你的图中文字为多行文字。将第8行改为
        (se ...

感谢大神指点 好用了  刚刚亲测的  但是缺点是:单行文字不能修改了  只能修改多行文字  还想请教一下 大神能不能帮忙做一个可以根据实测点的坐标和高程来生成横断面的插件啊  
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 23个

财富等级: 恭喜发财

发表于 2019-9-13 18:06:53 | 显示全部楼层
十分感谢分享
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-4-18 12:37 , Processed in 0.553338 second(s), 69 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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