サポートが必要な場合は、Autodesk Assistant にお問い合わせください!
Assistant が回答を見つけたり、担当者に連絡するお手伝いをします。
オートデスクではどのようなサポートが提供されますか?
ご利用可能なサポートの種類は、サブスクリプションのプランによって異なります。現在のプランでご利用可能なサポート レベルをご確認ください。
Autodesk Support
2021年7月24日
Issue
AutoCAD のパレット形式のダイアログ ボックスを作成する手順を教えてください。
Solution
AutoCAD .NET API を利用するアプリケーションは、AutoCAD .NET API クラス ライブラリが提供する Autodesk.AutoCAD.Windows 名前空間で公開されたクラスを利用することでは、AutoCAD 固有のユーザ インタフェースであるパレット ダイアログの機能を提供します。
1. AutoCAD .NET API 用のプロジェクトにユーザー コントロールを追加します。 2. 追加したユーザーコントロールの Name プロパティを確認します。ここでは UserControl1 と仮定します。
3. 必要なコントロールをドラッグ&ドロップでユーザー コントロール上に配置します。この操作で、ユーザ コントロール モジュール(UserControl1.vb) がプロジクトに追加されます。
配置したコントロールは、次のようなコントロール名を持っていると仮定します。
4. ユーザーコントロールのコード ウィンドウに Imports を追記します。これは、コマンド定義モジュール Class1.vb とは別モジュールでフォーム モジュールが挿入されているためです。
Imports Autodesk.AutoCAD.Runtime
Imports Autodesk.AutoCAD.DatabaseServices
Imports Autodesk.AutoCAD.ApplicationServices
Imports Autodesk.AutoCAD.WindowsPublic Class UserControl1
:
5. 文字スタイル作成 ボタン(Button1) のプロシージャを記述します。
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.ClickDim oDb As Database = HostApplicationServices.WorkingDatabase
Dim oTr As Transaction = oDb.TransactionManager.StartTransactionTry
Dim oDocLock As DocumentLock = Application.DocumentManager.MdiActiveDocument.LockDocument
Dim oTt As TextStyleTable = oTr.GetObject(oDb.TextStyleTableId, OpenMode.ForWrite)
Dim oTtr As TextStyleTableRecord
If Not oTt.Has(TextBox1.Text) Then
oTtr = New TextStyleTableRecord
oTtr.Name = TextBox1.Text
oTtr.FileName = "romans.shx"
oTtr.BigFontFileName = "extfont2.shx"
oTt.Add(oTtr)
oTr.AddNewlyCreatedDBObject(oTtr, True)
Else
MsgBox("既に文字スタイルが存在しています")
End IfoTr.Commit()
oDocLock.Dispose()
Catch oEx As Exception
MsgBox(oEx.ToString())
Finally
oTr.Dispose()
End TryEnd Sub
AutoCAD のコマンドは、実行時に表示されている図面ウィンドウ(ドキュメント) に依存しています。コマンド実行時に一番手前に表示されている図面に実行結果が適用されるのはこのためです。Windows フォームの作成手順 で紹介したダイアログ ボックスはモーダル ダイアログ ボックスと言われるもので、ダイアログ ボックス表示中にマウス操作で図面ウィンドウを切り替えることができません。つまり、コマンドの実行対象となるドキュメントを変更できません。
ところが、パレット ダイアログは、ダイアログ表示中に図面ウィンドウを切り換えてしまうことができます。これは、パレット ダイアログがモードレス ダイアログ ボックスであるためです。このため、どのドキュメントにコマンドを適用するか、対象ドキュメントを特定をしなければなりません。この操作が、下線で示した ドキュメント ロックの作業です。モードレス ダイアログからの直接操作時にドキュメント ロックを怠ると、AutoCAD のが異常終了の原因になります。
6. コマンド呼び出し時に使用するパレットセットとパレット用の変数を、コマンド定義モジュール(Class1.vb) 内で宣言します。
Imports Autodesk.AutoCAD.Runtime
Imports Autodesk.AutoCAD.DatabaseServices
Imports Autodesk.AutoCAD.ApplicationServices
Imports Autodesk.AutoCAD.EditorInput
Imports Autodesk.AutoCAD.Geometry
Imports Autodesk.AutoCAD.Colors
Imports Autodesk.AutoCAD.Windows
Public Class Class1
' パレットセットとパレット用変数の宣言
Public Shared oP As UserControl1 = Nothing
Public Shared oPs As Autodesk.AutoCAD.Windows.PaletteSet = Nothing
:
7. コマンド定義モジュール(Class1.vb) 内に、パレット表示用のコマンドを定義します。
<CommandMethod("ShowPalette")> _
Public Shared Sub MyPalette()' パレットセットの作成
If oPs Is Nothing Then
oPs = New Autodesk.AutoCAD.Windows.PaletteSet(“文字スタイル")
oPs.Style = PaletteSetStyles.ShowPropertiesMenu Or _
PaletteSetStyles.ShowAutoHideButton Or _
PaletteSetStyles.ShowCloseButton Or _
PaletteSetStyles.Snappable
oPs.MinimumSize = New System.Drawing.Size(300, 200)
oPs.Visible = True
Else
oPs.Visible = True
End If' パレットの作成
If oPs.Count = 0 Then
oP = New UserControl1
oPs.Add(“文字スタイル作成", oP)
End IfoPs.Dock = DockSides.None
oPs.Size = New System.drawing.Size(300, 200)End Sub
正常に実装できれば、ShowPalette コマンドで次のようなパレット ボックスが表示されて、入力した文字スタイル名で文字スタイルが作成されます。
この情報は役に立ちましたか?
Assistant が回答を見つけたり、担当者に連絡するお手伝いをします。
オートデスクではどのようなサポートが提供されますか?
ご利用可能なサポートの種類は、サブスクリプションのプランによって異なります。現在のプランでご利用可能なサポート レベルをご確認ください。
プライバシー | Cookie の基本設定 | 不正コピーの報告 | 使用規約 | 法律情報(英語) | 特定商取引法に基づく表示 | © 2025 Autodesk Inc. All rights reserved