明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 343|回复: 8

[测绘] 绘制隧道轮廓,东拼西凑,望大神帮忙优化

[复制链接]
发表于 6 天前 | 显示全部楼层 |阅读模式
(defun c:ac ()
(entmake
        (list '(0 . "ARC")
                (cons 10 (setq cen (getpoint "\n指定圆心")))
                (cons 40 (getdist cen "\n指定半径"))
                (cons 50 (setq sang (angle cen (getpoint cen "\n指定起点"))))
                (cons 51 (+ sang (* pi (/ (getreal "\n指定角度(°)") 180.0))))
        )
)
)
(defun c:ac1()
  (setq a (getpoint "\n请指点圆弧的起点:"))
  (setq b (getpoint "\n请指定圆弧的端点:"))
  (setq c (getreal  "\n请输入你想要的半径:"))
  (command "arc" a "E" b "R" c "")
  (princ
  )
  )

回复

使用道具 举报

发表于 4 天前 | 显示全部楼层
强大,学习了
回复 支持 1 反对 0

使用道具 举报

发表于 5 天前 | 显示全部楼层
程序简洁易懂,有实用性价值。你想要的半径  加个默认值 更方便些!
回复 支持 反对

使用道具 举报

发表于 5 天前 | 显示全部楼层
圆心、半径、起始角度和终止角度画弧
http://bbs.mjtd.com/forum.php?mo ... amp;fromuid=7316343
(出处: 明经CAD社区)
回复 支持 反对

使用道具 举报

发表于 5 天前 | 显示全部楼层
尽量少输入参数,人为给它固定下来。效率更高。
回复 支持 反对

使用道具 举报

 楼主| 发表于 5 天前 | 显示全部楼层
(defun c:ac ()
    (setq start-point (getpoint "\n指定圆弧的起点 <退出>: "))
    (while start-point
        (setq dir-point (getpoint start-point "\n指定半径方向: "))
        (setq rad (getdist start-point "\n指定半径长度: "))
        (setq cen (polar start-point (angle start-point dir-point) rad)) ; 计算圆心位置
        (setq sang (angle cen start-point)) ; 起点角度
        (setq eang (+ sang (* pi (/ (getreal "\n指定角度(°): ") 180.0)))) ; 计算终点角度
        (entmake
            (list '(0 . "ARC")
                  (cons 10 cen)
                  (cons 40 rad)
                  (cons 50 sang)
                  (cons 51 eang)
            )
        )
        (princ "\n继续绘制圆弧...按任意键继续,按 'Esc' 键退出")
        (setq start-point (getpoint "\n指定下一个圆弧的起点 <按 'Esc' 退出>: "))
    )
    (princ "\n圆弧绘制完成。")
    (princ)
)

(defun c:ac1()
  (setq a (getpoint "\n请指点圆弧的起点:"))
  (setq b (getpoint "\n请指定圆弧的端点:"))
  (setq c (getreal  "\n请输入你想要的半径:"))
  (command "arc" a "E" b "R" c "")
  (princ
  )
  )
(princ "\n加载完成,可以使用 c:ac 和 c:ac1 命令。")
(princ)
回复 支持 反对

使用道具 举报

 楼主| 发表于 5 天前 | 显示全部楼层
优化以后,实际应用更方便
回复 支持 反对

使用道具 举报

 楼主| 发表于 5 天前 | 显示全部楼层
(defun c:ac ()
    (setq start-point (getpoint "\n指定圆弧的起点 <退出>: "))
    (while start-point
        (setq dir-point (getpoint start-point "\n指定半径方向: "))
        (setq rad (getdist start-point "\n指定半径长度: "))
        (setq cen (polar start-point (angle start-point dir-point) rad)) ; 计算圆心位置
        (setq sang (angle cen start-point)) ; 起点角度
        (setq deg (getint "\n请输入角度的度数部分: "))
        (setq min (getint "\n请输入角度的分数部分: "))
        (setq sec (getint "\n请输入角度的秒数部分: "))
        (setq total-deg (+ deg (/ min 60.0) (/ sec 3600.0))) ; 将度分秒转换为十进制度数
        (setq eang (+ sang (* pi (/ total-deg 180.0)))) ; 计算终点角度
        (entmake
            (list '(0 . "ARC")
                  (cons 10 cen)
                  (cons 40 rad)
                  (cons 50 sang)
                  (cons 51 eang)
            )
        )
        (princ "\n继续绘制圆弧...按任意键继续,按 'Esc' 键退出")
        (setq start-point (getpoint "\n指定下一个圆弧的起点 <按 'Esc' 退出>: "))
    )
    (princ "\n圆弧绘制完成。")
    (princ)
)
(defun c:ac1()
  (setq a (getpoint "\n请指点圆弧的起点:"))
  (setq b (getpoint "\n请指定圆弧的端点:"))
  (setq c (getreal  "\n请输入你想要的半径:"))
  (command "arc" a "E" b "R" c "")
  (princ
  )
  )
(princ "\n加载完成,可以使用 c:ac 和 c:ac1 命令。")
(princ)
回复 支持 反对

使用道具 举报

 楼主| 发表于 5 天前 | 显示全部楼层
角度输入更方便
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-22 15:57 , Processed in 0.167224 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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