明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖
楼主: yimiyangguang55

[讨论] lisp函数提示输入的列表有缺陷

[复制链接]
发表于 2024-4-12 08:30 | 显示全部楼层
yimiyangguang55 发表于 2024-4-11 21:55
大神可以帮忙调整下这段代码吗?不胜感激

调整也需要dwg图纸
发表于 2024-4-12 08:37 来自手机 | 显示全部楼层
vl-filename-exists-p
 楼主| 发表于 2024-4-12 21:03 | 显示全部楼层

任何一张dwg图纸都可以,上面随便写几个字或者复制粘贴论坛的文字就可以。通用性的。可以加你的联系方式吗?刚刚找到明经,还不够级别发私信
 楼主| 发表于 2024-4-12 21:05 | 显示全部楼层

意思是用这个函数替代我发的代码里的函数吗??
发表于 2024-4-12 21:39 | 显示全部楼层
  1. (defun c:ExportTextToCSV (/ ali1 ali2 ent f fname fpath height i ss style text width)
  2.   (setq ss (ssget '((0 . "TEXT,MTEXT"))))
  3.   (if ss
  4.     (progn
  5.       (setq fpath (getvar "DWGPREFIX"))
  6.       (setq fname (strcat fpath (vl-filename-base (getvar "DWGNAME")) ".csv"))
  7.       (setq f (open fname "w"))
  8.       (write-line "Content,Style,Alignment,Height,WidthFactor" f)
  9.       (setq i 0)
  10.       (repeat (sslength ss)
  11.         (setq ent (entget (ssname ss i)))
  12.         (setq i (+ i 1))
  13.         (setq text (cdr (assoc 1 ent)))
  14.         (setq style (cdr (assoc 7 ent)))
  15.                                 (setq ali1 (cdr (assoc 72 ent)))
  16.         (setq ali2 (cdr (assoc 73 ent)))
  17.         (setq height (cdr (assoc 40 ent)))
  18.         (setq width (cdr (assoc 41 ent)))
  19.         (write-line (strcat text "," style "," (itoa ali1) "," (itoa ali2) "," (rtos height) "," (rtos width)) f)
  20.       )
  21.       (close f)
  22.       (princ "\n导出完成。")
  23.     )
  24.     (princ "\n没有选择任何文字对象。")
  25.   )
  26.   (princ)
  27. )

  28. (defun c:ImportTextFromCSV (/ ali1 ali2 data f fname fpath gd kgb line pt wz zt)
  29.   (setq fpath (getvar "DWGPREFIX"))
  30.   (setq fname (strcat fpath (vl-filename-base (getvar "DWGNAME")) ".csv"))
  31.   (setq f (open fname "r"))
  32.   (if f
  33.     (progn
  34.       (read-line f)
  35.       (while (setq line (read-line f))
  36.         (setq data (read (strcat "(" (vl-string-translate "," " " line) ")")))
  37.                                 (setq text (vl-princ-to-string (nth 0 data)))
  38.                                 (setq style (vl-princ-to-string (nth 1 data)))
  39.                                 (setq ali1 (nth 2 data))
  40.                                 (setq ali2 (nth 3 data))
  41.                                 (setq height (nth 4 data))
  42.                                 (setq width (nth 5 data))
  43.                                 (setq pt (getpoint "\n指定插入点:"))
  44.         (entmake(list '(0 . "text")'(50 . 0.0) (cons 10 pt)(cons 11 pt)(cons 1 text)(cons 7 style)(cons 40 height)'(6 . "Continuous")(cons 41 width)(cons 72 ali1)'(210 0.0 0.0 1.0)'(100 . "AcDbText")(cons 73 ali2)))
  45.       )
  46.       (close f)
  47.       (princ "\n导入完成。")
  48.     )
  49.     (princ "\n未找到CSV文件。")
  50.   )
  51.   (princ)
  52. )
 楼主| 发表于 2024-4-12 22:55 | 显示全部楼层

谢谢大神助力,导入了lisp,两个程序都提示“错误: 输入的列表有缺陷”,
我检查了括号没有错误,函数将(itoa ali1) 改为(rtos ali1)  也不行。
都不知道错误的这个雷怎么排除
请大神帮我再看下。估计只有你能找到这雷了
谢谢了

本帖子中包含更多资源

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

x
发表于 2024-4-13 08:10 | 显示全部楼层
你是直接在TXT里保存的吧  要另存为 ANSI格式的 或者在vlisp里保存
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2024-4-13 14:23 | 显示全部楼层
飞雪神光 发表于 2024-4-13 08:10
你是直接在TXT里保存的吧  要另存为 ANSI格式的 或者在vlisp里保存

我用Vlisp编辑保存后,导出程序跑通了。谢谢,我原来用notepad++编辑也是这样出错。
感谢大神
后来发现,导入程序有欠缺,需要每点击下才能导入一个文字。其实应该再这段程序中加一段代码,导出时定位到每段文字的xy坐标,这样导回去的时候能批量定位到原位置,并且删除原位置的初始文本(删除源文本好像非常有难度),可能导入程序的难点就再这里了。
另外我尝试再这个程序里加入下面程序,出现 ssget 列表错误提示。
        (setq font (cdr (assoc 3 ent)))  ; 获取字体名称
        (setq rotation (cdr (assoc 50 ent)))  ; 获取旋转角度
        (setq color (cdr (assoc 62 ent)))  ; 获取文本颜色

发表于 2024-4-13 17:41 | 显示全部楼层
你加的这段没问题 是ssget不对 你要导入原位那还得带着坐标啊  你要是不依赖AI 自学入门 这点东西没有难度
 楼主| 发表于 2024-4-16 08:29 | 显示全部楼层
飞雪神光 发表于 2024-4-13 17:41
你加的这段没问题 是ssget不对 你要导入原位那还得带着坐标啊  你要是不依赖AI 自学入门 这点东西没有难度

准备从基础上好好学习下。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-1 11:53 , Processed in 1.605261 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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