明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3559|回复: 20

[提问] 圆弧加尖角

[复制链接]
发表于 2013-6-2 15:34:23 | 显示全部楼层 |阅读模式
本帖最后由 lish 于 2013-6-6 12:27 编辑

圆弧加尖角(用于标注与圆弧相切的两条直线的交点)。如图:

本帖子中包含更多资源

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

x

点评

请修改你的帖子标题,让标题更清晰一些  发表于 2013-6-5 17:50
发表于 2014-6-12 14:00:06 | 显示全部楼层
本帖最后由 liu22737 于 2014-6-12 15:19 编辑
ymcui 发表于 2014-6-12 11:36
能否做到点选圆弧,而不是点选两直线?

Z版主把trans漏掉了,原来是command,不考虑trans
借花献佛;大过半圆的狐没试过
(defun c:xxx (/)
(setvar "CMDECHO" 0)
(setq oldos (getvar "OSMODE"))
(setvar "OSMODE" 0)
(while(and (setq s1 (entsel "\n选择一条直线: "))
       (if (setq pc(osnap(cadr s1)"cen"))t
        (setq s2 (entsel "\n选择另一条直线: "))))
    (if pc(progn
        (setq pm(osnap(cadr s1)"mid")
                p3(osnap(cadr s1)"end")
                p5(polar p3(+(* 0.5 pi)(angle p3 pc))1)
                pt(inters p3 p5 pm pc nil));setq
        (entmake (list '(0 . "LINE") (cons 10(trans p3 1 0)) (cons 11(trans pt 1 0)) '(62 . 1)))
        (command"mirror"(entlast)""pm pc"n")
  )(progn

  (setq p1 (cadr s1) p2 (cadr s2))
  (setq p3 (osnap p1 "NEA") p4 (osnap p2 "NEA"))
  (setq p5 (osnap p1 "END") p6 (osnap p2 "END"))
  (if (and p5 p6 (setq pt (inters p3 p5 p4 p6 nil))) (progn
   (entmake (list '(0 . "LINE") (cons 10(trans  p5 1 0)) (cons 11(trans  pt 1 0))  '(62 . 1)))
   (entmake (list '(0 . "LINE") (cons 10(trans  pt 1 0))  (cons 11(trans  p6 1 0))  '(62 . 1)))
  ))
));if
)
(setvar "OSMODE" oldos)
(setvar "CMDECHO" 1)
)
回复 支持 1 反对 0

使用道具 举报

发表于 2014-6-12 11:04:35 | 显示全部楼层
  1. (defun c:xxx (/)
  2. (setvar "CMDECHO" 0)
  3. (setq oldos (getvar "OSMODE"))
  4. (setvar "OSMODE" 0)
  5. (while (and (setq s1 (entsel "\n选择一条直线: "))
  6.         (setq s2 (entsel "\n选择另一条直线: ")))
  7.   (setq p1 (cadr s1) p2 (cadr s2))
  8.   (setq p3 (osnap p1 "NEA") p4 (osnap p2 "NEA"))
  9.   (setq p5 (osnap p1 "END") p6 (osnap p2 "END"))
  10.   (if (and p5 p6 (setq pt (inters p3 p5 p4 p6 nil))) (progn
  11.    (entmake (list '(0 . "LINE") (cons 10 p5) (cons 11 pt) '(62 . 1)))
  12.    (entmake (list '(0 . "LINE") (cons 10 pt) (cons 11 p6) '(62 . 1)))
  13.   ))
  14. )
  15. (setvar "OSMODE" oldos)
  16. (setvar "CMDECHO" 1)
  17. )
回复 支持 1 反对 0

使用道具 举报

发表于 2025-4-10 12:24:19 | 显示全部楼层
谢谢大师分享的程序
回复 支持 反对

使用道具 举报

发表于 2013-6-2 19:01:55 | 显示全部楼层
本帖最后由 yaokui25 于 2013-6-2 19:07 编辑

替楼主顶一下,这个很有用
希望红色的尖角随层
在有如果切角部是:内凹的圆弧是不是也可以处理呢
发表于 2013-6-3 10:36:41 | 显示全部楼层
这种简单的事,只适合我这种乡野人去做,当然也只做得粗陋的坯子。
要想更上一层楼,那得另请高明人士:
(defun c:xxx (/)
  (prompt "选择相交的两条直线")
  (setq cmde (getvar "cmdecho")
osmo (getvar "osmode")
  )
  (setvar "cmdecho" 0)
  (setvar "osmode" 0)
  (command "_undo" "be")
  (if (and (setq line_1 (ssget ":s" '((0 . "line"))))
    (setq line_2 (ssget ":s" '((0 . "line"))))
      )
    (progn
      (setq dxf_1 (entget (ssname line_1 0))
     p10   (cdr (assoc 10 dxf_1))
     p11   (cdr (assoc 11 dxf_1))
     dxf_2 (entget (ssname line_2 0))
     p20   (cdr (assoc 10 dxf_2))
     p21   (cdr (assoc 11 dxf_2))
     pt   (inters p10 p11 p20 p21 nil)
      )
      (if (/= pt nil)
(progn
   (setq pt_d10 (distance pt p10)
  pt_d11 (distance pt p11)
   )
   (setq pt_d20 (distance pt p20)
  pt_d21 (distance pt p21)
   )
   (if (< pt_d10 pt_d11)
     (progn
       (setq pt_x (polar pt (angle p10 p11) (* 0.5 pt_d10)))
       (command "_line" pt pt_x "")
     )
     (progn
       (setq pt_x (polar pt  (angle p11 p10) (* 0.5 pt_d11)))
       (command "_line" pt pt_x "")
     )
   )
   (if (< pt_d20 pt_d21)
     (progn
       (setq pt_x2 (polar pt  (angle p20 p21) (* 0.5 pt_d20)))
       (command "_line" pt pt_x2 "")
     )
     (progn
       (setq pt_x2 (polar pt a(angle p21 p20) (* 0.5 pt_d21) ))
       (command "_line" pt pt_x2 "")
     )
   )
)
      )
    )
  )
  (command "_undo" "e")
  (setvar "cmdecho" cmde)
  (setvar "osmode" osmo)
)

评分

参与人数 1明经币 +2 收起 理由
Gu_xl + 2 热心帮忙奖励!

查看全部评分

发表于 2013-6-5 15:25:30 | 显示全部楼层
村夫 发表于 2013-6-3 10:36
这种简单的事,只适合我这种乡野人去做,当然也只做得粗陋的坯子。
要想更上一层楼,那得另请高明人士:
...

试了一下,好像有点问题,选择完对象,只生成一条线
出不来图上的效果
发表于 2013-6-5 19:56:38 | 显示全部楼层
本帖最后由 yaokui25 于 2013-6-5 20:00 编辑
村夫 发表于 2013-6-3 10:36
这种简单的事,只适合我这种乡野人去做,当然也只做得粗陋的坯子。
要想更上一层楼,那得另请高明人士:
...

楼主您好,我实在找不出来原因
为什么有的时候选的线的顺序不一样,结果不一样那
有的时候两条线都能画出来,有的时候只能出来一条线  并且提示:Error: 参数太多
发表于 2013-6-6 00:27:01 | 显示全部楼层
yaokui25 发表于 2013-6-5 19:56
楼主您好,我实在找不出来原因
为什么有的时候选的线的顺序不一样,结果不一样那
有的时候两条线都能画 ...

刚看到,好像有一条是水平线时,会有问题。过两天再看下,今天要早点睡,明天出远门。谢谢。
发表于 2013-6-6 00:29:41 | 显示全部楼层
(progn
       (setq pt_x2 (polar pt a(angle p21 p20) (* 0.5 pt_d21) ))
将这句改一下!
(setq pt_x2 (polar pt (angle p21 p20) (* 0.5 pt_d21) ))

评分

参与人数 1明经币 +1 收起 理由
yaokui25 + 1 谢谢您,好用了

查看全部评分

发表于 2013-6-6 00:32:15 | 显示全部楼层
是复制修改时的手误。不好意思了,再谢。
 楼主| 发表于 2013-6-13 14:24:30 | 显示全部楼层
村夫 发表于 2013-6-3 10:36
这种简单的事,只适合我这种乡野人去做,当然也只做得粗陋的坯子。
要想更上一层楼,那得另请高明人士:
...

这个程序还可以,可不可以改成也可以选择多义线(也就是串接后的线)啊?因为实际应用情况中经常会碰到。谢谢!!!
发表于 2014-6-11 10:48:07 | 显示全部楼层
可不可以改成也可以选择多义线(也就是串接后的线)啊?因为实际应用情况中经常会碰到。谢谢!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-4-21 17:53 , Processed in 0.203627 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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