Требуется ли команда для выхода из моего собственного сценария CAD, созданного с помощью .NET? - PullRequest
0 голосов
/ 23 января 2019

Я пытаюсь выполнить сценарий CAD для файла DWG, хранящегося в моем хранилище, с помощью API автоматизации проектирования.Он просто пишет "Hello World !!!"в файле.

Чтобы создать сценарий, я последовал этому уроку:

https://help.autodesk.com/view/OARX/2019/ENU/?guid=GUID-BA686431-C8BF-49F2-946E-9CEB2F7AE4FA

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;

namespace MyFirstProject
{
    public class Class1
    {
        [CommandMethod("AdskGreeting")]
        public void AdskGreeting()
        {
            // Get the current document and database, and start a transaction
            Document acDoc = Application.DocumentManager.MdiActiveDocument;
            Database acCurDb = acDoc.Database;

            // Starts a new transaction with the Transaction Manager
            using (Transaction acTrans = acCurDb.TransactionManager.StartTransaction())
            {
                // Open the Block table record for read
                BlockTable acBlkTbl;
                acBlkTbl = acTrans.GetObject(acCurDb.BlockTableId,
                                             OpenMode.ForRead) as BlockTable;

                // Open the Block table record Model space for write
                BlockTableRecord acBlkTblRec;
                acBlkTblRec = acTrans.GetObject(acBlkTbl[BlockTableRecord.ModelSpace],
                                                OpenMode.ForWrite) as BlockTableRecord;

                /* Creates a new MText object and assigns it a location,
                text value and text style */
                using (MText objText = new MText())
                {
                    // Specify the insertion point of the MText object
                    objText.Location = new Autodesk.AutoCAD.Geometry.Point3d(2, 2, 0);

                    // Set the text string for the MText object
                    objText.Contents = "Hello World!!!";

                    // Set the text style for the MText object
                    objText.TextStyleId = acCurDb.Textstyle;

                    // Appends the new MText object to model space
                    acBlkTblRec.AppendEntity(objText);

                    // Appends to new MText object to the active transaction
                    acTrans.AddNewlyCreatedDBObject(objText, true);
                }

                // Saves the changes to the database and closes the transaction
                acTrans.Commit();
            }
        }
    }
}

Я прошел через автоматизацию проектированиярабочий процесс.Я смог опубликовать AppPackage, опубликовать Activity и опубликовать WorkItem с помощью Forge Node.js SDK.

Однако статус WorkItem вернулся как FailedExecution.

Я не буду показывать весь журнал ошибок, потому что он содержит конфиденциальную информацию, но вот некоторые основные моменты:


[01/17/2019 21:30:44] End download phase.
[01/17/2019 21:30:44] Start preparing script and command line parameters.
[01/17/2019 21:30:44] Start script content.
[01/17/2019 21:30:44] _ADSKGREETING
[01/17/2019 21:30:44] End script content.

//Blah

[01/17/2019 21:30:44] End preparing script and command line parameters.
[01/17/2019 21:30:44] Start script phase.

//Blah

[01/17/2019 21:30:44] Start AutoCAD Core Engine standard output dump.

//Blah blah blah

[01/17/2019 21:30:44] AutoCAD Core Engine Console - Copyright 2015 Autodesk, Inc.  All rights reserved. (M.49.Z.1)
[01/17/2019 21:30:44] Running at low integrity.
[01/17/2019 21:30:45] Loading AEC Base...
[01/17/2019 21:30:45] Loading AEC Base Extended...
[01/17/2019 21:30:45] Loading AEC Project Base...
[01/17/2019 21:30:45] Loading AEC Architectural Base...
[01/17/2019 21:30:46] Loading AEC Schedule...
[01/17/2019 21:30:46] Substituting [simplex.shx] for [fed-s.shx].
[01/17/2019 21:30:46] Substituting [simplex.shx] for [fed-s.shx].
[01/17/2019 21:30:46] Substituting [simplex.shx] for [fed-s.shx].
[01/17/2019 21:30:46] Substituting [simplex.shx] for [fed-l.shx].
[01/17/2019 21:30:46] Substituting [simplex.shx] for [fed-s.shx].
[01/17/2019 21:30:46] Substituting [simplex.shx] for [fed-s.shx].
[01/17/2019 21:30:46] Substituting [simplex.shx] for [fed-l.shx].
[01/17/2019 21:30:46] Substituting [simplex.shx] for [fed-s.shx].
[01/17/2019 21:30:46] Substituting [simplex.shx] for [fed-l.shx].
[01/17/2019 21:30:46] Substituting [simplex.shx] for [fed-l.shx].
[01/17/2019 21:30:46] Substituting [simplex.shx] for [fed-s.shx].
[01/17/2019 21:30:46] Regenerating model.
[01/17/2019 21:30:47] Command:
[01/17/2019 21:30:47] Command:
[01/17/2019 21:30:47] Command:
[01/17/2019 21:30:47] Command: _ADSKGREETING_quit
[01/17/2019 21:30:47] Unknown command "ADSKGREETING_QUIT".  Press F1 for help.
[01/17/2019 21:31:47] Error: AutoCAD Core Console is shut down due to timeout.
[01/17/2019 21:31:47] End script phase.
[01/17/2019 21:31:47] Error: An unexpected error happened during phase CoreEngineExecution of job.
[01/17/2019 21:31:47] Job finished with result FailedExecution

Я предполагаю, что сценарий в порядке, потому что я могу успешно запустить его с AutoCADна моем компьютере, выполнив следующее:

NETLOAD -> выберите файл MyFirstProject.dll -> ADSKGREETING

Чего-то не хватает в моем скрипте?Нужно ли включать команду для выхода из сценария?Если да, то как?

Ответы [ 3 ]

0 голосов
/ 24 января 2019

Я думаю, что ваша проблема проста: пропустить пробел или ввести в конце команды ADSKGREETING.Пожалуйста, измените ADSKGREETING на ADSKGREETING \ n вашего определения деятельности.

0 голосов
/ 31 января 2019

При создании действия ваша командная строка должна включать аргумент / al, который должен загружать ваш пакет при запуске accoreconsole.

Примерно так:

{
 "id": "{{activity name}}",
 "commandLine": "$(engine.path)/accoreconsole.exe /i \"$(args[InputFile].path)\" /s \"$(settings[script].path)\" /al \"$(appbundles[{{appBundle Name}}].path)\""
...
}
0 голосов
/ 24 января 2019

Да и нет.Если на этапе завершения задачи не выполняется, просто оставьте обработчик пустым.Но вам все равно нужно будет указать необходимые атрибуты сборки в начале вашего скрипта.Подробнее см. здесь .

[assembly: CommandClass(typeof(MyFirstProject.Class1))]
[assembly: ExtensionApplication(null)]

namespace ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...