lxdz443 发表于 2014-2-15 11:34:26

两条直线自动倒角请教

下面的程序可以同时画两道平行线,现在需要紧挨画两段后可以自动连接倒角。
源代码如下:
(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 "")
)   
)
图一为现在的,图二为需要的。


kwok 发表于 2014-2-15 12:12:45

CAD自带的命令:mline 可以画双线吧,自动倒角的.设比例可以设俩线距离.

lxdz443 发表于 2014-2-15 13:14:50

mline命令画出来是两条线在一起的,不能单独修改其中的一条线啊,我有时候会单独的修改其中的一条线,比如打断,变虚线等。

q3_2006 发表于 2014-2-15 13:53:31

炸开就行了。。。

lxdz443 发表于 2014-2-15 19:03:33

程序更改为:
(defun c:tttt()
(command "_mline" "s")
(princ "\n请输入起点:")
(while (> (getvar "CMDACTIVE") 0) (command PAUSE))
(setq c (entlast))
(command "explode" c )
(princ)
)

edata 发表于 2014-2-16 15:05:07

;简单修改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)
)

liuhaixin88 发表于 2014-2-16 16:39:36

edata 发表于 2014-2-16 15:05 static/image/common/back.gif
;简单修改by edata@mjtd

edata哥哥,加载时出现: error: bad argument type: numberp: nil

lxdz443 发表于 2014-2-16 19:15:26

edata大大还是厉害,我这边调试正常,另外我把 (setvar "FILLETRAD" 0.0)里面的0.0改为5.0了,这样子倒角后是个圆角,更好看些。谢谢 edata大大。

flyfox1047 发表于 2014-2-16 23:20:30

本帖最后由 flyfox1047 于 2014-2-16 23:51 编辑

这两个有什么区别,测试一下你会发现...



由于文本的编码不一样,有的编码不能识别中文,所以加载时就会出错

lucas_3333 发表于 2014-3-5 08:19:15

edata 发表于 2014-2-16 15:05 static/image/common/back.gif
;简单修改by edata@mjtd

E大,请问这个双线能否改为多段线PL?
页: [1] 2 3
查看完整版本: 两条直线自动倒角请教