大神可以帮忙调整下这段代码吗?不胜感激
调整也需要dwg图纸 vl-filename-exists-p 飞雪神光 发表于 2024-4-12 08:30
调整也需要dwg图纸
任何一张dwg图纸都可以,上面随便写几个字或者复制粘贴论坛的文字就可以。通用性的。可以加你的联系方式吗?刚刚找到明经,还不够级别发私信 Bao_lai 发表于 2024-4-12 08:37
vl-filename-exists-p
意思是用这个函数替代我发的代码里的函数吗?? (defun c:ExportTextToCSV (/ ali1 ali2 ent f fname fpath height i ss style text width)
(setq ss (ssget '((0 . "TEXT,MTEXT"))))
(if ss
(progn
(setq fpath (getvar "DWGPREFIX"))
(setq fname (strcat fpath (vl-filename-base (getvar "DWGNAME")) ".csv"))
(setq f (open fname "w"))
(write-line "Content,Style,Alignment,Height,WidthFactor" f)
(setq i 0)
(repeat (sslength ss)
(setq ent (entget (ssname ss i)))
(setq i (+ i 1))
(setq text (cdr (assoc 1 ent)))
(setq style (cdr (assoc 7 ent)))
(setq ali1 (cdr (assoc 72 ent)))
(setq ali2 (cdr (assoc 73 ent)))
(setq height (cdr (assoc 40 ent)))
(setq width (cdr (assoc 41 ent)))
(write-line (strcat text "," style "," (itoa ali1) "," (itoa ali2) "," (rtos height) "," (rtos width)) f)
)
(close f)
(princ "\n导出完成。")
)
(princ "\n没有选择任何文字对象。")
)
(princ)
)
(defun c:ImportTextFromCSV (/ ali1 ali2 data f fname fpath gd kgb line pt wz zt)
(setq fpath (getvar "DWGPREFIX"))
(setq fname (strcat fpath (vl-filename-base (getvar "DWGNAME")) ".csv"))
(setq f (open fname "r"))
(if f
(progn
(read-line f)
(while (setq line (read-line f))
(setq data (read (strcat "(" (vl-string-translate "," " " line) ")")))
(setq text (vl-princ-to-string (nth 0 data)))
(setq style (vl-princ-to-string (nth 1 data)))
(setq ali1 (nth 2 data))
(setq ali2 (nth 3 data))
(setq height (nth 4 data))
(setq width (nth 5 data))
(setq pt (getpoint "\n指定插入点:"))
(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)))
)
(close f)
(princ "\n导入完成。")
)
(princ "\n未找到CSV文件。")
)
(princ)
) 飞雪神光 发表于 2024-4-12 21:39
谢谢大神助力,导入了lisp,两个程序都提示“错误: 输入的列表有缺陷”,
我检查了括号没有错误,函数将(itoa ali1) 改为(rtos ali1)也不行。
都不知道错误的这个雷怎么排除
请大神帮我再看下。估计只有你能找到这雷了
谢谢了
你是直接在TXT里保存的吧要另存为 ANSI格式的 或者在vlisp里保存 飞雪神光 发表于 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))); 获取文本颜色
你加的这段没问题 是ssget不对 你要导入原位那还得带着坐标啊你要是不依赖AI 自学入门 这点东西没有难度 飞雪神光 发表于 2024-4-13 17:41
你加的这段没问题 是ssget不对 你要导入原位那还得带着坐标啊你要是不依赖AI 自学入门 这点东西没有难度
准备从基础上好好学习下。
页:
1
[2]