求一个利用TXT的多参数批量画图元的LSP代码
求一个利用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) YZ用这三个坐标写一个单行文字,内容为孔号(即每行的第一个参数)
可利用晓东的LSP函数或学院派的函数
本帖最后由 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-20 08:32 编辑
上面就是数据,孔号镡孔性镡X坐标镡Y坐标镡Z坐标镡字高,即以X Y Z坐标画一个单行文本图元“孔号” xyp1964 发表于 2013-12-19 22:48 static/image/common/back.gif
先贴个示意图
上面就是数据,孔号镡孔性镡X坐标镡Y坐标镡Z坐标镡字高,即以X Y Z坐标画一个单行文本图元“孔号” 本帖最后由 xyp1964 于 2013-12-20 09:13 编辑
;; 需要e派工具箱(XCAD)的支持:http://yunpan.cn/QXQKsW9gAPmpF
(defun c:tt ()
(xyp-CMDLAsc0)
(setq lst (xyp-txt2list "一条记录多个参数用镡分隔连接.txt")
lst (cdr lst)
lst (mapcar '(lambda (x) (xyp-Get-HzEngNum x 3)) lst)
)
(foreach a lst
(setq pt (list (cadr a) (caddr a) (cadddr a))
pt (mapcar 'distof pt)
rr (* (distof (last a)) 0.25)
bh (strcat "ZK" (car a))
p1 (xyp-Pt2X pt rr)
s1 (xyp-circle pt rr)
s2 (xyp-Text 4 p1 bh)
)
(xyp-SubUpd s2 40 rr)
)
(xyp-CMDLA1)
)
我试了,是可以画图,但跑题了。因为ZK1也可以是ZK1A1 ZK1B1,这们种种,你的代码就会出错。等于说,必须是以“镡”来分割得到的列表,这一步是不能变通的。 清风明月名字 发表于 2013-12-20 14:52 static/image/common/back.gif
我试了,是可以画图,但跑题了。因为ZK1也可以是ZK1A1 ZK1B1,这们种种,你的代码就会出错。等于说,必须是以 ...
只对"样品"负责!
页:
[1]