vectra 发表于 2021-4-20 16:34:25

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

本帖最后由 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情况下绘制时未删除旧内容问题修复。









vitalgg 发表于 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

vectra 发表于 2022-1-29 21:40:14

jialun22 发表于 2021-11-3 09:05
非常强大,想问问是否可以修改快捷

下个版本会考虑这个问题

vectra 发表于 2022-5-19 12:54:37


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

;; PSK扩展工具

;; 清除对象上的所有扩展数据
(defun xdata-clear (/ ss)
(princ "\n选择要清除扩展数据的对象:")
(if (setq ss (ssget))
    (progn
      (foreach en (p-ss->enames ss)
(p-xdata-remove en "*")
      )
    )
)
)
;; 匹配扩展数据
(defun xdata-match (/ en ss xdata)
(if (and (setq en (car (entsel "\n选择源对象:")))
   (princ "\n选择要匹配扩展数据的对象:")
   (setq ss (ssget))
      )
    (progn
      (setq xdata (p-xdata-get-inner en "*"))
      (foreach en (p-ss->enames ss)
(p-xdata-set-inner en xdata)
      )
    )
)
)
;; 删除APPID为"PSK-PATH"中的指定属性"FRIC"
(defun prop-clear (/ ss)
(princ "\n选择要删除属性的对象:")
(if (setq ss (ssget))
    (progn
      (foreach en (p-ss->enames ss)
(p-xprop-remove en "PSK-PATH" "FRIC")
      )
    )
)
)
;; 将普通直线转换为"PSK-PATH"对象
(defun convert-path (/ ss)
(princ "\n选择要转换为路径的对象:")
(if (setq ss (ssget '((0 . "LINE"))))
    (progn
      (foreach en (p-ss->enames ss)
(p-xprop-set
    en
    "PSK-PATH"
    '(
      (".TYPE" . "PIPE")
   )
)
      )
    )
)
)

(defun exportprop ()
(setq file (open "C:/1.csv" "w"))
(foreach e $psk-prop-defination
    (write-line
      (strcat (car e) "," (itoa (cadr e)) "," (caddr e) "," (cadddr e))
      file
    )
)
(close file)
)
;;

;; 批量设置对象的属性
;;;(setprop '(lambda (en) (p-xprop-set en "PSK-PART" '("FLR" . 500))))
;;;(setprop '(lambda (en) (p-xprop-set en "PSK-EQUIP" '("CLD" . 4.3))))
(defun setprop (fun)
(if (setq ss (ssget))
    (progn
      (foreach en (p-ss->enames ss)
(apply fun (list en))
      )
    )
)
)
;; 批量转换介质(用于版本 0.60前的旧图转换)
(defun convertserv ()
(if (setq ss (ssget))
    (progn
      (foreach en (p-ss->enames ss)
(if (setq serv (p-get '(("S" . "SA")
      ("H" . "RA")
      ("X" . "OA")
      ("P" . "EA")
      ("RS" . "RS")
      ("RP" . "RP")
      ("PY" . "SE")
      ("JY" . "PS")
      ("XB" . "MA")
      ("P(Y)" . "EA(SE)")
      ("S(B)" . "SA(MA)")
             )
            (psk-comp-get en "SERV")
         )
      )
    (psk-comp-set en (cons "SERV" serv))
)
      )
    )
)
)

;; 汇总冷负荷
(defun psk-cld-total (/ tot)
(setq tot 0.)
(if (setq ss (ssget))
    (progn
      (foreach en (p-ss->enames ss)
(setq tot (+ tot (p-xprop-get en "PSK-EQUIP" "CLD")))
      )
    )
)
(princ tot)
)




;; 管线辅助工具 2021-4-1
(defun p-groupby (ents sortby / e lst p r)
(setqents (mapcar (function (lambda (e) (list (p-dxf e sortby) e)))
         ents
       )
ents (vl-sort
         ents
         (function
   (lambda (e1 e2) (< (car e1) (car e2)))
         )
       )
)
;;分组
(while ents
    (setq e (car ents)
    p (car e)
    )
    (while (equal (car e) p)
      (setq lst   (cons (cadr e) lst) ;_ 将相同项合并
      ents (cdr ents)
      e   (car ents)
      )
    )
    (setq r   (cons (cons p lst) r)
    lst nil
    )
)
r
)
;; 两条直线连接打断
;;;(mt-line-interbreak (car (entsel)) (car (entsel)))
(defun mt-line-interbreak (line1 line2 / p)
(if (and (not (equal line1 line2))
   (setq p (p-line-getinters line1 line2))
      )
    (progn
      (psk-line-breakat line1 p)
      (psk-line-breakat line2 p)
    )
)
)
;; 选定一组直线,按图层分组,如果每个图层中的直线是两条,对该两直线进行连接打断操作
(defun mt-lines-interbreak (/ ents)
(princ "\n选择要连接打断的直线:")
(if (setq ents (ssget))
    (progn
      (setq ents (p-ss->enames ents)
      ents (p-groupby ents 8)
      )

      (foreach lines ents
(setq lines (cdr lines))
(if (= (length lines) 2)
    (progn
      (mt-line-interbreak (car lines) (cadr lines))
    )
)
      )
    )
)
)

(defun c:bb (/)
(p-commandrun '(mt-lines-interbreak))
)
(defun c:xclear(/)
(p-commandrun '(xdata-clear))
)
(defun c:xma (/)
(p-commandrun '(xdata-match))
)
(defun c:convertpath (/)
(p-commandrun '(convert-path))
)

(defun c:cldtot (/)
(p-commandrun '(psk-cld-total))
)

;; 关闭风管相关图层
(defun psk-ductlayeroff()
(command "._-LAYER" "OFF" "M-*风*,M-*烟*" "")
)
;; 打开风管相关图层
(defun psk-ductlayeron()
(command "._-LAYER" "ON" "M-*风*,M-*烟*" "")
)

liuyj 发表于 2021-4-21 15:41:32

对于暖通专业来说,这绝对是好工具。设置有点问题,PSKCONFIG 参数太多。

czb203 发表于 2021-4-21 17:52:47

对于暖通专业来说,这绝对是好工具

phoevana 发表于 2021-4-22 12:57:22

强大,下载使用一下

fundoll 发表于 2021-4-22 19:13:52

支持楼主开源:victory:

yyz639 发表于 2021-4-26 09:56:54

xiangganglv 发表于 2021-4-27 09:11:02

为什么我下载的压缩文件打不开?说是被破坏了?

vectra 发表于 2021-4-27 11:52:38

xiangganglv 发表于 2021-4-27 09:11
为什么我下载的压缩文件打不开?说是被破坏了?

用记事本打开 删除第一行空行保存试试

xiangganglv 发表于 2021-4-27 15:47:43

vectra 发表于 2021-4-27 11:52
用记事本打开 删除第一行空行保存试试

论坛另外帖子解决问题了,大家的都这样。

fs_lzh1988 发表于 2021-4-29 16:10:32

支持,难得看到有暖通方面的程序
页: [1] 2 3 4
查看完整版本: 管道求解工具0.61(更新开放命令修改)