乐筑天下

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

[编程交流] 创建属性值fr

[复制链接]

6

主题

47

帖子

41

银币

初来乍到

Rank: 1

铜币
30
发表于 2022-7-5 18:41:11 | 显示全部楼层 |阅读模式
我试图使用指定的前缀(用户定义的变量)和文件名构建一个字符串。然后我想将字符串设置为变量,并将其作为新值传递给属性。以下是目前为止的一些代码:
 
(if(setq ss(ssget“X”'((0。“insert”)(2。“Drawing\u Sheet_*,”)))
(程序
(while(>(sslength ss)0)
(setq ent(ssname ss 0))
(ssdel ent ss)
 
(setq pre“100-”)
(setq图纸(substr(getvar“dwgname”)1(-strlen(getvar“dwgname”))4)
(setq绘图名称(strcat预绘图))
 
(ATT:REPLACE-ent’(;ATT:REPLACE-works,在上面更大的函数中定义
 
(“图纸编号”。“图纸名称”)
 
)
 
问题是我还不够成熟,无法理解如何在这里传递变量。当我试图将drawingname传递给属性“Drawing\u Number”的属性值时,我没有得到预期的连接字符串。它应该是100——“文件名”,但我显然在传递变量时出错了。显然,唯一会发生的事情是,值会从字面上变成drawingname,而不是变量drawingname的值。
 
如果我删除“drawingname”中的引号,我会得到错误:错误的DXF组(1。drawingname)。这很简单,我能感觉到。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 19:07:06 | 显示全部楼层
一个小小的建议,而不是担心从选择集中删除只需滚动所有项目。
 
  1. (if (setq ss (ssget "X" '((0 . "insert")(2 . "Drawing_Sheet_*,"))))
  2. (progn
  3. (setq x -1)
  4. (while (setq ent (ssname ss (setq x (+ x 1))))
  5. ;my replacement code example
  6. (setq oldtag1 "Drawing_number") ;attribute tag name
  7. (foreach att (vlax-invoke (vlax-ename->vla-object (ssname SS x )) 'getattributes)
  8.        (if (= oldtag1 (strcase (vla-get-tagstring att)))
  9.        (vla-put-textstring att drawingname)
  10.        ) ; end if
  11. )

 
 
[code][/code]
回复

使用道具 举报

6

主题

47

帖子

41

银币

初来乍到

Rank: 1

铜币
30
发表于 2022-7-5 19:22:56 | 显示全部楼层
比加尔
 
完美极了,很有魅力。我更喜欢你的视觉lisp而不是我的ATT:REPLACE。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 19:43:00 | 显示全部楼层
 
由于您已经有了获取实体名称的变量ent,因此无需再次重新检索实体名称
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-12 13:38 , Processed in 0.439758 second(s), 60 queries .

© 2020-2025 乐筑天下

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