乐筑天下

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

[编程交流] cad编码器帮助!关于:组

[复制链接]

3

主题

12

帖子

14

银币

初来乍到

Rank: 1

铜币
24
发表于 2022-7-6 17:27:12 | 显示全部楼层 |阅读模式

                               
登录/注册后可看大图

 
这个值到哪里去了?
我搜索了两天。
无论如何,问题是:
 
我正在用Lisp创建未命名组。
 
1.以这种方式创建组时(没有拨号bx),没有选项
新组是否可选择。
命令:-组
输入组选项
[?/Order/Add/Remove/Explode/REName/selective/Create]:c
输入组名或[?]:*
 
2.因为我正在创建未命名的grups,所以在以下情况下我无法使用它:
-组输入组选项
[?/Order/Add/Remove/Explode/REName/selective/Create]:s
输入组名或[?]:-我不知道名字-
 
3.最后一个值保留在该复选框中,用于确定是否可以选择新组。
 
它不是系统变量值。
它不是注册表值,因为当您打开新图形时,它将设置为ON。
它必须是局部Lisp变量之一。
 
注意:当打开“组”对话框时,该值是浮动的,当取消、确定或关闭时退出时,该值保持不变!。
回复

使用道具 举报

2

主题

439

帖子

536

银币

限制会员

铜币
-14
发表于 2022-7-6 17:45:54 | 显示全部楼层
未命名组名是带有“*A”+随机数的字符串,您无法知道它。该数字包含分组字典,例如:
 
 
更简单的方法是使用ENTMAKEX函数创建未命名的组。DXF代码70是“未命名”标志:1=未命名;0=命名,DXF代码71为可选择标志:1=可选择;0=不可选择,DXF组300是组描述。
 
  1. (defun c:ugr(/ grSet eLst)
  2. (princ "\n<<< Select object to make unnamed group >>>")
  3. (if(setq grSet(ssget))
  4.    (progn
  5.      (setq eLst(append(list '(0 . "GROUP") '(100 . "AcDbGroup")
  6.                      '(300 . "") '(70 . 1) '(71 . 1))
  7.      (mapcar '(lambda(x)(cons 340 x))
  8.          (vl-remove-if 'listp
  9.                    (mapcar 'cadr(ssnamex grSet))))
  10.        ); end append
  11.     ); end setq
  12.        (entmakex eLst)
  13.       (sssetfirst nil grSet)
  14.      ); end progn
  15.    ); end if
  16. (princ)
  17. ); end of c:ugr
回复

使用道具 举报

9

主题

383

帖子

82

银币

后起之秀

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

铜币
355
发表于 2022-7-6 18:04:27 | 显示全部楼层
bonacad,这将返回上次创建的组的名称
  1. (cdr
  2. (assoc 3
  3. (reverse
  4.    (entget
  5.      (cdadr
  6.        (member (cons 3 "ACAD_GROUP") (entget (namedobjdict)))
  7.      )
  8.    )
  9. )
  10. )
  11. )

ASMI,使用您的代码创建的组将持续到文档打开为止。关闭文档和组。
这就是我用的。
  1. (defun CreateGroup
  2.               (Name EntsList SelFlag / GroupDic EntName)
  3. (if (and (setq GroupDic (cdadr (member (cons 3 "ACAD_GROUP")
  4.                                  (entget (namedobjdict))
  5.                          )
  6.                   )
  7.    )
  8.    (not
  9.      (and Name (vl-position (cons 3 Name) (entget GroupDic)))
  10.    )
  11.    (setq
  12.      EntName (entmakex
  13.                (append (list (cons 0 "GROUP")
  14.                              (cons 100 "AcDbGroup")
  15.                              (cons 300 "")
  16.                              (cons 70
  17.                                    (if Name
  18.                                      0
  19.                                      1
  20.                                    )
  21.                              )
  22.                              (cons 71 SelFlag)
  23.                        )
  24.                        (mapcar (function (lambda (e) (cons 340 e)))
  25.                                EntsList
  26.                        )
  27.                )
  28.              )
  29.    )
  30.    (entmod (append (entget GroupDic)
  31.                    (list (cons 3
  32.                                (if (null Name)
  33.                                  "*"
  34.                                  Name
  35.                                )
  36.                          )
  37.                          (cons 350 EntName)
  38.                    )
  39.            )
  40.    )
  41.      )
  42.    (if        Name
  43.      Name
  44.      (cdadr
  45. (member (cons 350 EntName) (reverse (entget GroupDic)))
  46.      )
  47.    )
  48. )
  49. )
  50. ;;;(CreateGroup nil (vl-remove-if 'listp (mapcar 'cadr (ssnamex (ssget)))) 1)
回复

使用道具 举报

2

主题

439

帖子

536

银币

限制会员

铜币
-14
发表于 2022-7-6 18:14:59 | 显示全部楼层
>沃夫卡语
 
你是对的。“ACAD_组”字典需要附加新的组名和名称。你有很好的群组创建功能。这是我的“随时可用”功能,用于创建未命名的组。
 
  1. (defun c:ugr(/ grSet eLst nGrp grDic nNam)
  2. (princ "\n<<< Select object to make unnamed group >>>")
  3. (if(setq grSet(ssget))
  4.    (progn
  5.      (setq eLst(append(list '(0 . "GROUP") '(100 . "AcDbGroup")
  6.                      '(300 . "") '(70 . 1) '(71 . 1))
  7.      (mapcar '(lambda(x)(cons 340 x))
  8.          (vl-remove-if 'listp
  9.                    (mapcar 'cadr(ssnamex grSet))))
  10.        ); end append
  11.     ); end setq
  12.        (setq nGrp(entmakex eLst)
  13.       grDic(append grDic
  14.              (entget(cdadr(member '(3 . "ACAD_GROUP")
  15.               (entget (namedobjdict)))))
  16.                 (list(cons 3 "*")(cons 350 nGrp)))
  17.       ); end setq
  18.      (entmod grDic)
  19.      ); end progn
  20.    ); end if
  21. (princ)
  22. ); end of c:ugr
回复

使用道具 举报

3

主题

12

帖子

14

银币

初来乍到

Rank: 1

铜币
24
发表于 2022-7-6 18:41:32 | 显示全部楼层
非常感谢你们。
非常有用的信息和方法。
我很感激。
现在我可以从Lisp程序中准确地得到我想要的。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-4 16:52 , Processed in 0.348028 second(s), 63 queries .

© 2020-2025 乐筑天下

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