SP3D c# 开发独立的exe

news/2025/9/17 21:40:57/文章来源:https://www.cnblogs.com/NanShengBlogs/p/19097652

此方法避免了启动S3D的过程

imageS3D.net API允许编写独立应用程序,即外部自动化TaskHost可执行文件。

在独立应用程序中可以编写哪些自动化?
检查自动化-检查对象/数据,并采取一些行动,如生成
报告文件/输出文件。
数据挖掘-对对象和相关对象进行一些数据处理/数据挖掘,
生成报告。
根据您的工作流程修改属性。
从内部数据库/系统访问数据并将此类数据加载到S3 D
对象
对类对象数据的模型/目录数据执行后台计划任务
分析/检查/修改。
在非交互式环境中创建S3 D对象

image

请注意,没有用户交互服务/组件(客户端服务)可以可用于此类独立应用程序。

这些仅适用于

互动环境。
您只能引用和使用中间层服务和组件。无论您是在运行S3D.net API,
交互式TaskHost,或在独立可执行文件中,底层
语义和关联框架仍在后台运行。S3D的这个“中央处理单元”持续监控和反应
根据指定的应用程序进行修改和简化更改元数据行为。
当你编写独立应用程序时,你必须照顾
连接到网站;(可以连接到默认上次打开的网站,或提供网站连接详情)
开设工厂;(可以获取可用工厂及其信息的列表)
设置活动权限组;(稍后的所有修改都将与此一起
权限组)
局限性:激活一种植物后,您无法切换到不同的植物。

代码部分

 static void Main(string[] args){AddPath();var projectDbKey = $@"Software\Intergraph\Applications\Environments\CommonApp\ProjectDB";var s3dProjectDBInfor = Registry.CurrentUser.OpenSubKey(projectDbKey);var PhysicalName = s3dProjectDBInfor.GetValue("PhysicalName").ToString();var Schema = s3dProjectDBInfor.GetValue("Schema").ToString();var arrPhysicalName = PhysicalName.Split(new string[] { ";", "=" }, StringSplitOptions.RemoveEmptyEntries);var arrSchema = Schema.Split(new string[] { ";", "=" }, StringSplitOptions.RemoveEmptyEntries);SiteManager sm = MiddleServiceProvider.SiteMgr;var st = sm.ConnectSite(arrPhysicalName[1], arrPhysicalName[3], SiteManager.eDBProviderTypes.MSSQL, arrSchema[3]);st.OpenPlant(st.Plants.FirstOrDefault());foreach (BusinessObject ob in st.ActivePlant.PlantModel.RootSystem.SystemChildren){Console.WriteLine(ob.ToString());}Console.ReadKey();}static void AddPath(){var paths = new string[]{"C:\\Program Files (x86)\\Smart3D\\GeometryTopology\\Runtime","C:\\Program Files (x86)\\Smart3D\\Core\\Runtime"};var envVariables = Environment.GetEnvironmentVariable("Path");string[] strs = envVariables.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries);if (!strs.Contains(paths[0])){Environment.SetEnvironmentVariable("Path", envVariables + ";" + paths[0]);envVariables = Environment.GetEnvironmentVariable("Path");strs = envVariables.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries);}if (!strs.Contains(paths[1])){Environment.SetEnvironmentVariable("Path", envVariables + ";" + paths[1]);envVariables = Environment.GetEnvironmentVariable("Path");strs = envVariables.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries);}}

注意 引用的dll的copy local属性设置为true。

 

image

最后运行效果如图所示

image

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/906873.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python错误code

没有遍历完,就打印了结果模拟商品购物shopp_user = [] user_buy = [] for i in range(0,5):name_shop = input("请输入商品名称:")shopp_user.append(name_shop)for i in shopp_user:print(i)while True:us…

瑞 ping 我

ping瑞 ping 我

java八股文笔记 - 指南

java八股文笔记 - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", &quo…

NOIP 模拟赛十六

BIT/构造+DP+bitset/DP+平衡树/欧拉序A. 发现答案只有 \(0, 1, 2\) 三种。 将 \(0\) 直接判掉,\(1\) 可以通过树状数组+双指针解决。 记 \(k\) 为需要减少的逆序对数量。 具体的,枚举左端点 \(l\) ,加入右端点 \(r\…

【AT_dp_y】Grid 2 - Harvey

题意 要求从 \((1,1)\) 走到 \((n,m)\),不能经过障碍物,问方案数。 \(1 \leq n,m \leq 10^5,1 \leq k \leq 3000\)。 思路 首先先解决弱化版,若没有障碍物的方案数,显然是 \(\binom{n+m-2}{n-1}\)。 则我们可以用总…

C#十五天 026多态重写 027抽象类与开闭原则 028接口,依赖反转,单元测试

在类的重写当中 父类需要加入一个关键字叫:Virtual,子类需要加一个关键字叫:override例: 父类 public virtual void FuLei(){} 子类 public override void ZiLei如果用父类变量去引用子类实例不用v和o的话就…

解题报告-P11844 [USACO25FEB] Friendship Editing G

P11844 [USACO25FEB] Friendship Editing G 题目描述 Farmer John 的 \(N\) 头奶牛编号为 \(1\) 到 \(N\)(\(2\le N\le 16\))。奶牛之间的朋友关系可以建模为一个有 \(M\)(\(0\le M\le N(N-1)/2\))条边的无向图。两…

CSP-S模拟23

\(T1:\) 选彩笔(rgb) 思路: 签到题 (但是没签上),二分答案,在写一个三维前缀和\(check\)一下就搞定了。如果忘记三维前缀和的话,请看这里 代码:$code$ #include<iostream> using namespace std; const…

CF1413F Roads and Ramen

结论是,路径中有一个端点是直径端点。 你这么想,设 \(dis_i\) 为 \(1\) 到 \(i\) 的 \(1\) 的个数,如果对于一条直径 \(p \to q\),若 \(dis_p = dis_q\) 直接取直径即可。 否则,对于每个点 \(u\),总有 \(p, q\) …

复现The Annotated Transformer代码时遇到的问题和相关链接

The Annotated Transformer原网页:The Annotated Transformer The Annotated Transformer源代码:harvardnlp/annotated-transformer 《The Annotated Transformer》环境配置-CSDN博客 调试The Annotated Transformer…

Node.js 文件上传中文文件名乱码难题,为什么只有Node会有乱码困难,其他后端框架少见?

Node.js 文件上传中文文件名乱码难题,为什么只有Node会有乱码困难,其他后端框架少见?pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important…

lc1030-距离顺序排列矩阵单元格

难度:简单(后期)题目描述官方把题目描述得稀烂 左上角为 (0, 0),n x m 的点阵(屏幕坐标系,x轴向下,y轴向右) 给定其中一点 p,所有点按到 p 的曼哈顿距离排序示例 输入:rows = 1, cols = 2, rCenter = 0, cCe…

说的道理。

说的道理。说的道理。 ༼ つ ◕_◕ ༽つ ༼ つ ◕_◕ ༽つ ༼ つ ◕_◕ ༽つ ༼ つ ◕_◕ ༽つ ༼ つ ◕_◕ ༽つ ༼ つ ◕_◕ ༽つ ༼ つ ◕_◕ ༽つ ༼ つ ◕_◕ ༽つ ༼ つ ◕_◕ ༽つ ༼ つ ◕_◕ ༽つ ༼ つ ◕_◕…

【abc180F】Unbranched - Harvey

题意 问有多少个满足以下条件且有 \(n\) 个点 \(m\) 条边的图:没有自环 每个点的度最大为 \(2\)。 最大的连通块大小恰好为 \(L\)。思路 首先分析:由于每个点的度最大为 \(2\),所以可以判断每个联通块要么是链,要么…

合并区间-leetcode

题目描述 以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。 示例 1: 输入:in…

两种判断计算机大小端模式的方法

两种判断计算机大小端模式的方法 在计算机系统里,数据存储有大端和小端两种模式。大端模式是高字节存在低地址,小端模式是低字节存在低地址。下面结合相关知识,用两种 C 语言方法判断大小端。 一、知识铺垫 (一)大…

ROS2之节点

什么是节点? 在ROS2(机器人操作系统2)中,节点(node)是执行程序的基本单元,也是构成整个机器人系统的核心“积木”。你可以把它理解为系统中一个独立、可执行的进程,每个节点都专注于完成一个特定的、单一的功能…

ECT-OS-JiuHuaShan 框架,元推理AGI奇迹

ECT-OS-JiuHuaShan/https://orcid.org/0009-0006-8591-1891 ▮ 推理就绪:基于自然辩证法数学形式化系统启动因果律算符 ECT-OS-JiuHuaShan 框架的诞生,绝非一次普通的技术迭代,它是文明进程中一个前所未有的 “确定…

Mapper与Mapper.xml的关系

Mapper与Mapper.xml的关系简单直接的回答是:它们之间是“接口定义”与“SQL映射实现”的关系。 ManageMapper 是一个 Java 接口,它定义了数据库操作的方法签名;而 ManageMapper.xml 是一个 XML 文件,它提供了这些方…

Rocky Linux10.0安装zabbix7.4详细步骤 - 教程

Rocky Linux10.0安装zabbix7.4详细步骤 - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", &q…