Lisp从csv插入块
你好,CAD向导,我对lisp的概念还很陌生。然而,我一直在使用autocad脚本来完成我的工作。我要做的是创建一个lisp函数,这样它可以从csv或excel文件中读取x,y坐标和点号,并插入一个现有块,该块在该坐标处具有属性,属性取点号。非常感谢您对编写此lisp的任何帮助。让我再说一遍,我是自动Lisp程序的新手
这是excel文件
首席运营官。xlsx公司
数据格式为
点Xcor Ycor 欢迎使用新向导。
当您尝试我的下一个程序时,应该存在于图形中的属性块的名称是什么? 它是Block1
如果不太复杂,是否可以由用户提示:notworthy:
因为我需要插入不同类型的块
当然
试一试,让我知道。
(defun c:test (/ _parse do sp bk bn f on st l)
;; Tharwat 13.08.2015 ;;
(setq do (vla-get-activedocument (vlax-get-acad-object))
sp (vla-get-block (vla-get-activelayout do))
)
(cond
((not (and (setq
bn
(getstring t
"\nSpecify name of the Attributed Block Name :"
)
)
(/= bn "")
(tblsearch "BLOCK" bn)
)
)
(princ (strcat "\nEmpty value or Block name < "
bn
" > is not existed in current drawing !"
)
)
)
((setq f (getfiled "Select Excel file :"
(getvar 'dwgprefix)
"csv"
16
)
)
(setq on (open f "r"))
(defun _parse (s / pos lst)
(while (setq pos (vl-string-search ";" s 0))
(progn (setq lst (cons (substr s 1 pos) lst))
(setq s (substr s (+ pos 2) (strlen s)))
)
)
(if (and s (/= s ""))
(setq lst (cons s lst))
)
(setq lst (reverse lst))
)
(while (setq st (read-line on))
(if (and (setq l (_parse st))
(= (length l) 3)
(setq bk (vla-insertblock
sp
(vlax-3d-point (read (cadr l)) (read (caddr l)))
bn
1.0
1.0
1.0
0.
)
)
)
(vla-put-textstring
(car (vlax-invoke bk 'getattributes))
(car l)
)
)
)
(close on)
)
)
(princ)
)(vl-load-com)
嗯,试过了,但没用。。。
它要求输入块名,并在给出块名时要求打开csv文件。但打开文件时,什么都没有发生:不确定:
如果你想以防万一进行测试,请点击这里
800.dwg
这是我目前用来做这件事的脚本
800.scr 另存为Excel文件以格式化csv,然后重试。 我尝试了csv文件本身。你能看一下我的脚本文件并以相同的顺序验证lisp create命令吗 我给了你一个完整的程序,不需要任何其他脚本。
1-应将属性块存在于运行程序的当前图形中。
2-EXCL文件应为csv格式。 不,我没有用剧本
是的,我试过用csv文件而不是excel文件
我如何加载lisp有问题吗
这是我用过的文件
首席运营官。csv
测验lsp Excel文件coo的内容。在post#9中加载的csv与您在第一次post格式中加载的csv不同
返回程序并替换分号(;)带逗号(,)。
(vl-string-search ";" s 0)
变成这样。
(vl-string-search "," s 0)
页:
[1]
2