笑看丿丶生 发表于 2015-5-31 21:19:33

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 该贴已经同步到 笑看丿丶生的微博

笑看丿丶生 发表于 2015-6-1 10:49:23

自己顶一下吧,坐等大神

笑看丿丶生 发表于 2015-6-1 14:11:42

难道大神们都不在吗?

coverne 发表于 2015-9-22 09:03:22

有好的解决办法么
页: [1]
查看完整版本: CAD 修剪 源码,求大神帮完善