Sweep в C#
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Sweep в C#

Sweep в C#

Ответ
Поиск в этой теме
Непрочитано 09.12.2010, 14:53 #1
Sweep в C#
Mikada
 
Регистрация: 15.11.2010
Сообщений: 8

Доброго времени суток,
подмкажите решение проблемы, суть такая, программно, создаю 3д полилинию (poly), транзакция, создаю круг(circle), транзакция, потом пытаюсь сделать следующее:
acDoc.SendStringToExecute("_sweep \n" + circle1+ "\n" + poly, true, false, true);
запускаю программу, в результате линии и круги создаются а при попытке сделать сдвиг автокад говорит
"Выберите объекты для сдвига: Autodesk.AutoCAD.DatabaseServices.Circle
*Неверный выбор*
Требуется точка или
Рамка/Последний/Секрамка/БОКС/Все/Линия/РМн-угол/СМн-угол/Группа/Добавить/Исключ
ить/Несколько/Текущий/Отменить/Авто/Единственный/ПОДобъект/Объект".
Вопрос, как программно сделать сдвиг? суть в том что пытаюсь сделать сдвиг руками все получается((
Просмотров: 3185
 
Непрочитано 09.12.2010, 15:35
#2
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,413
Отправить сообщение для Александр Ривилис с помощью Skype™


Версия AutoCAD? Ты передаешь в команду примитив. Фактически вызывается его метод toString, который возвращает имя класса, а не то, на что ты рассчитывал.
Александр Ривилис вне форума  
 
Автор темы   Непрочитано 09.12.2010, 15:37
#3
Mikada


 
Регистрация: 15.11.2010
Сообщений: 8


2008
ну и планируется потом под 10 загнать.
Про то что берется строка я понял, как сам объект передать не пойму.
Mikada вне форума  
 
Непрочитано 09.12.2010, 15:40
#4
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,413
Отправить сообщение для Александр Ривилис с помощью Skype™


А зачем командные методы? Чем тебя
Autodesk.AutoCAD.DatabaseServices.SweptSurface не устраивает?
Александр Ривилис вне форума  
 
Автор темы   Непрочитано 09.12.2010, 16:00
#5
Mikada


 
Регистрация: 15.11.2010
Сообщений: 8


в принципе устраивает, но при попытке сделать следующее:
SweptSurface pipe = new SweptSurface();
pipe.CreateSweptSurface(poly, circle1, sweepOpts);
автокад говорит
Нельзя сдвинуть или выдавить неплоские объекты.
может просто что-то не правельно делаю, и не все так просто. Да кстати:
private SweepOptions sweepOpts = new SweepOptions();
Mikada вне форума  
 
Непрочитано 09.12.2010, 16:21
#6
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,413
Отправить сообщение для Александр Ривилис с помощью Skype™


Для AutoCAD 2010 так: http://through-the-interface.typepad...using-net.html
Александр Ривилис вне форума  
 
Автор темы   Непрочитано 09.12.2010, 16:37
#7
Mikada


 
Регистрация: 15.11.2010
Сообщений: 8


спасибо за идею, Сделал вот как:

ObjectId regId = circle1.ObjectId;
// Ask the user to select an extrusion path

ObjectId splId = poly.ObjectId;

Transaction tr = acCurDb.TransactionManager.StartTransaction();
using (tr)
{
try
{
Entity sweepEnt =tr.GetObject(regId, OpenMode.ForRead) as Entity;
Curve pathEnt =tr.GetObject(splId, OpenMode.ForRead) as Curve;
if (sweepEnt == null || pathEnt == null)
{
ed.WriteMessage("\nProblem opening the selected entities.");
}

SweepOptionsBuilder sob =new SweepOptionsBuilder();

sob.Align =SweepOptionsAlignOption.AlignSweepEntityToPath;
sob.BasePoint = pathEnt.StartPoint;
sob.Bank = true;

SweptSurface ss =new SweptSurface();
ss.CreateSweptSurface(sweepEnt,pathEnt,sob.ToSweepOptions());


BlockTable bt = (BlockTable)tr.GetObject(acCurDb.BlockTableId, OpenMode.ForRead);

BlockTableRecord ms =(BlockTableRecord)tr.GetObject(bt[BlockTableRecord.ModelSpace],
OpenMode.ForWrite);

ms.AppendEntity(ss);
tr.AddNewlyCreatedDBObject(ss, true);
tr.Commit();
}
catch
{ }
}

в принципе получилось, сдвиг работает, но почему-то на большую половину линий ругается: Ошибка операции моделирования:
При сдвиге не смогло получиться корректное тело.

А остальные сдвигает но разбрасывает по оси z, т.е. они не лежат в одной плоскости как до сдвига, в чем проблема может быть?
Mikada вне форума  
 
Непрочитано 09.12.2010, 17:13
#8
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,413
Отправить сообщение для Александр Ривилис с помощью Skype™


Цитата:
Сообщение от Mikada Посмотреть сообщение
но почему-то на большую половину линий ругается: Ошибка операции моделирования:
При сдвиге не смогло получиться корректное тело.
А если тоже самое командой _sweep?
Александр Ривилис вне форума  
 
Автор темы   Непрочитано 09.12.2010, 17:32
#9
Mikada


 
Регистрация: 15.11.2010
Сообщений: 8


а руками если писать _sweep все работает, ни одной ошибки.
Mikada вне форума  
 
Непрочитано 09.12.2010, 17:53
#10
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,413
Отправить сообщение для Александр Ривилис с помощью Skype™


Поиграйся свойствами SweepOptionsBuilder. Проверять у меня нет времени, но думаю что проблема именно в них.
Александр Ривилис вне форума  
 
Автор темы   Непрочитано 09.12.2010, 18:33
#11
Mikada


 
Регистрация: 15.11.2010
Сообщений: 8


щас копаться буду, спасибо за помощью
Mikada вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Sweep в C#

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как правильно построить по сечениям (LOFT) discovery AutoCAD 5 21.11.2010 18:28
разъясните, что такое режим BANK в инструменте SWEEP user1294 AutoCAD 3 17.09.2009 11:46
Вопрос по работе Sweep и Extrude в AutoCAD 2007 Baires AutoCAD 8 01.03.2007 23:31