このうち、オートメーション API と、Teigha Classic .Net API が AutoCAD 準拠になっている。Swig API は、SWIG (Simplified Wrapper and Interface Generator) によってネイティブ API を .Net Framework に提供したものなので、Teigha 独自の仕様になっている。
2019/7/24
Teigha Classic .Net API のホストサービスを持つクラスライブラリとしてマネージドライブラリを作成しました。
これを、PowerShell コンソールや PowerShell ISE にロードさせることで、Teigha Classic .Net API の機能を、PowerShell コンソールや PowerShell ISE に「公開」することができたので、下記の記述は古いです。
下記の方法で得られた知見もあったので、取り消し線を引いて残しておきます。
Teigha .Net Classic ホストアプリケーションの骨格
[STAThread]
static void Main(string[] args)
{
// アクティベーションを割り当て
Services.odActivate(ActivationData.userInfo,
ActivationData.userSignature);
using (Services svcs = new Services())
{
// アプリケーションサービスを割り当て
HostApplicationServices.Current = new HostAppServ();
Console.WriteLine("\nTeighaShell developed using {0} ver {1}",
HostApplicationServices.Current.Product,
HostApplicationServices.Current.VersionString);
}//TeighaServiceの終了
}//メインプログラムの終了
PowerShellの起動と実行
[STAThread]
static void Main(string[] args)
{
(略)
// Runspace 実行空間インスタンスを生成
using (Runspace runspace = RunspaceFactory.CreateRunspace())
{
runspace.Open();
// PowerShell インスタンスを生成
using (var powershell = PowerShell.Create())
{
powershell.Runspace = runspace;
// メインループ
while (true)
{
// スクリプトの1行入力待ち
string st = Console.ReadLine();
// ユーザーが入力した内容をスクリプトとする
powershell.AddScript(st);
// コマンドを実行
Collection<PSObject> psOutput = powershell.Invoke();
// 実行結果を文字列化
foreach (PSObject outputItem in psOutput)
{
strbuilder.AppendLine(outputItem.ToString());
}
// 結果をコンソールに出力
Console.Write(strbuilder.ToString());
// コマンドとエラーをクリア
powershell.Commands.Clear();
powershell.Streams.Error.Clear();
}
}// PowerShellの終了
}// Runspaceの終了
(略)
}//メインプログラムの終了
0 件のコメント:
コメントを投稿