Building Coder(Revit 二次开发) - 失败处理API(上)

本文介绍Revit2011中失败处理API的应用方法,包括如何注册自定义失败、定义失败严重程度及解决方案类型,并演示了如何发布错误及处理流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Building Coder 链接:Failure API Take Two

Revit 二次开发论坛链接:翻译 Building Coder - 失败处理API(上)


我们之前在 失败处理第一季中讨论过 Revit 2011 中最新的失败处理API和SDK例程“ErrorHandling”。Revit API 最广泛的用途之一就是屏蔽不需要的警告和错误。Revit 之前的版本中程序已经可以简便地使用 DialogShowing 事件来实现了。但正如我另外两篇博文 editing elements inside groupssuppressing an unwanted dialogue中展现的那样,失败处理API提供更加强大和完备的解决方案。

下面是Joe Ye(译者注:传说中的叶雄进老师)整理的失败处理API的使用方法:

在模型中出现错误时,Revit 通常是通过报告警告或者错误信息的形式来提示用户的。例如:当两面墙部分重叠时,Revit弹出如下警告消息:


Revit 2011 公开失败处理API用于发布和处理这些类型的失败。失败发布API能够被用于定义和注册新的自定义失败。自定义失败可以在插件中被自由地发布。在针对模型的操作结束时,失败发布API可以删除或者解决 Revit 失败。程序可以在失败处理过程中针对模型进行进一步的操作。如果失败处理API已经处理了失败,用户可能就察觉不到警告或者错误了。因为它们已经被你的程序处理了。

发布错误

错误发布API绝对属于易用型。我们可以首先在外部应用程序的OnStartup方法中注册新的错误定义,通常还需要设置其严重程度和解决方案类型。下面是注册一个新警告的例子。自定义的错误被注册之后,就可以在程序中自由地使用了。

public Result OnStartup( UIControlledApplication a )
{
  // Create failure definition Ids
 
  m_idWarning = new FailureDefinitionId( new Guid(
    "0C3F66B5-3E26-4d24-A228-7A8358C76D39" ) );    // VS工具菜单里有GUID生成器
 
  // Create failure definition and add resolution
 
  m_fdWarning
    = FailureDefinition.CreateFailureDefinition(
      m_idWarning,
      FailureSeverity.Warning, // 严重程度
      "I am the warning." );
 
  m_fdWarning.AddResolutionType(
    FailureResolutionType.MoveElements,
    "MoveElements", typeof( DeleteElements ) );    // 解决方案类型
 
  return Result.Succeeded;
}
Document.PostFailure()方法用于告诉文档对象当前有一个错误。

transaction.Start();    // 需要包含在一个事务中
FailureMessage fm = new FailureMessage( m_idWarning );
m_doc.PostFailure( fm );
transaction.Commit();
错误会在提交事务时被验证,解决错误(如果需要的话)也是在事务被提交时进行。


未完待续……
### 使用 FastAPI 部署和调用 Qwen2.5-Coder-7B-Instruct 模型 #### 安装依赖库 为了能够顺利运行并部署该模型,需安装必要的 Python 库。这包括 `transformers` 和 `torch` 等用于加载预训练模型及其权重文件;以及 `fastapi` 及其 Uvicorn 服务器来创建 API 接口。 ```bash pip install transformers torch fastapi uvicorn ``` #### 加载模型 通过 Hugging Face Transformers 库可以方便地加载 Qwen2.5-Coder-7B-Instruct 模型。具体实现如下: ```python from transformers import AutoTokenizer, AutoModelForCausalLM tokenizer = AutoTokenizer.from_pretrained("Qwen/Qwen2.5-Coder-7B-Instruct")[^1] model = AutoModelForCausalLM.from_pretrained("Qwen/Qwen2.5-Coder-7B-Instruct", trust_remote_code=True) ``` #### 创建 FastAPI 应用程序 定义一个简单的 FastAPI 应用来接收 POST 请求并将输入文本传递给已加载的模型进行推理处理。 ```python from fastapi import FastAPI, Request import json app = FastAPI() @app.post("/predict/") async def predict(request: Request): data = await request.json() input_text = data.get('input', '') inputs = tokenizer(input_text, return_tensors="pt") outputs = model.generate(**inputs) result = tokenizer.decode(outputs[0], skip_special_tokens=True) response_data = {"output": result} return JSONResponse(content=response_data) ``` 此部分代码实现了从 HTTP 请求中获取用户提交的数据作为模型输入,并返回由模型生成的结果字符串。 #### 启动服务 最后一步是在本地环境中启动 FastAPI Web 服务器实例以便测试接口功能。 ```bash uvicorn main:app --reload ``` 这里假设上述所有代码保存在一个名为 `main.py` 文件内,则可以通过命令行执行以上指令开启开发模式下的自动重载功能的服务监听。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值