明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2435|回复: 9

[基础] 求助:在已知直线的中点画一个圆,并把圆内线段剪掉

[复制链接]
发表于 2010-7-20 22:03 | 显示全部楼层 |阅读模式

我做了一个lisp

;;在已知线段的中点自动画一个圆,然后把圆内线段剪掉

(defun c:zdhy()
  (setq en1 (car (entsel)))
  (setq data1 (entget en1))
  (setq zb1 (assoc 10 data1))
  (setq pt1 (cdr zb1))
  (setq pt1x (car pt1))
  (setq pt1y (cadr pt1))
  (setq zb2 (assoc 11 data1))
  (setq pt2 (cdr zb2))
  (setq pt2x (car pt2))
  (setq pt2y (cadr pt2))
  (setq pt0x (/ (+ pt1x pt2x) 2))
  (setq pt0y (/ (+ pt1y pt2y) 2))
  (setq pt0 (list pt0x pt0y))
  (setq r (getdist pt0 " 输入圆半径:"))
  (command "circle" pt0 r)
  (setq en2 (entlast))
  (command "trim" en2 "" en1 "")
  (prin1)
)

 

但使用"trim"剪切命令时,不能保证每次都剪切圆内的线段,有时把圆外的线剪切掉了,求高手释疑,不胜感激。

对了,上面说的线段指“直线”,不是“多义线” 。

发表于 2010-7-20 22:15 | 显示全部楼层
使用对象双元表,将(command "trim" en2 "" en1 "")
代码修改为: (command "trim" en2 "" (list en1 pt0) "")即可!
回复 支持 1 反对 0

使用道具 举报

发表于 2010-7-20 22:52 | 显示全部楼层

哈哈,这不是一个打桥位的程序吗?干嘛搞那么复杂

 楼主| 发表于 2010-7-21 16:15 | 显示全部楼层
感谢二楼的Gu_xl,成功了,又跟你学了一招,就是“对象双元表”
发表于 2010-7-22 15:55 | 显示全部楼层
 (command "trim" en2 ""  pt0 "")亦可
发表于 2010-7-22 16:15 | 显示全部楼层
lenlenq发表于2010-7-22 15:55:00 (command \"trim\" en2 \"\"  pt0 \"\")亦可

若pt0处无别的实体,没问题,但是在实体很多,全图幅显示下,运行就不能保证正确了!对于 DIM EXTEND TRIM FILLET CHAMFER等命令,在Autolisp中都要使用双元表来“精确响应”要目标的提示!

发表于 2011-11-21 18:52 来自手机 | 显示全部楼层
学习了,对trim的理解又深了一层
发表于 2011-11-21 19:55 | 显示全部楼层
很好,收藏了。
发表于 2012-11-5 17:16 | 显示全部楼层

本帖子中包含更多资源

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

x
发表于 2021-3-4 16:48 | 显示全部楼层
Gu_xl 发表于 2010-7-20 22:15
使用对象双元表,将(command "trim" en2 "" en1 "")代码修改为: (command "trim" en2 "" (list en1 pt0) " ...

双元表裁剪威武,确实裁剪又快又准。也不会裁剪多余的线
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-16 02:42 , Processed in 0.157886 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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