My notes on everything
-
scipy
算法和数据结构
-
pandas
数据结构和数据分析
-
NumPy
科学计算
-
matplotlib
数据可视化PNG图像
-
jieba 中文分词结巴
# jieba 中文分词结巴 [README.md](https://github.com/fxsjy/jieba){ .md-button .md-button--primary } > 这个模块已无人维护 ## 安装 pip install jieba ## 导入 import jieba ## 分词 - `jieba.cut(sentence, cut_all=False, HMM=True, use_paddle=False)` 函数 返回generator迭代器, 可以使用 `list()`函数 转换为分词之后的 `list` 对象 - `sentence` 需要分词的字符串 - `cut_all` 参数用来控制是否采用全模式 - `HMM` 参数用来控制是否使用 HMM 模型 - `use_paddle` 参数用来控制是否使用paddle模式下的分词模式 - `jieba.cut_for_search(sentence, HMM=True)` 函数 返回generator迭代器, 可以使用 `list()`函数 转换为分词之后的 `list` 对象. 搜索引擎模式, 该方法适合用于搜索引擎构建倒排索引的分词. 效果类似于 `jieba.cut()`全模式 - `sentence` 需要分词的字符串. unicode 或 UTF-8 字符串、GBK 字符串。
-
string
字符串常量
-
Revit 天正插件TR
:material-pen-plus: `本文创建于2025-6-24` ## 天正建筑 选项卡 这个选项卡下的功能可以替代revit用于基本建筑建模的所有功能,是天正插件的核心内容。
-
Revit 操作技巧
:material-pen-plus: `本文创建于2025-5-10` ## 一、常用命令 - `RP` 放置参考平面 - `HH` 隐藏 - `HI` 隔离显示,只显示选中的图元 - `HR` 全显示,取消隐藏 - `DI` 尺寸标注 - `EL` 高程标注 - `LL` 绘制标高 - `LI` 放置线 - `TR` 修剪 - `SL` 打断 - `DL` 详图线 ## 二、绘制轴网 参考这位大佬是视频: 针对不同情况,有以下两种方式快速绘制: ### 2.1 复制CO 如果没有连续相同间距的轴线时,直接使用 `CO` 复制命令,并且勾选 `多个` 复选框。
-
Revit
:material-pen-plus: `本文创建于2025-5-10` ## 简介 族: 相当于一个模板,里面包含了很多元素,比如墙、门、窗、柱子、梁等 项目样板: 相当于模板文件 ???+ warning 如果Revit需要和其他软件配合使用, 请先安装Revit, 这样在安装其他软件时,才会自动安装Revit的插件. ### 无CAD图纸,根据PDF直接使用revit绘制图形的步骤 1. 在revit立面视图绘制标高 - 根据revit立面视图自带的两个标高绘制 - 设置这两个默认标高的左右标记同时可见 - 将 `上标头` 的标高设置为PDF图纸中的大小,不必修改标高别名 `标高2` - 使用 ++ctrl+c++ 复制 `上标头` - 使用 ++ctrl+v++ 粘贴,放置, ++esc++ - 修改标高值 - 重复上述步骤 - 根据图纸修改标高的别名 - 由于使用了复制粘贴,revit不会将粘贴的标高显示在 `项目浏览器` 的 `结构平面` 中,需要手动调整  按图示操作, 点击 `结构平面`, revit将弹出 `新建结构平面` 对话框,选取需要的标高(一般是全选), 点击 `确定` 2. 绘制轴网(在CAD中也称为定位轴线) - 随便绘制一根轴线(此处以横向轴线为例) - 设置这根轴线的左右标记同时可见,修改标记的内容,绘制时按照数字和字母顺序绘制,以使用revit的某人标记 - 使用 ++ctrl+c++ 复制这根轴线 - 使用 ++ctrl+v++ 粘贴 - 键盘输入距离 - 键盘 ++esc++ 退出, 使用 ++ctrl+c++ 复制这根刚刚放置的轴线 - 重复上述步骤 - 纵向轴线画法相同 - 将轴网放置在四个观测记号的中央 ## 第一步: 使用AutoCAD从结构图和建筑图中拆分平面图,作为底图 使用AutoCAD从结构图和建筑图中拆分平面图(平面布置图和标高平面图), 每个平面图另存为一个 CAD 文件 `.dwg`. 采用图形上面的图名作为文件名, 以便后续使用. ???+ tip 实际上也要拆分梁平面配筋图,但是有些楼层梁的布置比较简单,只使用平面布置图就可以定位梁的位置,这种情况下就没有必要使用梁平面配筋图.对于梁布置比较复杂的楼层,需要另外使用梁平面配筋图,用来放置梁. ???+ success '操作步骤' 1. 如果所有图形都合并在了一个,请先拆分图形, 然后再拆分平面图. 2. 选中图形,建议使用从右下角到左上角的矩形选取方式, 然后 单击右键- 剪贴板 - 带基点复制 - 在图形中选中基点(建议选取定位轴线的交点) - 新建一个 `FILETAB` 选项卡 - ++ctrl+v++ - 在命令框中输入 `0,0` - 回车, 这个图形的基点将放置在坐标原点处.  ???+ warning 选择图形时,请不要拖拽鼠标,而是先点击选取区域的右下角点,再点击左上角点.这种选取方式只要选中某个整体的一部分就可以选中整体. ???+ tip 'FILETAB选项卡' `FILETAB` 命令打开文件选项卡,类似于浏览器的页签, 可以打开多个文件, 每个文件都有自己的绘图和修改工具栏.  ??? tip '如何打开AutoCAD的左右两侧的绘图和修改工具栏' step1 显示菜单栏  step2 打开菜单栏的 `工具` 选项卡  ## 第二步: 使用Revit创建一个结构模型 新建 - 选择结构样板 - 勾选项目 - 点击确定 (根据结构图建模,屋顶和主要承重构件柱和梁)  ???+ tip '如何打开项目选择器和属性'  ### 2.1 绘制标高 1. 随便选取一个立面,绘制标高,此处以'东'为例:  2. 绘制标高  3. 随意绘制几个标高,参考结构图将标高的数值改为结构图中的数值,并将'标高1'之类的默认名称改为结构图中的'一层'等名称,更改名称时会弹出提示框'是否希望重命名相应视图',选择'是'即可.   4. 默认标高标注只显示右侧的,为了便于观察,往往需要同时显示左右两侧的标高标注. 在 `属性` 中点击 `编辑类型`, 勾选图示内容.  至此, 标高绘制完成. ### 2.2 绘制轴网 1. 将Revit视图切换到任意结构平面视图,将CAD图形导入Revit,注意:结构平面视图应与CAD图形一一对应,依次导入.  2. 绘制轴网,并移动方向标记使其靠近CAD图形,并使CAD图形大致位于四个方向标记的中间位置处.   3. 修改轴网的数字或字母编号,使其与定位轴线的编号一致.类似于标高标记,轴网标记也需要同时显示左右两侧的编号,二者操作类似.但是,轴网的轴线往往与定位轴线相重合,因此可以 `设置轴线中段为无` 将轴网的轴线隐藏,以免线条太多干扰视线.注意:轴线只需要在任意一个结构平面中绘制一次即可,因此绘制时建议选择线条较少的结构平面.  4. 检查其他结构平面的定位轴线与轴网是否一致,如果不一致,请回到第一步重新拆分平面图. 至此, 轴网绘制完成. ### 2.3 在基础平面图中绘制垫层 1. 通过结构图读出垫层的厚度和尺寸.  2. 绘制垫层,把垫层视作楼板  Revit会直接让我们使用系统族中的楼板, 往往我们需要修改其尺寸.为了保护系统族不会被篡改,往往复制系统族,重命名,然后修改尺寸.    3. 选择合适的方式绘制垫层, 绘制结束之后打对钩确认.  至此, 垫层绘制完成. 关闭此文件 `结构模型` `.rvt` ### 2.4 新建条形基础族和放置条形基础 1. 新建一个族  2. 通过 `放样` (面动成体) 绘制条形基础  由于新建组时选取的模型 `基于线的公制常规模型` 自带线,所以通过`拾取路径`来绘制截面,绘制完成之后打对钩  - 识图,绘制基础轮廓,操作类似于AutoCAD  - 由于图中的条形基础是对称结构,`编辑轮廓`时可以随便选取一个面,绘制结束之后打对钩  3. 至此,条形基础绘制结束.将这个族命名为 `条形基础` 保存 `.rfa`, 并关闭此文件 4. 再次打开 `结构模型.rvt` 5. 导入 `条形基础.rfa`  ???+ warning 进行此操作之后,revit并不会有任何反应,但是族文件已经导入到此项目中了. 6. 放置条形基础(`基于线的公制常规模型` 属于 `构建`)  - 选择 `放置在工作平面上` , 根据图纸标高放置在垫层上  - 通过快捷键 `hh` `临时隐藏/隔离` 2.3 步骤绘制的垫层,放置其遮挡CAD底图的线条 - 放置条形基础 ???+ note 放置时往往不能很好的对齐,因此放置结束之后使用对其命令 `al` 对齐,来调整基础防止的位置,操作类似于CAD  放置时也不好把握基础的具体长度,也需要自行调整,操作类似于CAD 7. 使用 `hr` 命令取消 `hh` 的隐藏功能,使垫层可见 ???+ note 如果在三维视图中查看感觉显示效果不好,可以在revit窗口左下角切换其他的 `视觉样式`  8. 切换到立面图查看,检查 至此,放置基础完成. ### 2.5 放置基础到一层的结构柱 ???+ note 使用revit建模时,按照从下到上的原则进行,一层一层的建模,即使一个柱子直接从地基到屋顶,也要分层依次放置. 1. 由于基础层已经摆放了垫层和基础,导致底图被遮挡,因此首先要使底图可见. 将底图变为可选状态,点击revit右下角的 `选择锁定图元` 使其小图标右上角的×消失.  选中底图,将其设置为 `前景`.  再次点击revit右下角的 `选择锁定图元`,禁止选中底图 2. 观察结构图中的柱结构, 如果同一个名字的柱有多种不同的配筋,应该加以区分.  3. 在revit中放置柱,并设置柱是向上延伸(高度)还是向下延伸(深度),以及要延伸到哪一层.  4. 默认柱直接防止在了基础底图的标高平面上,而柱应该防止在条形基础之上,因此需要设置柱的底部偏移.  ???+ tip 改变三维模型的观察角度: 按住 ++shift++ 键,同时使用鼠标中键拖动 至此,基础层的柱放置完成. ### 2.6 绘制基础和一层之间的的梁/板 1. 将视图切换到 `一层` 调整 `视图范围`, 防止基础层线条对一层的干扰  ???+ note 由于视图切换到了 `一层` , 主要范围的 - `顶` 应该设置为 `标高之上(二层)`, 偏移量设置为 `0`,偏移量的单位是毫米 - `剖切面` 的 `偏移量` 的值应该设置为小于二层标高的数值 - `底` 应该设置为 `标高之上(一层)`, 偏移量设置为小于一层标高的一个数值 视图深度的 `标高` 可以直接采用主要范围的 `底` 的设置 2. 放置梁,可以直接使用柱的中心点作为梁的起止点,然后使用 `al` 对齐命令对齐即可. `结构` - `梁` ???+ note revit默认柱结构会将梁截断,因此无论放置的梁和柱重合多少,都会被自动截断,这也符合实际情况,因此放置梁时不必在意梁和柱的重合,因此可以直接使用柱的中心点作为梁的起止点. revit放置构件时,不必在意配筋情况,只要注意宽高即可.但是,配筋情况不同的同名构件,要用不同的名称命名. 3. 放置板(这个板实际上是基础层的天花板) `结构` - `楼板` - `楼板:结构` - `边界线` - `矩形`, 操作结束之后打对钩 4. revit默认板会截断梁和柱,这明显与实际不符,因此需要改变二者的截断关系. 在三维视图中选中板 - `连接` - `切换链接顺序` - 勾选 `多个开关` - 再次选中板 - 使用鼠标左键拖动选择   ???+ tip 如果板无法选中,请开启revit右下角的 `按面选择图元`  5. 切换到立面图检查 至此,梁和板放置完毕. 基础层绘制完毕. ### 2.7 放置一层到二层的柱(操作同 2.5) ### 2.8 放置楼梯的柱和梁 1. 分析结构图,计算柱高和梁的偏移高度  2. 切换到一层的平面视图, `结构` - `柱`, 直接设置柱高来放置柱  3. 计算梯梁距离一层的高度,设置 `Z轴偏移值`,再放置梁,可以使用 `al` 对齐命令辅助对齐.  ???+ warning 必须先设置偏移值,再放置梁. 4. 通过 `注释` 检查梁的标高和柱的标高  至此,楼梯的柱和梁放置完毕. ### 2.9 放置二层的梁和板 由于二层的梁比较多,因此可以使用 `hh` 隐藏二层平面布置图,导入二层梁平面配筋图.以此图为基准绘制梁和板 ### 2.10 放置二层到屋顶的柱 ### 2.11 放置屋顶的梁 通过观察发现,屋顶的梁的布置和一层梁的布置大致相同,因此可以直接复制一层的梁,粘贴 1. 使用鼠标在三维视图中框选,使用 `过滤器` 选中梁  2. 点击 `复制`, 再点击 `粘贴` - `与选定的标高对齐`  3. 在弹出的对话框中选择 `屋顶` - `确定`  4. 由于屋顶的梁和一层的梁并不相同,因此需要将复制的梁更换为屋顶的梁 - 新建一个梁, ++esc++ - 选中需要替换的梁, 切换为刚刚新建的梁 至此,屋顶的梁放置完毕. ### 2.12 绘制屋顶的板 结构模型绘制完成. ## 第三步: 使用Revit创建一个建筑模型 新建 - 选择建筑样板 - 勾选项目 - 点击确定 (根据建筑图建模, 墙和其他) ### 2.1 绘制标高 导入CAD图形 绘制轴网 ### 3.2 绘制一层建筑外墙 如果墙不是承重构件(剪力墙),则使用 `墙:建筑`,绘制墙时如何中间有结构柱的话,要让出结构柱的位置(梯柱除外)  ### 3.3 绘制一层内墙 墙面有装饰需要参考 **建筑材料表** 或 **工程做法表** 墙由 **主体结构** 和 **装饰层** 组成, 装饰层又由 **踢脚线墙裙线** 和 **墙面** 组层. ???+ warning **踢脚线墙裙线** 位于 **墙面** 之上,因此有关 **踢脚线墙裙线** 的建模都需要考虑 **墙面** 的厚度等.以下都对不可见(不需要渲染)的材料进行了简化处理.大部分衬底都直接使用 **水泥砂浆** 作为材料. 以下以分割车库和卫生间的墙面为例说明: 分析 **建筑材料表**:    这面墙的结构大致如下图所示(图示的墙结构中的 `墙` 指的是这面墙的 `主体结构` 和 `墙面`).  可将这面墙分成三段建模(从下往上): 1. 第一段(高度100mm): 左(车库)水泥砂浆墙裙环氧罩面,右(卫生间)玻化砖 ???+ info '第一段的建模' 新建一个 `墙:建筑`,对其进行修改,revit提供的材料无法满足需要时需要 `新建材质`  参考 **建筑材料表** 计算并建模.  2. 第二段(高度100mm到1200mm): 左(车库)水泥砂浆墙裙环氧罩面,右(卫生间)墙面砖 3. 第三段(高度1200mm之上): 左(车库)乳胶漆,右(卫生间)墙面砖 使用 `叠层墙` 将以上三部分合成为一面墙. 在左侧 `属性` 中将墙切换到 `叠层墙`, 新建一个叠层墙,编辑类型 将以上三部分添加到这个叠层墙中,根据实际情况建模  绘制时,根据实际情况选择绘制墙时的定位线  绘制楼梯间和卫生间的墙的操作同上. ### 3.4 放置门 ???+ warning 外墙放置门时,需要放置在墙的主体结构上(核心层),因此前面放置外墙时,并没有对装饰层进行建模.门需要使用渲染. 先将CAD底图切换为 `前景`,根据建筑图CAD图纸确定门的尺寸.注意将 `类型标记` 修改为图纸上的标记.   ### 3.5 放置窗 和防止门的操作类似,窗也要使用渲染,唯一不同的是窗需要计算 `默认窗台高度`  ???+ warning 放置窗时如果看不到窗,可能是因为 `视图范围`, 此时需要调整一下视图范围,使窗可见. ### 3.6 绘制外墙装饰层(内侧) 思路:把装饰层看做是一面墙,并紧贴外墙  。
-
使用 Excel 处理角度
:material-pen-plus: `本文创建于2025-5-28` 众所周知电脑并不能直接对角度制表示的角度进行计算, 使用计算机对角度进行计算时,往往要先化角度制为弧度制. Excel 可以通过一些公式进行角度制角度的计算, 思路是 {==先将角度制转换为弧度制, 然后再将弧度制转换成角度制==}, 为了实现这个运算,往往需要用到以下公式: - `PI()` 常数 π - `INT()` 取整函数,对传入的数值进行取整,舍弃小数位 - `RADIANS()` 传入数值,单位默认为°, 将角度制转换为弧度制 - `DEGREES()` 传入数值,单位默认为rad, 将弧度制转换成角度制 - `ROUND(num,num-digits)` 四舍五入函数,传入数值,和需要保留的位数,对数值进行四舍五入 有些时候我们并不喜欢使用小数表示角度制角度,例如 $45.5 \degree$, 而是使用度分秒表示角度, 如 $45 \degree 30' 00''$, 在由于角度制角度是60进制,因此计算显得非常麻烦.  使用度分秒为单位时,应分别将度分秒写在不同的单元格中(如上表所示).以下通过`ROW 3`进行说明 - `D3` 单元格 通过公式 `=RADIANS(A3+B3/60+C3/3600)` 将 $180 \degree 45' 12''$ 转化为 3.154740801 rad - `E3` 单元格 通过公式 `=DEGREES(D3)` 将 3.154740801 rad 转化为 $180.7533333 \degree$, 也可以通过公式 `=A3+B3/60+C3/3600` 将 $180 \degree 45' 12''$ 转换为 $180.7533333 \degree$ - `F3` 单元格 通过公式 `=INT(E3)` 对以度为单位的角度取整,从而获取以度分秒为单位时的度数 - `G3` 单元格 通过公式 `=INT((E3-F3)*60)` 先获取以度为单位角度的小数位,再乘以60获得有小数位分数,再取整获得以度分秒为单位时的分数 - `H3` 单元格 通过公式 `=(E3-F3-G3/60)*3600` 依次减去以度分秒为单位的度数,和化为度数的分数,得到剩余的度数,再乘以3600,将度数化为秒数,从而得到以度分秒为单位的秒数 ???+ tip 可以将度分秒统一转换为秒进行计算. - 度数 = INT(总秒数/3600) - 分数 = INT(总秒数 - 度数*60) - 秒数 = 总秒数 - 3600*度数 - 60*分数 ???+ tip 对精度有要求时,应该使用 `ROUND()` 函数来控制精度. ???+ warning 计算时可能会出现精度问题,例如 `G6` 和 `H6` 单元格 就出现了精度问题. 。