乐筑天下

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

[编程交流] 两个不同的块值Com

[复制链接]

6

主题

19

帖子

7

银币

初来乍到

Rank: 1

铜币
38
发表于 2022-7-5 15:59:35 | 显示全部楼层 |阅读模式
我有点Lisp程序,但这是我无法做到的,所以我希望有人能帮助我。我一直在寻找一种方法来做到以下几点:
[列表]
  • 选择第一个块(SL Dev)并获取属性标记ID_1的值(对于多个选择保持不变)
  • 选择第二个块(SL Con)并获取_1中属性标记的值
  • 将两个值放置在(ID_1 IN_1)之间的空格中,并将新值放回第二个块(SL Con),属性标记在附近
  • 然后,我想通过单击多个SL Con块并使用其在_1中的标记与原始SL_DEV tag ID_1结合来继续此过程
    [/列表]
     
    对我来说似乎很棘手,但任何帮助都将不胜感激
  • 回复

    使用道具 举报

    5

    主题

    1334

    帖子

    1410

    银币

    限制会员

    铜币
    -20
    发表于 2022-7-5 16:08:25 | 显示全部楼层
    未经测试。。。
     
    1. (defun c:ID_1-sour+IN_1-dest->NEAR-dest ( / s b1 sourval1 b2 sourval2 destval )
    2. (vl-load-com)
    3. (prompt "\nPick (SL-Dev) block reference...")
    4. (setq s (ssget "_+.:E:S" '((0 . "INSERT") (66 . 1))))
    5. (while (or (not s) (vlax-property-available-p (setq b1 (vlax-ename->vla-object (ssname s 0))) 'Path) (/= (vla-get-effectivename b1) "SL-Dev"))
    6.    (prompt "\nMissed or wrong block reference pick or picked xref... Try picking (SL-Dev) block reference again...")
    7.    (setq s (ssget "_+.:E:S" '((0 . "INSERT") (66 . 1))))
    8. )
    9. (foreach att (append (vlax-invoke b1 'getattributes) (vlax-invoke b1 'getstaticattributes))
    10.    (if (= (vla-get-tagstring att) "ID_1")
    11.      (setq sourval1 (vla-get-textstring att))
    12.    )
    13. )
    14. (while t
    15.    (prompt "\nPick (SL-Con) block reference... ESC to terminate and finish picking (SL-Con) block references...")
    16.    (setq s (ssget "_+.:E:S:L" '((0 . "INSERT") (66 . 1))))
    17.    (while (or (not s) (vlax-property-available-p (setq b2 (vlax-ename->vla-object (ssname s 0))) 'Path) (/= (vla-get-effectivename b2) "SL-Con"))
    18.      (prompt "\nMissed or wrong block reference pick or picked xref... Try picking (SL-Con) block reference again...")
    19.      (setq s (ssget "_+.:E:S:L" '((0 . "INSERT") (66 . 1))))
    20.    )
    21.    (foreach att (append (vlax-invoke b2 'getattributes) (vlax-invoke b2 'getstaticattributes))
    22.      (if (= (vla-get-tagstring att) "IN_1")
    23.        (setq sourval2 (vla-get-textstring att))
    24.      )
    25.    )
    26.    (setq destval (strcat sourval1 " " sourval2))
    27.    (foreach att (append (vlax-invoke b2 'getattributes) (vlax-invoke b2 'getstaticattributes))
    28.      (if (= (vla-get-tagstring att) "NEAR")
    29.        (vla-put-textstring att destval)
    30.      )
    31.    )
    32. )
    33. (princ)
    34. )

     
    给你图片它应该是什么样子。。。
    回复

    使用道具 举报

    6

    主题

    19

    帖子

    7

    银币

    初来乍到

    Rank: 1

    铜币
    38
    发表于 2022-7-5 16:12:12 | 显示全部楼层
    正如我说的那样。。。
     
    然而,我确实加载并运行了它,这是我在选择SL-DEV块后得到的结果(如果这有什么不同的话,它是动态的)。
     
    拾取(SL Dev)块参考。。。
    选择对象:
    ; 错误:ActiveX服务器返回错误:未知名称:“GETSTATICATTRIBUTES”
    回复

    使用道具 举报

    5

    主题

    1334

    帖子

    1410

    银币

    限制会员

    铜币
    -20
    发表于 2022-7-5 16:23:18 | 显示全部楼层
    替换(append(vlax invoke[b1/b2]'getattributes)(vlax invoke[b1/b2]'getstaticattributes))。。。在发布的代码中,所有情况下都会出现(append(vlax invoke[b1/b2]'getattributes)(vlax invoke[b1/b2]'getconstantattributes))。。。我没有时间,你必须独自调试它。。。
    回复

    使用道具 举报

    114

    主题

    1万

    帖子

    1万

    银币

    中流砥柱

    Rank: 25

    铜币
    543
    发表于 2022-7-5 16:27:33 | 显示全部楼层
    请尝试以下未经测试的代码:
    1. ([color=BLUE]defun[/color] c:combatt ( [color=BLUE]/[/color] ent id1 idx in1 sel )
    2.    ([color=BLUE]while[/color]
    3.        ([color=BLUE]progn[/color] ([color=BLUE]setvar[/color] 'errno 0) ([color=BLUE]setq[/color] ent ([color=BLUE]car[/color] ([color=BLUE]entsel[/color] [color=MAROON]"\nSelect SL-DEV block <exit>: "[/color])))
    4.            ([color=BLUE]cond[/color]
    5.                (   ([color=BLUE]=[/color] 7 ([color=BLUE]getvar[/color] 'errno))
    6.                    ([color=BLUE]princ[/color] [color=MAROON]"\nMissed, try again."[/color])
    7.                )
    8.                (   ([color=BLUE]null[/color] ent) [color=BLUE]nil[/color])
    9.                (   ([color=BLUE]/=[/color] [color=MAROON]"INSERT"[/color] ([color=BLUE]cdr[/color] ([color=BLUE]assoc[/color] 0 ([color=BLUE]entget[/color] ent))))
    10.                    ([color=BLUE]princ[/color] [color=MAROON]"\nSelected object is not a block."[/color])
    11.                )
    12.                (   ([color=BLUE]/=[/color] [color=MAROON]"SL-DEV"[/color] ([color=BLUE]strcase[/color] (LM:al-effectivename ent)))
    13.                    ([color=BLUE]princ[/color] [color=MAROON]"\nSelected block is not an "SL-DEV" block."[/color])
    14.                )
    15.                (   ([color=BLUE]not[/color] ([color=BLUE]setq[/color] id1 (LM:getattributevalue ent [color=MAROON]"ID_1"[/color])))
    16.                    ([color=BLUE]princ[/color] [color=MAROON]"\nBlock does not contain "ID_1" attribute."[/color])
    17.                )
    18.            )
    19.        )
    20.    )
    21.    ([color=BLUE]if[/color]
    22.        ([color=BLUE]and[/color] id1
    23.            ([color=BLUE]setq[/color] sel
    24.                ([color=BLUE]ssget[/color] [color=MAROON]"_:L"[/color]
    25.                    ([color=BLUE]list[/color] '(0 . [color=MAROON]"INSERT"[/color]) '(66 . 1)
    26.                        ([color=BLUE]cons[/color] 2
    27.                            ([color=BLUE]apply[/color] '[color=BLUE]strcat[/color]
    28.                                ([color=BLUE]cons[/color] [color=MAROON]"SL-CON"[/color]
    29.                                    ([color=BLUE]mapcar[/color] '([color=BLUE]lambda[/color] ( x ) ([color=BLUE]strcat[/color] [color=MAROON]",`"[/color] x))
    30.                                        (LM:getanonymousreferences [color=MAROON]"SL-CON"[/color])
    31.                                    )
    32.                                )
    33.                            )
    34.                        )
    35.                    )
    36.                )
    37.            )
    38.        )
    39.        ([color=BLUE]repeat[/color] ([color=BLUE]setq[/color] idx ([color=BLUE]sslength[/color] sel))
    40.            ([color=BLUE]if[/color] ([color=BLUE]setq[/color] ent ([color=BLUE]ssname[/color] sel ([color=BLUE]setq[/color] idx ([color=BLUE]1-[/color] idx)))
    41.                      in1 (LM:getattributevalue ent [color=MAROON]"IN_1"[/color])
    42.                )
    43.                (LM:setattributevalue ent [color=MAROON]"NEAR"[/color] ([color=BLUE]strcat[/color] id1 in1))
    44.            )
    45.        )
    46.    )
    47.    ([color=BLUE]princ[/color])
    48. )
    49. [color=GREEN];; Get Anonymous References  -  Lee Mac[/color]
    50. [color=GREEN];; Returns the names of all anonymous references of a block.[/color]
    51. [color=GREEN];; blk - [str] Block name/wildcard pattern for which to return anon. references[/color]
    52. ([color=BLUE]defun[/color] LM:getanonymousreferences ( blk [color=BLUE]/[/color] ano def lst rec ref )
    53.    ([color=BLUE]setq[/color] blk ([color=BLUE]strcase[/color] blk))
    54.    ([color=BLUE]while[/color] ([color=BLUE]setq[/color] def ([color=BLUE]tblnext[/color] [color=MAROON]"block"[/color] ([color=BLUE]null[/color] def)))
    55.        ([color=BLUE]if[/color]
    56.            ([color=BLUE]and[/color] ([color=BLUE]=[/color] 1 ([color=BLUE]logand[/color] 1 ([color=BLUE]cdr[/color] ([color=BLUE]assoc[/color] 70 def))))
    57.                ([color=BLUE]setq[/color] rec
    58.                    ([color=BLUE]entget[/color]
    59.                        ([color=BLUE]cdr[/color]
    60.                            ([color=BLUE]assoc[/color] 330
    61.                                ([color=BLUE]entget[/color]
    62.                                    ([color=BLUE]tblobjname[/color] [color=MAROON]"block"[/color]
    63.                                        ([color=BLUE]setq[/color] ano ([color=BLUE]cdr[/color] ([color=BLUE]assoc[/color] 2 def)))
    64.                                    )
    65.                                )
    66.                            )
    67.                        )
    68.                    )
    69.                )
    70.            )
    71.            ([color=BLUE]while[/color]
    72.                ([color=BLUE]and[/color]
    73.                    ([color=BLUE]not[/color] ([color=BLUE]member[/color] ano lst))
    74.                    ([color=BLUE]setq[/color] ref ([color=BLUE]assoc[/color] 331 rec))
    75.                )
    76.                ([color=BLUE]if[/color]
    77.                    ([color=BLUE]and[/color]
    78.                        ([color=BLUE]entget[/color] ([color=BLUE]cdr[/color] ref))
    79.                        ([color=BLUE]wcmatch[/color] ([color=BLUE]strcase[/color] (LM:al-effectivename ([color=BLUE]cdr[/color] ref))) blk)
    80.                    )
    81.                    ([color=BLUE]setq[/color] lst ([color=BLUE]cons[/color] ano lst))
    82.                )
    83.                ([color=BLUE]setq[/color] rec ([color=BLUE]cdr[/color] ([color=BLUE]member[/color] ([color=BLUE]assoc[/color] 331 rec) rec)))
    84.            )
    85.        )
    86.    )
    87.    ([color=BLUE]reverse[/color] lst)
    88. )
    89.                        
    90. [color=GREEN];; Effective Block Name  -  Lee Mac[/color]
    91. [color=GREEN];; ent - [ent] Block Reference entity[/color]
    92. ([color=BLUE]defun[/color] LM:al-effectivename ( ent [color=BLUE]/[/color] blk rep )
    93.    ([color=BLUE]if[/color] ([color=BLUE]wcmatch[/color] ([color=BLUE]setq[/color] blk ([color=BLUE]cdr[/color] ([color=BLUE]assoc[/color] 2 ([color=BLUE]entget[/color] ent)))) [color=MAROON]"`**"[/color])
    94.        ([color=BLUE]if[/color]
    95.            ([color=BLUE]and[/color]
    96.                ([color=BLUE]setq[/color] rep
    97.                    ([color=BLUE]cdadr[/color]
    98.                        ([color=BLUE]assoc[/color] -3
    99.                            ([color=BLUE]entget[/color]
    100.                                ([color=BLUE]cdr[/color]
    101.                                    ([color=BLUE]assoc[/color] 330
    102.                                        ([color=BLUE]entget[/color]
    103.                                            ([color=BLUE]tblobjname[/color] [color=MAROON]"block"[/color] blk)
    104.                                        )
    105.                                    )
    106.                                )
    107.                               '([color=MAROON]"acdbblockrepbtag"[/color])
    108.                            )
    109.                        )
    110.                    )
    111.                )
    112.                ([color=BLUE]setq[/color] rep ([color=BLUE]handent[/color] ([color=BLUE]cdr[/color] ([color=BLUE]assoc[/color] 1005 rep))))
    113.            )
    114.            ([color=BLUE]setq[/color] blk ([color=BLUE]cdr[/color] ([color=BLUE]assoc[/color] 2 ([color=BLUE]entget[/color] rep))))
    115.        )
    116.    )
    117.    blk
    118. )
    119. [color=GREEN];; Get Attribute Value  -  Lee Mac[/color]
    120. [color=GREEN];; Returns the value held by the specified tag within the supplied block, if present.[/color]
    121. [color=GREEN];; blk - [ent] Block (Insert) Entity Name[/color]
    122. [color=GREEN];; tag - [str] Attribute TagString[/color]
    123. [color=GREEN];; Returns: [str] Attribute value, else nil if tag is not found.[/color]
    124. ([color=BLUE]defun[/color] LM:getattributevalue ( blk tag [color=BLUE]/[/color] enx )
    125.    ([color=BLUE]if[/color] ([color=BLUE]=[/color] [color=MAROON]"ATTRIB"[/color] ([color=BLUE]cdr[/color] ([color=BLUE]assoc[/color] 0 ([color=BLUE]setq[/color] enx ([color=BLUE]entget[/color] ([color=BLUE]setq[/color] blk ([color=BLUE]entnext[/color] blk)))))))
    126.        ([color=BLUE]if[/color] ([color=BLUE]=[/color] ([color=BLUE]strcase[/color] tag) ([color=BLUE]strcase[/color] ([color=BLUE]cdr[/color] ([color=BLUE]assoc[/color] 2 enx))))
    127.            ([color=BLUE]cdr[/color] ([color=BLUE]assoc[/color] 1 enx))
    128.            (LM:getattributevalue blk tag)
    129.        )
    130.    )
    131. )
    132. [color=GREEN];; Set Attribute Value  -  Lee Mac[/color]
    133. [color=GREEN];; Sets the value of the first attribute with the given tag found within the block, if present.[/color]
    134. [color=GREEN];; blk - [ent] Block (Insert) Entity Name[/color]
    135. [color=GREEN];; tag - [str] Attribute TagString[/color]
    136. [color=GREEN];; val - [str] Attribute Value[/color]
    137. [color=GREEN];; Returns: [str] Attribute value if successful, else nil.[/color]
    138. ([color=BLUE]defun[/color] LM:setattributevalue ( blk tag val [color=BLUE]/[/color] enx )
    139.    ([color=BLUE]if[/color] ([color=BLUE]=[/color] [color=MAROON]"ATTRIB"[/color] ([color=BLUE]cdr[/color] ([color=BLUE]assoc[/color] 0 ([color=BLUE]setq[/color] enx ([color=BLUE]entget[/color] ([color=BLUE]setq[/color] blk ([color=BLUE]entnext[/color] blk)))))))
    140.        ([color=BLUE]if[/color] ([color=BLUE]=[/color] ([color=BLUE]strcase[/color] tag) ([color=BLUE]strcase[/color] ([color=BLUE]cdr[/color] ([color=BLUE]assoc[/color] 2 enx))))
    141.            ([color=BLUE]if[/color] ([color=BLUE]entmod[/color] ([color=BLUE]subst[/color] ([color=BLUE]cons[/color] 1 val) ([color=BLUE]assoc[/color] 1 enx) enx))
    142.                ([color=BLUE]progn[/color]
    143.                    ([color=BLUE]entupd[/color] blk)
    144.                    val
    145.                )
    146.            )
    147.            (LM:setattributevalue blk tag val)
    148.        )
    149.    )
    150. )
    151. ([color=BLUE]princ[/color])

    上面使用了我的属性函数&获取匿名引用函数。
    回复

    使用道具 举报

    6

    主题

    19

    帖子

    7

    银币

    初来乍到

    Rank: 1

    铜币
    38
    发表于 2022-7-5 16:31:19 | 显示全部楼层
    李,你就是那个男人!!!很有魅力谢谢!
    回复

    使用道具 举报

    114

    主题

    1万

    帖子

    1万

    银币

    中流砥柱

    Rank: 25

    铜币
    543
    发表于 2022-7-5 16:36:56 | 显示全部楼层
     
    太好了-不客气!
    回复

    使用道具 举报

    6

    主题

    19

    帖子

    7

    银币

    初来乍到

    Rank: 1

    铜币
    38
    发表于 2022-7-5 16:44:58 | 显示全部楼层
    李,我们已经用了将近一年了,不是(再次感谢)我们发现了一些我们想要更改的项目。我尝试了一些事情,但没有成功,所以我希望你或其他人可以帮助改变。
     
    最初我们有两个块来从SL Dev和SL Con提取信息,现在我们要寻找的是能够为第一个选择集选择SL Dev或SL-Dev2,为第二个选择集选择SL Con、SL-Con2、SL-Con3、SL-Con4。SL Dev和SL-Dev2的属性标记与SL Con块的标记相同。
     
    我似乎不知道如何增加选择集,所以如果有任何帮助,我将不胜感激。
    回复

    使用道具 举报

    114

    主题

    1万

    帖子

    1万

    银币

    中流砥柱

    Rank: 25

    铜币
    543
    发表于 2022-7-5 16:49:44 | 显示全部楼层
     
    更改以下内容:
     
    第12行来自:
    1.                 (   (/= "SL-DEV" (strcase (LM:al-effectivename ent)))
    至:
    第28行:
    1.                                 (cons "SL-CON"
    至:
    1.                                 (cons "SL-CON,SL-CON[234]"
    第30行来自:
    1.                                         (LM:getanonymousreferences "SL-CON")
    至:
    1. 7
    回复

    使用道具 举报

    6

    主题

    19

    帖子

    7

    银币

    初来乍到

    Rank: 1

    铜币
    38
    发表于 2022-7-5 16:54:07 | 显示全部楼层
    李,
     
    谢谢你的快速回复,效果很好!非常感谢你。这是项目和名单上的缺点,绊倒了我,我仍然有很多要学习。
     
    再次感谢!
    回复

    使用道具 举报

    发表回复

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

    本版积分规则

    • 微信公众平台

    • 扫描访问手机版

    • 点击图片下载手机App

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

    GMT+8, 2025-3-14 13:08 , Processed in 1.176615 second(s), 72 queries .

    © 2020-2025 乐筑天下

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