乐筑天下

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

[编程交流] 根据t填充属性

[复制链接]

18

主题

66

帖子

48

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
90
发表于 2022-7-5 23:44:26 | 显示全部楼层 |阅读模式
大家好,
考虑具有3个属性的块:
A1名称
A2数量
A3说明
 
你能帮我用一个LISP,将提取和填写A3根据A1。
要从中提取A3的数据(所有块都包含A1和A3)可以在另一个Excel或Acad文件中(LISP更容易查找的文件)。
 
谢谢你的帮助。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 23:50:15 | 显示全部楼层
lisp查找最简单的方法是一个普通的txt文件,使用lisp插入块,这样可以在创建时添加属性。你可以有一个弹出的信息拨号等,所以没有拼写错误。还要研究工具选项板。我想我是说你想要一个多复杂的答案?
 
一个简单的方法是通过lisp输入名称,打开txt文件查找名称,然后检索A3,然后只需一个简单的插入命令。这大约有10行长。
拨号选择方法示例。
004431gpwhforhj3r1ipfo.jpg
回复

使用道具 举报

18

主题

66

帖子

48

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
90
发表于 2022-7-5 23:51:26 | 显示全部楼层
嗨,比格尔
感谢您对本主题的兴趣。我真正想要的是像excel中的VLOOKUP一样工作的东西。我尝试了工具选项板,但没有按我希望的方式工作。如果你想一个。txt文件最好使用LISP,然后顺其自然。txt。由于我不精通LISP,也许您可以帮助我编写代码。
非常感谢。
P、 S.插入img。看起来真的很有趣。这是怎么一回事?
回复

使用道具 举报

0

主题

301

帖子

301

银币

初来乍到

Rank: 1

铜币
0
发表于 2022-7-5 23:56:07 | 显示全部楼层
塔兹,
 
你有多少种不同的A1?
 
因为它可以用一个小的Lisp和一个适合你各种名字的assoc列表来完成。
 
ymg公司
回复

使用道具 举报

18

主题

66

帖子

48

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
90
发表于 2022-7-5 23:57:33 | 显示全部楼层
嗨,ymg3
A1属性在100到150之间。
非常感谢。
回复

使用道具 举报

0

主题

301

帖子

301

银币

初来乍到

Rank: 1

铜币
0
发表于 2022-7-6 00:00:40 | 显示全部楼层
塔兹,
 
上传一张样图怎么样,也许我们能帮上忙。
 
ymg公司
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-6 00:06:25 | 显示全部楼层
对于100-150个值,您可能需要输入第一个字母作为开始,然后可以用这些值填充对话列表。
 
我仍然会使用一个单独的txt文件YMG,因为添加额外文件比编写代码更容易。
 
Image是使用Image选项的部分菜单文件,现在首选的方法是使用选项板,这些选项板可以称为lisp程序。这些图像是由MSLIDE捕获当前屏幕视图创建的。
 
返回任务
首先,弹出块名称的dcl列表,选择块或幻灯片,如图像或调色板。可以使用另一个包含块名列表的TXT文件。
第二,通过键盘或未来版本a字母dcl输入第一个字符
第三,阅读txt文件,列出A3的弹出对话框并选择答案。
 
这里编码的一个重要部分是生成一系列小的defuns,这样就不需要重复代码(readfile1stchar)(dialoglist)(alphadcl)等。最大的优点是可以在其他例程中使用。
 
 
你能提供一个包含两个块的dwg以及一个包含A1、A3的txt文件吗?比如说10个值,part561234 part564567等等。
 
我是在幻灯片上长大的,所以使用起来很容易。下面是一个调用lisp的示例。
 
  1. ***MENUGROUP=BIGALS
  2. ***POP15
  3. **CADLIB
  4.             [LIBRARY]
  5.             [->Stddwgs]
  6.             [TRENCH]$I=BIGALSTDS.TRENCH $I=*
  7.             [PIPES]$I=BIGALSTDS.PIPES $I=*
  8. ***image
  9. **TRENCH
  10. [TRENCH]
  11. [bIGALSLD(CGG101,KERB)]^C^C(openblk "P:/ACADSTDS/CIVIL STANDARDS/CGG101")
  12. [bIGALSLD(CGG102,NATURE)]^C^C(openblk "P:/ACADSTDS/CIVIL STANDARDS/CGG102")
  13. **PIPES
  14. [PIPES]
  15. [bIGALSLD(SD201,SUBSOIL)]^C^C(openblk "P:/ACADSTDS/CIVIL STANDARDS/CGG201")
  16. [bIGALSLD(SD202,FLUSHOUT)]^C^C(openblk "P:/ACADSTDS/CIVIL STANDARDS/CGG202")
  17. [bIGALSLD(SD203,CATCH)]^C^C(openblk "P:/ACADSTDS/CIVIL STANDARDS/CGG203")
回复

使用道具 举报

18

主题

66

帖子

48

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
90
发表于 2022-7-6 00:08:50 | 显示全部楼层
你好
我将上传一个dwg,其中包含一些具有属性的块,但我只能在周一早上完成。我有acad 2011。你觉得可以还是应该保存为以前的版本?
谢谢你们对这篇文章的兴趣,也谢谢你们投入的时间。
回复

使用道具 举报

0

主题

301

帖子

301

银币

初来乍到

Rank: 1

铜币
0
发表于 2022-7-6 00:12:25 | 显示全部楼层
 
我可以,但其他人可以参与到线程中。
 
ymg公司
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-6 00:14:06 | 显示全部楼层
这是一个开始,感谢Alan JT的listselect。
 
 
  1. ; menu line ^c^c^p(if (not AT:ListSelect)(load "listselect"))(load "myblockinsert")
  2. ; maybe call this code myblockinsert.lsp
  3. (setq lst (list "b1" "b2" "b3" "b54"))  ; change this to read from file your block names
  4. (if (not AT:ListSelect)(load "listselect")) ; only needed if not running from menu
  5. (setq ansback (car (AT:ListSelect "Set new blockname" "Select block" 10 10 "false" lst)))
  6. (Alert (strcat "The block picked was " ansback))
  1. (defun AT:ListSelect (title label height width multi lst / fn fo d item f)
  2. ;; List Select Dialog (Temp DCL list box selection, based on provided list)
  3. ;; title - list box title
  4. ;; label - label for list box
  5. ;; height - height of box
  6. ;; width - width of box
  7. ;; multi - selection method ["true": multiple, "false": single]
  8. ;; lst - list of strings to place in list box
  9. ;; Alan J. Thompson, 09.23.08 / 05.17.10 (rewrite)
  10. (setq fo (open (setq fn (vl-filename-mktemp "" "" ".dcl")) "w"))
  11. (foreach x (list (strcat "list_select : dialog { label = "" title ""; spacer;")
  12.                   (strcat ": list_box { label = "" label "";" "key = "lst";")
  13.                   (strcat "allow_accept = true; height = " (vl-princ-to-string height) ";")
  14.                   (strcat "width = " (vl-princ-to-string width) ";")
  15.                   (strcat "multiple_select = " multi "; } spacer; ok_cancel; }")
  16.             )
  17.    (write-line x fo)
  18. )
  19. (close fo)
  20. (new_dialog "list_select" (setq d (load_dialog fn)))
  21. (start_list "lst")
  22. (mapcar (function add_list) lst)
  23. (end_list)
  24. (setq item (set_tile "lst" "0"))
  25. (action_tile "lst" "(setq item $value)")
  26. (setq f (start_dialog))
  27. (unload_dialog d)
  28. (vl-file-delete fn)
  29. (if (= f 1)
  30.    ((lambda (s / i s l)
  31.       (while (setq i (vl-string-search " " s))
  32.         (setq l (cons (nth (atoi (substr s 1 i)) lst) l))
  33.         (setq s (substr s (+ 2 i)))
  34.       )
  35.       (reverse (cons (nth (atoi s) lst) l))
  36.     )
  37.      item
  38.    )
  39. )
  40. )
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-10 21:02 , Processed in 0.665149 second(s), 74 queries .

© 2020-2025 乐筑天下

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