暖通风管绘制,变径连接,弯头连接,三通连接,四通连接,风管宽度修改
本帖最后由 Flamingo 于 2025-12-5 21:06 编辑暖通专业用的到的,贴上源码,所有代码均为自行编写,可自由使用,如用于商业用途,必须征得本人同意
可自行修改相关数据,这几个功能都支持坐标系转换,在用户坐标系也能使用
20250929更新,修改风管识别分组的函数,一次能识别的风管数量不受限制,且可以通用,
对于风管宽度修改命令MODIFYDUCTWIDTH,一次可以修改的风管数量不受限制
另外修改了三通中的一些代码,使三通更完善不易出错,特别是在修改之后的用户坐标系
另外在两段风管特别短的情况下,弯头连接函数容易出错,包括三通也是
20250930更新,增加了捕捉函数,主要是垂足点的捕捉,也对polarang的变量设置做了修改
添加的osnappt 函数是参考的langjs的帖子修改了下grread捕捉子函数应该能用了 - AutoLISP/Visual LISP 编程技术 - AutoCAD论坛 - 明经CAD社区 - Powered by Discuz!
20251019更新,把各种命令都集成在了一个工具箱上面,工具箱代码来自于修改了个别人的工具箱 - AutoLISP/Visual LISP 编程技术 - AutoCAD论坛 - 明经CAD社区 - Powered by Discuz!,命令TT,输入tt能看到下面提到的各个命令,也有一些其它的命令就不介绍了,不是重点
此次修改了命令MODIFYDUCTWIDTH,增加了命令VB,对其它之前的命令也做了一些小的完善
修改后的MODIFYDUCTWIDTH能在修改风管宽度的同时修改风管的端线长度使风管的端线和风管保持一致
测试用的图块的dwg文件也上传,图块可以自行修改
另外修改风管宽度的是同也能自动修改风管上的阀门尺寸
增加了插入阀门命令VB,插入的阀门能自动识别风管的宽度和角度
2025年11月1日,更新,增加了文字排版功能,命令,TAS,可以设置行距,缩进,每行的文字长度
段落按照数字加点号加空格加文字内容,例如1. (文字内容),,点后面要有个空格,才能识别为一个段落的首行
,后面都识别为这个段落的后续行,文字内容中不要随便加空格,有可能会被识别为一段的首行,
或者文字数字加顿号或者点号加空格加内容,例如,一、 文字内容),,点后面要有个空格,才能识别为一个段落的首行
,后面都识别为这个段落的后续行,文字内容中不要随便加空格,有可能会被识别为一段的首行,
功能1,命令dynamicduct自动绘制风管并用弯头连接,使用默认宽度或者上次输入的宽度,按s切换风管类型
功能2,命令DE,对风管进行弯头连接,输入der可修改弯头半径曲率
功能3,命令THREE_WAY_ELBOW,三通或者四通连接,均只考虑互相垂直或者平行的风管,
可以选择两组风管也可以选择三组风管,将生成三通,如果选择两组风管则自动断线成三组风管,
如果有一组风管宽度大于其它风管,则自动选择这组风管为主风管
如果没有最宽的风管,则需要手动选择主风管,根据选择的主风管绘制三通
如果选择的是四组风管,将自动生成四通,同样,如果有一组风管宽度大于其它三组,则默认为主风管
如果没有最宽的风管,则提示手动选择主风管,根据主风管生成四通
四通,也是同一个命令,THREE_WAY_ELBOW,选择四组风管就是生成四通
风管宽度修改,MODIFYDUCTWIDTH,默认使用上次的宽度,可以输入新的风管宽度,可以同时支持最多四组风管的宽度修改
最后一个命令,变径连接,BJ,选择两组不同宽度的风管进行变径连接
新增了一个命令,风管连接风机或其它设备,风机可以是块也可以是多段线
本帖最后由 Flamingo 于 2025-10-3 14:19 编辑
交流学习 发表于 2025-10-3 11:01
dynamicduct命令怎么设置90度,还有THREE_WAY_ELBOW三通四通命令只能打断其中一条管道,不能三个连接,其 ...
dynamicduct命令设置90度在函数osnappt中,
; 第二优先级:极轴捕捉 - 只有当没有垂足时才进行极轴捕捉
(if (and (null nearpt) (getvar "autosnap") (> (logand (getvar "autosnap") 32) 0))
(progn
; 定义所有可能的极轴角度(度)- 基于UCS
(setq polar_angles '(0 45 90 135 180 225 270 315)
angle_tolerance 5); 极轴灵敏度变量(角度)
这里一共设置了8个角度,还有极轴灵敏度也可以调,只要开了极轴,这个八个角度是自动捕捉的,
三通的命令你是执行到哪一步出错的,在函数three_way_elbow里面
命令里面有非常多的调试语句,我暂时找不到问题在哪里,可以加我微信18801908550我来看看
命令: dynamicduct
正在初始化需要的图层...
已创建图层: 0M-A-PYZ, 颜色: 8, 线型: CENTER
已创建图层: 0M-A-PY, 颜色: 2, 线型: CONTINUOUS
已创建图层: 0M-A-JYZ, 颜色: 8, 线型: CENTER
已创建图层: 0M-A-JY, 颜色: 1, 线型: CONTINUOUS
已创建图层: 0M-A-SFZ, 颜色: 8, 线型: CENTER
已创建图层: 0M-A-SF, 颜色: 4, 线型: CONTINUOUS
已创建图层: 0M-A-PFZ, 颜色: 8, 线型: CENTER
已创建图层: 0M-A-PF, 颜色: 31, 线型: CONTINUOUS
已创建图层: 0M-A-XFZ, 颜色: 8, 线型: CENTER
已创建图层: 0M-A-XF, 颜色: 3, 线型: CONTINUOUS
错误: AutoCAD 变量设置被拒绝: "polarang" 45参数类型错误: lentityp nil
第一个命令不能用怎么回事 langjs 发表于 2025-11-9 21:06
哈哈,用到了我的捕捉子函数啦。
谢谢你的代码了,找了好多帖子,试过G版主的那个自定义的gxl-Ge-grread 函数,也试过你的帖子里面的别人发的代码,最后试的你的代码,发现最好用,也简洁,我自己也能勉强修改下,用在我自己的代码中 有点东西 ,谢谢分享 谢谢楼主分享 很专业、很系统、感谢楼主分享 用不到,也顶下 很专业、很系统、感谢楼主分享 多谢楼主的无私分享
666 如果有大神愿意,可帮忙修改下,使得dynamicduct命令增加捕捉功能,目前只支持极轴捕捉