明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 961|回复: 11

求一个,3切点画圆的程序

[复制链接]
发表于 2021-10-30 14:02 | 显示全部楼层 |阅读模式
20明经币
如题,选定3个切点,画出一个最大圆,
若得出的圆小于等于φ1.0,则直接输出
若得出的圆大于φ1.0,则输出φ1.0
附件: 您需要 登录 才可以下载或查看,没有账号?注册

最佳答案

查看完整内容

(defun c:test(/ e1 e2 o2) (setvar "cmdecho" 0) (setq e1(entlast)) (princ "请连续选择三个切点") (command ".circle" "_3p" "tan" pause "tan" pause "tan" pause) (setq e2(entlast)) (if(null(eq e1 e2)) (if(>(vla-get-Diameter(setq o2(vlax-ename->vla-object e2)))1.0)(vla-put-Diameter o2 1.0)) ) (prin1) )
发表于 2021-10-30 14:02 | 显示全部楼层
(defun c:test(/ e1 e2 o2)
        (setvar "cmdecho" 0)
        (setq e1(entlast))
        (princ "请连续选择三个切点")
        (command ".circle" "_3p" "tan" pause "tan" pause "tan" pause)
        (setq e2(entlast))
        (if(null(eq e1 e2))
                (if(>(vla-get-Diameter(setq o2(vlax-ename->vla-object e2)))1.0)(vla-put-Diameter o2 1.0))
        )
        (prin1)
)
回复

使用道具 举报

发表于 2021-10-30 21:57 | 显示全部楼层
是不是就是求三角形(闭合多段线)的内切圆?然后圆的半径<=1.0?
回复

使用道具 举报

发表于 2021-10-30 22:23 | 显示全部楼层
(command"circle""3p""tan"pause"tan"pause"tan"pause)
回复

使用道具 举报

发表于 2021-11-1 08:40 | 显示全部楼层
(defun c:3dqxy()
    (setq osm (getvar "osmode"))
    (setvar "cmdecho" 0)
    (setvar "osmode" 512)

    (while (and (setq p1 (getpoint "\n第1点p1:"))
                (setq p2 (getpoint p1 "\n第2点p2:"))
                (setq p3 (getpoint p1 "\n第1点p3:"))
           )

         (setvar "osmode" 0)
         (command ".circle" "_3p" "tan" p1 "tan" p2 "tan" p3)
         (setq dxf (entget (entlast)))
         (setq R (cdr (assoc 40 dxf)))
         (if (> R 1.0)
             (entmod (setq dxf (subst (cons 40 1.0) (assoc 40 dxf) dxf)))
         )
         (setvar "osmode" 512)
    )
               
    (setvar "osmode" osm)
    (setvar "cmdecho" 1)
    (princ)
)

评分

参与人数 1明经币 +1 金钱 +10 收起 理由
LYC688 + 1 + 10

查看全部评分

回复

使用道具 举报

发表于 2021-11-1 14:38 | 显示全部楼层
本帖最后由 htlaser 于 2021-11-1 14:40 编辑

多边形的最大内接圆

本帖子中包含更多资源

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

x
回复

使用道具 举报

发表于 2022-8-26 05:00 | 显示全部楼层
yshf 发表于 2021-11-1 08:40
(defun c:3dqxy()
    (setq osm (getvar "osmode"))
    (setvar "cmdecho" 0)

输入R大小呢
回复

使用道具 举报

发表于 2022-8-26 10:17 | 显示全部楼层

(defun c:3dqxy()
    (setq osm (getvar "osmode"))
    (setvar "cmdecho" 0)
    (setvar "osmode" 512)
  
    (if (= (setq RR (getreal "\n最大半径R<1.0>=")) nil)
        (setq RR 1.0)
    )
  
    (while (and (setq p1 (getpoint "\n第1点p1:"))
                (setq p2 (getpoint p1 "\n第2点p2:"))
                (setq p3 (getpoint p1 "\n第1点p3:"))
           )

         (setvar "osmode" 0)
         (command ".circle" "_3p" "tan" p1 "tan" p2 "tan" p3)
         (setq dxf (entget (entlast)))
         (setq R (cdr (assoc 40 dxf)))
         ;(if (> R 1.0)
         (if (> R RR)
             (entmod (setq dxf (subst (cons 40 1.0) (assoc 40 dxf) dxf)))
         )
         (setvar "osmode" 512)
    )
               
    (setvar "osmode" osm)
    (setvar "cmdecho" 1)
    (princ)
)

点评

666666  发表于 2022-12-9 12:21
回复

使用道具 举报

发表于 2022-8-31 01:50 | 显示全部楼层
yshf 发表于 2022-8-26 10:17
(defun c:3dqxy()
    (setq osm (getvar "osmode"))
    (setvar "cmdecho" 0)

一样是R1.0。输入多少都是R1.0
回复

使用道具 举报

发表于 2022-12-9 12:26 | 显示全部楼层
htlaser 发表于 2021-11-1 14:38
多边形的最大内接圆

批量就更牛
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-6-17 09:23 , Processed in 0.171071 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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