明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4247|回复: 6

请问:如何将倒圆角的命令修改一下?

[复制链接]
发表于 2004-6-2 20:39:00 | 显示全部楼层 |阅读模式
CAD中对两条相交直线倒圆角时往往将多余部分直接擦除了,可不可以写一个程序,在结束时加一个判断:是否擦除另一条线(y/n)?若y,则擦除;若n,则保留。
发表于 2004-6-2 20:56:00 | 显示全部楼层
假设线为ls


(setq p1 (cdr (assoc 10 (entget ls)))


                                                                                         p2 (cdr (assoc         11 (entget ls)))


)


如y,什么都没有发生,


如N





将ls的起点和终点用p1,p2。。。
发表于 2004-6-2 21:01:00 | 显示全部楼层
FILLET命令本身就可以不擦除线啊。


输入FILLET命令,回车,选择修剪(T),再回车,选择不修剪(N)。
发表于 2004-6-2 21:05:00 | 显示全部楼层
是,在r14以后有的
 楼主| 发表于 2004-6-3 15:15:00 | 显示全部楼层
谢谢大家的帮助! 按xhf大虾的说法,虽然可以不擦除线,但两条直线交点靠近圆角一边的两条小线段也保留了下来;我想可不可能得到这样一个结果:圆角后剩下一条折线和一条倒过圆角的折线(曲线?),而两条线之间没有交点。不知道这个表述是否清楚? 另外,下面这个程序运行时当选择要倒圆角的第二条线后,总是出现参数类型错误:lentityp 11。希望各位帮忙改改,感激不尽! (defun *filerror* (cmd)
(princ cmd)
(setq *error* saveerr)
(setvar "cmdecho" echo)
(princ)
) (defun c:intfil
(/ p1 p2 p3 p4 p5 p6 p7 x l1 l2 temp temp1 ltemp1 ltemp2)
(setq saveerr *error*)
(setq *error* *filerror*)
(setq echo (getvar "cmdecho"))
(setvar "cmdecho" 0)
;这里将选择两条要倒圆角的线
(while (= nil (setq ltemp1 (entsel "\n 选择要倒圆角的第一条线:")))
)
(while (= nil (setq ltemp2 (entsel "\n 选择要倒圆角的第二条线:")))
)
(setq p1 (cadr ltemp1))
(setq p2 (cadr ltemp2))
(setq l1 (entget (car ltemp1)))
(setq l2 (entget (car ltemp2)))
(setq p3 (cdr (assoc 10 l1)))
(setq p4 (cdr (assoc 11 l1)))
(setq p5 (cdr (assoc 10 l2)))
(setq p6 (cdr (assoc 11 l2)))
(setq p7 (inters p3 p4 p5 p6 nil))
(command "break" (cdr (assoc -1 l1)) p7 "@")
(command "break" (cdr (assoc -1 l2)) p7 "@")
(setq del (ssget "c" p7 p7))
(setq l1 (ssname (ssget p1) 0))
(setq l2 (ssname (ssget p2) 0))
(ssdel 11 del)
(ssdel 12 del)
(setq temp (getvar "filletrad"))
(progn (princ "\n 输入倒圆角的半径<")
(princ temp)
(princ ">:")
)
(initget 4)
(setq temp1 (getreal))
(if (= temp1 nil)
(setq rad temp)
(progn (setq rad temp1)
(setvar "filletrad" temp1)
)
)
(command "fillet" "r" rad)
(command "fillet" l1 l2)
(initget 1 "y n")
(setq x (getkword "\n 要擦除另一条线吗Y/N?"))
(if (= x "y")
(command "erase" del "")
)
(setvar "cmdecho" echo)
(setq *error* saveerr)
(princ)
)
发表于 2004-6-4 08:48:00 | 显示全部楼层
(ssdel L1 DEL);;;;
(ssdel L2 DEL);;;;
 楼主| 发表于 2004-6-4 14:53:00 | 显示全部楼层
汗!原来是1和l拼错了。谢谢龙斑竹了!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-28 08:40 , Processed in 0.148237 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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