明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1645|回复: 3

CAD 修剪 源码,求大神帮完善

[复制链接]
发表于 2015-5-31 21:19:33 | 显示全部楼层 |阅读模式
现在只能选择一条线作为修剪参考,我想让它像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))
)




该贴已经同步到 笑看丿丶生的微博
 楼主| 发表于 2015-6-1 10:49:23 | 显示全部楼层
自己顶一下吧,坐等大神
 楼主| 发表于 2015-6-1 14:11:42 | 显示全部楼层
难道大神们都不在吗?
发表于 2015-9-22 09:03:22 | 显示全部楼层
有好的解决办法么
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 17:27 , Processed in 0.172692 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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