Как импортировать dxf в dwg с помощью Autodesk Forge

Я реализовал средство просмотра с помощью Autodesk Platform Services (прежнее название Forge) на .NET Core. В ведро загружаю 2D чертежи в формате .dwg.

Я включил функцию пометок в средстве просмотра, так что теперь я могу сделать любую пометку поверх .dwg.

То, что у меня есть на данный момент, выглядит так:

Мне нужно сохранить этот чертеж с пометками, которые я сделал, и либо использовать его как второй чертеж внутри ведра, либо переопределить исходный.

Шаги, которые я предпринял до сих пор:

  • В javascript позади я могу получить разметку только в формате .svg, используя .generateData() в расширении MarkupsCore:

    const markupCore = await viewer.loadExtension('Autodesk.Viewing.MarkupsCore');

    let svgMarkup = markupCore.generateData();

  • Получив разметку svg, я конвертирую ее в файл .dxf.

Я думаю, что мне нужно использовать API автоматизации проектирования, чтобы импортировать этот файл dxf в dwg, но я не знаю, как справиться с этим.

Я проверил следующую ссылку по импорту dxf в dwg, но пока не могу найти что-то для своего случая.

Учебники AutoDesk Design Automation по autocad

Если кто-то знает, может быть, другой способ справиться с этим, пожалуйста, дайте мне знать.

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
51
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я думаю, что мне нужно использовать API автоматизации проектирования, чтобы импортировать этот файл dxf в dwg, но я не знаю, как с этим справиться.

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

Активность

{
    "id": "{{ _.activityId }}",
    "commandLine": [
        "$(engine.path)\\accoreconsole.exe /i \"$(args[main].path)\" /s $(settings[script].path)"
    ],
    "parameters": {
        "main": {
            "verb": "get",
            "description": "test",
            "required": true,
            "localName": "$(inputFile)"
        },
        "overlay": {
            "verb": "get",
            "description": "",
            "required": true,
            "localName": "markups.dxf"
        },
        "result": {
            "verb": "put",
            "description": "",
            "required": true,
            "localName": "result.dwg"
        }
    },
    "engine": "Autodesk.AutoCAD+24_1",
    "description": "import markups",
    "settings": {
        "script": "-insert\nmarkups.dxf\n4,1,0\n1\n1\n0\nsaveas\n2018\nresult.dwg\n"
    }
}

Рабочий элемент

{
    "activityId": "{{ _.nickName }}.{{ _.activityId }}+{{ _.alias }}",
    "arguments": {
        "main": {
            "url": "urn:adsk.objects:os.object:madlybuckets/main.dwg",
            "verb": "get",
            "headers": {
                "Authorization": "Bearer {{ _.oAuthToken }}"
            }
        },
        "overlay": {
            "url": "urn:adsk.objects:os.object:madlybuckets/markups.dxf",
            "verb": "get",
            "headers": {
                "Authorization": "Bearer {{ _.oAuthToken }}"
            }
        },
        "result": {
            "verb": "put",
            "url": "urn:adsk.objects:os.object:madlybuckets/result.dwg",
            "headers": {
                "Authorization": "Bearer {{ _.oAuthToken }}"
            }
        }
    }
}

Здесь main.dwg, markups.dxf загружаются в Службу хранения объектов APS, чтобы я мог напрямую использовать идентификатор объекта загруженных файлов вместо передачи URL-адреса объекта рабочему элементу.

возможно ли сделать localName оверлея и привести внутренние параметры в качестве параметров. Не жестко запрограммировано в json. То же, что и «основной» параметр.

Plarent Haxhidauti 11.01.2023 17:31

Да, вы можете использовать переменные, украшающие имена параметров с помощью $, например: $(overlay), во время выполнения оно будет разрешаться в имя файла, указанное в рабочем элементе.

Madhukar Moogala 12.01.2023 06:21

Если я обновлю localName до $(overlay), мне нужно что-то обновить в «сценарии», так как на данный момент у меня определен markups.dxf. Можно ли сделать какое-то значение переменной в самом скрипте?

Plarent Haxhidauti 12.01.2023 07:50

Нет, кроме командной строки, мы больше нигде не расширяем переменные, в чем проблема с использованием markups.dxf, в любом случае, как только рабочий элемент отправлен и завершен, все файлы удаляются. если вы хотите полномасштабную автоматизацию, я бы предложил обернуть логику в команду .NET и загрузить ее как пакет .

Madhukar Moogala 12.01.2023 15:08

Другие вопросы по теме