乐筑天下

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

[编程交流] LISP增加唯一属性

[复制链接]

2

主题

13

帖子

10

银币

初来乍到

Rank: 1

铜币
12
发表于 2022-7-6 08:36:00 | 显示全部楼层 |阅读模式
大家好!
 
作为我的第一篇帖子,我将发表一篇文章。我搜索了又搜索,但找不到有助于解决问题的lisp或信息。也许我可以在这里找到一些帮助——即使我已经变灰了,我仍然会很感激。
 
那么,我们开始吧。。。
 
我将属性块插入到我的图纸中,列出零件号、型号等。除了这些属性外,还有另一个标记,它是一个递增的数字(在我们的物料清单中使用)。如果有两个相同的部件(即相同的型号),则增量数量需要相同;如果零件不同,则需要使用下一个序列号。
 
手工操作不仅耗时,而且往往非常错误。所以我想做一个lisp例程,我可以运行它来自动为这些块编号。我想我可以插入我的块(或重复使用它们、复制等),而不用太担心数字标记,然后在最后运行lisp,为每个唯一的块提供数字。如果已经存在的数字能够保持不变(我们一直在重复使用图形),那就太好了。
 
 
块:
博姆塔格
标签:
项目(增量编号)
型号(型号)
零件(零件号)
 
我一点都不懂Lisp程序,所以我不知道我自己能做到,但也许朝着正确的方向轻推一下可以让我不浪费很多时间。有什么想法吗?
 
列一个区块列表,对其进行处理,给出if-then语句,必要时重新编号,移动到下一个区块。易于输入,难以编程。免费渲染给任何获得获奖代码的人。
 
非常感谢,非常感谢您的帮助。
 
-斯图
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 08:40:15 | 显示全部楼层
欢迎来到论坛stu
 
您所要求的听起来很容易编码,您希望它仅适用于BOMTAG块吗?
 
项目是块的第一个属性吗?
是否通过复制和粘贴导入块?
这意味着型号alrady有一个值,或者
为模型标记插入具有常量属性的块?
回复

使用道具 举报

VVA

1

主题

308

帖子

308

银币

初来乍到

Rank: 1

铜币
8
发表于 2022-7-6 08:43:05 | 显示全部楼层
附着带有示例的dwg文件
回复

使用道具 举报

2

主题

13

帖子

10

银币

初来乍到

Rank: 1

铜币
12
发表于 2022-7-6 08:48:35 | 显示全部楼层
谢谢你的回复。
 
只有BOMTAG?不完全一样,有几乎相同的块称为BOMTAG\u TR、BOMTAG\u T、BOMTAG\u TL、BOMTAG\u L、BOMTAG\u BL、BOMTAG\u B、BOMTAG\u BR、BOMTAG\u R。它们用于从块中引出的引线。如果我有选择的话,我不会那样做。
 
是的,项是第一个属性,它们通常已经从另一个作业中存在(我们从另一个作业复制绘图并重新使用)。我们将只在图形中复制,因此所有标记通常都是填充的(一些标记将永远保持为空,因为没有确切的型号),并且没有恒定的字段。
 
再次感谢!
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 08:50:13 | 显示全部楼层
那么它的复制和粘贴?或通过“插入”从另一个图形导入?
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 08:55:04 | 显示全部楼层
有时用图片会比文字清晰得多,所以如果你上传一张图片,展示前后会受到大家的高度赞赏。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 08:56:54 | 显示全部楼层
你好,stusic,
 
首先,欢迎来到CADTutor
 
如果我理解正确(并使用了您描述的正确属性标记),请尝试以下操作:
 
  1. [color=GREEN];; Dependent Attribute Numbering  -  Lee Mac  -  2011  -  www.lee-mac.com[/color]
  2. [color=GREEN];; Assigns a number to a specific attribute whose 'dependent' attribute is[/color]
  3. [color=GREEN];; the same for all attributes with the same number.[/color]
  4. ([color=BLUE]defun[/color] c:AttNum ( [color=BLUE]/[/color] att blk dep inc itm lst num obj sel tmp val )
  5.    ([color=BLUE]setq[/color] blk [color=MAROON]"BOMTAG"[/color] [color=GREEN];; Block Name[/color]
  6.          num [color=MAROON]"ITEM"[/color]   [color=GREEN];; Numbering Tag[/color]
  7.          dep [color=MAROON]"MODEL"[/color]  [color=GREEN];; Numbering Dependent Tag[/color]
  8.    )
  9.    ([color=BLUE]mapcar[/color] '[color=BLUE]set[/color] '(blk num dep) ([color=BLUE]mapcar[/color] '[color=BLUE]strcase[/color] ([color=BLUE]list[/color] blk num dep)))
  10.    ([color=BLUE]if[/color]
  11.        ([color=BLUE]setq[/color] sel
  12.            ([color=BLUE]ssget[/color] [color=MAROON]"_X"[/color]
  13.                ([color=BLUE]list[/color]
  14.                   '(0 . [color=MAROON]"INSERT"[/color])
  15.                   '(66 . 1)
  16.                    ([color=BLUE]cons[/color] 2 ([color=BLUE]strcat[/color] [color=MAROON]"`*U*,"[/color] blk))
  17.                    ([color=BLUE]cons[/color] 410 ([color=BLUE]getvar[/color] 'CTAB))
  18.                )
  19.            )
  20.        )
  21.        ([color=BLUE]progn[/color]
  22.            ([color=BLUE]repeat[/color] ([color=BLUE]setq[/color] inc ([color=BLUE]sslength[/color] sel))
  23.                ([color=BLUE]setq[/color] obj ([color=BLUE]vlax-ename->vla-object[/color] ([color=BLUE]ssname[/color] sel ([color=BLUE]setq[/color] inc ([color=BLUE]1-[/color] inc)))))
  24.                ([color=BLUE]if[/color]
  25.                    ([color=BLUE]or[/color]
  26.                        ([color=BLUE]null[/color] ([color=BLUE]vlax-property-available-p[/color] obj 'effectivename))
  27.                        ([color=BLUE]eq[/color] blk ([color=BLUE]strcase[/color] ([color=BLUE]vla-get-effectivename[/color] obj)))
  28.                    )
  29.                    ([color=BLUE]progn[/color]
  30.                        ([color=BLUE]setq[/color] tmp
  31.                            ([color=BLUE]mapcar[/color]
  32.                                ([color=BLUE]function[/color]
  33.                                    ([color=BLUE]lambda[/color] ( att )
  34.                                        ([color=BLUE]cons[/color] ([color=BLUE]strcase[/color] ([color=BLUE]vla-get-tagstring[/color] att)) att)
  35.                                    )
  36.                                )
  37.                                ([color=BLUE]vlax-invoke[/color] obj 'getattributes)
  38.                            )
  39.                        )
  40.                        ([color=BLUE]if[/color]
  41.                            ([color=BLUE]and[/color]
  42.                                ([color=BLUE]setq[/color] val ([color=BLUE]cdr[/color] ([color=BLUE]assoc[/color] dep tmp)))
  43.                                ([color=BLUE]setq[/color] val ([color=BLUE]vla-get-textstring[/color] val))
  44.                                ([color=BLUE]setq[/color] att ([color=BLUE]cdr[/color] ([color=BLUE]assoc[/color] num tmp)))
  45.                            )                           
  46.                            ([color=BLUE]if[/color] ([color=BLUE]setq[/color] itm ([color=BLUE]assoc[/color] val lst))
  47.                                ([color=BLUE]setq[/color] lst ([color=BLUE]subst[/color] ([color=BLUE]vl-list*[/color] val att ([color=BLUE]cdr[/color] itm)) itm lst))
  48.                                ([color=BLUE]setq[/color] lst ([color=BLUE]cons[/color]  ([color=BLUE]list[/color] val att) lst))
  49.                            )
  50.                        )
  51.                    )
  52.                )
  53.            )
  54.            ([color=BLUE]setq[/color] inc 1)
  55.            ([color=BLUE]foreach[/color] grp ([color=BLUE]vl-sort[/color] lst ([color=BLUE]function[/color] ([color=BLUE]lambda[/color] ( a b ) ([color=BLUE]<[/color] ([color=BLUE]car[/color] a) ([color=BLUE]car[/color] b)))))
  56.                ([color=BLUE]foreach[/color] att ([color=BLUE]cdr[/color] grp)
  57.                    ([color=BLUE]vla-put-textstring[/color] att ([color=BLUE]itoa[/color] inc))
  58.                )
  59.                ([color=BLUE]setq[/color] inc ([color=BLUE]1+[/color] inc))
  60.            )
  61.        )
  62.        ([color=BLUE]princ[/color] ([color=BLUE]strcat[/color] [color=MAROON]"\nNo "[/color] blk [color=MAROON]" blocks found in this layout."[/color]))
  63.    )
  64.    ([color=BLUE]princ[/color])
  65. )
  66. ([color=blue]vl-load-com[/color]) ([color=blue]princ[/color])

 
如果是剪切粘贴。但一次只能处理一个街区
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 08:59:14 | 显示全部楼层
附件是一幅典型绘画的绝佳范例。注释气泡(1、2、5、8和30)是包含需要更改的信息的块(BOM块与这种情况完全相同,只是块名称不同,因为这是上载的图形,我将使用这些块作为示例)。1和2是不同的零件/型号(隐藏属性),因此它们在注释编号中需要不同的编号。除了顺序错误外,编号为8的两个气泡都是正确的,因为它们具有相同的零件/型号。但是,5和30不正确,因为它们的编号不同,但零件/型号相同。lisp应该保留1、2和8,并将5和30更改为相同的数字,最好是3(如果不使用)。
 
我们将按原样使用这幅画。由于需要新的标记,我们将复制一个旧的标记(1、2、5、8或30)并修改属性。复制,是的,但仅限于Autocad内部。
 
我真的很感谢你们的帮助!
块标记示例。图纸
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 09:03:12 | 显示全部楼层
你试过我的密码吗?
回复

使用道具 举报

2

主题

13

帖子

10

银币

初来乍到

Rank: 1

铜币
12
发表于 2022-7-6 09:07:01 | 显示全部楼层
我想让标签8有不同的零件号,但相同的标签(项目)号。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-7 09:27 , Processed in 1.468797 second(s), 83 queries .

© 2020-2025 乐筑天下

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