明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4494|回复: 8

请教关于trim的用法

[复制链接]
发表于 2012-2-21 14:24:25 | 显示全部楼层 |阅读模式
初学lisp,下面的代码中为何大圆无法剪切?
  1. (defun c:12()
  2. (setvar "cmdecho" 0)                       ;;关闭命令行响应
  3. (setq cen1 (getpoint "\n请指定中心点:"))
  4. (setq rr1 (getdist "\n请指定大圆半径:"))
  5. (setq rr2 (getdist "\n请指定小圆半径:"))
  6. (setq nn (getint "\n请指定阵列次数<10>:"))
  7. (if (null nn) (setq nn 10))
  8. (setq os (getvar "osmode"))                 ;;保存捕捉设置
  9. (setvar "osmode" 0)                        ;;关闭捕捉
  10. (setq pj (/ (* 2 pi) nn))
  11. (command "circle" cen1 rr1)
  12. (setq en1 (entlast))
  13. (setq ss (ssadd))
  14. (setq i 0)
  15. (repeat nn
  16. (setq cen2 (polar cen1 (* i pj) rr1))
  17. (command "circle" cen2 rr2)
  18. (setq en2 (entlast))
  19. (setq ss (ssadd en2 ss))
  20. (setq jqd (polar cen2 (angle cen2 cen1) rr2))
  21. (command "trim" en1 "" (list en2 jqd) "")
  22. (setq i (+ i 1))
  23. )
  24. (setq i 0)
  25. (repeat nn
  26. (setq cen2 (polar cen1 (* i pj) rr1))
  27. (command "trim" ss "" (list en1 cen2) "")
  28. (setq en1 (entlast))
  29. (setq i (+ i 1))
  30. )
  31. (command "circle" cen1 (/ rr1 2))
  32. (setvar "osmode" os)                        ;;恢复捕捉设置
  33. (princ)
  34. )
 楼主| 发表于 2012-2-21 14:25:17 | 显示全部楼层
24-30行剪切大圆
发表于 2012-4-26 17:32:48 | 显示全部楼层
不太清楚,同求
发表于 2012-4-26 19:12:55 | 显示全部楼层
本帖最后由 snddd2000 于 2012-4-26 19:17 编辑

是不是如图这样的结果?

本帖子中包含更多资源

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

x
发表于 2012-4-26 19:20:41 | 显示全部楼层
大圆剪切里的(entlast)得到的图元并不是想要的图元。
发表于 2012-4-27 13:29:49 | 显示全部楼层
snddd2000 发表于 2012-4-26 19:20
大圆剪切里的(entlast)得到的图元并不是想要的图元。

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

点评

如果是一条直线切掉其一端,那剩下的那一节的图元名还是原来的图元名。如果变成两段,则其中一段是原图元名另一段是(entlast).  发表于 2012-4-27 15:32
根据确定的条件用ssget选择想要的图元  发表于 2012-4-27 15:06
发表于 2012-4-27 15:07:49 | 显示全部楼层
革天明 发表于 2012-4-27 13:29
如何得到大圆剪切后的图元名呢?图元名获取不到就不能继续了
http://bbs.mjtd.com/thread-93229-2-1.htm ...
  1. (defun c:12 ()
  2.   (setvar "cmdecho" 0)
  3.   ;;关闭命令行响应
  4.   (setq cen1 (getpoint "\n请指定中心点:"))
  5.   (setq rr1 (getdist "\n请指定大圆半径:"))
  6.   (setq rr2 (getdist "\n请指定小圆半径:"))
  7.   (setq nn (getint "\n请指定阵列次数<10>:"))
  8.   (if (null nn)
  9.     (setq nn 10)
  10.   )
  11.   (setq os (getvar "osmode"))
  12.   ;;保存捕捉设置
  13.   (setvar "osmode" 0)
  14.   ;;关闭捕捉
  15.   (setq pj (/ (* 2 pi) nn))
  16.   (command "circle" cen1 rr1)
  17.   (setq en1 (entlast))
  18.   (setq ss (ssadd))
  19.   (setq i 0)
  20.   (repeat nn
  21.     (setq cen2 (polar cen1 (* i pj) rr1))
  22.     (command "circle" cen2 rr2)
  23.     (setq en2 (entlast))
  24.     (setq ss (ssadd en2 ss))
  25.     (setq jqd (polar cen2 (angle cen2 cen1) rr2))
  26.     (command "trim" en1 "" (list en2 jqd) "")
  27.     (setq i (+ i 1))
  28.   )
  29.   (setq i 0)
  30.   (repeat nn
  31.     (setq cen2 (polar cen1 (* i pj) rr1))
  32.     (setq en1 (ssname (ssget "_C" cen2 cen2) 0))
  33.     (command "trim" ss "" (list en1 cen2) "")
  34. ;;;(setq en1 (entlast))
  35.     (setq i (+ i 1))
  36.   )
  37.   (command "circle" cen1 (/ rr1 2))
  38.   (setvar "osmode" os)
  39.   ;;恢复捕捉设置
  40.   (princ)
  41. )
发表于 2015-9-29 15:11:23 | 显示全部楼层
谢谢分享!!!!!!!!!!!!!!!!!!!!
发表于 2016-7-11 23:58:38 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-20 10:38 , Processed in 0.199632 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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