AddSheets 方法 (ActiveX/ATO)
将图纸集 (DST) 文件中的文件添加到传递集。 支持的平台:仅限 Windows 命名空间:传输塔利布 集会:AcETransmit19.tlb 签名VB.NET: object.addSheets sheets, includeSSFiles C#: object.addSheets(sheets, includeSSFiles);
返回值 (RetVal)无返回值。 言论没有其他评论。 发行信息释放:AutoCAD 2005 及更高版本
例子VB.NET: ' Custom command to create a transmittal package from the sheets in a sheet set
<CommandMethod("eTransmitDSTFile_Sheets")> _
Public Shared Sub eTransmitDSTFile_Sheets()
' Create a transmittal operation
Dim tro As TransmittalOperation = New TransmittalOperation()
' Setup the transmittal behavior
Dim ti As TransmittalInfo = _
TransInfo(tro.getTransmittalInfoInterface(), "C:\Users\Public\TransmittalAPITest\")
' Add a sheet selection set from a sheet set and
' the drawings contained in it
' Get a reference to the Sheet Set Manager object
Dim sheetSetManager As IAcSmSheetSetMgr = New AcSmSheetSetMgr
' Open a Sheet Set file
Dim sheetSetDatabase As AcSmDatabase = _
sheetSetManager.OpenDatabase("C:\AutoCAD\Sample\Sheet Sets\Architectural\IRD Addition.dst", False)
' Get the enumerator for the objects in the
' sheet set and then set the first object
Dim enumerator As IAcSmEnumPersist = sheetSetDatabase.GetEnumerator()
Dim itemSheetSet As IAcSmPersist = enumerator.Next()
Dim sheetNames(0) As String
Dim sheetSetSelOrSheetName As String = "T-01 TITLE SHEET;A-01 MAIN AND SECOND FLOOR PLAN"
' Semi-colon detected, multiple sheet names are being passed
If sheetSetSelOrSheetName.Contains(";") = True Then
sheetNames = sheetSetSelOrSheetName.Split(";")
Else
sheetNames(0) = sheetSetSelOrSheetName
End If
' Create an array of the sheets based on their names
Dim sheetArray(0) As IAcSmObjectId
Dim sheet As AcSmSheet, nCount As Integer = 0
' Step through the objects in the sheet set
Do While Not itemSheetSet Is Nothing
' Check to see if the object is a Sheet
If itemSheetSet.GetTypeName() = "AcSmSheet" Then
' A sheet was found, now to see if it is the one needed
sheet = itemSheetSet
' Step through each name provided
For Each sheetName As String In sheetNames
' Check to see if the sheet name matches the sheet
If UCase(sheet.GetName()).Equals(UCase(sheetName)) = True Then
ReDim Preserve sheetArray(0 To nCount)
' Match was found, add the sheet's object Id to the array
sheetArray(nCount) = sheet.GetObjectId()
' Increment the counter by 1
nCount = nCount + 1
End If
Next
End If
' Get the next object
itemSheetSet = enumerator.Next()
Loop
' Get the sheets from the database and process them
' 0 - Do not include DST file or support files referenced
' by the DST file (templates, blocks, ...)
' 1 - Include DST file, all files referenced by the
' DST file, its sheets and references
If sheetArray.Length > 0 And sheetArray(0).Equals("") = False Then
tro.addSheets(sheetArray, vbTrue)
End If
' Close the sheet set
sheetSetManager.Close(sheetSetDatabase)
' Create the transmittal package
' Files are copied and resaved to the path specified by the destinationRoot property
' and the other settings of the TransmittalInfo object.
tro.createTransmittalPackage()
End Sub
C#: // Custom command to create a transmittal package from the sheets in a sheet set
[CommandMethod("eTransmitDSTFile_Sheets")]
public static void eTransmitDSTFile_Sheets()
{
// Create a transmittal operation
TransmittalOperation tro = new TransmittalOperation();
// Setup the transmittal behavior
TransmittalInfo ti =
TransInfo(tro.getTransmittalInfoInterface(), "C:\\Users\\Public\\TransmittalAPITest\\");
// Add a sheet set and the drawings referenced in it
// Get a reference to the Sheet Set Manager object
IAcSmSheetSetMgr sheetSetManager = new AcSmSheetSetMgr();
// Open a sheet set (DST) file
AcSmDatabase sheetSetDatabase =
sheetSetManager.OpenDatabase("C:\\AutoCAD\\Sample\\Sheet Sets\\Architectural\\IRD Addition.dst", false);
// Get the enumerator for the objects in the
// sheet set and then set the first object
IAcSmEnumPersist enumerator = sheetSetDatabase.GetEnumerator();
IAcSmPersist itemSheetSet = enumerator.Next();
string[] sheetNames = new string[1];
string sheetSetSelOrSheetName = "T-01 TITLE SHEET;A-01 MAIN AND SECOND FLOOR PLAN";
// Semi-colon detected, multiple sheet names are being passed
if (sheetSetSelOrSheetName.Contains(";") == true)
{
sheetNames = sheetSetSelOrSheetName.Split(';');
}
else
{
sheetNames[0] = sheetSetSelOrSheetName;
}
// Create an array of the sheets based on their names
IAcSmObjectId[] sheetArray = new IAcSmObjectId[1];
AcSmSheet sheet = default(AcSmSheet);
int nCount = 0;
// Step through the objects in the sheet set
while (itemSheetSet != null)
{
// Check to see if the object is a Sheet
if (itemSheetSet.GetTypeName() == "AcSmSheet")
{
// A sheet was found, now to see if it is the one needed
sheet = (AcSmSheet)itemSheetSet;
// Step through each name provided
foreach (string sheetName in sheetNames)
{
// Check to see if the sheet name matches the sheet
if (sheet.GetName().ToUpper().Equals(sheetName.ToUpper()) == true)
{
Array.Resize(ref sheetArray, nCount + 1);
// Match was found, add the sheet's object Id to the array
sheetArray[nCount] = sheet.GetObjectId();
// Increment the counter by 1
nCount = nCount + 1;
}
}
}
// Get the next object
itemSheetSet = enumerator.Next();
}
// Get the sheets from the database and process them
// 0 - Do not include DST file or support files referenced
// by the DST file (templates, blocks, ...)
// 1 - Include DST file, all files referenced by the
// DST file, its sheets and references
if (sheetArray.Length > 0 & sheetArray[0].Equals("") == false)
{
tro.addSheets(sheetArray, 1);
}
// Close the sheet set
sheetSetManager.Close(sheetSetDatabase);
// Create the transmittal package
// Files are copied and resaved to the path specified by the destinationRoot property
// and the other settings of the TransmittalInfo object.
tro.createTransmittalPackage();
}
相关参考 |
|Archiver|CAD开发者社区
( 苏ICP备2022047690号-1 苏公网安备32011402011833)
GMT+8, 2025-10-24 18:52
Powered by Discuz! X3.4
Copyright © 2001-2021, Tencent Cloud.