乐筑天下

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

[编程交流] 选择块,获取“标记”值t

[复制链接]

3

主题

14

帖子

11

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-5 17:51:56 | 显示全部楼层 |阅读模式
你好
 
我正在尝试“创建”一个lisp,它可以执行以下操作:
 
1º选择标记为“DD”的块并获取值
2º检查“表”中的值:
 
“DD”“半径”
8        1
10        2
12        3
16        4
20        8
25        10
32        13
 
3º选择多段线,并使用在点“2º”中获得的“半径”进行圆角。
 
 
我已经为我在这个论坛中找到的“3º”点编写了一些代码:
 
  1. (defun c:MPL_Fillet (/ ss en rad n)
  2. (setq rad (getvar "FILLETRAD"))
  3. (initget (+ 1 4 8 64 128))
  4. (if (/= ""
  5.     (setq rad
  6.        (getdist (strcat "Enter fillet radius <" (rtos rad) ">: "))
  7.     ) ;_ end of setq
  8.      ) ;_ end of =
  9.    (setvar "FILLETRAD" rad)
  10. ) ;_ end of if
  11. (prompt "\nSelect the polylines you'd whish to fillet: ")
  12. (setq    ss (ssget '((0 . "LWPOLYLINE,POLYLINE")))
  13.    n  0
  14. ) ;_ end of setq
  15. (while (< n (sslength ss))
  16.    (setq en (ssname ss n))
  17.    (command "_FILLET" "P" en)
  18.    (setq n (1+ n))
  19. ) ;_ end of while
  20. (princ)
  21. ) ;_ end of

 
但是,不是输入半径,而是“表”中对应的半径。
 
谢谢
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 18:08:43 | 显示全部楼层
试试这个
 
  1. (setq obj (vlax-ename->vla-object(car (entsel "pick block")))
  2. (foreach att (vlax-invoke obj 'getattributes)
  3. (if (= "DD" (vla-get-tagstring att))
  4. (setq dd (vla-get-textstring att))
  5. )
  6. )
  7. (if (= dd nil)
  8. (progn
  9. (alert "Block has no DD att will exit")
  10. (exit)
  11. )
  12. )
  13. (cond
  14. ((= dd "8")(setvar "filletrad" 1))
  15. ((= dd "10")(setvar "filletrad" 2))
  16. ((= dd "12")(setvar "filletrad" 3))
  17. )
  18. (c:mpl_fillet)
回复

使用道具 举报

3

主题

14

帖子

11

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-5 18:16:51 | 显示全部楼层
谢谢BIGAL,但我发现了这个错误:
 
“错误:输入列表格式不正确”
回复

使用道具 举报

4

主题

68

帖子

69

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-5 18:37:11 | 显示全部楼层
 
添加此括号
在您的代码中,这部分应该不是必需的,因为“filletrad”是由BIGAL的cond语句设置的:
 
  1. (initget (+ 1 4 8 64 128))   
  2. (if (/= ""      
  3. (setq rad (getdist (strcat "Enter fillet radius <" (rtos rad) ">: "))) ;_ end of setq       )
  4. ;_ end of =  (setvar "FILLETRAD" rad)   ) ;_ end of if
HTH
沃尔夫冈
回复

使用道具 举报

3

主题

14

帖子

11

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-5 18:44:29 | 显示全部楼层
谢谢大家,
 
它正在工作
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 19:02:26 | 显示全部楼层
谢谢你的计划,复制和粘贴有时只是一个括号。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-12 23:49 , Processed in 0.436399 second(s), 64 queries .

© 2020-2025 乐筑天下

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