明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2437|回复: 8

[提问] 修剪

[复制链接]
发表于 2013-8-21 15:35:12 | 显示全部楼层 |阅读模式
文件是trim&extend.lsp,这是一个修剪用的lsp文件,我想这个程序能改一下就好了。在启动命令后不需要选择1个或多个修剪边,默认就是选择全部,这样命令用起来更快,哪个高手能不能改1下,改完后可以发到我qq邮箱里,qq:1024161729 在这里先多谢了

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2013-8-21 16:44:25 | 显示全部楼层
没见程序有过人之处,现在的版本都有这个功能,只是要一个回车,如果想要,就这样:
  1. (defun c:ki()(command ".trim" "")
  2. (defun c:ku()(command ".extend" "")

 楼主| 发表于 2013-8-22 11:16:58 | 显示全部楼层
我试一下,多谢你的关注,
 楼主| 发表于 2013-8-22 11:24:55 | 显示全部楼层
我用的是2005版,所以修剪命令没那么强大,所以你给的程序在2005版本中功能不是很大
我现在要的是在我的那个程序里修改1下实现自动选择全部的功能
我的意思是这样的
 楼主| 发表于 2013-8-22 11:26:09 | 显示全部楼层
期待解决,求助高手
发表于 2013-8-23 14:31:59 | 显示全部楼层
试下我在用的吧
(defun c:TYY (/ PT0 pt PTLIST PTLIST0 ss out CMDECHO OSMODE)
  (setq cmdecho (getvar "cmdecho")
osmode (getvar "osmode")
  )
  (princ "\n 提示:超强修剪启动中....")
  (while (and (setq ptlist0 (getpoint_list))
       (> (length ptlist0) 1)
  )
    (setvar "cmdecho" 0)
    (setvar "osmode" 0)
    (setq pt0  (car ptlist0)
   ptlist (cdr ptlist0)
    )
    (command "trim" "")
    (foreach pt ptlist
      (command "f" pt0 pt "")
      (setq pt0 pt)
    )
    (command "")
    (if (setq ss (ssget "f" ptlist0))
      (command "erase" ss "")
    )
    (setvar "osmode" osmode)
    (setvar "cmdecho" cmdecho)
  )
  (princ)
)
(defun getpoint_list ( / DIS OUT PT)
  (setq pt (getpoint "\n --->>>请指定画线开始点或 <退出>:"))
  (princ "\n按任意键结束:")
  (if (= (type pt) 'LIST)
    (progn
      (setq out (list pt)
     dis (* 0.01 (getvar "viewsize")))
      (while (= 5 (car (setq pt (grread t 4 0))))
(setq pt (cadr pt))
         (if (> (distance pt (car out)) dis)
    (progn
      (grdraw pt (car out) 1)
      (setq out (cons pt out))
      )
    )
)
      )
    )

  (redraw)
  (reverse out))
  ;;;(princ "\n 结束超级修剪......欢迎使用")
;;可框的修剪
(defun c:TY ()
(setq osvalue (getvar "osmode"))
  (SETVAR "CMDECHO" 0)
  (setvar "osmode" 0)
  (princ "\n 提示:超强框剪启动中....")
  (setq        plist nil ss  nil pt0 nil len nil)
                  (setq        pt311 (getpoint "\n请框选被修剪对象:")
                        pt331 (getcorner pt311)
                        ss (ssget "c" pt311 pt331)
                  )


;;;;;;;;;;;;
    ;(setq s1 (ssget "C" pt311 pt331))
;;;;;;;;;;;;
      (setq len (sslength ss))
      ;(setq len (sslength s1))

                    (SETq LEN2 (SSLENGTH SS))
                    (setq pt321 (list (car pt311) (cadr pt331))
                          pt341 (list (car pt331) (cadr pt311))
                    )
                    (command "trim" ss "")
                    ;(command "trim" s1 "")
                    (REPEAT LEN2
                      (COMMAND "NON" "f" pt311 pt321 pt331 pt341 pt311 "")
                    )
                    (COMMAND "")
                  
       

         (command "undo" "e")
         (setvar 'cmdecho 1)
  (setvar "osmode" osvalue )
  (setvar "ORTHOMODE" 1)
(PRINC)
)
  ;;可框的修剪
(defun c:TTY ()
(setq osvalue (getvar "osmode"))
  (SETVAR "CMDECHO" 0)
  (setvar "osmode" 0)
  (princ "\n 提示:超强框剪启动中....")
  (setq        plist nil ss  nil pt0 nil len nil)
                  (setq        pt311 (getpoint "\n请框选被修剪对象:")
                        pt331 (getcorner pt311)
                        ss (ssget "c" pt311 pt331)
                  )


;;;;;;;;;;;;
    ;(setq s1 (ssget "C" pt311 pt331))
;;;;;;;;;;;;
      (setq len (sslength ss))
      ;(setq len (sslength s1))

                    (SETq LEN2 (SSLENGTH SS))
                    (setq pt321 (list (car pt311) (cadr pt331))
                          pt341 (list (car pt331) (cadr pt311))
                    )
                    (command "trim" ss "")
                    ;(command "trim" s1 "")
                    (REPEAT LEN2
                     (COMMAND "NON" "f" pt331 pt321 "");;;上下边
                     (COMMAND "NON" "f" pt331 pt341 "");;;左右边
                     ;(COMMAND "NON" "f" pt331 pt321 "")底边
                      ;;(COMMAND "NON" "f" pt311 pt321 "")右边
                    )
                    (COMMAND "")
                  
       

         (command "undo" "e")
         (setvar 'cmdecho 1)
  (setvar "osmode" osvalue )
  (setvar "ORTHOMODE" 1)
(PRINC)
)
  ;;可框的修剪
(defun c:trr ()
(setq osvalue (getvar "osmode"))
  (SETVAR "CMDECHO" 0)
  (setvar "osmode" 0)
  (princ "\n 提示:超强框剪启动中....")

                  (setq        pt311 (getpoint "\n请框选被修剪对象:")
                        pt331 (getcorner pt311)
                  )
                    (command "trim" ""  "f" pt331 pt311 "" "");;;上下边

         (setvar 'cmdecho 1)
  (setvar "osmode" osvalue )
  (setvar "ORTHOMODE" 1)
(PRINC)
)

 楼主| 发表于 2013-8-25 11:49:19 | 显示全部楼层
我试一下,谢谢你的热心,多谢,多谢
 楼主| 发表于 2013-8-28 17:00:30 | 显示全部楼层
我试了,那些命令是分开来的,若能像2010版中的修剪那样,能点能框,能默认选择全部,就更好了。问题仍然未得到解决
发表于 2014-3-4 15:06:36 | 显示全部楼层
为啥不换2010
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-25 10:25 , Processed in 0.169504 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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