明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: lish

[提问] 圆弧加尖角

[复制链接]
发表于 2014-6-11 16:20:06 | 显示全部楼层
ymcui 发表于 2014-6-11 10:48
可不可以改成也可以选择多义线(也就是串接后的线)啊?因为实际应用情况中经常会碰到。谢谢!!!

(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 (entsel))
     (setq line_2 (entsel"\n选取第二条线:"))
       )
     (progn
     (setq  
      p10   (osnap(cadr line_1)"end")
      p11   (osnap(cadr line_1)"nea")

      p20   (osnap(cadr line_2)"end")
      p21   (osnap(cadr line_2)"nea")
      pt   (inters p10 p11 p20 p21 nil)
       )
       (if pt
(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 (angle p21 p20) (* 0.5 pt_d21) ))
        (command "_line" pt pt_x2 "")
      )
    )
)
       )
     )
   )
   (command "_undo" "e")
   (setvar "cmdecho" cmde)
   (setvar "osmode" osmo)
)

评分

参与人数 1明经币 +1 收起 理由
lucas_3333 + 1 感谢分享

查看全部评分

发表于 2014-6-12 08:31:30 | 显示全部楼层
liu22737 发表于 2014-6-11 16:20
(defun c:xxx (/)
   (prompt "选择相交的两条直线")
   (setq cmde (getvar "cmdecho")

谢谢liu22737的热心帮助,非常好用,谢谢
发表于 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

使用道具 举报

发表于 2014-6-12 11:36:29 | 显示全部楼层
ZZXXQQ 发表于 2014-6-12 11:04

能否做到点选圆弧,而不是点选两直线?
发表于 2014-6-12 12:56:36 | 显示全部楼层
ymcui 发表于 2014-6-12 11:36
能否做到点选圆弧,而不是点选两直线?

这个想法不错。求得两端点处法线,就求得交点了
发表于 2014-6-12 13:35:11 | 显示全部楼层
那得请黄总出手编一个程序出来!!!!!!!!
发表于 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 15:13:03 | 显示全部楼层
liu22737 发表于 2014-6-12 14:00
Z版主把trans漏掉了,原来是command,不考虑trans
借花献佛;大过半圆的狐没试过
(d ...



刚试出来的图片

本帖子中包含更多资源

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

x

点评

p3 p5搞反了,已更改  发表于 2014-6-12 15:19
发表于 2014-6-13 07:46:30 | 显示全部楼层
本帖最后由 ZZXXQQ 于 2014-6-13 07:53 编辑
liu22737 发表于 2014-6-12 14:00
Z版主把trans漏掉了,原来是command,不考虑trans
借花献佛;大过半圆的狐没试过
(d ...


原程序支持复线。
发表于 2015-1-20 09:28:25 | 显示全部楼层
如果能改变为只接选圆弧就能画出掉点那不是更好,等待高好
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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