xiaohuayuan 发表于 2012-2-21 14:24:25

请教关于trim的用法

初学lisp,下面的代码中为何大圆无法剪切?(defun c:12()
(setvar "cmdecho" 0)                     ;;关闭命令行响应
(setq cen1 (getpoint "\n请指定中心点:"))
(setq rr1 (getdist "\n请指定大圆半径:"))
(setq rr2 (getdist "\n请指定小圆半径:"))
(setq nn (getint "\n请指定阵列次数<10>:"))
(if (null nn) (setq nn 10))
(setq os (getvar "osmode"))               ;;保存捕捉设置
(setvar "osmode" 0)                        ;;关闭捕捉
(setq pj (/ (* 2 pi) nn))
(command "circle" cen1 rr1)
(setq en1 (entlast))
(setq ss (ssadd))
(setq i 0)
(repeat nn
(setq cen2 (polar cen1 (* i pj) rr1))
(command "circle" cen2 rr2)
(setq en2 (entlast))
(setq ss (ssadd en2 ss))
(setq jqd (polar cen2 (angle cen2 cen1) rr2))
(command "trim" en1 "" (list en2 jqd) "")
(setq i (+ i 1))
)
(setq i 0)
(repeat nn
(setq cen2 (polar cen1 (* i pj) rr1))
(command "trim" ss "" (list en1 cen2) "")
(setq en1 (entlast))
(setq i (+ i 1))
)
(command "circle" cen1 (/ rr1 2))
(setvar "osmode" os)                        ;;恢复捕捉设置
(princ)
)

xiaohuayuan 发表于 2012-2-21 14:25:17

24-30行剪切大圆

革天明 发表于 2012-4-26 17:32:48

不太清楚,同求

snddd2000 发表于 2012-4-26 19:12:55

本帖最后由 snddd2000 于 2012-4-26 19:17 编辑

是不是如图这样的结果?

snddd2000 发表于 2012-4-26 19:20:41

大圆剪切里的(entlast)得到的图元并不是想要的图元。

革天明 发表于 2012-4-27 13:29:49

snddd2000 发表于 2012-4-26 19:20 static/image/common/back.gif
大圆剪切里的(entlast)得到的图元并不是想要的图元。

如何得到大圆剪切后的图元名呢?图元名获取不到就不能继续了
http://bbs.mjtd.com/thread-93229-2-1.html这是我的帖子,因为不容易获得TRIM后的图元名,我的程序不能得到想要的结果,能帮我看看吗?论坛里关于TRIM的很少,而且使用的都是以获得图元名之后的操作。

snddd2000 发表于 2012-4-27 15:07:49

革天明 发表于 2012-4-27 13:29 static/image/common/back.gif
如何得到大圆剪切后的图元名呢?图元名获取不到就不能继续了
http://bbs.mjtd.com/thread-93229-2-1.htm ...

(defun c:12 ()
(setvar "cmdecho" 0)
;;关闭命令行响应
(setq cen1 (getpoint "\n请指定中心点:"))
(setq rr1 (getdist "\n请指定大圆半径:"))
(setq rr2 (getdist "\n请指定小圆半径:"))
(setq nn (getint "\n请指定阵列次数<10>:"))
(if (null nn)
    (setq nn 10)
)
(setq os (getvar "osmode"))
;;保存捕捉设置
(setvar "osmode" 0)
;;关闭捕捉
(setq pj (/ (* 2 pi) nn))
(command "circle" cen1 rr1)
(setq en1 (entlast))
(setq ss (ssadd))
(setq i 0)
(repeat nn
    (setq cen2 (polar cen1 (* i pj) rr1))
    (command "circle" cen2 rr2)
    (setq en2 (entlast))
    (setq ss (ssadd en2 ss))
    (setq jqd (polar cen2 (angle cen2 cen1) rr2))
    (command "trim" en1 "" (list en2 jqd) "")
    (setq i (+ i 1))
)
(setq i 0)
(repeat nn
    (setq cen2 (polar cen1 (* i pj) rr1))
    (setq en1 (ssname (ssget "_C" cen2 cen2) 0))
    (command "trim" ss "" (list en1 cen2) "")
;;;(setq en1 (entlast))
    (setq i (+ i 1))
)
(command "circle" cen1 (/ rr1 2))
(setvar "osmode" os)
;;恢复捕捉设置
(princ)
)

czcxxx 发表于 2015-9-29 15:11:23

谢谢分享!!!!!!!!!!!!!!!!!!!!

start4444 发表于 2016-7-11 23:58:38

页: [1]
查看完整版本: 请教关于trim的用法