明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 581|回复: 10

[提问] 关于用LISP修剪命令框选删除不全的问题

[复制链接]
发表于 2022-9-2 11:40 | 显示全部楼层 |阅读模式
10明经币
  1. (defun c:yfl1(/ d1 d2 d3 d4 d5 d6 d7 d8  e1 e2 e3 e4 pt0 pt1 pt2 pt3 p1  );圆法兰
  2.    (command "._undo" "_begin")
  3.   (setvar "cmdecho" 0) ;关闭普通命令提示信息
  4.   (setvar "osmode" 0)  ;关闭对象捕捉状态
  5.   
  6.   (setq d1(getreal "\n 法兰内径<151>:"));风管外径和法兰内径
  7.   (if (not d1) (setq d1 151))
  8.   (setq d2(getreal "\n 中心距<191>:"))
  9.   (if (not d2) (setq d2 191))
  10.   (setq d6(getreal "\n 法兰宽度<40>:"))
  11.   (if (not d6) (setq d6 40))
  12.   (setq d3 (+ d1 (* 2 d6)))
  13.   (setq d4(getreal "\n 开孔直径<10>:"))
  14.   (if (not d4) (setq d4 10))
  15.   (setq d5(getint "\n 开孔数量<8>:"))
  16.   (if (not d5) (setq d5 8))
  17.   (SETQ D8(/ (/ 360 D5) 2));分线角度
  18.   (setq d7(/ d3 2))
  19.   (SETQ pt0(getpoint "\n 插入点:"))
  20. ;上面为所需变量
  21.   (command "circle" pt0 "d" d1)
  22.   (setq e4(entlast))
  23.   (command "circle" pt0 "d" d2)
  24.   (setq e1(entlast))
  25.   (command "circle" pt0 "d" d3);绘制三个圆
  26.   (setq p1(list (car pt0) (+ (cadr pt0) d7)))   
  27.   (setq pt1(list (car pt0) (+ (cadr pt0) (/ d2 2))))
  28.   (command "circle" pt1 "d" d4)
  29.   (setq e2(entlast))
  30.   (command "_.ARRAY" e2 "" "P" pt0 d5  "" "")
  31.   (command "erase" e1 "")
  32.   (command "line" pt0 p1 "")
  33.   (setq e3(entlast))
  34.   (command "rotate" e3 "" pt0 d8)
  35.   (setq pt2(list (+ (car pt0) 10) (+ (cadr pt0) 10)));TR点1
  36.   (setq pt3(list (- (car pt0) 10) (- (cadr pt0) 10)));TR点2
  37.   (if
  38.     (> d1 251)
  39.   (progn
  40.   (if
  41.     (<= d1 501)
  42.   (progn
  43.   (command "rotate" e3 "" pt0 "c" 120)
  44.   (command "rotate" e3 "" pt0 "c" 240)
  45.   )
  46.   (progn
  47.   (command "rotate" e3 "" pt0 "c" 90)
  48.   (command "rotate" e3 "" pt0 "c" 180)
  49.   (command "rotate" e3 "" pt0 "c" 270)
  50.   (command "rotate" e3 "" pt0 "c" 360)))
  51.   (command "trim" e4 "" "c" pt2 pt3 "")
  52.   )
  53.   (command "erase" e3 "" ))


  54.   
  55.    
  56.   
  57.     (setvar "osmode" 16383)  ;打开对象捕捉状态
  58.   (princ) ;静默退出
  59.   (command "._undo" "_end")
  60.   )
大家帮我看看,使用修剪命令不能完全删除框选范围内的点,是咋回事呢


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

最佳答案

查看完整内容

换个思路,不要用修剪命令,直接画好再旋转
发表于 2022-9-2 11:40 | 显示全部楼层
本帖最后由 mituzhe 于 2022-9-3 17:38 编辑

换个思路,不要用修剪命令,直接画好再旋转
  1. (defun c:yfl1(/ ang d1 d2 d3 d4 e1 e4 e5 n pt0 pt1 pt2 pt3 r3 width);圆法兰
  2.   (command "._undo" "_begin")
  3.   (setvar "cmdecho" 0) ;关闭普通命令提示信息
  4.   (setvar "osmode" 0)  ;关闭对象捕捉状态
  5.   
  6.   (setq d1(getreal "\n 法兰内径<151>:"));风管外径和法兰内径
  7.   (if (not d1) (setq d1 151.))
  8.   (setq d2(getreal "\n 中心距<191>:"));圆孔中心距(直径)
  9.   (if (not d2) (setq d2 191.))
  10.   (setq width (getreal "\n 法兰宽度<40>:"))
  11.   (if (not width) (setq width 40.))
  12.   (setq d3 (+ d1 (* 2 width)));法兰外径
  13.   (setq d4(getreal "\n 开孔直径<10>:"))
  14.   (if (not d4) (setq d4 10))
  15.   (setq n(getint "\n 开孔数量<8>:"))
  16.   (if (not n) (setq n 8))
  17.   (SETQ ang (/ (/ 360. n) 2.));分线角度
  18.   (SETQ pt0 (getpoint "\n 插入点:"))
  19.   ;上面为所需变量
  20.   (command "circle" pt0 "d" d1);画内径
  21.   (setq e1 (entlast))
  22.   (command "circle" pt0 "d" d3);画外径
  23.   
  24.   (setq pt1 (mapcar '+ pt0 (list 0 (/ d1 2.) 0)));从圆心寻找内径一点
  25.   (setq pt2 (mapcar '+ pt0 (list 0 (/ d2 2.) 0)));从圆心寻找开孔圆一点
  26.   (setq pt3 (mapcar '+ pt0 (list 0 (/ d3 2.) 0)));从圆心寻找外径一点
  27.   
  28.   (command "circle" pt2 "d" d4);画圆孔
  29.   (setq e4(entlast))
  30.   (command "_.ARRAY" e4 "" "P" pt0 n  "" "");阵列布置圆孔
  31.   (command "line" pt1 pt3 "")
  32.   (setq e5(entlast))
  33.   (command "rotate" e5 "" pt0 ang)

  34.   (if (> d1 251)
  35.     (progn
  36.       (if (<= d1 501)
  37.         (progn
  38.           (command "rotate" e5 "" pt0 "c" 120)
  39.           (command "rotate" e5 "" pt0 "c" 240)
  40.         )
  41.         (progn
  42.           (command "rotate" e5 "" pt0 "c" 90)
  43.           (command "rotate" e5 "" pt0 "c" 180)
  44.           (command "rotate" e5 "" pt0 "c" 270)
  45.         )
  46.       )
  47.     )
  48.     (command "erase" e5 "" )
  49.   )
  50.   (setvar "osmode" 16383)  ;打开对象捕捉状态
  51.   (princ) ;静默退出
  52.   (command "._undo" "_end")
  53. )

回复

使用道具 举报

发表于 2022-9-2 13:38 | 显示全部楼层
  1. (defun c:tt ()
  2.   "圆法兰"
  3.   (setvar "osmode" 0)
  4.   (setq d1 (Ureal 7 "" "法兰内径" d1)) ;151
  5.   (setq d2 (Ureal 7 "" "中心距" d2)) ;191
  6.   (setq d6 (Ureal 7 "" "法兰宽度" d6)) ;40
  7.   (setq d4 (Ureal 7 "" "孔直径" d4)) ;10
  8.   (setq d5 (Uint 1 "" "开孔数量" d5)) ;8
  9.   (setq d3 (+ d1 (* 2 d6)))
  10.   (setq d8 (/ 360 d5 2.)) ;分线角度
  11.   (setq d7 (/ d3 2.))
  12.   (setq pt0 (getpoint "\n插入点: "))
  13.   (command "circle" pt0 "d" d1)
  14.   (setq e4 (entlast))
  15.   (command "circle" pt0 "d" d2)
  16.   (setq e1 (entlast))
  17.   (command "circle" pt0 "d" d3) ;绘制三个圆
  18.   (setq        p1  (polar pt0 (* pi 0.5) d7)
  19.         pt1 (polar pt0 (* pi 0.5) (/ d2 2.))
  20.   )
  21.   (command "circle" pt1 "d" d4)
  22.   (setq e2 (entlast))
  23.   (command "_.ARRAY" e2 "" "P" pt0 d5 "" "")
  24.   (command "erase" e1 "")
  25.   (command "line" (polar pt0 (* pi 0.5) (/ d1 2.)) p1 "")
  26.   (setq e3 (entlast))
  27.   (command "rotate" e3 "" pt0 d8)
  28.   (if (> d1 251)
  29.     (if        (<= d1 501)
  30.       (progn
  31.         (command "rotate" e3 "" pt0 "c" 120)
  32.         (command "rotate" e3 "" pt0 "c" 240)
  33.       )
  34.       (progn
  35.         (command "rotate" e3 "" pt0 "c" 90)
  36.         (command "rotate" e3 "" pt0 "c" 180)
  37.         (command "rotate" e3 "" pt0 "c" 270)
  38.         (command "rotate" e3 "" pt0 "c" 360)
  39.       )
  40.     )
  41.     (command "erase" e3 "")
  42.   )
  43.   (princ)
  44. )
回复

使用道具 举报

 楼主| 发表于 2022-9-2 14:23 | 显示全部楼层

大佬你这是啥命令,没有UREAL这个函数啊,而且我只想知道我修剪那部分错误出现在哪里,不是重新编写一个程序啊,而且你这个程序运行失败

点评

根本用不到trim  发表于 2022-9-2 23:13
回复

使用道具 举报

发表于 2022-9-2 17:10 | 显示全部楼层


我这里看运行没有问题啊

本帖子中包含更多资源

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

x
回复

使用道具 举报

发表于 2022-9-2 17:11 | 显示全部楼层
世人皆醉 发表于 2022-9-2 14:23
大佬你这是啥命令,没有UREAL这个函数啊,而且我只想知道我修剪那部分错误出现在哪里,不是重新编写一个 ...

你得用院长的库(XCAD)才能运行
回复

使用道具 举报

 楼主| 发表于 2022-9-3 14:09 | 显示全部楼层
mituzhe 发表于 2022-9-2 17:11
你得用院长的库(XCAD)才能运行

你把内径放到350,中心390,再看看
回复

使用道具 举报

 楼主| 发表于 2022-9-3 14:11 | 显示全部楼层
mituzhe 发表于 2022-9-2 17:11
你得用院长的库(XCAD)才能运行

XCAD是啥啊,不太了解唉
回复

使用道具 举报

发表于 2022-9-3 15:04 | 显示全部楼层
本帖最后由 mituzhe 于 2022-9-3 17:07 编辑
世人皆醉 发表于 2022-9-3 14:11
XCAD是啥啊,不太了解唉

就是楼上回复你的大佬的工具箱,看他签名。其实他已经回答了你的问题。只是用了他自己的库,你不安装他的库运行不了
回复

使用道具 举报

发表于 2022-9-3 17:17 | 显示全部楼层

本帖子中包含更多资源

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

x
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-3 04:48 , Processed in 0.412779 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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