乐筑天下

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

[编程交流] 请帮助LM:SetAttribu

[复制链接]

77

主题

298

帖子

232

银币

后起之秀

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

铜币
394
发表于 2022-7-5 23:15:52 | 显示全部楼层 |阅读模式
嘿伙计们,
 
我有一个例程,它由另外两个例程组成,这两个例程是由李·麦克和卡利提供的。
 
其思想是让例程从ProSteel元素(Carry的例程)中读取ProSteel属性,并将该属性分配给我的标题栏(Lee Mac的例程)中的属性值。
 
代码:
 
  1. (defun LM:SetAttributeValues ( block lst / elist item )
  2.    (if
  3.        (eq "ATTRIB"
  4.            (cdr
  5.                (assoc 0
  6.                    (setq elist
  7.                        (entget (setq block (entnext block)))
  8.                    )
  9.                )
  10.            )
  11.        )
  12.        (if (setq item (assoc (strcase (cdr (assoc 2 elist))) lst))
  13.            (progn
  14.                (if (setq elist (entmod (subst (cons 1 (cdr item)) (assoc 1 elist) elist)))
  15.                    (entupd (cdr (assoc -1 elist)))
  16.                )
  17.                (LM:SetAttributeValues block lst)
  18.            )
  19.            (LM:SetAttributeValues block lst)
  20.        )
  21.    )
  22. )
  23. (defun c:FC2TB  (/ ss num con ent3A ent3B acadapp shapeinfo CPOS NPOS acadApp)
  24. ;--------------------------Read Data From Element------------------------------
  25. (prompt "\nSelect ELEMENTS:")(princ)
  26. (setq ss (ssget "x" '((0 . "KS_SHAPE,KS_PLATE,KS_BOLT,KS_BENDSHAPE,KS_ARCSHAPE,KS_ARCPLATE,KSBENDPLATE,Ks_VolBody"))));8=Name Layer 0=ks_object
  27. (setq num (sslength ss));n° object
  28. (setq con 0)
  29. (repeat num  
  30. (setq ent3A (ssname ss con)) ;       (entsel "\nSelect BOLT: "))
  31. (setq ent3B ent3A)
  32. (setq acadapp (vlax-get-acad-object))
  33. (setq shapeinfo (vla-getinterfaceobject acadapp "PSCOMWRAPPER.Ks_ComShapeInfo"))   
  34. (vlax-invoke-method shapeinfo 'setobject  (vlax-ename->vla-object ent3A))
  35. (vlax-invoke-method shapeinfo 'getinfo);ritrova le informazioni nel database
  36. (setq shapeinfo (vla-getinterfaceobject acadApp "PSCOMWRAPPER.Ks_ComShape"))
  37. (setq shapeinfo (vlax-ename->vla-object ent3B))   
  38. (setq PSCOUNT (vlax-get-property shapeinfo 'TotalCount))  ;Position Number
  39. (vlax-release-object shapeinfo)   
  40. (setq shapeinfo nil)
  41. (setq acadApp nil)(princ)
  42. (setq con (1+ con)))
  43. ;*****************************************************************************
  44. (defun c:UPDATETITLEBLOCK ( / ss data i )
  45.    (if (setq ss (ssget "_X" '((0 . "INSERT") (66 . 1))))
  46.        (progn
  47.            (setq data
  48.               '(
  49. [b]                    ("COUNT" . PSCOUNT)[/b]
  50.                )
  51.            )                  
  52.            (repeat (setq i (sslength ss))
  53.                (LM:SetAttributeValues (ssname ss (setq i (1- i))) data)
  54.            )
  55.        )
  56.    )
  57.    (princ)
  58. )
  59. (c:UPDATETITLEBLOCK)
  60. )

 
我正在努力解决的是将PSCOUNT符号输入李·麦克的例程(代码突出显示为粗体)。
 
我只是想知道是否有人能帮我理解我错在哪里。
 
非常感谢您的帮助。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 23:22:08 | 显示全部楼层
您实际上是指属性值吗?标签是两个不同事物的属性描述/名称。
 
只需选择与块标记名称匹配的块并更新属性值。
 
还有几个问题,你的标题栏模型空间或布局在哪里也会有所不同。简单地说,如果在一个布局进入一个面纱选择“螺栓”标题栏更新非常容易。
回复

使用道具 举报

77

主题

298

帖子

232

银币

后起之秀

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

铜币
394
发表于 2022-7-5 23:33:05 | 显示全部楼层
嗨,比格尔,
 
谢谢你的回复。
 
是的,很抱歉,我指的是属性值。
 
标题栏位于模型空间中。
回复

使用道具 举报

15

主题

243

帖子

228

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
75
发表于 2022-7-5 23:38:04 | 显示全部楼层
这可能是一个问题。
如果标准确定标题栏应该在模型空间中,那么它就应该在模型空间中,
但通常情况下,几何体进入模型空间,注释性对象(如标签、图章、标题栏、引线、文本标注等)与已剪切的视口一起进入图纸空间,以包括正在使用的模型的部分。
如果你可以改变这个设置,这可能是有益的长期错误,如果你的设置不是你自己做或你自己的电话,那么请原谅我的帖子只是想提供帮助。
回复

使用道具 举报

77

主题

298

帖子

232

银币

后起之秀

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

铜币
394
发表于 2022-7-5 23:41:19 | 显示全部楼层
嗨,Bhull1985,
 
谢谢你的回复。
 
我非常感谢你的意见,但我们的协议实际上是由我们合作的办公室以及他们习惯的设置决定的。此外,我很确定(但不确定)我们使用的当前配置依赖于我们使用的ProSteel插件包。因此,不幸的是,我们可以改变的程序非常有限。
 
再次感谢。
回复

使用道具 举报

15

主题

243

帖子

228

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
75
发表于 2022-7-5 23:50:40 | 显示全部楼层
啊,好的。
那么,你为什么不公布它给你的错误是什么。
consp错误?
回复

使用道具 举报

77

主题

298

帖子

232

银币

后起之秀

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

铜币
394
发表于 2022-7-5 23:52:47 | 显示全部楼层
哈哈,如果能在原来的帖子中包含这一点,那将是一个好主意。当我开始工作时(大约11个小时后),我会把我遇到的错误发回来。
 
再次感谢各位,待续。
回复

使用道具 举报

15

主题

243

帖子

228

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
75
发表于 2022-7-6 00:00:20 | 显示全部楼层
不客气
回复

使用道具 举报

1

主题

116

帖子

115

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 00:04:23 | 显示全部楼层
目前,您的代码引用了列表,因此它没有计算PSCOUNT。注意括号前的撇号。
 
在这种情况下,你需要做的是
  1. (setq data (list (cons "COUNT" PSCOUNT)))

 
需要注意的是,PSCOUNT必须是字符串,而不是整数或实数。如果值是整数,则使用itoa进行转换,如果是实数,则使用rtos进行转换。
回复

使用道具 举报

77

主题

298

帖子

232

银币

后起之秀

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

铜币
394
发表于 2022-7-6 00:11:51 | 显示全部楼层
大家好,
 
再回来一次。
 
克林特,你的建议效果很好,非常感谢你提供的建议。我确实需要使用RTOS将PSCOUNT转换为字符串。
 
为了保存记录,我在应用Clint的解决方案之前收到的错误代码是“错误:坏DXF组:(1.PSCOUNT)”。
 
再次感谢大家的帮助和建议。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-11 00:07 , Processed in 0.584904 second(s), 72 queries .

© 2020-2025 乐筑天下

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