乐筑天下

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

[编程交流] 在块中移动属性值

[复制链接]
pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 01:54:42 | 显示全部楼层
这意味着,如果目标标记#已经被取下,程序唯一一次“碰撞”值?还是“覆盖”目标标记#处的值?
 
或者程序是否应该检测到第一个可用的目标标记?这意味着只有当存在“空值”并且需要修复时,程序才会这样做? 
顺便问一下:区块名是什么?“A$C3C6630F0”
 
这是草稿
 
编辑:这是修改后的代码
 
  1. (defun c:rvb (/ _AttFunc ss i e values vacant num)
  2. ;;;                pBe Oct262013                ;;;
  3. (defun _AttFunc  (en lst / vals v)
  4. (mapcar (function (lambda (at)
  5. (setq vals (list (vla-get-tagstring at)(vla-get-textstring at)))
  6.                  (if (and lst (setq v (assoc (car vals) lst)))
  7.                          (vla-put-textstring at (cadr v))) vals))
  8.                      (vlax-invoke (if (eq (type en) 'VLA-OBJECT)
  9.                                  en (vlax-ename->vla-object en)) 'Getattributes)
  10.         )
  11. )
  12. (defun #tonum (s1 s2 lst) (mapcar '(lambda (s)
  13.                              (vl-string-translate s1 s2 s)
  14.                            )
  15.                           lst
  16.                   ))  
  17. (setq atlst '("REV#" "R#DESC" "R#BY" "R#CHK" "R#DATE"))  
  18.         (if (setq ss (ssget "_X" '((0 . "INSERT") (66 . 1))))
  19.   (repeat (setq i (sslength ss))
  20.     (setq e (ssname ss (setq i (1- i))))
  21.     (if        (setq values (vl-remove-if-not
  22.                        '(lambda        (x)
  23.                           (setq tgnm (car x)) (vl-some
  24.                             '(lambda (y) (wcmatch tgnm y) ) atlst
  25.                           ))(_AttFunc e nil)
  26.                      )
  27.         )
  28.       (progn
  29.         (setq vacant nil)
  30.         (repeat        (setq num 7)
  31.           (if (vl-every '(lambda (p) (= (cadr (assoc p values)) "")) (#tonum "#" (itoa num) atlst))
  32.                 (setq vacant (cons num vacant))
  33.                     (if vacant
  34.                           (progn
  35.                           (_AttFunc e (mapcar '(lambda (t_ fr_)
  36.                                     (list t_ (cadr (assoc fr_ values))))
  37.                                                             (#tonum "#" (itoa (last vacant)) atlst)
  38.                                                             (#tonum "#" (itoa num) atlst)))
  39.                          (_AttFunc e  (mapcar '(lambda (y)(list y ""))
  40.                                                       (#tonum "#" (itoa num)  atlst)))
  41.                         (setq vacant (cons num vacant) vacant (vl-remove (last vacant) vacant)))
  42.                   )
  43.                   )          
  44.                   (setq num (1- num))
  45.           )
  46.         )
  47.       )
  48.     )
  49.   )(princ)
  50. )

 
编辑:这是修改后的代码
回复

使用道具 举报

15

主题

243

帖子

228

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
75
发表于 2022-7-6 01:57:48 | 显示全部楼层
 
 
对确切地我们只需将错位标签的值移动到上一版本顶部的第一个空标签。我们永远不需要以编程方式“覆盖”我们的修订信息,尽管我理解其中的困惑。
我们只需要推送放在错误行上的修订信息(通过使用lee mac的全局属性编辑器,我们可以编辑一张图纸上的版本信息,并在需要时将其应用到成百上千张图纸上。唯一的问题是,有时它会像我发布的图像中那样放置修订,因为不是一期中的所有图纸都有相同数量的先前修订。这在旧版本和新版本之间留下了一些空白修订行。)根据图片,我们将其归因于。
希望这能更好地解释这一点,并感谢您的时间和例行吨。
我一做完客户的工作就要测试一下。他们需要在图章和修订栏中更改日期,但不需要新的修订行。是时候启动Lee Mac的全局编辑器并删除它了,然后开始编写代码了。再次非常感谢!
 
哦,至于街区名称,我不能告诉你。这些块在活动图形中的名称更合适,我认为这一块具有autocad指定的名称,因为我将其从项目目录中删除,并复制到硬盘上。关于它为什么被重命名的最佳猜测。
回复

使用道具 举报

15

主题

243

帖子

228

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
75
发表于 2022-7-6 01:58:52 | 显示全部楼层
顺便说一句,令人印象深刻的常规,看起来很复杂。迫不及待地想钻研heh
回复

使用道具 举报

15

主题

243

帖子

228

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
75
发表于 2022-7-6 02:03:14 | 显示全部楼层
杰出的
这个例程对我来说效果很好,速度也很快,没有任何警报或不必要的消息!只要把错位的线路撞到正确的位置,做得好,谢谢!!!!
我欠你这个人情
回复

使用道具 举报

15

主题

243

帖子

228

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
75
发表于 2022-7-6 02:04:28 | 显示全部楼层
对于值得回复的内容,请查看以下链接:
http://forums.autodesk.com/t5/Visual-LISP-AutoLISP-and-General/Copy-attribute-from-one-tag-to-another-tag-within-same-block/m-p/4557375#M316266
回复

使用道具 举报

15

主题

243

帖子

228

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
75
发表于 2022-7-6 02:08:12 | 显示全部楼层
pBe,这是一个完全不重要的事情,只有当你完全厌倦了,并且有更多的时间,你绝对需要做一些事情,因为我真的觉得很抱歉,在你以如此巨大的方式交付之后,要求更多的东西。
....但我希望你能注释掉你的代码?
根据定义,有很多(lambda)函数很难事先知道它们在做什么。
尽管如此,我要求这样做只是因为我打算从中学习一些东西。。。。嗯,从这里学到了很多!
周末就要开始了,不要着急,如果没有人评论,我也不会抱怨。我真的很感激你能在第一时间解决这个问题。谢谢
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 02:11:20 | 显示全部楼层
以下是我的尝试:
  1. ([color=BLUE]defun[/color] c:fixblk ( [color=BLUE]/[/color] a b i s x )
  2.    ([color=BLUE]if[/color] ([color=BLUE]setq[/color] s ([color=BLUE]ssget[/color] [color=MAROON]"_:L"[/color] '((0 . [color=MAROON]"INSERT"[/color]) (66 . 1))))
  3.        ([color=BLUE]repeat[/color] ([color=BLUE]setq[/color] i ([color=BLUE]sslength[/color] s))
  4.            ([color=BLUE]mapcar[/color]
  5.               '([color=BLUE]lambda[/color] ( a b )
  6.                    ([color=BLUE]mapcar[/color] '([color=BLUE]lambda[/color] ( a b ) ([color=BLUE]vla-put-textstring[/color] ([color=BLUE]last[/color] a) ([color=BLUE]caddr[/color] b))) a b)
  7.                )
  8.                ([color=BLUE]setq[/color] a
  9.                    ([color=BLUE]vl-sort[/color]
  10.                        ([color=BLUE]mapcar[/color]
  11.                           '([color=BLUE]lambda[/color] ( x )
  12.                                ([color=BLUE]vl-remove[/color] [color=BLUE]nil[/color]
  13.                                    ([color=BLUE]mapcar[/color]
  14.                                       '([color=BLUE]lambda[/color] ( p )
  15.                                            ([color=BLUE]vl-some[/color]
  16.                                               '([color=BLUE]lambda[/color] ( a )
  17.                                                    ([color=BLUE]if[/color] ([color=BLUE]wcmatch[/color] ([color=BLUE]cadr[/color] a) p) a)
  18.                                                )
  19.                                                x
  20.                                            )
  21.                                        )
  22.                                       '([color=MAROON]"REV#"[/color] [color=MAROON]"R#DESC"[/color] [color=MAROON]"R#BY"[/color] [color=MAROON]"R#CHK"[/color] [color=MAROON]"R#DATE"[/color])
  23.                                    )
  24.                                )
  25.                            )
  26.                            (LM:groupbyfunction
  27.                                ([color=BLUE]mapcar[/color]
  28.                                   '([color=BLUE]lambda[/color] ( a )
  29.                                        ([color=BLUE]list[/color]
  30.                                            ([color=BLUE]vl-list->string[/color]
  31.                                                ([color=BLUE]vl-remove-if-not[/color] '([color=BLUE]lambda[/color] ( x ) ([color=BLUE]<[/color] 47 x 58))
  32.                                                    ([color=BLUE]vl-string->list[/color] ([color=BLUE]vla-get-tagstring[/color] a))
  33.                                                )
  34.                                            )
  35.                                            ([color=BLUE]strcase[/color] ([color=BLUE]vla-get-tagstring[/color] a))
  36.                                            ([color=BLUE]vla-get-textstring[/color] a)
  37.                                            ([color=BLUE]progn[/color] ([color=BLUE]vla-put-textstring[/color] a [color=MAROON]""[/color]) a)
  38.                                        )
  39.                                    )
  40.                                    ([color=BLUE]vl-remove-if-not[/color]
  41.                                       '([color=BLUE]lambda[/color] ( a )
  42.                                            ([color=BLUE]wcmatch[/color] ([color=BLUE]strcase[/color] ([color=BLUE]vla-get-tagstring[/color] a))
  43.                                                [color=MAROON]"REV#,R#DESC,R#BY,R#CHK,R#DATE"[/color]
  44.                                            )
  45.                                        )
  46.                                        ([color=BLUE]vlax-invoke[/color]
  47.                                            ([color=BLUE]vlax-ename->vla-object[/color] ([color=BLUE]ssname[/color] s ([color=BLUE]setq[/color] i ([color=BLUE]1-[/color] i))))
  48.                                            'getattributes
  49.                                        )
  50.                                    )
  51.                                )
  52.                                ([color=BLUE]lambda[/color] ( a b ) ([color=BLUE]=[/color] ([color=BLUE]car[/color] a) ([color=BLUE]car[/color] b)))
  53.                            )
  54.                        )
  55.                       '([color=BLUE]lambda[/color] ( a b ) ([color=BLUE]>[/color] ([color=BLUE]caar[/color] a) ([color=BLUE]caar[/color] b)))
  56.                    )
  57.                )
  58.                ([color=BLUE]vl-remove-if[/color] '([color=BLUE]lambda[/color] ( x ) ([color=BLUE]vl-every[/color] '([color=BLUE]lambda[/color] ( y ) ([color=BLUE]=[/color] [color=MAROON]""[/color] ([color=BLUE]caddr[/color] y))) x)) a)
  59.            )
  60.        )
  61.    )
  62.    ([color=BLUE]princ[/color])
  63. )
  64. [color=GREEN];; Group By Function  -  Lee Mac[/color]
  65. [color=GREEN];; Groups items considered equal by a given predicate function[/color]
  66. ([color=BLUE]defun[/color] LM:groupbyfunction ( lst fun [color=BLUE]/[/color] tmp1 tmp2 x1 )
  67.    ([color=BLUE]if[/color] ([color=BLUE]setq[/color] x1 ([color=BLUE]car[/color] lst))
  68.        ([color=BLUE]progn[/color]
  69.            ([color=BLUE]foreach[/color] x2 ([color=BLUE]cdr[/color] lst)
  70.                ([color=BLUE]if[/color] (fun x1 x2)
  71.                    ([color=BLUE]setq[/color] tmp1 ([color=BLUE]cons[/color] x2 tmp1))
  72.                    ([color=BLUE]setq[/color] tmp2 ([color=BLUE]cons[/color] x2 tmp2))
  73.                )
  74.            )
  75.            ([color=BLUE]cons[/color] ([color=BLUE]cons[/color] x1 ([color=BLUE]reverse[/color] tmp1)) (LM:groupbyfunction ([color=BLUE]reverse[/color] tmp2) fun))
  76.        )
  77.    )
  78. )
  79. ([color=BLUE]vl-load-com[/color]) ([color=BLUE]princ[/color])

快速演示:
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 02:13:56 | 显示全部楼层
 
不客气,很高兴我能帮上忙
 
 
我稍后再谈,伙计,我会修改代码以匹配LMs帖子
 
 
非常好的LM。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 02:18:12 | 显示全部楼层
干杯,帕特里克!
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 02:20:04 | 显示全部楼层
 
更新邮政编码#11
 
附件是代码的“注释”版本。
 
玩得开心,如果你有任何问题,喊出来
拆下真空箱。LSP
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-10 21:16 , Processed in 0.504047 second(s), 81 queries .

© 2020-2025 乐筑天下

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