乐筑天下

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

[编程交流] LISP-如果特定,则执行例程

[复制链接]

1

主题

1

帖子

0

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 08:40:04 | 显示全部楼层 |阅读模式
我有一个例程,根据块名用另一个块替换一个块。我需要帮助,使其仅在找到的块中的一个属性中找到特定的文本字符串时运行。
有人能帮忙吗?谢谢
  1. (defun c:name ()
  2. (setvar "attreq" 0)
  3. (setq ssblocks (ssget "x" '((0 . "INSERT"))))
  4. (if ssblocks
  5.    (progn
  6.      (setq lstblockmap
  7.         (txtfile2lst
  8.           "C:\\path\\filename.txt"
  9.         )
  10.      )
  11.      (setq lstblocks (sel2lst ssblocks))
  12.      (foreach enblock lstblocks
  13.    (setq strblockname
  14.           (car
  15.         (getval (setq stroldname (strcase (getval 2 enblock)))
  16.             lstblockmap
  17.         )
  18.           )
  19.    )
  20.    (if strblockname
  21.      (progn
  22.        (prompt (strcat "****** " strblockname " found.******"))
  23.        (progn
  24. ;;;;;Do more code
  25.        )   
  26.      )
  27.      (progn
  28.        (prompt "No block definition, Skipping...")
  29.      )
  30.    )
  31.      )
  32.    )
  33. )
  34. )
回复

使用道具 举报

7

主题

143

帖子

136

银币

初来乍到

Rank: 1

铜币
36
发表于 2022-7-6 09:15:51 | 显示全部楼层
我们都被指示,在我们帮助你之前,你必须阅读这篇文章。。。
 
http://www.cadtutor.net/forum/showthread.php?9184-代码发布指南
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 09:20:31 | 显示全部楼层
(if(成员str(attb字符串检索子的结果))
(做你的事)
(msg)
)
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 09:48:04 | 显示全部楼层
我的版本。。。
 
  1. (defun c:TesT (/ blks b found st i sn n e)
  2. ;;; Tharwat 19. Nov. 2011 ;;;
  3. (if
  4.    (and
  5.      (setq blks (ssget "_x" '((0 . "INSERT") (66 . 1))))
  6.      (setq b (getstring t "\n Enter Name of Block to be replaced :"))
  7.      (setq found (tblsearch "BLOCK" b))
  8.      (setq st (getstring t "\n Enter Attribute string :"))
  9.    )
  10.     (repeat (setq i (sslength blks))
  11.       (setq sn (ssname blks (setq i (1- i))))
  12.       (setq n (entnext sn))
  13.       (while
  14.         (not
  15.           (eq (cdr (assoc 0 (setq e (entget n))))
  16.               "SEQEND"
  17.           )
  18.         )
  19.          (if (and (eq (cdr (assoc 0 e)) "ATTRIB")
  20.                   (eq (cdr (assoc 1 e)) st)
  21.              )
  22.            (progn (entmakex (list '(0 . "INSERT")
  23.                                   (assoc 10 (entget sn))
  24.                                   (cons 2 b)
  25.                                   '(41 . 1.)
  26.                                   '(42 . 1.)
  27.                                   '(43 . 1.)
  28.                             )
  29.                   )
  30.                   (entdel sn)
  31.            )
  32.          )
  33.          (setq n (entnext n))
  34.       )
  35.     )
  36.     (cond (
  37.            (not blks)
  38.            (princ
  39.              "\n You do not have Attributed Blocks in this drawing !!"
  40.            )
  41.           )
  42.           (
  43.            (not found)
  44.            (princ "\n Name of block is not found in this drawing !!")
  45.           )
  46.     )
  47. )
  48. (princ)
  49. )
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-7 08:58 , Processed in 0.367389 second(s), 60 queries .

© 2020-2025 乐筑天下

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