明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1137|回复: 2

帮忙看看新手的小程序,有点问题。

[复制链接]
发表于 2005-3-30 23:01 | 显示全部楼层 |阅读模式
;;;当多层图形重合在一起时,给任意选择层图元倒角的小程序
;;;2005年3月29日
(defun c:chams (/ COUNT DCL_ID DD SNL SS SS1 X Y I N SOL)
(setq ss (ssget)
i 0
snl '()
)
(while (= ss nil)
(prompt "\n选择对象 : ")
(setq ss (ssget))
)
(REPEAT (sslength ss)
(setq snl (vl-sort (cons (cdr (assoc 8 (entget (ssname ss i)))) snl) '<)
i (1+ i)
)
) ;;; (setq snl (mapcar 'chr (vl-sort (mapcar 'ascii snl) '<)))

(setq dcl_id (load_dialog "chams.dcl"))
(if (not (new_dialog "chams" dcl_id))
(exit)
) (start_list "list")
(mapcar 'add_list snl)
(end_list)
(action_tile "list" "(setq arg (atoi $value))")
(action_tile "accept" "(done_dialog 1)")
(action_tile "cancel" "(done_dialog 2)") (SETQ DD (start_dialog))
(cond
((= DD 1)
(setq ss1 (ssget "P" (list (cons 8 (nth arg snl))))
x (ssname ss1 0)
y (ssname ss1 1)
)
(vl-cmdf "chamfer" x y)
)
((= DD 2) (PRINC "\n取消."))
) (unload_dialog dcl_id)
(princ)
) 问题就在被注释掉的那句上,我的目的是想让列表中没有重复项,可结果是如果snl包含中文折返回的就都是“?”,而它上面的那个vl-sort只排序不删除重复项,怎么解决?谢了。
 楼主| 发表于 2005-3-30 23:09 | 显示全部楼层
对应的dcl,我设成允许多选的,可是我的lsp还是针对单选的,要实现多选后的对应操作应该怎么做呢? chams:dialog{
label="任意层倒角";
// initial_focus="list";
:list_box
{
alignment=centered;
label="现有图层:";
key="list";
allow_accept=true;
multiple_select=true; } ok_cancel;
}
发表于 2005-3-31 08:09 | 显示全部楼层
(repeat (sslength SS)
(if (not
(member (setq NAME (cdr (assoc 8 (entget (ssname SS I)))))
SNL
)
)
(setq SNL (cons NAME SNL))
)
(setq I (1+ I))
)
(setq SNL (vl-sort SNL '<))
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-25 22:34 , Processed in 0.296009 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表