明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 6304|回复: 16

请教:如何不用command “trim”,裁剪圆内直线:

  [复制链接]
发表于 2012-5-19 13:17:58 | 显示全部楼层 |阅读模式
假设一条多义线pl(图元名)穿过一个圆c1(图元名),圆c1的中心点是ps(点表),那么裁剪圆c1内的pl可以这么写:

(command "._trim" c1 "" (list pl ps) "")

现在由于通过循环得到了许多的圆和多义线(少说也有2000对),需要一一裁剪,这时候用command就太慢了,请问有没有用entmake或entmod之类的方式来剪切?

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2012-5-19 13:23:47 | 显示全部楼层
还可以用break
 楼主| 发表于 2012-5-19 13:27:26 | 显示全部楼层
xyp1964 发表于 2012-5-19 13:23
还可以用break

break也慢啊!你想想,一个程序里连用5000个command “break”……

点评

可以用秒杀法……  发表于 2012-5-19 13:39
发表于 2012-5-19 13:38:12 | 显示全部楼层

本帖子中包含更多资源

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

x
发表于 2012-5-19 13:47:04 | 显示全部楼层
院长发伪原码...
 楼主| 发表于 2012-5-19 13:57:53 | 显示全部楼层
这个让我比较郁闷了……如果不用command能达到这个效果,贴点代码什么的出来吧?给个思路也成啊。
发表于 2012-5-19 14:01:32 | 显示全部楼层

  1. ;; 圆内0层直线打断删除 伪源码
  2. (defun c:tt ()
  3.   (CMDLA0)
  4.   (setq        ss (ssget '((0 . "circle")))
  5.         i  -1
  6.   )
  7.   (while (setq s1 (ssname ss (setq i (1+ i))))
  8.     (xyp-lxcl s1 0 "0")
  9.   )
  10.   (CMDLA1)
  11. )
发表于 2012-5-19 15:02:18 | 显示全部楼层
本帖最后由 wowan1314 于 2012-5-19 15:04 编辑

????什么叫秒杀法?   用COMMAND剪切,2000个就得10秒左右。
关键函数xyp-lxcl看不懂。
 楼主| 发表于 2012-5-19 15:30:26 | 显示全部楼层
这个版主不给力啊。
发表于 2012-5-19 17:00:09 | 显示全部楼层
剪切只是个表面,它的最终原理还是根据条件产生新的对象和删掉旧的对象
所以你要快的话,也只能按这个思路,当然要求就会更高一点
我觉得可以试一下这样,速度应该快一点,先找出交点,按交点的在多段线的参数为顺序,把交点坐标插入到多段线的顶点列表中,得到最终的列表,再根据这个列表产生几条新的多段线,再删去旧的,最少要用vlisp,如果会c#更好

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-8-28 00:23 , Processed in 0.218794 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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