там еасть ссылка на поверхностьОтлично! Можно использовать. Постараюсь сегодня предложить решение.
Посмотрел исходники MGDDBG, для получение "Referenced by" - они ищут ссылки из всех таблиц чертежа. Это не очень интересно :(А кто тебя заставляет искать во всех таблицах, если можно искать только для всех TinSurface? Я так понимаю, что их в чертеже никогда не бывает много и все они в содержатся в какой-то одной таблице (CivilDocument.GetSurfaceIds()). Дальше для каждой из TinSurface используешь метод dwgOut в filer созданный по образцу и подобию с ReferenceFiler. После этого анализируешь нет ли в filer.m_hardPointerIds или filer.m_hardOwnershipIds ObjectId твоей характерной линии. Если есть, то это твоя TinSurface.
Можно как то перехватить/считать вывод этого метода?Считать можно (хак с использованием Win32 API). Перехватить чтобы не выводилось в консоль можно только средствами ObjectARX.
Дальше для каждой из TinSurface используешь метод dwgOut в filer созданный по образцу и подобию с ReferenceFiler. После этого анализируешь нет ли в filer.m_hardPointerIds или filer.m_hardOwnershipIds ObjectId твоей характерной линии. Если есть, то это твоя TinSurface.А возможно то же самое делать, но с объектом характерной линии? Потом в ее коллекции ссылок искать поверхности.
А возможно то же самое делать, но с объектом характерной линии? Потом в ее коллекции ссылок искать поверхности.Я не разбирался конкретно с этой структурой, но судя по картинкам, которые vildar82 выложил, связь односторонняя, т.е. TinSurface хранит ссылку на FeatureLine, но не наоборот. Фактически ReferenceFiler выполняет туже функцию, что и (entget) в лисп или acedEntGet в ObjectARX, позволяя получить все коды DXF объекта.
Будут перебор модели и отбор поверхностейЗачем перебирать модель? CivilDocument.GetSurfaceIds() возвращает все Civil'овские поверхности в документе. Или тебе что-то другое нужно?
Меня интересуют все поверхности в пространстве модели.Я сильно сомневаюсь, что получится поверхность сивила создать в листе. И если найдется кто-то, кто захочет/сможет это сделать, мне очень хочется посмотреть этому уникуму в глаза и спросить: "зачем?" :)
от характерной линии не получилось найти ссылки на поверхности через DwgOutПечально.
Цитата: vildar82 от 20-09-2016, 16:09:27Но ведь ты можешь сделать обратную процедуру. Не понимаю в чем проблема...
от характерной линии не получилось найти ссылки на поверхности через DwgOut
Печально.
Я думал, что с помощью этого способа можно найти все зависимости, как входящие, так и исходящие.Ну может в других случаях есть и двойные зависимости. :)