<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <author>
    <name>徐倩怡</name>
  </author>
  <generator uri="https://hexo.io/">Hexo</generator>
  <id>https://xqy-blog.pages.dev/</id>
  <link href="https://xqy-blog.pages.dev/" rel="alternate"/>
  <link href="https://xqy-blog.pages.dev/atom.xml" rel="self"/>
  <rights>All rights reserved 2026, 徐倩怡</rights>
  <subtitle>有目标，有时间，就会有收获</subtitle>
  <title>徐倩怡的博客</title>
  <updated>2026-06-29T11:57:27.182Z</updated>
  <entry>
    <author>
      <name>徐倩怡</name>
    </author>
    <category term="杂谈" scheme="https://xqy-blog.pages.dev/categories/%E6%9D%82%E8%B0%88/"/>
    <category term="博客教程" scheme="https://xqy-blog.pages.dev/tags/%E5%8D%9A%E5%AE%A2%E6%95%99%E7%A8%8B/"/>
    <category term="Hexo" scheme="https://xqy-blog.pages.dev/tags/Hexo/"/>
    <content>
      <![CDATA[<h1 id="📎-如何在博客中上传带图片的文档？"><a href="#📎-如何在博客中上传带图片的文档？" class="headerlink" title="📎 如何在博客中上传带图片的文档？"></a>📎 如何在博客中上传带图片的文档？</h1><h2 id="🎯-方法一：直接上传-PDF-并嵌入阅读"><a href="#🎯-方法一：直接上传-PDF-并嵌入阅读" class="headerlink" title="🎯 方法一：直接上传 PDF 并嵌入阅读"></a>🎯 方法一：直接上传 PDF 并嵌入阅读</h2><h3 id="步骤-1：上传-PDF-文件"><a href="#步骤-1：上传-PDF-文件" class="headerlink" title="步骤 1：上传 PDF 文件"></a>步骤 1：上传 PDF 文件</h3><p>把 PDF 文件放到博客的 <code>source/downloads/</code> 文件夹中，然后部署即可。</p><p>例如，我刚刚上传了一篇随笔文章：</p><blockquote><p><strong><a href="./downloads/2411-%E5%A6%82%E4%BD%95%E5%BF%AB%E4%B9%90%E7%95%85%E6%B8%B8%E5%AD%A6%E6%B5%B7.pdf">📄 如何快乐畅游学海？</a></strong>（点击直接下载）</p></blockquote><h3 id="步骤-2：在文章中嵌入-PDF-阅读器"><a href="#步骤-2：在文章中嵌入-PDF-阅读器" class="headerlink" title="步骤 2：在文章中嵌入 PDF 阅读器"></a>步骤 2：在文章中嵌入 PDF 阅读器</h3><p>如果你想在文章页面<strong>直接预览</strong> PDF（不跳转），可以用 <code>&lt;iframe&gt;</code> 标签：</p><pre class="line-numbers language-markup" data-language="markup"><code class="language-markup"><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>iframe</span> <span class="token attr-name">src</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>/downloads/2411-如何快乐畅游学海.pdf<span class="token punctuation">"</span></span>         <span class="token attr-name">width</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>100%<span class="token punctuation">"</span></span> <span class="token attr-name">height</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>600px<span class="token punctuation">"</span></span>         <span class="token special-attr"><span class="token attr-name">style</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span><span class="token value css language-css"><span class="token property">border</span><span class="token punctuation">:</span> 1px solid #ddd<span class="token punctuation">;</span> <span class="token property">border-radius</span><span class="token punctuation">:</span> 8px<span class="token punctuation">;</span></span><span class="token punctuation">"</span></span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>iframe</span><span class="token punctuation">></span></span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span></span></code></pre><p>效果如下（预览该 PDF）：</p><iframe src="/downloads/2411-如何快乐畅游学海.pdf"         width="100%" height="600px"         style="border: 1px solid #ddd; border-radius: 8px;"></iframe><h3 id="步骤-3：PDF-文件下载链接"><a href="#步骤-3：PDF-文件下载链接" class="headerlink" title="步骤 3：PDF 文件下载链接"></a>步骤 3：PDF 文件下载链接</h3><p>也可以只放一个下载链接，简洁大方：</p><blockquote><p>📥 <a href="./downloads/2411-%E5%A6%82%E4%BD%95%E5%BF%AB%E4%B9%90%E7%95%85%E6%B8%B8%E5%AD%A6%E6%B5%B7.pdf">点击下载：《如何快乐畅游学海》（PDF）</a></p></blockquote><hr><h2 id="🖼️-方法二：在文章中插入图片"><a href="#🖼️-方法二：在文章中插入图片" class="headerlink" title="🖼️ 方法二：在文章中插入图片"></a>🖼️ 方法二：在文章中插入图片</h2><h3 id="✅-推荐做法：使用本地图片"><a href="#✅-推荐做法：使用本地图片" class="headerlink" title="✅ 推荐做法：使用本地图片"></a>✅ 推荐做法：使用本地图片</h3><p>将图片放在 <code>source/images/</code> 文件夹中，然后用 Markdown 引用：</p><pre class="line-numbers language-markdown" data-language="markdown"><code class="language-markdown"><span class="token url"><span class="token operator">!</span>[<span class="token content">图片描述</span>](<span class="token url">/images/covers/hello.svg</span>)</span><span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><p>效果：</p><p><img src="/images/covers/hello.svg" alt="示例封面"></p><h3 id="✅-文章专属图片文件夹"><a href="#✅-文章专属图片文件夹" class="headerlink" title="✅ 文章专属图片文件夹"></a>✅ 文章专属图片文件夹</h3><p>更推荐的做法——为每篇文章建立专属图片文件夹：</p><pre class="line-numbers language-none"><code class="language-none">source&#x2F;├── _posts&#x2F;│   └── my-article.md└── images&#x2F;    └── article-assets&#x2F;        ├── photo-1.jpg        └── photo-2.png<span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><p>然后在文章中引用：</p><pre class="line-numbers language-markdown" data-language="markdown"><code class="language-markdown"><span class="token url"><span class="token operator">!</span>[<span class="token content">项目截图</span>](<span class="token url">/images/article-assets/photo-1.jpg</span>)</span><span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><h3 id="✅-图文混排示例"><a href="#✅-图文混排示例" class="headerlink" title="✅ 图文混排示例"></a>✅ 图文混排示例</h3><p>把图片和说明文字放在一起，形成图文并茂的效果：</p><hr><h2 id="🏗️-方法三：在文章中用-HTML-做更丰富的排版"><a href="#🏗️-方法三：在文章中用-HTML-做更丰富的排版" class="headerlink" title="🏗️ 方法三：在文章中用 HTML 做更丰富的排版"></a>🏗️ 方法三：在文章中用 HTML 做更丰富的排版</h2><p>Markdown 中可以直接嵌入 HTML，实现更灵活的排版：</p><pre class="line-numbers language-markup" data-language="markup"><code class="language-markup"><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token special-attr"><span class="token attr-name">style</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span><span class="token value css language-css"><span class="token property">display</span><span class="token punctuation">:</span> flex<span class="token punctuation">;</span> <span class="token property">gap</span><span class="token punctuation">:</span> 20px<span class="token punctuation">;</span> <span class="token property">align-items</span><span class="token punctuation">:</span> center<span class="token punctuation">;</span> <span class="token property">margin</span><span class="token punctuation">:</span> 20px 0<span class="token punctuation">;</span></span><span class="token punctuation">"</span></span></span><span class="token punctuation">></span></span>  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>img</span> <span class="token attr-name">src</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>/images/covers/programming.svg<span class="token punctuation">"</span></span> <span class="token attr-name">width</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>200<span class="token punctuation">"</span></span> <span class="token special-attr"><span class="token attr-name">style</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span><span class="token value css language-css"><span class="token property">border-radius</span><span class="token punctuation">:</span> 8px<span class="token punctuation">;</span></span><span class="token punctuation">"</span></span></span><span class="token punctuation">></span></span>  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span><span class="token punctuation">></span></span>    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>h4</span> <span class="token special-attr"><span class="token attr-name">style</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span><span class="token value css language-css"><span class="token property">margin</span><span class="token punctuation">:</span> 0 0 8px 0<span class="token punctuation">;</span></span><span class="token punctuation">"</span></span></span><span class="token punctuation">></span></span>左侧图片 + 右侧说明<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>h4</span><span class="token punctuation">></span></span>    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>p</span> <span class="token special-attr"><span class="token attr-name">style</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span><span class="token value css language-css"><span class="token property">margin</span><span class="token punctuation">:</span> 0<span class="token punctuation">;</span> <span class="token property">color</span><span class="token punctuation">:</span> #666<span class="token punctuation">;</span></span><span class="token punctuation">"</span></span></span><span class="token punctuation">></span></span>      这种排版方式特别适合展示作品集、项目截图，      左边放图，右边写说明文字。    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>p</span><span class="token punctuation">></span></span>  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">></span></span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><p>效果：</p><div style="display: flex; gap: 20px; align-items: center; margin: 20px 0; padding: 20px; background: var(--card-bg); border-radius: 12px;">  <img src="/images/covers/programming.svg" width="200" style="border-radius: 8px;">  <div>    <h4 style="margin: 0 0 8px 0;">左侧图片 + 右侧说明</h4>    <p style="margin: 0; color: #666;">      这种排版方式特别适合展示作品集、项目截图，      左边放图，右边写说明文字。    </p>  </div></div><hr><h2 id="📋-总结：操作步骤一览"><a href="#📋-总结：操作步骤一览" class="headerlink" title="📋 总结：操作步骤一览"></a>📋 总结：操作步骤一览</h2><table><thead><tr><th>场景</th><th>操作</th><th>代码示例</th></tr></thead><tbody><tr><td>上传 PDF</td><td>放入 <code>source/downloads/</code></td><td><code>[下载](./downloads/file.pdf)</code></td></tr><tr><td>嵌入 PDF</td><td>用 <code>&lt;iframe&gt;</code> 标签</td><td><code>&lt;iframe src=&quot;/downloads/file.pdf&quot;&gt;</code></td></tr><tr><td>插入图片</td><td>放入 <code>source/images/</code></td><td><code>![描述](/images/photo.jpg)</code></td></tr><tr><td>图文混排</td><td>用 HTML div + flex</td><td>见上方示例</td></tr></tbody></table><blockquote><p>💡 <strong>小提示</strong>：每次添加文件后，运行 <code>hexo clean &amp;&amp; hexo generate</code> 再部署，新文件就会生效。</p></blockquote><hr><p><strong>你学会了吗？</strong> 以后写文章就可以自由地插入图片、上传 PDF 文档，做出图文并茂的专业博客了！🎉</p>]]>
    </content>
    <id>https://xqy-blog.pages.dev/2026/06/29/how-to-upload-docs/</id>
    <link href="https://xqy-blog.pages.dev/2026/06/29/how-to-upload-docs/"/>
    <published>2026-06-29T02:00:00.000Z</published>
    <summary>新手必看！手把手教你如何在 Hexo + Butterfly 博客中上传 PDF 文档、插入图片，以及制作图文并茂的文章。</summary>
    <title>📎 如何在博客中上传带图片的文档？（示例教程）</title>
    <updated>2026-06-29T11:57:27.182Z</updated>
  </entry>
  <entry>
    <author>
      <name>徐倩怡</name>
    </author>
    <category term="杂谈" scheme="https://xqy-blog.pages.dev/categories/%E6%9D%82%E8%B0%88/"/>
    <category term="随笔" scheme="https://xqy-blog.pages.dev/tags/%E9%9A%8F%E7%AC%94/"/>
    <category term="工作感悟" scheme="https://xqy-blog.pages.dev/tags/%E5%B7%A5%E4%BD%9C%E6%84%9F%E6%82%9F/"/>
    <category term="结构设计" scheme="https://xqy-blog.pages.dev/tags/%E7%BB%93%E6%9E%84%E8%AE%BE%E8%AE%A1/"/>
    <content>
      <![CDATA[<h1 id="在设计中找到热爱——从几个项目说起"><a href="#在设计中找到热爱——从几个项目说起" class="headerlink" title="在设计中找到热爱——从几个项目说起"></a>在设计中找到热爱——从几个项目说起</h1><h2 id="初入行"><a href="#初入行" class="headerlink" title="初入行"></a>初入行</h2><p>2023年硕士毕业后，我进入了中国建筑科学研究院的设计院工作。从一个在实验室里做地震响应分析的研究生，到一个每天和施工图、规范打交道的结构设计师，身份的转变带来了不少新的体验。</p><h2 id="大阪世博会中国馆"><a href="#大阪世博会中国馆" class="headerlink" title="大阪世博会中国馆"></a>大阪世博会中国馆</h2><p>刚入职就参与了一个涉外项目——<strong>大阪世博会中国馆</strong>。这是我第一次在实际工程中使用 Grasshopper 进行参数化建模。</p><p>项目中的弧形坡道和楼梯有着复杂的空间几何关系，传统的绘图方式几乎无法完成。通过 Grasshopper，我可以快速调整参数，生成不同方案，并与 Midas 进行数据对接。</p><p>最让我印象深刻的是，需要<strong>用日文撰写计算书并回复日方审查意见</strong>。虽然本科二外学的日语在这里派上了用场，但专业术语的挑战还是让我花了不少功夫。</p><h2 id="加固改造的思考"><a href="#加固改造的思考" class="headerlink" title="加固改造的思考"></a>加固改造的思考</h2><p>在广东顺德某老年康复医院加固改造项目中，我第一次接触到了<strong>既有建筑的加固设计</strong>。</p><p>与新建项目不同，加固设计需要在现有条件的基础上寻找最优解。每一道梁、每一块板的加固方案，都需要考虑施工可行性、经济性和结构安全性的平衡。</p><p>这个项目让我意识到，结构工程师不仅要懂计算，还要懂施工、懂材料、懂成本。</p><h2 id="对-CAD-二次开发的兴趣"><a href="#对-CAD-二次开发的兴趣" class="headerlink" title="对 CAD 二次开发的兴趣"></a>对 CAD 二次开发的兴趣</h2><p>在工作之余，我开始自学 CAD 二次开发。初衷很简单：<strong>很多重复性的工作太浪费时间了</strong>。</p><p>从最简单的批量编号开始，到批量导出结构总说明，再到各种自动化小工具——我发现编程不仅仅是程序员的专利，作为结构工程师，掌握一定的编程能力可以大幅提高工作效率。</p><h2 id="写在最后"><a href="#写在最后" class="headerlink" title="写在最后"></a>写在最后</h2><p>结构设计是一条需要不断积累的道路。正如我博客的标语所说：</p><blockquote><p><strong>有目标，有时间，就会有收获。</strong></p></blockquote><p>希望在这条路上，能与大家共同进步、一起成长。</p>]]>
    </content>
    <id>https://xqy-blog.pages.dev/2026/06/28/design-passion/</id>
    <link href="https://xqy-blog.pages.dev/2026/06/28/design-passion/"/>
    <published>2026-06-28T14:30:00.000Z</published>
    <summary>从大阪世博会中国馆到加固改造项目，一位结构工程师在设计中找到热爱的故事。</summary>
    <title>在设计中找到热爱——从几个项目说起</title>
    <updated>2026-06-29T11:57:27.182Z</updated>
  </entry>
  <entry>
    <author>
      <name>徐倩怡</name>
    </author>
    <category term="阅读" scheme="https://xqy-blog.pages.dev/categories/%E9%98%85%E8%AF%BB/"/>
    <category term="有限元" scheme="https://xqy-blog.pages.dev/tags/%E6%9C%89%E9%99%90%E5%85%83/"/>
    <category term="读书笔记" scheme="https://xqy-blog.pages.dev/tags/%E8%AF%BB%E4%B9%A6%E7%AC%94%E8%AE%B0/"/>
    <category term="FEM" scheme="https://xqy-blog.pages.dev/tags/FEM/"/>
    <content>
      <![CDATA[<h1 id="《有限单元法——编程与软件应用》读书笔记"><a href="#《有限单元法——编程与软件应用》读书笔记" class="headerlink" title="《有限单元法——编程与软件应用》读书笔记"></a>《有限单元法——编程与软件应用》读书笔记</h1><p>最近拜读了崔济东博士的《有限单元法——编程与软件应用》一书，收获良多。这本书非常适合结构工程师和有限元初学者阅读。</p><h2 id="书籍信息"><a href="#书籍信息" class="headerlink" title="书籍信息"></a>书籍信息</h2><ul><li><strong>书名</strong>：有限单元法——编程与软件应用</li><li><strong>作者</strong>：崔济东</li><li><strong>出版社</strong>：中国建筑工业出版社</li><li><strong>出版年份</strong>：2019</li></ul><h2 id="核心内容"><a href="#核心内容" class="headerlink" title="核心内容"></a>核心内容</h2><h3 id="第一部分：有限元理论基础"><a href="#第一部分：有限元理论基础" class="headerlink" title="第一部分：有限元理论基础"></a>第一部分：有限元理论基础</h3><p>书中从最基础的<strong>矩阵位移法</strong>讲起，逐步深入到<strong>等参元</strong>、<strong>数值积分</strong>等核心概念：</p><ol><li>杆系结构有限元（一维）</li><li>平面问题有限元（二维）</li><li>空间问题有限元（三维）</li><li>等参变换与数值积分</li></ol><h3 id="第二部分：编程实现"><a href="#第二部分：编程实现" class="headerlink" title="第二部分：编程实现"></a>第二部分：编程实现</h3><p>每章都配有<strong>Matlab 代码</strong>实现，从最简单的桁架分析到复杂的平面应力分析，代码循序渐进：</p><pre class="line-numbers language-matlab" data-language="matlab"><code class="language-matlab"><span class="token comment">% 一个简单的2D桁架分析示例</span><span class="token comment">% 节点坐标</span>nodes <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">;</span> <span class="token number">4</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">;</span> <span class="token number">4</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">;</span> <span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">]</span><span class="token punctuation">;</span><span class="token comment">% 单元连接</span>elements <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">;</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">;</span> <span class="token number">3</span><span class="token punctuation">,</span> <span class="token number">4</span><span class="token punctuation">;</span> <span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">4</span><span class="token punctuation">;</span> <span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">]</span><span class="token punctuation">;</span><span class="token comment">% 材料属性</span>E <span class="token operator">=</span> <span class="token number">200e9</span><span class="token punctuation">;</span>  <span class="token comment">% 弹性模量</span>A <span class="token operator">=</span> <span class="token number">0.01</span><span class="token punctuation">;</span>   <span class="token comment">% 截面积</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><h3 id="第三部分：软件应用"><a href="#第三部分：软件应用" class="headerlink" title="第三部分：软件应用"></a>第三部分：软件应用</h3><p>结合 <strong>Abaqus</strong>、<strong>SAP2000</strong> 等商业软件，讲解有限元分析的工程应用，理论与实际相结合。</p><h2 id="读后感"><a href="#读后感" class="headerlink" title="读后感"></a>读后感</h2><p>这本书最大的特点在于<strong>理论与实践的结合</strong>。很多教材只讲理论，或只讲软件操作，但这本书将两者有机地融合在一起。</p><p>对我个人而言，读完这本书后，对 Abaqus 中那些看似”黑箱”的操作有了更深刻的理解——比如网格划分的密度对精度的影响、积分点的选取等。</p><h2 id="推荐给"><a href="#推荐给" class="headerlink" title="推荐给"></a>推荐给</h2><ul><li>正在学习有限元理论的学生</li><li>希望深入理解有限元软件的计算原理的工程师</li><li>对有限元编程感兴趣的开发者</li></ul><hr><p>你对有限元有什么看法？欢迎留言讨论！</p>]]>
    </content>
    <id>https://xqy-blog.pages.dev/2026/06/28/reading-fem-book/</id>
    <link href="https://xqy-blog.pages.dev/2026/06/28/reading-fem-book/"/>
    <published>2026-06-28T14:00:00.000Z</published>
    <summary>崔济东博士所著《有限单元法——编程与软件应用》的读书笔记，探讨理论与实践的结合之道。</summary>
    <title>《有限单元法——编程与软件应用》读书笔记</title>
    <updated>2026-06-29T11:57:27.182Z</updated>
  </entry>
  <entry>
    <author>
      <name>徐倩怡</name>
    </author>
    <category term="编程" scheme="https://xqy-blog.pages.dev/categories/%E7%BC%96%E7%A8%8B/"/>
    <category term="CAD" scheme="https://xqy-blog.pages.dev/tags/CAD/"/>
    <category term="二次开发" scheme="https://xqy-blog.pages.dev/tags/%E4%BA%8C%E6%AC%A1%E5%BC%80%E5%8F%91/"/>
    <category term="C#" scheme="https://xqy-blog.pages.dev/tags/C/"/>
    <category term="插件" scheme="https://xqy-blog.pages.dev/tags/%E6%8F%92%E4%BB%B6/"/>
    <content>
      <![CDATA[<h1 id="CAD-二次开发——批量编号插件分享"><a href="#CAD-二次开发——批量编号插件分享" class="headerlink" title="CAD 二次开发——批量编号插件分享"></a>CAD 二次开发——批量编号插件分享</h1><p>工作中经常需要对 CAD 图纸中的大量图元进行编号标注，手动操作效率低且易出错。于是我利用业余时间写了一个 <strong>CAD 批量编号插件</strong>，在这里分享给大家。</p><h2 id="插件功能"><a href="#插件功能" class="headerlink" title="插件功能"></a>插件功能</h2><p>该 DLL 插件实现了以下功能：</p><ol><li><strong>批量编号</strong> — 选中多个对象，自动按顺序编号</li><li><strong>自定义前缀</strong> — 支持设置编号前缀（如 “B-“、”L-“）</li><li><strong>文字样式</strong> — 可指定文字样式、高度、颜色</li><li><strong>排序方式</strong> — 从左到右、从上到下等多种排序方式</li></ol><h2 id="使用方法"><a href="#使用方法" class="headerlink" title="使用方法"></a>使用方法</h2><h3 id="加载插件"><a href="#加载插件" class="headerlink" title="加载插件"></a>加载插件</h3><p>在 CAD 命令行中输入：</p><pre class="line-numbers language-none"><code class="language-none">NETLOAD<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><p>选择 <code>BatchNumber.dll</code> 文件加载。</p><h3 id="执行命令"><a href="#执行命令" class="headerlink" title="执行命令"></a>执行命令</h3><p>输入命令：</p><pre class="line-numbers language-none"><code class="language-none">BATCHNUM<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><h3 id="操作步骤"><a href="#操作步骤" class="headerlink" title="操作步骤"></a>操作步骤</h3><ol><li>选择需要编号的图元</li><li>设置编号参数（前缀、起始数字、文字样式）</li><li>确认生成</li></ol><h2 id="核心代码片段"><a href="#核心代码片段" class="headerlink" title="核心代码片段"></a>核心代码片段</h2><pre class="line-numbers language-csharp" data-language="csharp"><code class="language-csharp"><span class="token keyword">using</span> <span class="token namespace">Autodesk<span class="token punctuation">.</span>AutoCAD<span class="token punctuation">.</span>ApplicationServices</span><span class="token punctuation">;</span><span class="token keyword">using</span> <span class="token namespace">Autodesk<span class="token punctuation">.</span>AutoCAD<span class="token punctuation">.</span>DatabaseServices</span><span class="token punctuation">;</span><span class="token keyword">using</span> <span class="token namespace">Autodesk<span class="token punctuation">.</span>AutoCAD<span class="token punctuation">.</span>EditorInput</span><span class="token punctuation">;</span><span class="token keyword">using</span> <span class="token namespace">Autodesk<span class="token punctuation">.</span>AutoCAD<span class="token punctuation">.</span>Runtime</span><span class="token punctuation">;</span><span class="token keyword">namespace</span> <span class="token namespace">BatchNumber</span><span class="token punctuation">&#123;</span>    <span class="token keyword">public</span> <span class="token keyword">class</span> <span class="token class-name">Commands</span>    <span class="token punctuation">&#123;</span>        <span class="token punctuation">[</span><span class="token attribute"><span class="token class-name">CommandMethod</span><span class="token attribute-arguments"><span class="token punctuation">(</span><span class="token string">"BATCHNUM"</span><span class="token punctuation">)</span></span></span><span class="token punctuation">]</span>        <span class="token keyword">public</span> <span class="token return-type class-name"><span class="token keyword">void</span></span> <span class="token function">BatchNumber</span><span class="token punctuation">(</span><span class="token punctuation">)</span>        <span class="token punctuation">&#123;</span>            <span class="token class-name">Document</span> doc <span class="token operator">=</span> Application<span class="token punctuation">.</span>DocumentManager<span class="token punctuation">.</span>MdiActiveDocument<span class="token punctuation">;</span>            <span class="token class-name">Database</span> db <span class="token operator">=</span> doc<span class="token punctuation">.</span>Database<span class="token punctuation">;</span>            <span class="token class-name">Editor</span> ed <span class="token operator">=</span> doc<span class="token punctuation">.</span>Editor<span class="token punctuation">;</span>            <span class="token comment">// 选择对象</span>            <span class="token class-name">PromptSelectionOptions</span> opts <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token constructor-invocation class-name">PromptSelectionOptions</span>            <span class="token punctuation">&#123;</span>                MessageForAdding <span class="token operator">=</span> <span class="token string">"选择要编号的图元："</span>            <span class="token punctuation">&#125;</span><span class="token punctuation">;</span>            <span class="token class-name">PromptSelectionResult</span> selResult <span class="token operator">=</span> ed<span class="token punctuation">.</span><span class="token function">GetSelection</span><span class="token punctuation">(</span>opts<span class="token punctuation">)</span><span class="token punctuation">;</span>            <span class="token keyword">if</span> <span class="token punctuation">(</span>selResult<span class="token punctuation">.</span>Status <span class="token operator">!=</span> PromptStatus<span class="token punctuation">.</span>OK<span class="token punctuation">)</span> <span class="token keyword">return</span><span class="token punctuation">;</span>            <span class="token comment">// 获取编号参数</span>            <span class="token class-name">PromptIntegerOptions</span> intOpts <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token constructor-invocation class-name">PromptIntegerOptions</span><span class="token punctuation">(</span><span class="token string">"\n起始编号："</span><span class="token punctuation">)</span><span class="token punctuation">;</span>            intOpts<span class="token punctuation">.</span>DefaultValue <span class="token operator">=</span> <span class="token number">1</span><span class="token punctuation">;</span>            intOpts<span class="token punctuation">.</span>LowerLimit <span class="token operator">=</span> <span class="token number">1</span><span class="token punctuation">;</span>            intOpts<span class="token punctuation">.</span>UpperLimit <span class="token operator">=</span> <span class="token number">9999</span><span class="token punctuation">;</span>            <span class="token class-name">PromptIntegerResult</span> intResult <span class="token operator">=</span> ed<span class="token punctuation">.</span><span class="token function">GetInteger</span><span class="token punctuation">(</span>intOpts<span class="token punctuation">)</span><span class="token punctuation">;</span>            <span class="token keyword">if</span> <span class="token punctuation">(</span>intResult<span class="token punctuation">.</span>Status <span class="token operator">!=</span> PromptStatus<span class="token punctuation">.</span>OK<span class="token punctuation">)</span> <span class="token keyword">return</span><span class="token punctuation">;</span>            <span class="token class-name"><span class="token keyword">int</span></span> startNum <span class="token operator">=</span> intResult<span class="token punctuation">.</span>Value<span class="token punctuation">;</span>            <span class="token comment">// 遍历选中对象，添加编号文字</span>            <span class="token keyword">using</span> <span class="token punctuation">(</span><span class="token class-name">Transaction</span> tr <span class="token operator">=</span> db<span class="token punctuation">.</span>TransactionManager<span class="token punctuation">.</span><span class="token function">StartTransaction</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span>            <span class="token punctuation">&#123;</span>                <span class="token keyword">foreach</span> <span class="token punctuation">(</span><span class="token class-name">SelectedObject</span> so <span class="token keyword">in</span> selResult<span class="token punctuation">.</span>Value<span class="token punctuation">)</span>                <span class="token punctuation">&#123;</span>                    <span class="token comment">// 创建文字对象</span>                    <span class="token class-name">DBText</span> text <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token constructor-invocation class-name">DBText</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>                    text<span class="token punctuation">.</span>TextString <span class="token operator">=</span> <span class="token interpolation-string"><span class="token string">$"</span><span class="token interpolation"><span class="token punctuation">&#123;</span><span class="token expression language-csharp">startNum<span class="token operator">++</span></span><span class="token punctuation">&#125;</span></span><span class="token string">"</span></span><span class="token punctuation">;</span>                    text<span class="token punctuation">.</span>Height <span class="token operator">=</span> <span class="token number">3.5</span><span class="token punctuation">;</span>                    <span class="token comment">// ... 设置位置、样式等</span>                                        <span class="token comment">// 添加到模型空间</span>                    <span class="token class-name">BlockTableRecord</span> btr <span class="token operator">=</span> tr<span class="token punctuation">.</span><span class="token function">GetObject</span><span class="token punctuation">(</span>                        db<span class="token punctuation">.</span>CurrentSpaceId<span class="token punctuation">,</span> OpenMode<span class="token punctuation">.</span>ForWrite<span class="token punctuation">)</span> <span class="token keyword">as</span> <span class="token class-name">BlockTableRecord</span><span class="token punctuation">;</span>                    btr<span class="token punctuation">.</span><span class="token function">AppendEntity</span><span class="token punctuation">(</span>text<span class="token punctuation">)</span><span class="token punctuation">;</span>                    tr<span class="token punctuation">.</span><span class="token function">AddNewlyCreatedDBObject</span><span class="token punctuation">(</span>text<span class="token punctuation">,</span> <span class="token boolean">true</span><span class="token punctuation">)</span><span class="token punctuation">;</span>                <span class="token punctuation">&#125;</span>                tr<span class="token punctuation">.</span><span class="token function">Commit</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>            <span class="token punctuation">&#125;</span>        <span class="token punctuation">&#125;</span>    <span class="token punctuation">&#125;</span><span class="token punctuation">&#125;</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><h2 id="其他工具预告"><a href="#其他工具预告" class="headerlink" title="其他工具预告"></a>其他工具预告</h2><p>我还在开发以下小工具，完成后也会分享到博客：</p><ul><li>📄 <strong>批量导出 CAD 结构总说明到 Word</strong></li><li>📋 <strong>目录自动生成工具</strong></li><li>🔢 <strong>文字说明数字编号工具</strong></li></ul><hr><p><strong>下载链接</strong>： <a href="https://xqy-blog.pages.dev/downloads/BatchNumber.dll">BatchNumber.dll 下载</a>（插件文件待上传）</p><p>欢迎下载使用，有任何问题请留言反馈！</p>]]>
    </content>
    <id>https://xqy-blog.pages.dev/2026/06/28/cad-plugin-batchnumber/</id>
    <link href="https://xqy-blog.pages.dev/2026/06/28/cad-plugin-batchnumber/"/>
    <published>2026-06-28T13:30:00.000Z</published>
    <summary>自研 CAD 批量编号插件分享。介绍插件的功能、使用方法及核心 C# 源代码，助你大幅提升制图效率。</summary>
    <title>CAD 二次开发——批量编号插件分享</title>
    <updated>2026-06-29T11:57:27.182Z</updated>
  </entry>
  <entry>
    <author>
      <name>徐倩怡</name>
    </author>
    <category term="软件笔记/Grasshopper软件笔记" scheme="https://xqy-blog.pages.dev/categories/%E8%BD%AF%E4%BB%B6%E7%AC%94%E8%AE%B0-Grasshopper%E8%BD%AF%E4%BB%B6%E7%AC%94%E8%AE%B0/"/>
    <category term="Grasshopper" scheme="https://xqy-blog.pages.dev/tags/Grasshopper/"/>
    <category term="Rhino" scheme="https://xqy-blog.pages.dev/tags/Rhino/"/>
    <category term="参数化设计" scheme="https://xqy-blog.pages.dev/tags/%E5%8F%82%E6%95%B0%E5%8C%96%E8%AE%BE%E8%AE%A1/"/>
    <category term="坡道" scheme="https://xqy-blog.pages.dev/tags/%E5%9D%A1%E9%81%93/"/>
    <content>
      <![CDATA[<h1 id="Grasshopper-弧形坡道参数化建模实战"><a href="#Grasshopper-弧形坡道参数化建模实战" class="headerlink" title="Grasshopper 弧形坡道参数化建模实战"></a>Grasshopper 弧形坡道参数化建模实战</h1><p>在 <strong>大阪世博会中国馆</strong> 项目中，我使用 Grasshopper 对全部钢结构弧形坡道及楼梯进行了参数化建模。本文分享一些关键的技术要点。</p><h2 id="1-项目背景"><a href="#1-项目背景" class="headerlink" title="1. 项目背景"></a>1. 项目背景</h2><p>大阪世博会中国馆的坡道为双向弧形，曲率沿高度变化，传统 CAD 建模方式效率低且难以修改。通过 Grashopper 参数化建模，实现了：</p><ul><li>快速方案迭代</li><li>一键导出结构线框</li><li>与 Midas 的数据接口对接</li></ul><h2 id="2-建模思路"><a href="#2-建模思路" class="headerlink" title="2. 建模思路"></a>2. 建模思路</h2><pre class="line-numbers language-none"><code class="language-none">定义控制曲线 → 参数化分割 → 生成结构骨架 → 导出线框模型<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><h3 id="2-1-控制曲线的生成"><a href="#2-1-控制曲线的生成" class="headerlink" title="2.1 控制曲线的生成"></a>2.1 控制曲线的生成</h3><p>使用 <code>Interpolate</code> 组件，通过 3~5 个控制点生成平滑曲线。控制点坐标由 <code>Number Slider</code> 驱动，便于后续调整。</p><pre class="line-numbers language-none"><code class="language-none">曲线1：坡道内侧边线曲线2：坡道外侧边线曲线3：坡道中心线<span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span></span></code></pre><h3 id="2-2-参数化分割"><a href="#2-2-参数化分割" class="headerlink" title="2.2 参数化分割"></a>2.2 参数化分割</h3><p>沿曲线长度方向按踏步数等分：</p><ul><li><code>Divide Curve</code> → 按距离等分</li><li><code>Perp Frames</code> → 在每个分割点处生成参考平面</li><li><code>Circle</code> + <code>Extrude</code> → 生成踏步形状</li></ul><h3 id="2-3-结构骨架生成"><a href="#2-3-结构骨架生成" class="headerlink" title="2.3 结构骨架生成"></a>2.3 结构骨架生成</h3><p>在每级踏步位置生成：</p><ul><li>纵向主梁（沿内外侧边线）</li><li>横向次梁（踏步间）</li><li>立柱（传递荷载至基础）</li></ul><h2 id="3-Grasshopper-电池组概览"><a href="#3-Grasshopper-电池组概览" class="headerlink" title="3. Grasshopper 电池组概览"></a>3. Grasshopper 电池组概览</h2><pre class="line-numbers language-none"><code class="language-none">Input:  - 控制点坐标 (Point XYZ &#x2F; Number Slider)  - 坡道总高度 (Number Slider)  - 踏步数 (Integer Slider)Process:  - Interpolate → 生成控制曲线  - Divide Curve → 等分曲线  - Perp Frames → 生成踏步平面  - 几何运算 → 生成梁柱构件Output:  - 结构线框 → Bake 到 Rhino  - 坐标数据 → Export to Midas<span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><h2 id="4-关键技巧"><a href="#4-关键技巧" class="headerlink" title="4. 关键技巧"></a>4. 关键技巧</h2><h3 id="保留可编辑性"><a href="#保留可编辑性" class="headerlink" title="保留可编辑性"></a>保留可编辑性</h3><p>所有参数使用 <code>Number Slider</code> 驱动，设置合理的取值范围。</p><h3 id="数据导出到-Midas"><a href="#数据导出到-Midas" class="headerlink" title="数据导出到 Midas"></a>数据导出到 Midas</h3><pre class="line-numbers language-python" data-language="python"><code class="language-python"><span class="token comment"># 将 GH 中提取的节点坐标导出为 Midas 可读格式</span><span class="token keyword">import</span> rhinoscriptsyntax <span class="token keyword">as</span> rs<span class="token comment"># 选择结构线框</span>objects <span class="token operator">=</span> rs<span class="token punctuation">.</span>GetObjects<span class="token punctuation">(</span><span class="token string">"选择要导出的结构线"</span><span class="token punctuation">)</span><span class="token comment"># 提取节点坐标</span><span class="token comment"># 格式化输出为 Midas 的 .mct 格式</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><h3 id="逆向翻模应用"><a href="#逆向翻模应用" class="headerlink" title="逆向翻模应用"></a>逆向翻模应用</h3><p>在煤棚项目中，使用 GH 基于初设图纸快速进行逆向翻模，大幅提高了建模效率。</p><h2 id="5-总结"><a href="#5-总结" class="headerlink" title="5. 总结"></a>5. 总结</h2><p>Grasshopper 参数化建模在处理复杂几何结构时具有显著优势，特别适合：</p><ul><li>弧形&#x2F;曲面结构</li><li>需要多方案对比的</li><li>需要与其他软件联动的</li></ul><p>欢迎对这些技巧感兴趣的朋友留言交流！</p>]]>
    </content>
    <id>https://xqy-blog.pages.dev/2026/06/28/grasshopper-arc-parametric/</id>
    <link href="https://xqy-blog.pages.dev/2026/06/28/grasshopper-arc-parametric/"/>
    <published>2026-06-28T13:00:00.000Z</published>
    <summary>分享大阪世博会中国馆项目中，使用 Grasshopper 对弧形坡道进行参数化建模的实战经验和关键技术要点。</summary>
    <title>Grasshopper 弧形坡道参数化建模实战</title>
    <updated>2026-06-29T11:57:27.182Z</updated>
  </entry>
  <entry>
    <author>
      <name>徐倩怡</name>
    </author>
    <category term="软件笔记/Abaqus软件笔记" scheme="https://xqy-blog.pages.dev/categories/%E8%BD%AF%E4%BB%B6%E7%AC%94%E8%AE%B0-Abaqus%E8%BD%AF%E4%BB%B6%E7%AC%94%E8%AE%B0/"/>
    <category term="Abaqus" scheme="https://xqy-blog.pages.dev/tags/Abaqus/"/>
    <category term="有限元" scheme="https://xqy-blog.pages.dev/tags/%E6%9C%89%E9%99%90%E5%85%83/"/>
    <category term="接触分析" scheme="https://xqy-blog.pages.dev/tags/%E6%8E%A5%E8%A7%A6%E5%88%86%E6%9E%90/"/>
    <content>
      <![CDATA[<h1 id="Abaqus-接触分析中的常见问题与调试技巧"><a href="#Abaqus-接触分析中的常见问题与调试技巧" class="headerlink" title="Abaqus 接触分析中的常见问题与调试技巧"></a>Abaqus 接触分析中的常见问题与调试技巧</h1><p>在结构工程中，<strong>接触分析</strong>是 Abaqus 最常用的功能之一。无论是节点连接、螺栓接触还是支座模拟，接触设置的好坏直接影响计算收敛性。</p><h2 id="1-接触定义的基本流程"><a href="#1-接触定义的基本流程" class="headerlink" title="1. 接触定义的基本流程"></a>1. 接触定义的基本流程</h2><pre class="line-numbers language-none"><code class="language-none">创建表面 → 定义接触对 → 设置接触属性 → 调整接触控制<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><h3 id="1-1-接触对"><a href="#1-1-接触对" class="headerlink" title="1.1 接触对"></a>1.1 接触对</h3><ul><li><strong>主面（Master Surface）</strong>：选择刚度较大的面</li><li><strong>从面（Slave Surface）</strong>：选择网格较密的面</li></ul><h3 id="1-2-接触属性"><a href="#1-2-接触属性" class="headerlink" title="1.2 接触属性"></a>1.2 接触属性</h3><ul><li><strong>法向行为</strong>：默认”硬接触”（Hard Contact）</li><li><strong>切向行为</strong>：定义摩擦系数（Penalty 或 Lagrange）</li></ul><h2 id="2-常见不收敛问题及对策"><a href="#2-常见不收敛问题及对策" class="headerlink" title="2. 常见不收敛问题及对策"></a>2. 常见不收敛问题及对策</h2><h3 id="问题-1：初始过盈（Initial-Overclosure）"><a href="#问题-1：初始过盈（Initial-Overclosure）" class="headerlink" title="问题 1：初始过盈（Initial Overclosure）"></a>问题 1：初始过盈（Initial Overclosure）</h3><p><strong>现象</strong>：计算一开始就发散，报错信息提示存在初始过盈。</p><p><strong>解决方案</strong>：</p><ul><li>在接触定义中使用 <code>Adjust only to remove overclosure</code></li><li>或者在 Step 中开启 <code>Automatic stabilization</code></li></ul><h3 id="问题-2：接触刚度过大导致振荡"><a href="#问题-2：接触刚度过大导致振荡" class="headerlink" title="问题 2：接触刚度过大导致振荡"></a>问题 2：接触刚度过大导致振荡</h3><p><strong>现象</strong>：接触力振荡，迭代步数过多。</p><p><strong>解决方案</strong>：</p><ul><li>调整接触刚度（<code>Scale Penalty</code> 设为 0.1~0.01）</li><li>开启 <code>Contact damping</code></li></ul><h3 id="问题-3：突然失去接触"><a href="#问题-3：突然失去接触" class="headerlink" title="问题 3：突然失去接触"></a>问题 3：突然失去接触</h3><p><strong>现象</strong>：从面节点突然穿透主面，计算发散。</p><p><strong>解决方案</strong>：</p><ul><li>细化网格</li><li>使用 <code>Finite sliding</code> 而非 <code>Small sliding</code></li><li>检查主面法向方向</li></ul><h2 id="3-调试技巧"><a href="#3-调试技巧" class="headerlink" title="3. 调试技巧"></a>3. 调试技巧</h2><p>使用以下方法快速定位接触问题：</p><pre class="line-numbers language-python" data-language="python"><code class="language-python"><span class="token comment"># Abaqus Python 脚本：输出接触状态到报告</span>odb <span class="token operator">=</span> session<span class="token punctuation">.</span>openOdb<span class="token punctuation">(</span><span class="token string">'job.odb'</span><span class="token punctuation">)</span>step <span class="token operator">=</span> odb<span class="token punctuation">.</span>steps<span class="token punctuation">[</span><span class="token string">'Step-1'</span><span class="token punctuation">]</span><span class="token keyword">for</span> frame <span class="token keyword">in</span> step<span class="token punctuation">.</span>frames<span class="token punctuation">:</span>    contact_field <span class="token operator">=</span> frame<span class="token punctuation">.</span>fieldOutputs<span class="token punctuation">[</span><span class="token string">'CSTATUS'</span><span class="token punctuation">]</span>    <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string-interpolation"><span class="token string">f'Frame </span><span class="token interpolation"><span class="token punctuation">&#123;</span>frame<span class="token punctuation">.</span>frameId<span class="token punctuation">&#125;</span></span><span class="token string">: 接触状态已输出'</span></span><span class="token punctuation">)</span>odb<span class="token punctuation">.</span>close<span class="token punctuation">(</span><span class="token punctuation">)</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><h2 id="4-推荐设置模板"><a href="#4-推荐设置模板" class="headerlink" title="4. 推荐设置模板"></a>4. 推荐设置模板</h2><table><thead><tr><th>参数</th><th>推荐值</th><th>说明</th></tr></thead><tbody><tr><td>接触公式</td><td>Penalty</td><td>收敛性好</td></tr><tr><td>刚度比例</td><td>0.1~1.0</td><td>默认 1.0</td></tr><tr><td>最大穿透</td><td>0.05</td><td>默认容差</td></tr><tr><td>摩擦公式</td><td>Lagrange</td><td>摩擦应力较大时使用</td></tr></tbody></table><hr><p>希望这篇笔记对大家有帮助！欢迎留言交流。</p>]]>
    </content>
    <id>https://xqy-blog.pages.dev/2026/06/28/abaqus-contact-analysis/</id>
    <link href="https://xqy-blog.pages.dev/2026/06/28/abaqus-contact-analysis/"/>
    <published>2026-06-28T12:30:00.000Z</published>
    <summary>Abaqus 接触分析中常见的收敛问题及调试技巧总结，包括初始过盈、接触刚度、摩擦设置等实用经验。</summary>
    <title>Abaqus 接触分析中的常见问题与调试技巧</title>
    <updated>2026-06-29T11:57:27.182Z</updated>
  </entry>
  <entry>
    <author>
      <name>徐倩怡</name>
    </author>
    <category term="杂谈" scheme="https://xqy-blog.pages.dev/categories/%E6%9D%82%E8%B0%88/"/>
    <category term="开篇" scheme="https://xqy-blog.pages.dev/tags/%E5%BC%80%E7%AF%87/"/>
    <category term="博客" scheme="https://xqy-blog.pages.dev/tags/%E5%8D%9A%E5%AE%A2/"/>
    <content>
      <![CDATA[<h1 id="🌟-开篇"><a href="#🌟-开篇" class="headerlink" title="🌟 开篇"></a>🌟 开篇</h1><p>大家好，欢迎来到 <strong>徐倩怡的博客</strong>！</p><blockquote><p><strong>有目标，有时间，就会有收获。</strong></p></blockquote><p>这是我的个人博客，用于记录和分享我在结构工程设计、软件学习、编程开发等方面的经验与思考。</p><h2 id="博客栏目"><a href="#博客栏目" class="headerlink" title="博客栏目"></a>博客栏目</h2><p>本博客主要分为以下几个栏目：</p><ul><li><strong>软件笔记</strong> — Abaqus、Grasshopper 等工程软件的使用技巧与心得</li><li><strong>编程</strong> — 分享自编的小软件、CAD 二次开发插件等</li><li><strong>杂谈</strong> — 工作生活中的随笔感想</li><li><strong>阅读</strong> — 读书笔记与书评</li><li><strong>关于我</strong> — 个人简介与作品集</li></ul><h2 id="为什么开始写博客？"><a href="#为什么开始写博客？" class="headerlink" title="为什么开始写博客？"></a>为什么开始写博客？</h2><p>作为一名结构工程师，在日常工作中积累了不少经验和技巧。写博客既是对自己知识的梳理与总结，也希望这些内容能够帮助到更多的同行朋友。</p><h2 id="关于博客的技术"><a href="#关于博客的技术" class="headerlink" title="关于博客的技术"></a>关于博客的技术</h2><p>本博客使用 <a href="https://hexo.io/">Hexo</a> 构建，采用 <a href="https://github.com/jerryc127/hexo-theme-butterfly">Butterfly</a> 主题，部署在 Cloudflare Pages 上。评论系统使用 Giscus，基于 GitHub Discussions 实现。</p><p>欢迎大家在文章下方留言交流！😊</p>]]>
    </content>
    <id>https://xqy-blog.pages.dev/2026/06/28/hello-blog/</id>
    <link href="https://xqy-blog.pages.dev/2026/06/28/hello-blog/"/>
    <published>2026-06-28T12:00:00.000Z</published>
    <summary>这是我的个人博客的开篇。在这里，我会分享结构工程设计、软件学习、编程开发等方面的经验与思考。</summary>
    <title>开篇——欢迎来到徐倩怡的博客</title>
    <updated>2026-06-29T11:57:27.182Z</updated>
  </entry>
</feed>
