乐筑天下

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

[编程交流] Lisp从notep放置多行文字

[复制链接]

8

主题

41

帖子

33

银币

初来乍到

Rank: 1

铜币
40
发表于 2022-7-6 00:00:34 | 显示全部楼层 |阅读模式
你好
 
我有一个记事本,包含大约100个材料描述,如下所示。假设我已将记事本保存在D:列表中。txt文件
 
1001.预制混凝土块,类型:绑扎,饰面:抛丸,
颜色:棕色,尺寸:200x100x60MM
 
1002.砂岩,类型:插入,表面处理:喷丸,
颜色:棕褐色,尺寸:200x200x40MM
 
1003.铝,类型:围栏,饰面:聚酯粉末涂层,
颜色:RAL 3005,尺寸:1000MM高
 
我需要一个lisp来完成以下操作,
1、调用物料代码
如果我输入1001
应在“文字”层上放置一个带有多行文字的引线,该多行文字带有“预制混凝土块,类型:捆扎,饰面:抛丸,颜色:棕色,尺寸:200x100x60MM”。
 
谢谢你的建议
 
Suriwaits。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 00:16:53 | 显示全部楼层
通过CAB查看此程序
 
[可能需要沼泽会员才能查看]
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 00:25:50 | 显示全部楼层
这是一个旧代码[修改]
  1. (defun c:mtl (/ source file a look4 found f pt1 pt2)
  2. (defun *error* (msg)
  3.    (command "._undo" "_end")
  4.    (setvar 'osmode old_os)(setvar 'DIMTAD tad)
  5.    (setvar 'DIMGAP gap) (setvar 'cmdecho 1)
  6. )
  7. (setvar 'cmdecho 0)
  8. (command "._undo" "_begin")
  9. (setq        tad    (getvar 'DIMTAD)
  10. gap    (getvar 'DIMGAP)
  11. old_os (getvar 'Osmode)
  12. )
  13. (setvar 'DIMTAD 0) (setvar 'DIMGAP -0.09)(setvar 'osmode 0)
  14. (if (and (null data)
  15.    (setq source        (getfiled "Select File for Material Specification"
  16.                           (getvar 'DWgprefix)
  17.                           "txt"
  18.                           16
  19.                 )
  20.    )
  21.      )
  22.    (progn
  23.      (setq file (open source "r"))
  24.      (while (setq a (read-line file))
  25. (if (/= "" a)
  26.   (setq data (cons a data))
  27. )
  28.      )
  29.      (close file)
  30.      (setq data (reverse data))
  31.    )
  32. )
  33. (while
  34.    (and data (setq look4 (getint "\nEnter Material number: ")))
  35.     (if (setq found
  36.         (vl-some '(lambda (s)
  37.                     (if        (wcmatch s (strcat (itoa look4) "*"))
  38.                       s
  39.                     )
  40.                   )
  41.                  data
  42.         )
  43. )
  44.       (progn
  45. (setq pt1 (getpoint "\nPick Point for Label arrow: "))
  46. (setq pt2 (getpoint pt1 "\n Place Material Specs: "))
  47. (command
  48.    "leader"
  49.    pt1
  50.    pt2
  51.    ""
  52.    (strcat (car (setq f (member found data))) "\\P" (cadr f))
  53.    ""
  54.    ^c
  55. )
  56.       )
  57.       (princ "\n<<<Material number not found>>>")
  58.     )
  59. )
  60. (*error* "")
  61. (princ)
  62. )
  63. (defun c:resetD        nil
  64. (setq data nil)
  65. (princ "\n        <<<Ready to read updated Data file>>>        ")
  66. (princ)
  67. )
回复

使用道具 举报

8

主题

41

帖子

33

银币

初来乍到

Rank: 1

铜币
40
发表于 2022-7-6 00:27:41 | 显示全部楼层
谢谢LM,
CAB的程序看起来很棒。
 
回复

使用道具 举报

8

主题

41

帖子

33

银币

初来乍到

Rank: 1

铜币
40
发表于 2022-7-6 00:42:29 | 显示全部楼层
谢谢pBe,
 
你的程序看起来很简单,完全符合我的需要。
是否可以使用3点引线而不是2点引线,并且不带方框的文本将非常好。
没有数字的多行文字也不错。
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 00:48:30 | 显示全部楼层
 
  1. (defun c:mtl (/ source file a look4 found f pt1 pt2)
  2. (defun *error* (msg)
  3.    (command "._undo" "_end")
  4.    (setvar 'osmode old_os)
  5.    (setvar 'cmdecho 1)
  6. )
  7. (setvar 'cmdecho 0)
  8. (command "._undo" "_begin")
  9. (setq         old_os (getvar 'Osmode))
  10. (setvar 'osmode 0)
  11. (if (and (null data)
  12.    (setq source        (getfiled "Select File for Material Specification"
  13.                           (getvar 'DWgprefix)
  14.                           "txt"
  15.                           16
  16.                 )
  17.    )
  18.      )
  19.    (progn
  20.      (setq file (open source "r"))
  21.      (while (setq a (read-line file))
  22. (if (/= "" a)
  23.   (setq data (cons a data))
  24. )
  25.      )
  26.      (close file)
  27.      (setq data (reverse data))
  28.    )
  29. )
  30. (while
  31.    (and data (setq look4 (getint "\nEnter Material number: ")))
  32.     (if (setq found
  33.         (vl-some '(lambda (s)
  34.                     (if        (wcmatch s (strcat (itoa look4) "*"))
  35.                       s
  36.                     )
  37.                   )
  38.                  data
  39.         )
  40. )
  41.       (progn
  42. (setq pt1 (getpoint "\nPick Point for Label arrow: "))
  43. (setq pt2 (getpoint pt1 "\n Pick second point: "))
  44. (grdraw pt1 pt2 7)
  45. (setq pt3 (getpoint pt2 "\n Place Material Specs: "))
  46. (setq str (strcat (car (setq f (member found data))) "\\P" (cadr f)))
  47. (command
  48.    "leader"
  49.    pt1
  50.    pt2 pt3
  51.    ""
  52.    (substr str (+ 2 (vl-string-position 46 str)))
  53.    ""
  54.    ^c
  55. )
  56.       )
  57.       (princ "\n<<<Material number not found>>>")
  58.     )
  59. )
  60. (*error* "")
  61. (princ)
  62. )
  63. (defun c:resetD        nil
  64. (setq data nil)
  65. (princ "\n        <<<Ready to read updated Data file>>>        ")
  66. (princ)
  67. )
回复

使用道具 举报

8

主题

41

帖子

33

银币

初来乍到

Rank: 1

铜币
40
发表于 2022-7-6 00:57:33 | 显示全部楼层
非常感谢pBe,
 
效果很好。
 
 
 
 
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 01:05:00 | 显示全部楼层
 
很高兴我能帮忙
 
干杯
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-10 21:11 , Processed in 0.616144 second(s), 68 queries .

© 2020-2025 乐筑天下

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