CAD 修剪 源码,求大神帮完善
现在只能选择一条线作为修剪参考,我想让它像CAD的trim命令那样,选择参考线的时候可以选择两条或多条,可以修剪一条线一侧的图元,也可以修剪两条之间的部分,现在只是能修剪一条线一侧的 ,求哥哥姐姐们帮忙了(defun c:trr(/ oce s1 p1 p2 s2 *error*);()和:中间字母为快捷键,用户可以随意修改
(command "undo" "be")
(defun *error* (msg);;;出错处理
(setvar "cmdecho" oce) ;_ 恢复cmdecho系统变量
(sk_highlight s1 4);;;取消亮显
(princ "error: ")
(princ msg) ;_ 打印错误信息
(princ)
)
(SETQ oce (GETVAR "cmdecho"))
(SETVAR "cmdecho"0)
(PROMPT "\n 亲爱的小伙伴!请您选择修剪边:")
(setq s1 (ssget":s"))存在问题:块里的一根直线无法选择作为修剪参考边??????????????
(while(not(eq p1 ""))
(sk_highlight s1 3);亮显选择集
(setq p1 (getpoint "\n 亲爱的小伙伴!请您选择修剪对象的栏选第一点:"))
(setq p2 (getpoint p1 "\n 亲爱的小伙伴!请您选择修剪对象的栏选第二点:"));这一步还差应该加上万一用户不小心空选,程序继续返回这一步操作
(setq s2(ssget "f"(list p1 p2)))
(command "trim" s1 "" s2 "")
)
(SETVAR "cmdecho" oce)
(command "undo" "e")
(princ)
)
;;高亮图元或选择集
(defun sk_highlight (ss flag / i en)
(if (= (type ss) 'PICKSET)
(progn
(setq i -1)
(repeat(sslength ss)
(setq en(ssname ss (setq i (1+ i))))
(redraw en flag)
)
)
)
(if(= (type ss) 'ENAME)(redraw ss flag))
)
http://bbs.mjtd.com/xwb/images/bgimg/icon_logo.png 该贴已经同步到 笑看丿丶生的微博 自己顶一下吧,坐等大神 难道大神们都不在吗?
有好的解决办法么
页:
[1]