<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="FeedCreator 1.8" -->
<?xml-stylesheet href="https://www.zhuzhugst.com/lib/exe/css.php?s=feed" type="text/css"?>
<rdf:RDF
    xmlns="http://purl.org/rss/1.0/"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
    xmlns:dc="http://purl.org/dc/elements/1.1/">
    <channel rdf:about="https://www.zhuzhugst.com/feed.php">
        <title>张叶安的博客 - rhino二次开发</title>
        <description></description>
        <link>https://www.zhuzhugst.com/</link>
        <image rdf:resource="https://www.zhuzhugst.com/lib/exe/fetch.php?media=logo.png" />
       <dc:date>2026-06-10T06:14:25+00:00</dc:date>
        <items>
            <rdf:Seq>
                <rdf:li rdf:resource="https://www.zhuzhugst.com/doku.php?id=rhino%E4%BA%8C%E6%AC%A1%E5%BC%80%E5%8F%91:rhinocompute_7:dwg_base64_plugin_hops_solution&amp;rev=1780881128&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.zhuzhugst.com/doku.php?id=rhino%E4%BA%8C%E6%AC%A1%E5%BC%80%E5%8F%91:rhinocompute_7&amp;rev=1780881112&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.zhuzhugst.com/doku.php?id=rhino%E4%BA%8C%E6%AC%A1%E5%BC%80%E5%8F%91:rhinocompute_7:custom_endpoints_and_plugins&amp;rev=1780881034&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.zhuzhugst.com/doku.php?id=rhino%E4%BA%8C%E6%AC%A1%E5%BC%80%E5%8F%91:rhinocompute_7:grasshopper_hops_workflow&amp;rev=1780881000&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.zhuzhugst.com/doku.php?id=rhino%E4%BA%8C%E6%AC%A1%E5%BC%80%E5%8F%91:rhinocompute_7:index&amp;rev=1780650448&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.zhuzhugst.com/doku.php?id=rhino%E4%BA%8C%E6%AC%A1%E5%BC%80%E5%8F%91:rhinocompute_7:troubleshooting_and_exercises&amp;rev=1780650276&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.zhuzhugst.com/doku.php?id=rhino%E4%BA%8C%E6%AC%A1%E5%BC%80%E5%8F%91:rhinocompute_7:linux_and_operations&amp;rev=1780650265&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.zhuzhugst.com/doku.php?id=rhino%E4%BA%8C%E6%AC%A1%E5%BC%80%E5%8F%91:rhinocompute_7:licensing_billing_and_security&amp;rev=1780650242&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.zhuzhugst.com/doku.php?id=rhino%E4%BA%8C%E6%AC%A1%E5%BC%80%E5%8F%91:rhinocompute_7:production_windows_iis&amp;rev=1780650230&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.zhuzhugst.com/doku.php?id=rhino%E4%BA%8C%E6%AC%A1%E5%BC%80%E5%8F%91:rhinocompute_7:client_calls_and_rest_patterns&amp;rev=1780650206&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.zhuzhugst.com/doku.php?id=rhino%E4%BA%8C%E6%AC%A1%E5%BC%80%E5%8F%91:rhinocompute_7:local_debugging&amp;rev=1780650194&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.zhuzhugst.com/doku.php?id=rhino%E4%BA%8C%E6%AC%A1%E5%BC%80%E5%8F%91:rhinocompute_7:environment_and_version_selection&amp;rev=1780650181&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.zhuzhugst.com/doku.php?id=rhino%E4%BA%8C%E6%AC%A1%E5%BC%80%E5%8F%91:rhinocompute_7:concepts_and_architecture&amp;rev=1780650168&amp;do=diff"/>
            </rdf:Seq>
        </items>
    </channel>
    <image rdf:about="https://www.zhuzhugst.com/lib/exe/fetch.php?media=logo.png">
        <title>张叶安的博客</title>
        <link>https://www.zhuzhugst.com/</link>
        <url>https://www.zhuzhugst.com/lib/exe/fetch.php?media=logo.png</url>
    </image>
    <item rdf:about="https://www.zhuzhugst.com/doku.php?id=rhino%E4%BA%8C%E6%AC%A1%E5%BC%80%E5%8F%91:rhinocompute_7:dwg_base64_plugin_hops_solution&amp;rev=1780881128&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-06-08T01:12:08+00:00</dc:date>
        <dc:creator>张叶安 (midas@undisclosed.example.com)</dc:creator>
        <title>dwg_base64_plugin_hops_solution - 创建</title>
        <link>https://www.zhuzhugst.com/doku.php?id=rhino%E4%BA%8C%E6%AC%A1%E5%BC%80%E5%8F%91:rhinocompute_7:dwg_base64_plugin_hops_solution&amp;rev=1780881128&amp;do=diff</link>
        <description>11 DWG Base64 与自定义插件/Hops 集成方案

问题背景

业务系统有时会把 DWG 文件编码成 base64 字符串，通过 HTTP 请求传到服务端，然后希望在 Rhino.Compute 中完成导入、识别、参数化生成或二次处理。这个场景不要简单理解成“把 base64 字符串直接接到 Grasshopper 电池上”，因为 DWG 通常较大，而且涉及文件格式解析、插件授权、临时文件、单位、图层、块参照和安全校验。</description>
    </item>
    <item rdf:about="https://www.zhuzhugst.com/doku.php?id=rhino%E4%BA%8C%E6%AC%A1%E5%BC%80%E5%8F%91:rhinocompute_7&amp;rev=1780881112&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-06-08T01:11:52+00:00</dc:date>
        <dc:creator>张叶安 (midas@undisclosed.example.com)</dc:creator>
        <title>rhinocompute_7</title>
        <link>https://www.zhuzhugst.com/doku.php?id=rhino%E4%BA%8C%E6%AC%A1%E5%BC%80%E5%8F%91:rhinocompute_7&amp;rev=1780881112&amp;do=diff</link>
        <description>章节目录

	*  01 概念与架构
	*  02 环境准备与版本选择
	*  03 本地运行与调试
	*  04 客户端调用与 REST 模式
	*  05 Grasshopper 与 Hops 工作流
	*  06 Windows/IIS 生产部署
	*  07 授权计费与安全
	*  08 自定义端点与插件扩展
	*  09 Linux 现状与运维
	*  10 排错清单与练习
	*  11 base64插件解决方案</description>
    </item>
    <item rdf:about="https://www.zhuzhugst.com/doku.php?id=rhino%E4%BA%8C%E6%AC%A1%E5%BC%80%E5%8F%91:rhinocompute_7:custom_endpoints_and_plugins&amp;rev=1780881034&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-06-08T01:10:34+00:00</dc:date>
        <dc:creator>张叶安 (midas@undisclosed.example.com)</dc:creator>
        <title>custom_endpoints_and_plugins</title>
        <link>https://www.zhuzhugst.com/doku.php?id=rhino%E4%BA%8C%E6%AC%A1%E5%BC%80%E5%8F%91:rhinocompute_7:custom_endpoints_and_plugins&amp;rev=1780881034&amp;do=diff</link>
        <description>08 自定义端点与插件扩展

为什么要扩展 Compute

默认 Compute 暴露了大量 RhinoCommon 相关端点，也支持 Grasshopper 求解。但有些业务更适合自定义端点：

	*  需要把多个 RhinoCommon 调用封装成一个稳定业务 API。</description>
    </item>
    <item rdf:about="https://www.zhuzhugst.com/doku.php?id=rhino%E4%BA%8C%E6%AC%A1%E5%BC%80%E5%8F%91:rhinocompute_7:grasshopper_hops_workflow&amp;rev=1780881000&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-06-08T01:10:00+00:00</dc:date>
        <dc:creator>张叶安 (midas@undisclosed.example.com)</dc:creator>
        <title>grasshopper_hops_workflow</title>
        <link>https://www.zhuzhugst.com/doku.php?id=rhino%E4%BA%8C%E6%AC%A1%E5%BC%80%E5%8F%91:rhinocompute_7:grasshopper_hops_workflow&amp;rev=1780881000&amp;do=diff</link>
        <description>05 Grasshopper 与 Hops 工作流

Hops 的核心思想

Hops 把一个外部 Grasshopper 定义变成当前画布上的“函数组件”。这个外部定义可以保存在本地、网络路径、远程服务器，也可以是 REST 端点。

在教学中可以把 Hops 理解成：</description>
    </item>
    <item rdf:about="https://www.zhuzhugst.com/doku.php?id=rhino%E4%BA%8C%E6%AC%A1%E5%BC%80%E5%8F%91:rhinocompute_7:index&amp;rev=1780650448&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-06-05T09:07:28+00:00</dc:date>
        <dc:creator>张叶安 (midas@undisclosed.example.com)</dc:creator>
        <title>index - 移除</title>
        <link>https://www.zhuzhugst.com/doku.php?id=rhino%E4%BA%8C%E6%AC%A1%E5%BC%80%E5%8F%91:rhinocompute_7:index&amp;rev=1780650448&amp;do=diff</link>
        <description></description>
    </item>
    <item rdf:about="https://www.zhuzhugst.com/doku.php?id=rhino%E4%BA%8C%E6%AC%A1%E5%BC%80%E5%8F%91:rhinocompute_7:troubleshooting_and_exercises&amp;rev=1780650276&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-06-05T09:04:36+00:00</dc:date>
        <dc:creator>张叶安 (midas@undisclosed.example.com)</dc:creator>
        <title>troubleshooting_and_exercises - 创建</title>
        <link>https://www.zhuzhugst.com/doku.php?id=rhino%E4%BA%8C%E6%AC%A1%E5%BC%80%E5%8F%91:rhinocompute_7:troubleshooting_and_exercises&amp;rev=1780650276&amp;do=diff</link>
        <description>10 排错清单与练习

排错总原则

按链路从外到内排查：


客户端
  -&gt; 网络 / DNS / HTTPS
  -&gt; IIS 或 rhino.compute
  -&gt; compute.geometry 子进程
  -&gt; Rhino.Inside / Rhino 授权
  -&gt; Grasshopper / 插件 / 自定义端点
  -&gt; 输入数据和业务逻辑</description>
    </item>
    <item rdf:about="https://www.zhuzhugst.com/doku.php?id=rhino%E4%BA%8C%E6%AC%A1%E5%BC%80%E5%8F%91:rhinocompute_7:linux_and_operations&amp;rev=1780650265&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-06-05T09:04:25+00:00</dc:date>
        <dc:creator>张叶安 (midas@undisclosed.example.com)</dc:creator>
        <title>linux_and_operations - 创建</title>
        <link>https://www.zhuzhugst.com/doku.php?id=rhino%E4%BA%8C%E6%AC%A1%E5%BC%80%E5%8F%91:rhinocompute_7:linux_and_operations&amp;rev=1780650265&amp;do=diff</link>
        <description>09 Linux 现状与运维

先说结论

截至 2026-06-05，官方 Compute 指南已经包含 Linux Server 入门文档，但该页面明确标注 RhinoCompute on Linux 属于 Rhino WIP，不建议用于生产工作。

因此教学中建议这样定位：</description>
    </item>
    <item rdf:about="https://www.zhuzhugst.com/doku.php?id=rhino%E4%BA%8C%E6%AC%A1%E5%BC%80%E5%8F%91:rhinocompute_7:licensing_billing_and_security&amp;rev=1780650242&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-06-05T09:04:02+00:00</dc:date>
        <dc:creator>张叶安 (midas@undisclosed.example.com)</dc:creator>
        <title>licensing_billing_and_security - 创建</title>
        <link>https://www.zhuzhugst.com/doku.php?id=rhino%E4%BA%8C%E6%AC%A1%E5%BC%80%E5%8F%91:rhinocompute_7:licensing_billing_and_security&amp;rev=1780650242&amp;do=diff</link>
        <description>07 授权计费与安全

本地开发与服务器部署的授权差异

本地 Windows 工作站运行 RhinoCompute，通常使用本机已有 Rhino 授权，不额外产生核心小时费用。

在 Windows Server 或 Linux Server 上运行 RhinoCompute，则通常进入 Core-Hour Billing 模型。服务器启动 Rhino 时会使用</description>
    </item>
    <item rdf:about="https://www.zhuzhugst.com/doku.php?id=rhino%E4%BA%8C%E6%AC%A1%E5%BC%80%E5%8F%91:rhinocompute_7:production_windows_iis&amp;rev=1780650230&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-06-05T09:03:50+00:00</dc:date>
        <dc:creator>张叶安 (midas@undisclosed.example.com)</dc:creator>
        <title>production_windows_iis - 创建</title>
        <link>https://www.zhuzhugst.com/doku.php?id=rhino%E4%BA%8C%E6%AC%A1%E5%BC%80%E5%8F%91:rhinocompute_7:production_windows_iis&amp;rev=1780650230&amp;do=diff</link>
        <description>06 Windows/IIS 生产部署

部署主线

Windows/IIS 是 RhinoCompute 生产部署的主线。IIS 位于最前面，负责接收请求并启动/托管 rhino.compute.exe。rhino.compute 再启动一个或多个 compute.geometry 子进程执行实际求解。</description>
    </item>
    <item rdf:about="https://www.zhuzhugst.com/doku.php?id=rhino%E4%BA%8C%E6%AC%A1%E5%BC%80%E5%8F%91:rhinocompute_7:client_calls_and_rest_patterns&amp;rev=1780650206&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-06-05T09:03:26+00:00</dc:date>
        <dc:creator>张叶安 (midas@undisclosed.example.com)</dc:creator>
        <title>client_calls_and_rest_patterns - 创建</title>
        <link>https://www.zhuzhugst.com/doku.php?id=rhino%E4%BA%8C%E6%AC%A1%E5%BC%80%E5%8F%91:rhinocompute_7:client_calls_and_rest_patterns&amp;rev=1780650206&amp;do=diff</link>
        <description>04 客户端调用与 REST 模式

调用方式总览

调用 RhinoCompute 有四种常见方式：
 方式  适合场景  Python 客户端库  数据脚本、自动化、研究计算、后台任务。  JavaScript 客户端库  Web 前端、Node.js 服务、浏览器几何预览。</description>
    </item>
    <item rdf:about="https://www.zhuzhugst.com/doku.php?id=rhino%E4%BA%8C%E6%AC%A1%E5%BC%80%E5%8F%91:rhinocompute_7:local_debugging&amp;rev=1780650194&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-06-05T09:03:14+00:00</dc:date>
        <dc:creator>张叶安 (midas@undisclosed.example.com)</dc:creator>
        <title>local_debugging - 创建</title>
        <link>https://www.zhuzhugst.com/doku.php?id=rhino%E4%BA%8C%E6%AC%A1%E5%BC%80%E5%8F%91:rhinocompute_7:local_debugging&amp;rev=1780650194&amp;do=diff</link>
        <description>03 本地运行与调试

本章目标

本章讲如何在 Windows 开发机上运行 RhinoCompute，并确认服务是否可用。生产部署请看 06 Windows/IIS 生产部署。

编译前检查

	*  Rhino 已安装并能正常启动。
	*  Rhino 已完成授权或已登录 Cloud Zoo。</description>
    </item>
    <item rdf:about="https://www.zhuzhugst.com/doku.php?id=rhino%E4%BA%8C%E6%AC%A1%E5%BC%80%E5%8F%91:rhinocompute_7:environment_and_version_selection&amp;rev=1780650181&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-06-05T09:03:01+00:00</dc:date>
        <dc:creator>张叶安 (midas@undisclosed.example.com)</dc:creator>
        <title>environment_and_version_selection - 创建</title>
        <link>https://www.zhuzhugst.com/doku.php?id=rhino%E4%BA%8C%E6%AC%A1%E5%BC%80%E5%8F%91:rhinocompute_7:environment_and_version_selection&amp;rev=1780650181&amp;do=diff</link>
        <description>02 环境准备与版本选择

先选 Rhino 版本

Compute 源码分支必须与安装的 Rhino 主版本匹配：
 已安装 Rhino  建议源码分支  Rhino 8  8.x  Rhino 7  7.x 
如果 Rhino 版本和 Compute 分支不匹配，常见结果是编译失败、启动时找不到 Rhino 组件、Grasshopper 插件加载异常，或者运行时返回 500。</description>
    </item>
    <item rdf:about="https://www.zhuzhugst.com/doku.php?id=rhino%E4%BA%8C%E6%AC%A1%E5%BC%80%E5%8F%91:rhinocompute_7:concepts_and_architecture&amp;rev=1780650168&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-06-05T09:02:48+00:00</dc:date>
        <dc:creator>张叶安 (midas@undisclosed.example.com)</dc:creator>
        <title>concepts_and_architecture - 创建</title>
        <link>https://www.zhuzhugst.com/doku.php?id=rhino%E4%BA%8C%E6%AC%A1%E5%BC%80%E5%8F%91:rhinocompute_7:concepts_and_architecture&amp;rev=1780650168&amp;do=diff</link>
        <description>01 概念与架构

RhinoCompute 是什么

RhinoCompute 可以理解为“把 Rhino 的几何引擎放到 Web 服务后面”。客户端通过 HTTP 或 HTTPS 发送请求，服务端在无界面的 Rhino/Rhino.Inside 环境中执行几何计算、Grasshopper 求解或扩展端点逻辑，然后把 JSON 结果返回给客户端。</description>
    </item>
</rdf:RDF>
