明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 280|回复: 6

[源码] 电缆水平偏移弯曲线绘制

  [复制链接]
发表于 前天 19:08 | 显示全部楼层 |阅读模式
按规范,电缆有最大允许弯曲半径要求,电缆水平偏移时弯曲段投影长度公式为L≥(4RX-X^2)^0.5。
要反复多次使用该要求绘制电缆弯曲线,不胜其扰,因此采用lisp编写了一段程序来自动绘制。该

程序以测试在浩辰CAD2019、AutoCAD2021上没有问题。
  1. ;指定电缆允许弯曲半径及水平偏移起止点,自动绘制电缆弯曲线
  2. (defun c:tt()
  3.   (setq v1 (getvar "osmode"))
  4.   (setq v2 (getvar "cmdecho"))
  5.   (setq v3 (getvar "blipmode"))
  6.   (setq R (getreal "\n请输入电缆允许弯曲半径(mm):"))
  7.   (setq p1 (getpoint "\n请指定水平弯曲起点:"))
  8.   (setq p2 (getpoint "\n请指定水平弯曲止点:"))
  9.   (if (> (car p1) (car p2))
  10.     (progn (setq p0 p1) (setq p1 p2) (setq p2 p0)))
  11.   (setvar "osmode" 0)
  12.   (setvar "cmdecho" 0)
  13.   (setvar "blipmode" 0)
  14.   (setq p3 (list (/ (+ (car p1) (car p2)) 2) (/ (+ (cadr p1) (cadr p2)) 2)))
  15.   (setq X (abs (- (cadr p1) (cadr p2)))) ;计算偏移距离
  16.   (if (> X (* 4 R))
  17.     (progn
  18.       (princ "\n偏移距离过大!")
  19.       (exit)
  20.     )
  21.     (setq L (sqrt (- (* 4 R X) (* X X)))) ;计算弯曲段投影长度
  22.   )
  23.   (setq p4 (list (- (car p3) (* L 0.5)) (cadr p1))) ;圆弧1起点
  24.   (setq p5 (list (+ (car p3) (* L 0.5)) (cadr p2))) ;圆弧2起点
  25.   (if (> (cadr p2) (cadr p1))
  26.     (progn
  27.       (setq p6 (polar p4 (* pi 0.5) R)) ;圆弧圆心1
  28.       (setq p7 (polar p5 (* pi -0.5) R)) ;圆弧圆心2
  29.       (command "arc" "c" p6 p4 p3)
  30.       (command "arc" "c" p7 p5 p3)
  31.       (if (< L (- (car p2) (car p1)))
  32.   (progn
  33.     (command "line" p1 p4 "")
  34.     (command "line" p2 p5 "")
  35.         )
  36.       )
  37.     )
  38.     (progn
  39.       (setq p6 (polar p4 (* pi -0.5) R)) ;圆弧圆心1
  40.       (setq p7 (polar p5 (* pi 0.5) R)) ;圆弧圆心2
  41.       (command "arc" "c" p6 p3 p4)
  42.       (command "arc" "c" p7 p3 p5)
  43.       (if (< L (- (car p2) (car p1)))
  44.   (progn
  45.     (command "line" p4 p1 "")
  46.     (command "line" p5 p2 "")
  47.         )
  48.       )
  49.     )
  50.   )
  51.   (setvar "osmode" v1)
  52.   (setvar "cmdecho" v2)
  53.   (setvar "blipmode" v3)
  54. )


本帖子中包含更多资源

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

x

评分

参与人数 2明经币 +2 收起 理由
USER2128 + 1 赞一个!
xyp1964 + 1 赞一个!

查看全部评分

回复

使用道具 举报

发表于 前天 22:48 | 显示全部楼层
CAD 命令:BLEND 一样的效果
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 昨天 06:47 | 显示全部楼层
tiancao100 发表于 2025-5-21 22:48
CAD 命令:BLEND 一样的效果

浩辰没有BLEND这个命令。AutoCAD有BLEND,但不能确保弯曲半径为指定值。不过这个BLEND在不需指定弯曲半径时很有用
回复 支持 1 反对 0

使用道具 举报

发表于 前天 19:16 | 显示全部楼层
赞,感谢分享
回复 支持 反对

使用道具 举报

发表于 昨天 07:50 | 显示全部楼层
感谢分享            
回复 支持 反对

使用道具 举报

 楼主| 发表于 昨天 09:16 | 显示全部楼层
再补充一个电缆垂直偏移曲线绘制程序
  1. ;指定电缆允许弯曲半径及垂直偏移起止点,自动绘制电缆弯曲线
  2. (defun c:tt()
  3.   (setq v1 (getvar "osmode"))
  4.   (setq v2 (getvar "cmdecho"))
  5.   (setq v3 (getvar "blipmode"))
  6.   (setq R (getreal "\n请输入电缆允许弯曲半径(mm):"))
  7.   (setq p1 (getpoint "\n请指定垂直弯曲起点:"))
  8.   (setq p2 (getpoint "\n请指定垂直弯曲止点:"))
  9.   (if (< (cadr p1) (cadr p2))
  10.     (progn (setq p0 p1) (setq p1 p2) (setq p2 p0)))
  11.   (setvar "osmode" 0)
  12.   (setvar "cmdecho" 0)
  13.   (setvar "blipmode" 0)
  14.   (setq p3 (list (/ (+ (car p1) (car p2)) 2) (/ (+ (cadr p1) (cadr p2)) 2)))
  15.   (setq X (abs (- (car p1) (car p2)))) ;计算偏移距离
  16.   (if (> X (* 4 R))
  17.     (progn
  18.       (princ "\n偏移距离过大!")
  19.       (exit)
  20.     )
  21.     (setq L (sqrt (- (* 4 R X) (* X X)))) ;计算弯曲段投影长度
  22.   )
  23.   (setq p4 (list (car p1) (+ (cadr p3) (* L 0.5)))) ;圆弧1起点
  24.   (setq p5 (list (car p2) (- (cadr p3) (* L 0.5)))) ;圆弧2起点
  25.   (if (> (car p2) (car p1))
  26.     (progn
  27.       (setq p6 (polar p4 0 R)) ;圆弧圆心1
  28.       (setq p7 (polar p5 pi R)) ;圆弧圆心2
  29.       (command "arc" "c" p6 p4 p3)
  30.       (command "arc" "c" p7 p5 p3)
  31.       (if (< L (- (cadr p1) (cadr p2)))
  32.   (progn
  33.     (command "line" p1 p4 "")
  34.     (command "line" p2 p5 "")
  35.         )
  36.       )
  37.     )
  38.     (progn
  39.       (setq p6 (polar p4 pi R)) ;圆弧圆心1
  40.       (setq p7 (polar p5 0 R)) ;圆弧圆心2
  41.       (command "arc" "c" p6 p3 p4)
  42.       (command "arc" "c" p7 p3 p5)
  43.       (if (< L (- (cadr p1) (cadr p2)))
  44.   (progn
  45.     (command "line" p4 p1 "")
  46.     (command "line" p5 p2 "")
  47.         )
  48.       )
  49.     )
  50.   )
  51.   (setvar "osmode" v1)
  52.   (setvar "cmdecho" v2)
  53.   (setvar "blipmode" v3)
  54. )

本帖子中包含更多资源

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

x

评分

参与人数 1明经币 +1 收起 理由
USER2128 + 1 赞一个!

查看全部评分

回复 支持 反对

使用道具 举报

发表于 昨天 10:01 | 显示全部楼层
yjwht 发表于 2025-5-22 06:47
浩辰没有BLEND这个命令。AutoCAD有BLEND,但不能确保弯曲半径为指定值。不过这个BLEND在不需指定弯曲半径 ...

这么命令还有个缺点,就是不能继承连接线的特性,比如图层,线宽等。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-23 02:04 , Processed in 0.174281 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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