求一个lsp格式的cad插件
代码如下:(defunC:TES(/#g1&kw&ss1entx)(if(and(setqent(entsel"\n请选择封闭的多段线"))(setqent(carent...
代码如下:
(defun C:TES ( / #g1 &kw &ss1 ent x) (if (and (setq ent (entsel "\n请选择封闭的多段线")) (setq ent (car ent));图元 (setq #g1 (entget ent));属性 (= (cdr (assoc 0 #g1)) "LWPOLYLINE");分析是多段线 (= (cdr (assoc 70 #g1)) 1);判断是封闭 (setq &ss1 (mapcar 'cdr (vl-remove-if '(lambda (X) (/= 10 (car x))) #g1)));多段线上的点 ) (progn (if (setq &kw (ssget "cp" &ss1)) ;框选择 包含在框内的及和框相交的被选择;如果要窗选【cp】修改为【wp】即可 (setq &kw (ssadd ent &kw)) (progn (setq &kw (ssadd) &kw (ssadd ent &kw)) ) ) (command "erase" "all" "r" &kw "") ) ) (princ));复制到记事本,以【.lsp】为后缀命名,打开CAD,autolisp加载,命令【TES】;删除被选择的以外对象 展开
(defun C:TES ( / #g1 &kw &ss1 ent x) (if (and (setq ent (entsel "\n请选择封闭的多段线")) (setq ent (car ent));图元 (setq #g1 (entget ent));属性 (= (cdr (assoc 0 #g1)) "LWPOLYLINE");分析是多段线 (= (cdr (assoc 70 #g1)) 1);判断是封闭 (setq &ss1 (mapcar 'cdr (vl-remove-if '(lambda (X) (/= 10 (car x))) #g1)));多段线上的点 ) (progn (if (setq &kw (ssget "cp" &ss1)) ;框选择 包含在框内的及和框相交的被选择;如果要窗选【cp】修改为【wp】即可 (setq &kw (ssadd ent &kw)) (progn (setq &kw (ssadd) &kw (ssadd ent &kw)) ) ) (command "erase" "all" "r" &kw "") ) ) (princ));复制到记事本,以【.lsp】为后缀命名,打开CAD,autolisp加载,命令【TES】;删除被选择的以外对象 展开
1个回答
展开全部
源程序你已经有了,你还想怎么样?
追问
哈哈哈是这样的,我不懂lisp语言的写法,这段代码我直接复制进文本,变成lsp之后不能用,应该是格式有点问题,但我解决不了
追答
(defun C:TES ( / #g1 &kw &ss1 ent x) (if (and (setq ent (entsel "\n请选择封闭的多段线")) (setq ent (car ent))
(setq #g1 (entget ent)) (= (cdr (assoc 0 #g1)) "LWPOLYLINE") (= (cdr (assoc 70 #g1)) 1) (setq &ss1 (mapcar 'cdr (vl-remove-if '(lambda (X) (/= 10 (car x))) #g1))) ) (progn (if (setq &kw (ssget "cp" &ss1)) (setq &kw (ssadd ent &kw)) (progn (setq &kw (ssadd) &kw (ssadd ent &kw)) ) ) (command "erase" "all" "r" &kw "") ) ) (princ))
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询