乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 36|回复: 11

[编程交流] Lisp从csv插入块

[复制链接]

3

主题

12

帖子

9

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-5 18:45:27 | 显示全部楼层 |阅读模式
你好,CAD向导,
我对lisp的概念还很陌生。然而,我一直在使用autocad脚本来完成我的工作。我要做的是创建一个lisp函数,这样它可以从csv或excel文件中读取x,y坐标和点号,并插入一个现有块,该块在该坐标处具有属性,属性取点号。非常感谢您对编写此lisp的任何帮助。让我再说一遍,我是自动Lisp程序的新手
这是excel文件
首席运营官。xlsx公司
数据格式为
点Xcor Ycor
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-5 18:55:17 | 显示全部楼层
欢迎使用新向导。
 
当您尝试我的下一个程序时,应该存在于图形中的属性块的名称是什么?
回复

使用道具 举报

3

主题

12

帖子

9

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-5 18:59:28 | 显示全部楼层
它是Block1
如果不太复杂,是否可以由用户提示:notworthy:
因为我需要插入不同类型的块
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-5 19:05:59 | 显示全部楼层
 
当然
 
试一试,让我知道。
 
  1. (defun c:test (/ _parse do sp bk bn f on st l)
  2. ;; Tharwat 13.08.2015        ;;
  3. (setq do (vla-get-activedocument (vlax-get-acad-object))
  4.        sp (vla-get-block (vla-get-activelayout do))
  5.        )
  6. (cond
  7.    ((not (and (setq
  8.                 bn
  9.                  (getstring t
  10.                             "\nSpecify name of the Attributed Block Name :"
  11.                             )
  12.                 )
  13.               (/= bn "")
  14.               (tblsearch "BLOCK" bn)
  15.               )
  16.          )
  17.     (princ (strcat "\nEmpty value or Block name < "
  18.                    bn
  19.                    " > is not existed in current drawing !"
  20.                    )
  21.            )
  22.     )
  23.    ((setq f (getfiled "Select Excel file :"
  24.                       (getvar 'dwgprefix)
  25.                       "csv"
  26.                       16
  27.                       )
  28.           )
  29.     (setq on (open f "r"))
  30.     (defun _parse (s / pos lst)
  31.       (while (setq pos (vl-string-search ";" s 0))
  32.         (progn (setq lst (cons (substr s 1 pos) lst))
  33.                (setq s (substr s (+ pos 2) (strlen s)))
  34.                )
  35.         )
  36.       (if (and s (/= s ""))
  37.         (setq lst (cons s lst))
  38.         )
  39.       (setq lst (reverse lst))
  40.       )
  41.     (while (setq st (read-line on))
  42.       (if (and (setq l (_parse st))
  43.                (= (length l) 3)
  44.                (setq bk (vla-insertblock
  45.                           sp
  46.                           (vlax-3d-point (read (cadr l)) (read (caddr l)))
  47.                           bn
  48.                           1.0
  49.                           1.0
  50.                           1.0
  51.                           0.
  52.                           )
  53.                      )
  54.                )
  55.         (vla-put-textstring
  56.           (car (vlax-invoke bk 'getattributes))
  57.           (car l)
  58.           )
  59.         )
  60.       )
  61.     (close on)
  62.     )
  63.    )
  64. (princ)
  65. )(vl-load-com)
回复

使用道具 举报

3

主题

12

帖子

9

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-5 19:12:28 | 显示全部楼层
嗯,试过了,但没用。。。
它要求输入块名,并在给出块名时要求打开csv文件。但打开文件时,什么都没有发生:不确定:
如果你想以防万一进行测试,请点击这里
800.dwg
 
这是我目前用来做这件事的脚本
800.scr
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-5 19:16:57 | 显示全部楼层
另存为Excel文件以格式化csv,然后重试。
回复

使用道具 举报

3

主题

12

帖子

9

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-5 19:21:47 | 显示全部楼层
我尝试了csv文件本身。你能看一下我的脚本文件并以相同的顺序验证lisp create命令吗
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-5 19:28:20 | 显示全部楼层
我给了你一个完整的程序,不需要任何其他脚本。
 
1-应将属性块存在于运行程序的当前图形中。
2-EXCL文件应为csv格式。
回复

使用道具 举报

3

主题

12

帖子

9

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-5 19:31:25 | 显示全部楼层
不,我没有用剧本
 
是的,我试过用csv文件而不是excel文件
194529kq0zyufn2u5jd42x.jpg
 
我如何加载lisp有问题吗
这是我用过的文件
首席运营官。csv
测验lsp
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-5 19:34:58 | 显示全部楼层
Excel文件coo的内容。在post#9中加载的csv与您在第一次post格式中加载的csv不同
 
返回程序并替换分号(;)带逗号(,)。
 
  1. (vl-string-search [color="#ff00ff"]";"[/color] s 0)

 
变成这样。
 
  1. (vl-string-search [color="#ff00ff"]","[/color] s 0)
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-12 13:12 , Processed in 0.387632 second(s), 74 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表