明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3518|回复: 11

[已解答] 请各位高手帮忙加上中心线

[复制链接]
发表于 2013-5-28 10:06:12 | 显示全部楼层 |阅读模式
请各位高手帮忙,给下面的程序加上中心线,谢谢!

(defun c:ttt (/ w p1 p2 ang )
  (setvar "cmdecho" 0)
  (setvar "osmode" 1023)
  (princ "画长圆孔")
  (if (= ctk_d nil) (setq ctk_d 13))
  (princ (strcat "\n请设定长圆孔直径 <" (rtos ctk_d 2 3) ">: "))
  (setq a (getdist))
  (if (= a nil) (setq a ctk_d))
  (setq ctk_d a)
  (setq r (/ ctk_d 2))
  (while (and
           (setq pt (getpoint "\n指定插入点:"))
           (setq pta  (getpoint pt "\n指定另一点:"))
          );and
    (setq ang  (angle pt pta)
       di  (distance pt pta)
       ptb  (polar pt ang r)
       pt1  (polar ptb (+ ang (/ pi 2)) r)
       pt2  (polar pt1 ang (- di (* r 2)))
       pt3  (polar ptb (+ ang (/ pi -2)) r)
       pt4  (polar pt3 ang (- di (* r 2)))
     );set
    (command "_.PLINE" "non" pt1 "non" pt2 "A" "non" pt4 "L" "non" pt3 "A" "CL")
    (command "redrawall")
    (princ "\n**继续输入**")
  );while
  (princ)
);defun


本帖子中包含更多资源

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

x

点评

至于线型您自己change吧  发表于 2013-5-28 10:28
发表于 2013-5-28 10:27:12 | 显示全部楼层
试试
  1. (defun c:ttt (/ a p1 p2 ang pt pta ptt r)
  2.   (setvar "cmdecho" 0)
  3.   (setvar "osmode" 1023)
  4.   (princ "画长圆孔")
  5.   (if (= ctk_d nil) (setq ctk_d 13))
  6.   (princ (strcat "\n请设定长圆孔直径 <" (rtos ctk_d 2 3) ">: "))
  7.   (setq a (getdist))
  8.   (if (= a nil) (setq a ctk_d))
  9.   (setq ctk_d a)
  10.   (setq r (/ ctk_d 2))
  11.   (while (and
  12.            (setq pt (getpoint "\n指定插入点:"))
  13.            (setq pta  (getpoint pt "\n指定另一点:"))
  14.           );and
  15.     (setq ang  (angle pt pta)
  16.        di  (distance pt pta)
  17.        ptb  (polar pt ang r)
  18.        pt1  (polar ptb (+ ang (/ pi 2)) r)
  19.        pt2  (polar pt1 ang (- di (* r 2)))
  20.        pt3  (polar ptb (+ ang (/ pi -2)) r)
  21.        pt4  (polar pt3 ang (- di (* r 2)))
  22.           ptt(mapcar '(lambda(x)(/ x 2))(mapcar '+ pt pta))
  23.      );set
  24.     (command "_.PLINE" "non" pt1 "non" pt2 "A" "non" pt4 "L" "non" pt3 "A" "CL")
  25.     (command "line" (polar pt (+ ang pi) 50) (polar pta ang 50) "")
  26.     (command "change" (entlast) "" "p" "c" 1 "")
  27.     (command "line" (polar ptt (+ ang (/ pi 2)) (+ r 50)) (polar ptt (- ang (/ pi 2)) (+ r 50)) "")
  28.     (command "change" (entlast) "" "p" "c" 1 "")
  29.     (command "redrawall")
  30.     (princ "\n**继续输入**")
  31.   );while
  32.   (princ)
  33. );defun
发表于 2013-5-28 13:11:47 | 显示全部楼层
中心线也不是这样布的吧
 楼主| 发表于 2013-5-28 13:20:25 | 显示全部楼层
x_s_s_1 发表于 2013-5-28 10:27
试试

  1. (defun c:ttt (/ a p1 p2 ang pt pta ptt r)
  2.   (setvar "cmdecho" 0)
  3.   (setvar "osmode" 1023)
  4.   (princ "画长圆孔")
  5.   (if (= ctk_d nil) (setq ctk_d 13))
  6.   (princ (strcat "\n请设定长圆孔直径 <" (rtos ctk_d 2 3) ">: "))
  7.   (setq a (getdist))
  8.   (if (= a nil) (setq a ctk_d))
  9.   (setq ctk_d a)
  10.   (setq r (/ ctk_d 2))
  11.   (while (and
  12.            (setq pt (getpoint "\n指定插入点:"))
  13.            (setq pta  (getpoint pt "\n指定另一点:"))
  14.           );and
  15.     (setq ang  (angle pt pta)
  16.        di  (distance pt pta)
  17.        ptb  (polar pt ang r)
  18.        pt1  (polar ptb (+ ang (/ pi 2)) r)
  19.        pt2  (polar pt1 ang (- di (* r 2)))
  20.        pt3  (polar ptb (+ ang (/ pi -2)) r)
  21.        pt4  (polar pt3 ang (- di (* r 2)))
  22.           ptt(mapcar '(lambda(x)(/ x 2))(mapcar '+ pt pta))
  23.      );set
  24.     (command "_.PLINE" "non" pt1 "non" pt2 "A" "non" pt4 "L" "non" pt3 "A" "CL")
  25.     (command "line" (polar pt (+ ang pi) (* r 1.2)) (polar pta ang (* r 1.2)) "")
  26.     (command "change" (entlast) "" "p" "la" "点划线" "")
  27.     (command "line" (polar ptt (+ ang (/ pi 2)) (* r 2.2)) (polar ptt (- ang (/ pi 2)) (* r 2.2)) "")
  28.     (command "change" (entlast) "" "p" "la" "点划线" "")
  29.     (command "redrawall")
  30.     (princ "\n**继续输入**")
  31.   );while
  32.   (princ)
  33. );defun
谢谢你!这个程序我改了一下,使得中心线延伸长度为1.2倍半径,我想实现延伸长度为0.2倍半径,却怎么也实现不了,烦劳您给指点一下。
(defun c:ttt (/ a p1 p2 ang pt pta ptt r)
  (setvar "cmdecho" 0)
  (setvar "osmode" 1023)
  (princ "画长圆孔")
  (if (= ctk_d nil) (setq ctk_d 13))
  (princ (strcat "\n请设定长圆孔直径 <" (rtos ctk_d 2 3) ">: "))
  (setq a (getdist))
  (if (= a nil) (setq a ctk_d))
  (setq ctk_d a)
  (setq r (/ ctk_d 2))
  (while (and
           (setq pt (getpoint "\n指定插入点:"))
           (setq pta  (getpoint pt "\n指定另一点:"))
          );and
    (setq ang  (angle pt pta)
       di  (distance pt pta)
       ptb  (polar pt ang r)
       pt1  (polar ptb (+ ang (/ pi 2)) r)
       pt2  (polar pt1 ang (- di (* r 2)))
       pt3  (polar ptb (+ ang (/ pi -2)) r)
       pt4  (polar pt3 ang (- di (* r 2)))
          ptt(mapcar '(lambda(x)(/ x 2))(mapcar '+ pt pta))
     );set
    (command "_.PLINE" "non" pt1 "non" pt2 "A" "non" pt4 "L" "non" pt3 "A" "CL")
    (command "line" (polar pt (+ ang pi) (* r 1.2)) (polar pta ang (* r 1.2)) "")
    (command "change" (entlast) "" "p" "la" "点划线" "")
    (command "line" (polar ptt (+ ang (/ pi 2)) (* r 2.2)) (polar ptt (- ang (/ pi 2)) (* r 2.2)) "")
    (command "change" (entlast) "" "p" "la" "点划线" "")
    (command "redrawall")
    (princ "\n**继续输入**")
  );while
  (princ)
);defun
发表于 2013-5-28 14:41:01 | 显示全部楼层
本帖最后由 ucuc2003 于 2013-6-1 15:22 编辑

中心线修改好了
发表于 2013-5-28 14:50:56 | 显示全部楼层
重新修改了
 楼主| 发表于 2013-5-28 15:20:58 | 显示全部楼层
ucuc2003 发表于 2013-5-28 14:50
重新修改了

非常感谢,我先看看,有时间向你学习一下!
发表于 2013-5-28 20:23:57 | 显示全部楼层
本帖最后由 ucuc2003 于 2013-6-2 05:08 编辑

修改好了。

本帖子中包含更多资源

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

x
 楼主| 发表于 2013-5-29 09:30:47 | 显示全部楼层
ucuc2003 发表于 2013-5-28 20:23
修改好了。

非常感谢!只是,中心线的线型比例不是1,也不固定,总在变化。
发表于 2013-5-29 10:50:20 | 显示全部楼层
支持!感谢分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-21 04:51 , Processed in 0.170092 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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