Сообщество программистов Autodesk в СНГ
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
1 час
1 день
1 неделя
1 месяц
Навсегда
Новости:
Образовательный курс по платформе Autodesk Forge.
Начало
Сайт
Правила
Помощь
Поиск
Непрочитанные
Календарь
Вход
Регистрация
Сообщество программистов Autodesk в СНГ
»
ADN Club
»
Civil 3D API
»
Проблемы с изменением начальной и конечной точки дуговой трубы
« предыдущая тема
следующая тема »
Печать
Страницы: [
1
]
Вниз
Автор
Тема: Проблемы с изменением начальной и конечной точки дуговой трубы (Прочитано 4303 раз)
0 Пользователей и 1 Гость просматривают эту тему.
Дмитрий Загорулькин
ADN
Сообщений: 2531
Карма: 738
Проблемы с изменением начальной и конечной точки дуговой трубы
«
:
22-11-2019, 18:51:51 »
В продолжение предыдущей темы:
https://adn-cis.org/forum/index.php?topic=9578.msg41153#msg41153
Если попытаться задать новую точку дуговой трубы таким образом, чтобы образовалась новая дуга с центральным углом больше 180 градусов, то могут возникнуть проблемы.
Проверочный код:
Код - C#
[Выбрать]
using
Autodesk.AutoCAD.ApplicationServices
;
using
Autodesk.AutoCAD.DatabaseServices
;
using
Autodesk.AutoCAD.EditorInput
;
using
Autodesk.AutoCAD.Geometry
;
using
Autodesk.AutoCAD.Runtime
;
using
Autodesk.Civil.DatabaseServices
;
namespace
C3dTest
{
public
static
class
EditCurvePipeTest
{
[
CommandMethod
(
"SetPipeNewEndPoint"
)
]
public
static
void
SetPipeNewEndPoint
(
)
{
Document adoc
=
Application
.
DocumentManager
.
MdiActiveDocument
;
Editor ed
=
adoc
.
Editor
;
Database db
=
adoc
.
Database
;
PromptEntityOptions pipeOps
=
new
PromptEntityOptions
(
"
\n
Select a pipe: "
)
;
pipeOps
.
SetRejectMessage
(
"It's not a pipe!"
)
;
pipeOps
.
AddAllowedClass
(
typeof
(
Pipe
)
,
true
)
;
PromptEntityResult pipeRes
=
ed
.
GetEntity
(
pipeOps
)
;
if
(
pipeRes
.
Status
!=
PromptStatus
.
OK
)
return
;
PromptPointResult ptRes
=
ed
.
GetPoint
(
"
\n
Select a new endpoint for the pipe: "
)
;
if
(
ptRes
.
Status
!=
PromptStatus
.
OK
)
return
;
Point3d selPoint
=
ptRes
.
Value
.
TransformBy
(
ed
.
CurrentUserCoordinateSystem
)
;
using
(
Transaction tr
=
db
.
TransactionManager
.
StartTransaction
(
)
)
{
Pipe pipe
=
tr
.
GetObject
(
pipeRes
.
ObjectId
, OpenMode
.
ForWrite
)
as
Pipe
;
pipe
.
EndPoint
=
new
Point3d
(
selPoint
.
X
, selPoint
.
Y
, pipe
.
EndPoint
.
Z
)
;
tr
.
Commit
(
)
;
}
}
}
}
Как это выглядит:
Решение - аналогично тому, которое применено тут:
https://adn-cis.org/forum/index.php?topic=9578.msg41137#msg41137
. То есть - увеличивать дугу по кусочкам. Код оттуда довольно легко адаптируется для этой задачи, поэтому, приводить тут переделанный код не вижу смысла.
Отправил в DevHelp, ID: 15987799
Записан
Александр Ривилис
Administrator
Сообщений: 13895
Карма: 1789
Рыцарь ObjectARX
Skype:
Re: Проблемы с изменением начальной и конечной точки дуговой трубы
«
Ответ #1 :
22-11-2019, 20:31:46 »
Дмитрий Загорулькин
,
У меня какое-то дежавю уже второй день. Мне кажется, что я с чем-то подобным сталкивался очень много лет назад. Но это был не Civil 3d, а Autodesk Architecture и не .NET, а OMF.
Записан
Не забывайте про правильное
Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился
правильный ответ
, то не забудьте про кнопку
Решение
Дмитрий Загорулькин
ADN
Сообщений: 2531
Карма: 738
Re: Проблемы с изменением начальной и конечной точки дуговой трубы
«
Ответ #2 :
25-11-2019, 15:14:59 »
Всё новое - хорошо забытое старое?
Записан
Печать
Страницы: [
1
]
Вверх
« предыдущая тема
следующая тема »
Сообщество программистов Autodesk в СНГ
»
ADN Club
»
Civil 3D API
»
Проблемы с изменением начальной и конечной точки дуговой трубы