明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 6553|回复: 35

[资源] 管道求解工具0.61(更新开放命令修改)

  [复制链接]
发表于 2021-4-20 16:34:25 | 显示全部楼层 |阅读模式
本帖最后由 vectra 于 2022-5-19 15:13 编辑

管道求解工具是一款设计用以取代鸿业ACS10.0的暖通空调绘图插件

其设计目标为:
1、绿色轻量
程序压缩包尺寸目前为510KB,仅为ACS10.0安装包的千分之一。纯LISP实现,绿色安装,理论支持acad2000+任意版本。
2、易扩展
所有配置,数据库均采用纯文本格式,如lsp,csv,因此非常容易扩展。
3、极速
无依赖,无activeX调用,极速启动。管道拓朴结构基于平衡二叉树查找技术,分支查找计算极快。
4、数据分离
例如管道,中线保存所有属性数据,绘图只生成简单的对象,并采用单向管理,这意味着你可以随意修改绘图结果(处理消隐)
5、免费开源
免费使用,计划中开源。

将项目目前处于开发早期阶段,内部的数据结构和程序逻辑可能会更改,在实际项目中使用风险自负。

安装方法:
1、下载psk.rar压缩包 ,解压至任意目录,进入bin目录,运行setup.vbs。
2、手动加载psk.fas
3、menuload命令加载psk.mns菜单文件(可选)
4、完成。


欢迎任何反馈、建议、BUG报告。





*一个风管连接(DC)命令代替众多生成管件的命令;程序自动根据选择风管的数量,规格或角度关系生成合适的管件。
*直通段的风管必须为第一、第二选择。第三、四选择为三通或四通的分支。





2021-4-20 版本 0.3

      初次发布公开测试


2021-4-27 版本 0.4

      *放弃创建路径时对已有路径的检测,大幅提高响应速度。
      *分支计算相关操作由默认全图查找修改为事先指定视口可见范围,提高大量PSK对象下的查找计算速度。
      *路径现在按prop.csv中定义的组码类型保存数据。
      *应用名称PSK-FIT与PSK-BLOCK合并为PSK-PART
      *KEYPACK改名为PARTSET
      *设备库中管口定义文件实现(ports.lsp)
      *选项中的自动更新图面功能现在起作用了。
      *可以设置用户图层配置(var.lsp文件中增加配置文件路径),完善default配置,并设其为默认
2021-4-28 版本 0.5

  *管件类型名以PATH为前缀,如ELBOW修改为DUCT-RECT-EL,DUCT-ROUND-EL,PIPE-EL
  *空白属性将不在xdata中保存
  *增加导出属性报表功能
  *取消修改管道属性功能,合并到查询编辑中
  *模板增加控制小数输出位数功能,默认保留0位小数,如需指定输出位数为3位,采用如下格式
"{EL:3}"   模板"{SERV}D {W}x{H} (H+{EL:3})"则返回形如"SED 500x320 (H+2.300)"的结果
  *计算相关功能增加对象类型过滤,计算不成功增加相关提示
  *关于对话框增加显示readme.txt功能
  *水管编辑连接操作重绘修复
  *布置管道对话框中增加创建立管功能
  *属性对话框类型切换BUG修复

2021-7-6 版本 0.51

  *修复管道连接操作时错误的管端移动
  *修复四通连接时部分情况下无法生成连接件的问题
  *增加命令反应器,复制对象时自动更新DRAWID,解决复制对象重绘时绘制对象消失的问题





2021-7-18 版本 0.52

  *修复无法生成分支三通问题
  *修复复制中心线不更新DRAWID问题



2022-1-19 版本 0.60

  *异径、异径三通连接时,L、R对齐方式行为更可预测,即以第一选择看向第二选择时,管道靠哪边对齐。
  *获取路径最近端点函数psk-path-pickend中UCS问题修复,该问题同时修复遍历路径、最不利管路、分支
  汇总等调用此函数命令在UCS下的问题。
  *开放任意对象属性的编辑(cx命令)
  *设备块管口定义文件ports.lsp文件废弃,改为在块定义中直线代表。直线10为接管点,11点用于判断方
  向,扩展属性serv表示管口用途。解决UCS下插入设备管口位置有误问题。
  *pipe等直接创建水管命令的UCS问题修复。
  *布置路径时,UNDO操作之后绘图错误中断问题修复
  *配置文件规则修改,介质代号以en规则为程序内部基准,图层索引,标注规则修改(旧图需转换介质代号)。
  *组合标注UCS下的问题修复,介质代号标注为转换后代号
  *增加简单的组合布管函数,示例 (psk-create-pipegroup '("CHS" "CHR" "CD") 300)





2022-5-19 版本 0.61

*command.lsp及util.lsp不再编译进psk.fas文件中,以开放修改。
*UCS及PLAN情况下绘制时未删除旧内容问题修复。









本帖子中包含更多资源

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

x

评分

参与人数 7明经币 +9 金钱 +15 收起 理由
lxl217114 + 1 很给力!
xyp1964 + 3 赞一个!
muwind + 1 赞一个!
fundoll + 1 很给力!
mikewolf2k + 1 + 10 很给力!
panliang9 + 1 + 5 很给力!
USER2128 + 1 赞一个!

查看全部评分

"觉得好,就打赏"
    共1人打赏
发表于 2021-7-18 18:28:37 | 显示全部楼层
本帖最后由 vitalgg 于 2021-7-18 18:31 编辑


好工具,已收录到 @lisp

可以在 http://atlisp.cn 下载安装。
http://atlisp.cn/package-info?name=psk-tools&edition=stable

本帖子中包含更多资源

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

x
回复 支持 0 反对 1

使用道具 举报

 楼主| 发表于 2022-1-29 21:40:14 | 显示全部楼层
jialun22 发表于 2021-11-3 09:05
非常强大,想问问是否可以修改快捷

下个版本会考虑这个问题
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2022-5-19 12:54:37 | 显示全部楼层

对PSK对象属性操作的一些示例

  1. ;; PSK扩展工具

  2. ;; 清除对象上的所有扩展数据
  3. (defun xdata-clear (/ ss)
  4.   (princ "\n选择要清除扩展数据的对象:")
  5.   (if (setq ss (ssget))
  6.     (progn
  7.       (foreach en (p-ss->enames ss)
  8.   (p-xdata-remove en "*")
  9.       )
  10.     )
  11.   )
  12. )
  13. ;; 匹配扩展数据
  14. (defun xdata-match (/ en ss xdata)
  15.   (if (and (setq en (car (entsel "\n选择源对象:")))
  16.      (princ "\n选择要匹配扩展数据的对象:")
  17.      (setq ss (ssget))
  18.       )
  19.     (progn
  20.       (setq xdata (p-xdata-get-inner en "*"))
  21.       (foreach en (p-ss->enames ss)
  22.   (p-xdata-set-inner en xdata)
  23.       )
  24.     )
  25.   )
  26. )
  27. ;; 删除APPID为"PSK-PATH"中的指定属性"FRIC"
  28. (defun prop-clear (/ ss)
  29.   (princ "\n选择要删除属性的对象:")
  30.   (if (setq ss (ssget))
  31.     (progn
  32.       (foreach en (p-ss->enames ss)
  33.   (p-xprop-remove en "PSK-PATH" "FRIC")
  34.       )
  35.     )
  36.   )
  37. )
  38. ;; 将普通直线转换为"PSK-PATH"对象
  39. (defun convert-path (/ ss)
  40.   (princ "\n选择要转换为路径的对象:")
  41.   (if (setq ss (ssget '((0 . "LINE"))))
  42.     (progn
  43.       (foreach en (p-ss->enames ss)
  44.   (p-xprop-set
  45.     en
  46.     "PSK-PATH"
  47.     '(
  48.       (".TYPE" . "PIPE")
  49.      )
  50.   )
  51.       )
  52.     )
  53.   )
  54. )

  55. (defun exportprop ()
  56.   (setq file (open "C:/1.csv" "w"))
  57.   (foreach e $psk-prop-defination
  58.     (write-line
  59.       (strcat (car e) "," (itoa (cadr e)) "," (caddr e) "," (cadddr e))
  60.       file
  61.     )
  62.   )
  63.   (close file)
  64. )
  65. ;;

  66. ;; 批量设置对象的属性
  67. ;;;(setprop '(lambda (en) (p-xprop-set en "PSK-PART" '("FLR" . 500))))
  68. ;;;(setprop '(lambda (en) (p-xprop-set en "PSK-EQUIP" '("CLD" . 4.3))))
  69. (defun setprop (fun)
  70.   (if (setq ss (ssget))
  71.     (progn
  72.       (foreach en (p-ss->enames ss)
  73.   (apply fun (list en))
  74.       )
  75.     )
  76.   )
  77. )
  78. ;; 批量转换介质(用于版本 0.60前的旧图转换)
  79. (defun convertserv ()
  80.   (if (setq ss (ssget))
  81.     (progn
  82.       (foreach en (p-ss->enames ss)
  83.   (if (setq serv (p-get '(("S" . "SA")
  84.         ("H" . "RA")
  85.         ("X" . "OA")
  86.         ("P" . "EA")
  87.         ("RS" . "RS")
  88.         ("RP" . "RP")
  89.         ("PY" . "SE")
  90.         ("JY" . "PS")
  91.         ("XB" . "MA")
  92.         ("P(Y)" . "EA(SE)")
  93.         ("S(B)" . "SA(MA)")
  94.              )
  95.             (psk-comp-get en "SERV")
  96.            )
  97.       )
  98.     (psk-comp-set en (cons "SERV" serv))
  99.   )
  100.       )
  101.     )
  102.   )
  103. )

  104. ;; 汇总冷负荷
  105. (defun psk-cld-total (/ tot)
  106.   (setq tot 0.)
  107.   (if (setq ss (ssget))
  108.     (progn
  109.       (foreach en (p-ss->enames ss)
  110.   (setq tot (+ tot (p-xprop-get en "PSK-EQUIP" "CLD")))
  111.       )
  112.     )
  113.   )
  114.   (princ tot)
  115. )




  116. ;; 管线辅助工具 2021-4-1
  117. (defun p-groupby (ents sortby / e lst p r)
  118.   (setq  ents (mapcar (function (lambda (e) (list (p-dxf e sortby) e)))
  119.          ents
  120.        )
  121.   ents (vl-sort
  122.          ents
  123.          (function
  124.      (lambda (e1 e2) (< (car e1) (car e2)))
  125.          )
  126.        )
  127.   )
  128.   ;;  分组
  129.   (while ents
  130.     (setq e (car ents)
  131.     p (car e)
  132.     )
  133.     (while (equal (car e) p)
  134.       (setq lst   (cons (cadr e) lst) ;_ 将相同项合并
  135.       ents (cdr ents)
  136.       e   (car ents)
  137.       )
  138.     )
  139.     (setq r   (cons (cons p lst) r)
  140.     lst nil
  141.     )
  142.   )
  143.   r
  144. )
  145. ;; 两条直线连接打断
  146. ;;;(mt-line-interbreak (car (entsel)) (car (entsel)))
  147. (defun mt-line-interbreak (line1 line2 / p)
  148.   (if (and (not (equal line1 line2))
  149.      (setq p (p-line-getinters line1 line2))
  150.       )
  151.     (progn
  152.       (psk-line-breakat line1 p)
  153.       (psk-line-breakat line2 p)
  154.     )
  155.   )
  156. )
  157. ;; 选定一组直线,按图层分组,如果每个图层中的直线是两条,对该两直线进行连接打断操作
  158. (defun mt-lines-interbreak (/ ents)
  159.   (princ "\n选择要连接打断的直线:")
  160.   (if (setq ents (ssget))
  161.     (progn
  162.       (setq ents (p-ss->enames ents)
  163.       ents (p-groupby ents 8)
  164.       )

  165.       (foreach lines ents
  166.   (setq lines (cdr lines))
  167.   (if (= (length lines) 2)
  168.     (progn
  169.       (mt-line-interbreak (car lines) (cadr lines))
  170.     )
  171.   )
  172.       )
  173.     )
  174.   )
  175. )

  176. (defun c:bb (/)
  177.   (p-commandrun '(mt-lines-interbreak))
  178. )
  179. (defun c:xclear  (/)
  180.   (p-commandrun '(xdata-clear))
  181. )
  182. (defun c:xma (/)
  183.   (p-commandrun '(xdata-match))
  184. )
  185. (defun c:convertpath (/)
  186.   (p-commandrun '(convert-path))
  187. )

  188. (defun c:cldtot (/)
  189.   (p-commandrun '(psk-cld-total))
  190. )

  191. ;; 关闭风管相关图层
  192. (defun psk-ductlayeroff  ()
  193.   (command "._-LAYER" "OFF" "M-*风*,M-*烟*" "")
  194. )
  195. ;; 打开风管相关图层
  196. (defun psk-ductlayeron  ()
  197.   (command "._-LAYER" "ON" "M-*风*,M-*烟*" "")
  198. )
发表于 2021-4-21 15:41:32 | 显示全部楼层
对于暖通专业来说,这绝对是好工具。设置有点问题,PSKCONFIG 参数太多。
发表于 2021-4-21 17:52:47 | 显示全部楼层
对于暖通专业来说,这绝对是好工具
发表于 2021-4-22 12:57:22 | 显示全部楼层
强大,下载使用一下
发表于 2021-4-22 19:13:52 | 显示全部楼层
支持楼主开源
发表于 2021-4-27 09:11:02 | 显示全部楼层
为什么我下载的压缩文件打不开?说是被破坏了?
 楼主| 发表于 2021-4-27 11:52:38 | 显示全部楼层
xiangganglv 发表于 2021-4-27 09:11
为什么我下载的压缩文件打不开?说是被破坏了?

用记事本打开 删除第一行空行保存试试
发表于 2021-4-27 15:47:43 | 显示全部楼层
vectra 发表于 2021-4-27 11:52
用记事本打开 删除第一行空行保存试试

论坛另外帖子解决问题了,大家的都这样。
发表于 2021-4-29 16:10:32 | 显示全部楼层
支持,难得看到有暖通方面的程序
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 04:27 , Processed in 0.215723 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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