Последние сообщения

Последние сообщения

Страницы: 1 2 3 [4] 5 6 ... 10
31
AutoCAD .NET API / Не могу получить AcadApplication через COM.
« Последний ответ от Gr.Om 29-10-2025, 19:44:28 »
Подскажите, пожалуйста, - как это правильно делается. Во всех примерах объект получают в таком виде:



Но VS стабильно пишет ошибку "Marshal" не содержит определение "GetActiveObject". Бьюсь полдня, перепробовал все рекомендации.
Подключил уже кучу всего в проект:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>net8.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
  </PropertyGroup>

  <ItemGroup>
    <COMReference Include="AutoCAD">
      <WrapperTool>tlbimp</WrapperTool>
      <VersionMinor>0</VersionMinor>
      <VersionMajor>1</VersionMajor>
      <Guid>4d6c720c-0525-4d94-841b-6d5378a564e2</Guid>
      <Lcid>0</Lcid>
      <Isolated>false</Isolated>
      <EmbedInteropTypes>true</EmbedInteropTypes>
    </COMReference>
    <COMReference Include="AXDBLib">
      <WrapperTool>tlbimp</WrapperTool>
      <VersionMinor>0</VersionMinor>
      <VersionMajor>1</VersionMajor>
      <Guid>0ea72311-df28-4318-a51b-92d7fc7df50b</Guid>
      <Lcid>0</Lcid>
      <Isolated>false</Isolated>
      <EmbedInteropTypes>true</EmbedInteropTypes>
    </COMReference>
  </ItemGroup>

  <ItemGroup>
    <Reference Include="accoremgd">
      <HintPath>..\..\..\CAD\NET\OARX\CDROM1\inc\AcCoreMgd.dll</HintPath>
      <Private>False</Private>
    </Reference>
    <Reference Include="Acdbmgd">
      <HintPath>..\..\..\CAD\NET\OARX\CDROM1\inc\AcDbMgd.dll</HintPath>
      <Private>False</Private>
    </Reference>
    <Reference Include="acmgd">
      <HintPath>..\..\..\CAD\NET\OARX\CDROM1\inc\AcMgd.dll</HintPath>
      <Private>False</Private>
    </Reference>
    <Reference Include="Autodesk.AutoCAD.Interop">
      <HintPath>..\..\..\CAD\NET\OARX\CDROM1\inc-x64\Autodesk.AutoCAD.Interop.dll</HintPath>
    </Reference>
    <Reference Include="Autodesk.AutoCAD.Interop.Common">
      <HintPath>..\..\..\CAD\NET\OARX\CDROM1\inc-x64\Autodesk.AutoCAD.Interop.Common.dll</HintPath>
    </Reference>
  </ItemGroup>

</Project>

Marshal точно из нужного пространства:



Чего не хватает?
32
Что в целом не отменяет меньшую функциональность по сравнению с VBA.
Никто не мешает использовать в AutoCAD.NET API элементы COM/ActiveX (т.е. то, что есть в VBA).
33
AutoCAD .NET API / Re: Где в справке искать метод .Select()?
« Последний ответ от Gr.Om 28-10-2025, 14:10:47 »
Да, был неправ частично..
Вот так нагляднее видно, что большая часть поддерживает фильтрацию.



Что в целом не отменяет меньшую функциональность по сравнению с VBA.
34
а в NET почему-то только .GetSelection (.SelectOnScreen в VBA) удостоился этой чести.
Нет. Смотри внимательно документацию.
https://help.autodesk.com/view/OARX/2024/ENU/?guid=OARX-ManagedRefGuide-Autodesk_AutoCAD_EditorInput_Editor_SelectWindow_Point3d_Point3d_SelectionFilter


35
AutoCAD .NET API / Re: Где в справке искать метод .Select()?
« Последний ответ от Gr.Om 28-10-2025, 09:18:32 »
Ровно так же, как и в NET. Создание выборки с использованием другой выборки возможно (только?) через .SelectPrevious (на VBA это .Select acSelectionSetPrevious), собственно на картинке он и используется.
Вопрос был в том, что на VBA все способы создания SelectionSet могут использовать фильтрацию, а в NET почему-то только .GetSelection (.SelectOnScreen в VBA) удостоился этой чести.
Из того, что успел изучить в части методов получения наборов выделения, .NET предоставляет ровно тот же перечень инструментов только с обрезанной функциональностью. Поэтому я собственно и задался вопросом. Т.к. только начал штудировать Reference Guide по .NET, возможно далеко не всю картину вижу. Но то, что вижу, что-то как-то расстроило.
36
Ну и где ты нашел, что в VBA для метода Select на вход можно подать набор?
37
AutoCAD .NET API / Re: Где в справке искать метод .Select()?
« Последний ответ от Gr.Om 28-10-2025, 00:37:30 »
И все же еще раз. Может я чего-то недопонимаю в великом и могучем .NET.
Если в VBA я могу в методе .Select выбрать любой способ выделения, и каждый из этих способов может сделать DXF-фильтрацию:



То для API это уже неподъемная задача?!
38
Костыль - это загнать твой набор в набор предварительного выбора Editor.SetImpliedSelection, а затем использовать GetSelection с фильтром. При этом если был набор предварительного выбора, то он пропадает. Ну и команда должна быть с флагом Redraw. Или перебором. Если фильтр простой, то метод с перебором предпочтительней.
39
AutoCAD .NET API / Re: Где в справке искать метод .Select()?
« Последний ответ от Gr.Om 27-10-2025, 00:11:34 »
Хотя да.. Если оставить один параметр, тогда уже редактор жалуется и на сам метод..



Видимо типичная выдумка AI.
Александр, тогда подскажите пожалуйста оптимальный путь для решения этой задачи (фильтрации ранее сделанной выборки)
Только начинаю изучать API, голова пухнет. Смотрю на Editor.SelectPrevious, но не вижу, чтобы он принимал какие-либо параметры. А мне нужно подсунуть фильтр.
.GetSelection использует фильтр, но не вижу как подсунуть какой-либо предварительный набор ему.
На VBA пусть с костылями, но решал эту задачу без перебора.. А тут вроде бы возможностей больше, но не вижу способа их применить.
40
Среди стандартных методов в AutoCAD.NET API такого нет. Скорее всего это какое-то расширение.
Страницы: 1 2 3 [4] 5 6 ... 10