乐筑天下

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

[编程交流] (读取行)

[复制链接]

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 10:51:28 | 显示全部楼层 |阅读模式
你好
 
假设我有一个名为(try.txt)的文件,它由10行文本组成。
 
我怎么能用函数read line…???选择第5行????
  1. (defun c:try (/ sset tx)
  2. (setq sset (open "c:/try.txt" "r"))
  3. (setq tx (read-line sset))
  4. (command "_.text" pause "" "" tx "")
  5. (close sset)
  6. (princ)
  7. )

上面提到的程序将获得第一行,但我需要选择
第五个。。。。
 
当做
塔瓦特
回复

使用道具 举报

18

主题

434

帖子

422

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
94
发表于 2022-7-6 10:57:03 | 显示全部楼层
读4行,不做任何事情(重复读4次)。阅读第五行,像刚才那样使用它。
 
SSET是一个非常不寻常的文件名。。。
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 11:04:42 | 显示全部楼层
使用计数器。。。
 
  1. (defun _FileLine2Text (file num pt / fo line)
  2. (if (findfile file)
  3.    ((lambda (i)
  4.       (setq fo (open file "R"))
  5.       (while (and (setq line (read-line fo)) (> num (setq i (1+ i)))))
  6.       (close fo)
  7.       (if (eq num i)
  8.         (entmakex (list '(0 . "TEXT")
  9.                         (cons 40 (getvar 'textsize))
  10.                         (cons 1 line)
  11.                         (cons 10 (trans pt 1 0))
  12.                   )
  13.         )
  14.       )
  15.     )
  16.      0
  17.    )
  18. )
  19. )
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 11:12:23 | 显示全部楼层
事实上,我更喜欢这个主意。它的局限性是,如果你说100,只有2行文字,它将继续阅读,直到重复过程结束。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 11:15:58 | 显示全部楼层
谢谢温柔的男人。
 
这是两个答案的组合。。。。。。你怎么想????
  1. (defun c:try (/ sset tx pt)
  2. (setq sset (open "c:/try.txt" "r"))
  3. (repeat 5
  4. (setq tx (read-line sset)))
  5. (setq pt(getpoint"\nText location:"))
  6.            (entmakex (list '(0 . "TEXT")
  7.                         (cons 40 (getvar 'textsize))
  8.                         (cons 1 tx)
  9.                         (cons 10 (trans pt 1 0))
  10.                   )
  11.         )
  12. (princ)
  13. )

 
真是太棒了
非常感谢
 
塔瓦特
回复

使用道具 举报

18

主题

434

帖子

422

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
94
发表于 2022-7-6 11:21:12 | 显示全部楼层
我不能试一下,但肯定它更优雅。输入文本至少是使用命令创建文本的10倍。
人们使用SSET这个名称来表示选择集。。。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 11:26:21 | 显示全部楼层
 
我同意你的观点,我更改了文件名,这比
sset到fname的名称。
 
关于entmake函数,我已经习惯了它,因为它是最好的
它的性能。在Lisp文件中频繁使用commnad将减少Autocad的移动。
 
谢谢
 
塔瓦特
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 11:30:58 | 显示全部楼层
我至少要添加一点错误检查,以确保您选择了要点。
 
  1. (defun c:Try (/ sset tx pt)
  2. (if (findfile "c:/try.txt")
  3.    (progn (setq sset (open "c:/try.txt" "r"))
  4.           (repeat 5 (setq tx (read-line sset)))
  5.           (if (and (eq (type tx) 'STR) (setq pt (getpoint "\nText location : ")))
  6.             (entmakex (list '(0 . "TEXT")
  7.                             (cons 40 (getvar 'textsize))
  8.                             (cons 1 tx)
  9.                             (cons 10 (trans pt 1 0))
  10.                       )
  11.             )
  12.           )
  13.    )
  14.    (alert "FILE NOT FOUND!")
  15. )
  16. (princ)
  17. )
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 11:37:36 | 显示全部楼层
谢谢Alanjt。。。
太好了。。。。。。。。。如果找不到文本,我又增加了一个警报。
  1. (defun c:Try (/ [color=Red]fname[/color] tx pt)
  2. (if (findfile "c:/try.txt")
  3.    (progn (setq [color=Red]fname[/color] (open "c:/try.txt" "r"))
  4.           (repeat 5 (setq tx (read-line [color=Red]fname[/color])))
  5.           (if (and (eq (type tx) 'STR)
  6.            (setq pt (getpoint "\nText location : ")))
  7.             (entmakex (list '(0 . "TEXT")
  8.                             (cons 40 (getvar 'textsize))
  9.                             (cons 1 tx)
  10.                             (cons 10 (trans pt 1 0))
  11.                       )
  12.             )
  13.         [color=Red](alert "TEXT NOT EXISTED")[/color]
  14.           )
  15.    )
  16.    (alert "FILE NOT FOUND!")
  17. )
  18. (princ)
  19. )

 
非常感谢
 
塔瓦特
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 11:41:46 | 显示全部楼层
你需要分解and语句。在选择点时单击鼠标右键,您将收到“文本不存在”警报。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-6 17:18 , Processed in 0.613569 second(s), 72 queries .

© 2020-2025 乐筑天下

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