cad编码器帮助!关于:组
http://img379.imageshack.us/img379/185/groupnk8.jpg这个值到哪里去了?
我搜索了两天。
无论如何,问题是:
我正在用Lisp创建未命名组。
1.以这种方式创建组时(没有拨号bx),没有选项
新组是否可选择。
命令:-组
输入组选项
[?/Order/Add/Remove/Explode/REName/selective/Create]:c
输入组名或[?]:*
2.因为我正在创建未命名的grups,所以在以下情况下我无法使用它:
-组输入组选项
[?/Order/Add/Remove/Explode/REName/selective/Create]:s
输入组名或[?]:-我不知道名字-
3.最后一个值保留在该复选框中,用于确定是否可以选择新组。
它不是系统变量值。
它不是注册表值,因为当您打开新图形时,它将设置为ON。
它必须是局部Lisp变量之一。
注意:当打开“组”对话框时,该值是浮动的,当取消、确定或关闭时退出时,该值保持不变!。 未命名组名是带有“*A”+随机数的字符串,您无法知道它。该数字包含分组字典,例如:
更简单的方法是使用ENTMAKEX函数创建未命名的组。DXF代码70是“未命名”标志:1=未命名;0=命名,DXF代码71为可选择标志:1=可选择;0=不可选择,DXF组300是组描述。
(defun c:ugr(/ grSet eLst)
(princ "\n<<< Select object to make unnamed group >>>")
(if(setq grSet(ssget))
(progn
(setq eLst(append(list '(0 . "GROUP") '(100 . "AcDbGroup")
'(300 . "") '(70 . 1) '(71 . 1))
(mapcar '(lambda(x)(cons 340 x))
(vl-remove-if 'listp
(mapcar 'cadr(ssnamex grSet))))
); end append
); end setq
(entmakex eLst)
(sssetfirst nil grSet)
); end progn
); end if
(princ)
); end of c:ugr bonacad,这将返回上次创建的组的名称
(cdr
(assoc 3
(reverse
(entget
(cdadr
(member (cons 3 "ACAD_GROUP") (entget (namedobjdict)))
)
)
)
)
)
ASMI,使用您的代码创建的组将持续到文档打开为止。关闭文档和组。
这就是我用的。
(defun CreateGroup
(Name EntsList SelFlag / GroupDic EntName)
(if (and (setq GroupDic (cdadr (member (cons 3 "ACAD_GROUP")
(entget (namedobjdict))
)
)
)
(not
(and Name (vl-position (cons 3 Name) (entget GroupDic)))
)
(setq
EntName (entmakex
(append (list (cons 0 "GROUP")
(cons 100 "AcDbGroup")
(cons 300 "")
(cons 70
(if Name
0
1
)
)
(cons 71 SelFlag)
)
(mapcar (function (lambda (e) (cons 340 e)))
EntsList
)
)
)
)
(entmod (append (entget GroupDic)
(list (cons 3
(if (null Name)
"*"
Name
)
)
(cons 350 EntName)
)
)
)
)
(if Name
Name
(cdadr
(member (cons 350 EntName) (reverse (entget GroupDic)))
)
)
)
)
;;;(CreateGroup nil (vl-remove-if 'listp (mapcar 'cadr (ssnamex (ssget)))) 1)
>沃夫卡语
你是对的。“ACAD_组”字典需要附加新的组名和名称。你有很好的群组创建功能。这是我的“随时可用”功能,用于创建未命名的组。
(defun c:ugr(/ grSet eLst nGrp grDic nNam)
(princ "\n<<< Select object to make unnamed group >>>")
(if(setq grSet(ssget))
(progn
(setq eLst(append(list '(0 . "GROUP") '(100 . "AcDbGroup")
'(300 . "") '(70 . 1) '(71 . 1))
(mapcar '(lambda(x)(cons 340 x))
(vl-remove-if 'listp
(mapcar 'cadr(ssnamex grSet))))
); end append
); end setq
(setq nGrp(entmakex eLst)
grDic(append grDic
(entget(cdadr(member '(3 . "ACAD_GROUP")
(entget (namedobjdict)))))
(list(cons 3 "*")(cons 350 nGrp)))
); end setq
(entmod grDic)
); end progn
); end if
(princ)
); end of c:ugr 非常感谢你们。
非常有用的信息和方法。
我很感激。
现在我可以从Lisp程序中准确地得到我想要的。
页:
[1]