Вариант с генерацией FullSubentityPath https://adn-cis.org/podsvetka-segmenta-polilinii.html тоже не совсем подходит, так как для этого придется создавать дополнительную структуру типа словаря/дерева во время нового перебора граней солидов (во время которого заново находить этот FullSubentityPath, преобразовать в строку и искать по ключу в созданной коллекции).Не понял зачем перебирать грани солида вторично, если ты знаешь Handle этого солида (и соответственно его ObjectId) и номер грани. По этим критериям и создается FullSubentityPath.
А номер грани это и есть его "номер" в списке Brep.Faces()? Я среди методов не нашел вроде явного номера.Глянь этот код: https://adn-cis.org/forum/index.php?topic=7169.msg21059#msg21059
P.S. и да, я чего-то не подумал что перебирать повторно не надо, раз есть явный идентификатор
у меня порядка 67000 граней и процесс замены материала/цвета занял аж полчаса выполненияНужно смотреть код. Возможно достаточно отключить историю изменений Solid3d и это ускорит процесс (Solid3d.RecordHistory)
Нужно смотреть кодНу .... пусть будет так:https://github.com/GeorgGrebenyuk/Civil3D.CustomNodes/blob/a890fe6995f766faba93b313b0b7bc655d549dc8/Code/Main/Solids.cs#L143 (https://github.com/GeorgGrebenyuk/Civil3D.CustomNodes/blob/a890fe6995f766faba93b313b0b7bc655d549dc8/Code/Main/Solids.cs#L143) . Я делаю методы под Dynamo (сейчас речь идет про пункт 5 ниже)
А номер грани это и есть его "номер" в списке Brep.Faces()?Номер грани это face.SubentityPath.SubentId.IndexPtr
А теперь посмотри на чем происходит основная потеря времениА как это отлавливать (инструментом)? Я пока не пробовал такое в отношении кода. В отношении программ как-то пользовался Windows Performance Analyzer но тут другое ...
Не инструментом, а через Windows API.А теперь посмотри на чем происходит основная потеря времениА как это отлавливать (инструментом)? Я пока не пробовал такое в отношении кода. В отношении программ как-то пользовался Windows Performance Analyzer но тут другое ...
сли ты собираешься менять цвет/материал всем гранямВсем "поверхностным" вообще-то и собираюсь ... другой вопрос, я так и не понял, как ограничить коллекцию граней только теми, которые относятся к верхней кромке (минуя нижнюю плоскость тела и боковые грани).
должно быть:Не совсем правда понимаю где именно это вводить -- на этапе первичной выборки или когда ищу грань по номеру в теле? Во втором случае оно итак грань (по номеру), думаю смысла не будет. А в первом не уверен как это поможет ...
Не инструментом, а через Windows API.P.P.S. Буду также благодарен за направление где посмотреть примеры такой отладки ... а то в процессе настройки текущих он вылетал вообще без каких-либо Exception
Цитата: Александр Ривилис от 31-12-2021, 17:58:55А причем здесь отладка? Речь шла про получение времени выполнения участков кода. Посмотри здесь одну из возможностей: https://docs.microsoft.com/ru-ru/dotnet/api/system.diagnostics.stopwatch?view=net-6.0
Не инструментом, а через Windows API.
P.P.S. Буду также благодарен за направление где посмотреть примеры такой отладки ... а то в процессе настройки текущих он вылетал вообще без каких-либо Exception