两条直线自动倒角请教
下面的程序可以同时画两道平行线,现在需要紧挨画两段后可以自动连接倒角。源代码如下:
(defun c:2l()
(setq wwdy (getreal "\n请输入宽度:"))
(if (= wwdy nil)(setq wwdy 6))
(setq str1 (rtos wwdy 2 2))
(prompt "\nnow dline width is: ")
(prompt str1)
(setq pt1 (getpoint "\n enter start point:"))
(setq pt2 (getpoint pt1 "\n enter next point:"))
(setq dis1 (* 0.5 wwdy))
(setq ag1 (angle pt1 pt2))
(setq pt1u (polar pt1 (+ ag1 1.5708) dis1))
(setq pt2u (polar pt2 (+ ag1 1.5708) dis1))
(setq pt1d (polar pt1 (- ag1 1.5708) dis1))
(setq pt2d (polar pt2 (- ag1 1.5708) dis1))
(command "line" "non" pt1u "non" pt2u "")
(command "line" "non" pt1d "non" pt2d "")
(repeat 1000
(setq pt1 pt2)
(setq pt2 (getpoint pt1 "\n enter next point:"))
(setq dis1 (* 0.5 wwdy))
(setq ag1 (angle pt1 pt2))
(setq pt1u (polar pt1 (+ ag1 1.5708) dis1))
(setq pt2u (polar pt2 (+ ag1 1.5708) dis1))
(setq pt1d (polar pt1 (- ag1 1.5708) dis1))
(setq pt2d (polar pt2 (- ag1 1.5708) dis1))
(command "line" "non" pt1u "non" pt2u "")
(command "line" "non" pt1d "non" pt2d "")
)
)
图一为现在的,图二为需要的。
CAD自带的命令:mline 可以画双线吧,自动倒角的.设比例可以设俩线距离. mline命令画出来是两条线在一起的,不能单独修改其中的一条线啊,我有时候会单独的修改其中的一条线,比如打断,变虚线等。 炸开就行了。。。 程序更改为:
(defun c:tttt()
(command "_mline" "s")
(princ "\n请输入起点:")
(while (> (getvar "CMDACTIVE") 0) (command PAUSE))
(setq c (entlast))
(command "explode" c )
(princ)
) ;简单修改by edata@mjtd
(defun c:2l(/ ent1 ent2 ent3 ent4 wwdy str1 pt1 pt2 dis1 ag1 pt1u pt2u)
(setq ent1 nil ent2 nil ent3 nil ent4 nil)
(defun sk_mkl(p1 p2)
(entmakex
(list
'(0 . "line")
(cons 10 p1)
(cons 11 p2)
)
)
)
(setq wwdy (getreal "\n请输入宽度:"))
(if (= wwdy nil)(setq wwdy 6))
(setq str1 (rtos wwdy 2 2))
(prompt "\nnow dline width is: ")
(prompt str1)
(if(setq pt1 (getpoint "\n enter start point:"))
(while (setq pt2 (getpoint pt1 "\n enter next point:"))
(redraw)
(if (and ent1 ent2)
(setq ent3 ent1
ent4 ent2))
(setq dis1 (* 0.5 wwdy))
(setq ag1 (angle pt1 pt2))
(setq pt1u (polar pt1 (+ ag1 1.5708) dis1))
(setq pt2u (polar pt2 (+ ag1 1.5708) dis1))
(setq pt1d (polar pt1 (- ag1 1.5708) dis1))
(setq pt2d (polar pt2 (- ag1 1.5708) dis1))
(setq ent1(sk_mkl pt1u pt2u)
ent2(sk_mkl pt1d pt2d)
pt1 pt2
)
(setvar "FILLETRAD" 0.0)
(command "FILLET"ent1 ent3)
(command "FILLET"ent2 ent4)
)
)
(princ)
)
edata 发表于 2014-2-16 15:05 static/image/common/back.gif
;简单修改by edata@mjtd
edata哥哥,加载时出现: error: bad argument type: numberp: nil edata大大还是厉害,我这边调试正常,另外我把 (setvar "FILLETRAD" 0.0)里面的0.0改为5.0了,这样子倒角后是个圆角,更好看些。谢谢 edata大大。 本帖最后由 flyfox1047 于 2014-2-16 23:51 编辑
这两个有什么区别,测试一下你会发现...
由于文本的编码不一样,有的编码不能识别中文,所以加载时就会出错 edata 发表于 2014-2-16 15:05 static/image/common/back.gif
;简单修改by edata@mjtd
E大,请问这个双线能否改为多段线PL?