明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 6778|回复: 22

[已解答] 两条直线自动倒角请教

[复制链接]
发表于 2014-2-15 11:34 | 显示全部楼层 |阅读模式
下面的程序可以同时画两道平行线,现在需要紧挨画两段后可以自动连接倒角。
源代码如下:
(defun c:2l()
(setq wwdy (getreal "\n请输入宽度:"))
(if (= wwdy nil)(setq wwdy 6))
(setq str1 (rtos wwdy 2 2))
(prompt "\n  now 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 "")
)   
)
图一为现在的,图二为需要的。


本帖子中包含更多资源

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

x
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2014-2-15 12:12 | 显示全部楼层
CAD自带的命令:mline 可以画双线吧,自动倒角的.设比例可以设俩线距离.
 楼主| 发表于 2014-2-15 13:14 | 显示全部楼层
mline命令画出来是两条线在一起的,不能单独修改其中的一条线啊,我有时候会单独的修改其中的一条线,比如打断,变虚线等。
发表于 2014-2-15 13:53 | 显示全部楼层
炸开就行了。。。
 楼主| 发表于 2014-2-15 19:03 | 显示全部楼层
程序更改为:
(defun c:tttt()
(command "_mline" "s")
(princ "\n请输入起点:")
(while (> (getvar "CMDACTIVE") 0) (command PAUSE))
(setq c (entlast))
(command "explode" c )
(princ)
)
发表于 2014-2-16 15:05 | 显示全部楼层
;简单修改by edata@mjtd
  1. (defun c:2l(/ ent1 ent2 ent3 ent4 wwdy str1 pt1 pt2 dis1 ag1 pt1u pt2u)
  2.   (setq ent1 nil ent2 nil ent3 nil ent4 nil)
  3.   (defun sk_mkl(p1 p2)
  4.   (entmakex
  5.     (list
  6.       '(0 . "line")
  7.       (cons 10 p1)
  8.       (cons 11 p2)
  9.       )
  10.     )
  11.   )
  12.   (setq wwdy (getreal "\n请输入宽度:"))
  13.   (if (= wwdy nil)(setq wwdy 6))
  14.   (setq str1 (rtos wwdy 2 2))
  15.   (prompt "\n  now dline width is: ")
  16.   (prompt str1)
  17.   (if(setq pt1 (getpoint "\n enter start point:"))   
  18.   (while (setq pt2 (getpoint pt1 "\n enter next point:"))
  19.     (redraw)
  20.     (if (and ent1 ent2)
  21.       (setq ent3 ent1
  22.       ent4 ent2))
  23.     (setq dis1 (* 0.5 wwdy))
  24.     (setq ag1 (angle pt1 pt2))
  25.     (setq pt1u (polar pt1 (+ ag1 1.5708) dis1))
  26.     (setq pt2u (polar pt2 (+ ag1 1.5708) dis1))
  27.     (setq pt1d (polar pt1 (- ag1 1.5708) dis1))
  28.     (setq pt2d (polar pt2 (- ag1 1.5708) dis1))
  29.     (setq ent1(sk_mkl pt1u pt2u)
  30.     ent2(sk_mkl pt1d pt2d)
  31.     pt1 pt2
  32.       )
  33.     (setvar "FILLETRAD" 0.0)
  34.     (command "FILLET"  ent1 ent3)
  35.     (command "FILLET"  ent2 ent4)
  36.     )
  37.   )  
  38.   (princ)
  39. )

点评

edata哥哥,有没有收到邮件?  发表于 2014-2-16 15:46

评分

参与人数 2明经币 +2 收起 理由
lucas_3333 + 1 很给力!
liuhaixin88 + 1 很给力!

查看全部评分

发表于 2014-2-16 16:39 | 显示全部楼层
edata 发表于 2014-2-16 15:05
;简单修改by edata@mjtd

edata哥哥,加载时出现: error: bad argument type: numberp: nil
 楼主| 发表于 2014-2-16 19:15 | 显示全部楼层
edata大大还是厉害,我这边调试正常,另外我把 (setvar "FILLETRAD" 0.0)里面的0.0改为5.0了,这样子倒角后是个圆角,更好看些。谢谢 edata大大。
发表于 2014-2-16 23:20 | 显示全部楼层
本帖最后由 flyfox1047 于 2014-2-16 23:51 编辑

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



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

本帖子中包含更多资源

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

x

点评

原来是这样,谢谢fly大哥  发表于 2014-2-17 08:31
发表于 2014-3-5 08:19 | 显示全部楼层
edata 发表于 2014-2-16 15:05
;简单修改by edata@mjtd

E大,请问这个双线能否改为多段线PL?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-25 17:27 , Processed in 0.494599 second(s), 33 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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