明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2211|回复: 7

求一个利用TXT的多参数批量画图元的LSP代码

[复制链接]
发表于 2013-12-2 09:51:45 | 显示全部楼层 |阅读模式
10明经币
求一个利用TXT的多参数批量画图元的LSP代码参数的性质如下:

孔号镡孔性镡X坐标镡Y坐标镡Z坐标镡字高

文本文件中的参数具体内容如下:
ZK1镡一般孔镡1镡11镡1.3镡2.5
ZK2镡一般孔镡2镡12镡2.3镡2.5
ZK3镡一般孔镡3镡13镡3.3镡2.5
ZK4镡一般孔镡4镡14镡4.3镡2.5
ZK5镡一般孔镡5镡15镡5.3镡2.5
ZK6镡一般孔镡6镡16镡6.3镡2.5
ZK7镡一般孔镡7镡17镡7.3镡2.5
ZK8镡一般孔镡8镡18镡8.3镡2.5
ZK9镡一般孔镡9镡19镡9.3镡2.5
ZK10镡一般孔镡10镡20镡10.3镡2.5

我需要将每行参数分解,利用分解出来的X Y Z画一个圆,圆的直径为字高。再用 (X+字高/2) Y  Z用这三个坐标写一个单行文字,内容为孔号(即每行的第一个参数)
可利用晓东的LSP函数或学院派的函数
附件: 您需要 登录 才可以下载或查看,没有账号?注册

最佳答案

查看完整内容

看看这段代码吧 写了半个小时啊 (defun C:mjb (/ fath a name is x y z d p1 p2 r) (setvar "osmode" 0) (vl-load-com) (setq path (getfiled "选择数据文件" "c:/" "TXT" 4)) (setq ff (open path "r")) (setq a (read-line ff)) (while a (setq a (read-line ff)) (setq name (substr a 1 (vl-string-position (ascii "镡") a))) (setq a (substr a (+ 3 (strlen name)))) (setq ls ( ...
发表于 2013-12-2 09:51:46 | 显示全部楼层
本帖最后由 wwwbxd 于 2013-12-21 10:16 编辑

看看这段代码吧  写了半个小时啊

(defun C:mjb (/ fath a name is x y z d p1 p2 r)
  (setvar "osmode" 0)
  (vl-load-com)
  (setq path (getfiled "选择数据文件" "c:/" "TXT" 4))
  (setq ff (open path "r"))
  (setq a (read-line ff))
  (while a
    (setq a (read-line ff))
    (setq name (substr a 1 (vl-string-position (ascii "镡") a)))
    (setq a (substr a (+ 3 (strlen name))))
    (setq ls (substr a 1 (vl-string-position (ascii "镡") a)))
    (setq a (substr a (+ 3 (strlen ls))))
    (setq ls (substr a 1 (vl-string-position (ascii "镡") a)))
    (setq x (substr a 1 (vl-string-position (ascii "镡") a)))
    (setq a (substr a (+ 3 (strlen x))))
    (setq Y (substr a 1 (vl-string-position (ascii "镡") a)))
    (setq a (substr a (+ 3 (strlen Y))))
    (setq z (substr a 1 (vl-string-position (ascii "镡") a)))
    (setq a (substr a (+ 3 (strlen Z))))
    (setq d (substr a 1 (vl-string-position (ascii "镡") a)))
    (setq x (atof x))
    (setq y (atof y))
    (setq z (atof z))
    (setq d (atof d))
    (setq p1 (list x y z))
    (setq r (/ d 2))
    (setq p2 (list (+ x r) y z))
    (command "_circle" p1 r)
    (command "_.text" "j" "ml" p2 d "0" name "" "")
  )
  (close ff)
  (setvar "osmode" 15359)
)

点评

谢谢你!太好了!  发表于 2013-12-21 15:26
回复

使用道具 举报

发表于 2013-12-19 22:48:38 | 显示全部楼层
先贴个示意图
回复

使用道具 举报

 楼主| 发表于 2013-12-20 08:30:28 | 显示全部楼层
本帖最后由 清风明月名字 于 2013-12-20 08:32 编辑

上面就是数据,孔号镡孔性镡X坐标镡Y坐标镡Z坐标镡字高,即以X Y Z坐标画一个单行文本图元“孔号”
回复

使用道具 举报

 楼主| 发表于 2013-12-20 08:33:04 | 显示全部楼层
xyp1964 发表于 2013-12-19 22:48
先贴个示意图

上面就是数据,孔号镡孔性镡X坐标镡Y坐标镡Z坐标镡字高,即以X Y Z坐标画一个单行文本图元“孔号”
回复

使用道具 举报

发表于 2013-12-20 09:10:39 | 显示全部楼层
本帖最后由 xyp1964 于 2013-12-20 09:13 编辑

  1. ;; 需要e派工具箱(XCAD)的支持:[url]http://yunpan.cn/QXQKsW9gAPmpF[/url]


  2. (defun c:tt ()
  3.   (xyp-CMDLAsc0)
  4.   (setq        lst (xyp-txt2list "一条记录多个参数用镡分隔连接.txt")
  5.         lst (cdr lst)
  6.         lst (mapcar '(lambda (x) (xyp-Get-HzEngNum x 3)) lst)
  7.   )
  8.   (foreach a lst
  9.     (setq pt (list (cadr a) (caddr a) (cadddr a))
  10.           pt (mapcar 'distof pt)
  11.           rr (* (distof (last a)) 0.25)
  12.           bh (strcat "ZK" (car a))
  13.           p1 (xyp-Pt2X pt rr)
  14.           s1 (xyp-circle pt rr)
  15.           s2 (xyp-Text 4 p1 bh)
  16.     )
  17.     (xyp-SubUpd s2 40 rr)
  18.   )
  19.   (xyp-CMDLA1)
  20. )

本帖子中包含更多资源

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

x

点评

没有看到你用“”将文本文件中的内容分解啊?  发表于 2013-12-20 14:35
回复

使用道具 举报

 楼主| 发表于 2013-12-20 14:52:44 | 显示全部楼层
我试了,是可以画图,但跑题了。因为ZK1也可以是ZK1A1 ZK1B1,这们种种,你的代码就会出错。等于说,必须是以“镡”来分割得到的列表,这一步是不能变通的。

点评

数据文件太垃圾  发表于 2013-12-20 19:11
回复

使用道具 举报

发表于 2013-12-20 19:10:16 | 显示全部楼层
清风明月名字 发表于 2013-12-20 14:52
我试了,是可以画图,但跑题了。因为ZK1也可以是ZK1A1 ZK1B1,这们种种,你的代码就会出错。等于说,必须是以 ...

只对"样品"负责!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-28 05:34 , Processed in 0.166324 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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