明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 22529|回复: 80

[源码] 【源码】楼梯绘制v3.21版,优化输入方法,功能增加,操作减少

    [复制链接]
发表于 2015-7-19 19:35 | 显示全部楼层 |阅读模式
本帖最后由 kele99kele 于 2015-8-18 14:52 编辑

    持续完善中……
公告:
今后最新版只提供免费下载vlx、DCL文件及所有的支持文件,
次新版本的LISP源码开房下载但收1个明经币)
之前版本的所有源码及DLC文件均为免费下载
ps:我会采用更新功能,用币下载的以后升级多少版本都是免费升了,我升级的勤快的
话打赏几个币哦。


    更新至3.2版本。(2015-08-18)
3.21版本更新内容
本次更新工作量很大,但用户可能感觉变化很小,难度在于vector_image函数的坐标表转化上,由于之前程序运行
流程的限值,有些楼梯是分3次分别绘制的,这给vector_image函数的运用带来了很大的麻烦,不过好在解决了,
感觉解决不掉了,就要放弃的时候灵机一动,解决以后半宿兴奋的睡不着,哈哈,都是废话了,其实这次的优化改
动对用户体验真是没什么。好吧,言归正传,本次更新了如下内容:
1.重写img缩略图,不用再把sld文件考来考去了,彻底丢弃它吧,现在显示方式为vector_image实时绘图,只要参数
变化,不管是板厚变化、踏步数变化还是什么别的,统统在img缩略图区域自动显示出即将绘出的图形,好吧,套用
流行用语是所见即所得哦。
2.增加了一个参数,最小梯板厚度设置
3.其他……好吧……这次其他的没什么变化,调整了下dcl img区域的颜色又改回来算不算?

3.2版本更新内容
a.本次更新不涉及算法,结构,仅对对话框的参数输入进行优化,尽量减少键盘及鼠标操作,节约绘图时间。
b.本次更新参考了cjrun的“剖面楼梯”工具,借鉴了部分功能(鼠标量取尺寸、左右方向、踏步数计算等思路)
1.梯板长度及爬高可通过鼠标量取输入,减少键盘操作。
2.踏步数可根据所输入的参考踏步高度,以不超过所输入的参考高度为原则,自动划分踏步数量。
3.梯板厚度可根据梯板跨度、高度因素,自动计算踏步板厚度,结果以5mm为一档递增。(重新优化成10mm一档,5mm用到的人不多)
4.取消左右方向填写,改为绘图时鼠标点击指定。
5.取消所有下拉列表,改为单选框,减少鼠标点击操作。
6.增加常用AT\BT\CT\DT的快速选择,制作为12个快速选择模板,减少常规楼梯的类型选择时间,一建即可设置。
7.增加常用类型楼梯的缩略图,避免选择类型与需求不符,重绘浪费时间。
8.常规类型以外的楼梯,同样可以通过自定义的方式予以绘图,保留原有楼梯类型数量不变。
9.优化菜单布局及action,取消之前的action闪退重进的选择方式,所有enable、disabled实现方法优化。
10.建筑专业的总是说这个工具他们没用,天正的楼梯工具比这个好,好吧,我承认,不过这次版本其中一个功能建筑专业也可以用哦,板厚计算功能,不用问结构专业了,点点鼠标就知道梯板要做多少厚度了,好吧,功能不多,不过总是天正没有的嘛,呵呵。
再次感谢cjrun上传代码,希望有类似功能的插件互相借鉴,多提宝贵意见。
另外看了cjrun的代码,有点羞愧难当,人家的代码只有300行,实现了我1200行代码的大部分功能,这就是实力了,我的代码纯粹是体力活,人家的才是技术活。

3.0版本更新内容
1.增加了15种梯板+梯梁+平台板的绘制
2.镜像、缩放的坐标均采用计算得出,不再使用系统的MIRROR、SCALE命令,采用ENTMAKE函数生成,提高绘图速度。
3.全面改写坐标点计算公式,坐标计算更简练,提高效率。
4.重新制作DCL,参数达到20个,平台处梯梁与踏步板可以分别定义是否绘制,是否填充,上下梯梁、平台板均可以分开定义。如果连是否填充、镜
像、缩放的COND都计算在内,可绘制60种以上的各种自定义楼梯,单跑梯段凡是能够想到的类型全部涵盖,当然啦,基本类型只有15种,其他的采
用嵌套COND来实现,否则代码长度会超过1500行啦,现在的代码长度有700行。
5.采用多个自定义函数程序,大大减少了代码长度和插件体积。
6.剩下的就靠大家自己摸索了,通过不同参数的组合形式,可以绘制出各种不同情况的楼梯剖面。

20150729 1:40 编程日记:为了增加不绘制梯梁只绘制梯段的功能,索性就一起加了绘制平台板的功能,发现原来的编程结构不适合增加这么多的功
能,代码要超过1000行,有点小小的洁癖,大刀阔斧的从底层改起,基本上是重写了所有代码,包括DCL也重新编写了现在参数数量达到了25个,各
种情况排列组合有10类,只好又动脑筋编写通用子程序,这么多天没更新不是没管他而是所有精力都放在了重写代码上,这次改的是够彻底的,连各
坐标点的计算方法都改掉了,草稿纸都用掉了十几页,值得高兴的是所有子程序都已经写完并调试好了,DCL接口也编写调试完毕,主程序就是对各种
情况的选择运行问题了,估计还要2-3天就可以了,代码行数现在是780多行,估计最终优化完毕会有600行左右,翻了下最初的1.1版本,只有50行,
真心累啊,不过看着之前设想的功能,一步步实现,虽然累但是还是很满足的。

x.x版本前瞻:
1.查找资料,看能不能给梯段增加各种属性,为将来进一步开发做好接口准备。(这个有点难,自定义实体功能恐怕比较难搞,而且对cad的版本有
限制,近期目标是先做ini文件凑合一下吧,还有版本稳定以后把DCL和PAT文件做到LISP里面临时生成,省的考来考去的,现在做进去版本升级很难
改)

2.3版本前瞻:(这个有点改过了,直接重写了90%的代码,下个版本就3.0吧,改动实在太大了,感觉完全是两个插件了)
1.考虑增加不绘制梯梁,只绘制梯段的选项。
2.考虑增加绘制梯梁+平台板的选项

2.2版本更新内容20150725:
1.全面采用entmake函数创建图元,提高生成速度,100个踏步的楼梯生成时运行顺畅。
2.梯梁边上顶点增加多段线顶点,方便捕捉、拖拽。

20150725 21:51编程日记:所有多段线绘制工作的代码全部改用entmake函数,大大提高了绘图效率,绘图起始点修改为自梯梁边,更新镜像、缩放
对象的参照点,值得一提的是,镜像命令并非采用mirror,而是所有坐标点在list组下全部重新依据参照点计算镜像后的坐标,镜像后的图形同样采用
entmake函数创建,现在绘制100个踏步也不会出现卡顿、闪屏现象。绘制的多段线增加了上下梯梁边的顶点,方便拖拽图形。
20150725 3:25编程日记,试验了entmake函数按生成多顶点多以线楼梯的可行性,初步确定改用entmake重新编写程序并将涉及到的表操作函数调
试完毕,整装待发。最近发现影响编写进度的不是没有思路而是困扰在语言上,需要话费大量的时间用来熟悉语言,查阅函数资料。

2.1版本更新内容20150723:
  1.解决上折板下端点在折板宽度过小的情况下端点坐标会超出梯梁边线的问题,重新编写上折板下端点的坐标计算方法。
  2.增加绘图比例以满足大样图1:30或剖面图1:50等情况的自动绘制。
  3.增加填充材料为钢筋混凝土的选择项,现在填充选项为3个,一个不填充,一个涂黑,一个填充钢筋混凝土。
  4.解决钢筋混凝土填充图案个版本cad不统一的问题,新建一个名称为nice_rc的填充定义文件,将文件拷贝到所使用cad的搜索支持路径里面即可。
   
    ps:我们的终极目标是实现全自动楼梯结构剖面施工图绘制,节省广
结构佬每个工程画楼梯剖面图3个小时的时间,万里长征开始了第一步……

    psps:另外,欢迎各种大神提出好的优化思路和做法,十分感谢
    pspsps:感谢5楼lucas_3333同学提出的优化建议,3.0版本已采纳并加入程序。
    pspsps:感谢25楼clinber同学提出的优化建议,2.0版本已采纳并加入程序。



本帖子中包含更多资源

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

x

点评

没人下载,大家都等着免费,哈哈  发表于 2015-7-20 08:20

评分

参与人数 6明经币 +7 金钱 +35 收起 理由
tigcat + 1 + 15 很给力!
ucuc2003 + 1 赞一个!
淡蓝色的忧伤 + 1 + 20 很给力!
zctao1966 + 1 支持源码
lucas_3333 + 1 支持楼主源创
xyp1964 + 2 赞一个!

查看全部评分

本帖被以下淘专辑推荐:

发表于 2020-6-8 22:29 | 显示全部楼层
不下载的原因是不满足需求,需要钢结构的,有个原代码是vb版本的 很长也不满足要求,但勉强能用
发表于 2015-7-19 19:38 | 显示全部楼层
谢谢楼主,我是来学习的
发表于 2015-7-19 20:19 | 显示全部楼层
楼梯生成工具,作为CAD新手还没涉及到这个程度,不过不妨碍我来跟贴支持。
发表于 2015-7-20 08:54 | 显示全部楼层
本帖最后由 lucas_3333 于 2015-7-20 08:56 编辑

粗略的看了下楼主的程序
虽然所有变局部变量都定义在主函数下是可行了, 但为何不做到每个子函数都有自己的局部变量呢?
另外我觉得这些子函数都可以作为局部子函数 , 通常来说用局部子函数会比全局函数慢,  但是于这种小程序是没有一点影响的

个人建议这样 (欢迎各位大师拍砖)
  1. (defun main (/ v1 v2 _subfun1 _subfun2)

  2.   (defun _subfun1(a0/ v2 v3)
  3.       (setq a0 (.....))
  4.           ......
  5.       (setq v2 (......))
  6.       (setq v3 (......))
  7.           ......
  8.         V3
  9.   );;end_defun_subfun1
  10.   
  11.   (defun _subfun2(/ _subb v4 v5 v6)
  12.     (defun _subb(a0/ a b c)
  13.       (setq a (...))
  14.       (setq b (...))
  15.       (setq c (* (atoi a0) 10))
  16.           ......
  17.          c
  18.     );;end_defun_subb
  19.     (setq v4 (.....))
  20.     (setq v5 (*(atoi v4) 13))
  21.     (setq v6 (_subb v5))
  22.         ......
  23.     V6
  24.   );;end_defun_subfun2

  25.   (setq v1 (......))
  26.   (setq v2 (_subfun1 v1))
  27.   ......
  28.   ......  
  29. );;end_defun_main

点评

感谢提出的宝贵意见,以后要养成良好的习惯,不然程序长了返回来改变量定义的问题也是很麻烦的,还是各用个的,分别定义好  发表于 2015-7-30 11:28
现在程序长了,变量重复的问题就出来了,3.0版的程序里我把子程序的变量定义到了子程序里面了,全在主程序里已经记不住了,起名都编不出来了。刚开始编的时候代码才有50行,变量也就十几个,现在代码700行了  发表于 2015-7-30 11:27
发表于 2015-7-20 08:56 | 显示全部楼层
学习一下.                        
 楼主| 发表于 2015-7-20 09:18 | 显示全部楼层
lucas_3333 发表于 2015-7-20 08:54
粗略的看了下楼主的程序
虽然所有变局部变量都定义在主函数下是可行了, 但为何不做到每个子函数都有自己的 ...

定义在子函数下是没问题的,主要目的也就是为了释放变量内容,为了方便统计一共用了哪些变量,所以写到了一起,另外写到子函数里面我理解是某些大型程序,难以避免变量名重名的问题,每个子函数分别定义可以在重名的情况下各个子函数独立运行,对于我编写的这个小东西,还是以方便为准设置的,谢谢不吝赐教,以前我也没想这么多的。
发表于 2015-7-20 10:00 | 显示全部楼层
起步方向  貌似现在不起作用  看了一下主程序里面还没有这个变量
 楼主| 发表于 2015-7-20 10:46 | 显示全部楼层
后续版本会加上的,预留一个接口:)

点评

不用每个版本都收币, 上传附件对话框 ,附件后面有个"更新"  发表于 2015-7-20 12:06
 楼主| 发表于 2015-7-20 12:05 | 显示全部楼层
clinber 发表于 2015-7-20 10:00
起步方向  貌似现在不起作用  看了一下主程序里面还没有这个变量

已经加上方向的判定了,昨天有这个思路,先把菜单文件加上了功能,今天才把lisp里的判定加上。
发表于 2015-7-20 15:47 | 显示全部楼层
支持下  不是本专业的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-8 02:16 , Processed in 0.247729 second(s), 33 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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