Штриховка

Просмотр 9 сообщений - с 1 по 9 (из 9 всего)
  • Автор
    Сообщения
  • #6250
    Захаров Максим
    Участник

    Добрый день
    Помогите создать штриховку, е не могу задать координаты
    Public Shared Function FuncDrawHatch(ByVal ActivDocument As Drawing, ByVal acPline As Topomatic.Dwg.Entities.DwgPolyline) As DwgHatch
    FuncDrawHatch = Nothing
    Try
    FuncDrawHatch = New Topomatic.Dwg.Entities.DwgHatch
    FuncDrawHatch.Assign(acPline)
    FuncDrawHatch.PatternName = «SOLID»
    ActivDocument.ActiveSpace.Add(FuncDrawHatch)
    Catch ex As Exception
    End Try
    End Function

    #6251
    Support Engineer
    Участник

    Здравствуйте, Максим!
    Метод Assign() не приведёт к копированию координат полилинии в штриховку. Границы штриховки и контур полилинии имеют совсем разную структуру.

    Предположим, что у вас уже есть полилиния, как в вашем примере. Тогда добавить штриховку с координатами полилинии можно двумя способами. Примеры приведены на языке C#.

    Вариант #1:

    
    // Создаём границу штриховки и наполняем
    // её координатами имеющейся полилинии (dwgPolyline)
    PolylineBoundaryPath boundaryPath = new PolylineBoundaryPath();
    foreach (var vertex in dwgPolyline)
        boundaryPath.Add(vertex);
    
    // Создаём штриховку, инициализируем свойство PatternName
    DwgHatch dwgHatch = new DwgHatch { PatternName = "SOLID" };
    
    // В коллекцию границ штриховки добавляем границу 
    // с координатами полилинии
    dwgHatch.BoundaryPath.Add(boundaryPath);
    
    // Добавляем штриховку в чертёж (Drawing)
    activeDrawing.ActiveSpace.Add(dwgHatch);
    

    Вариант #2:

    
    // Создаём список векторов (Vector2D)
    var points = new List<Vector2D>();
    
    // Заполняем его координатами полилинии
    dwgPolyline.ConvertToPosArray(points);
    
    // Добавляем штриховку в чертёж минуя создание экземпляр штриховки
    activeDrawing.ActiveSpace.AddHatch(AcPatternType.PreDefined, "SOLID", points);
    
    #6253
    Захаров Максим
    Участник

    Спасибо, все работает.
    У меня вопрос, а если есть в штриховке «дырки» или несколько контуров? Просто последовательно добавить их в штриховку инструкцией dwgHatch.BoundaryPath.Add(boundaryPath)?

    #6260
    Захаров Максим
    Участник

    А как получить имена всех образцов штриховки?
    Вообще у Вас есть графическая схема по IPI. Чтобы хоть понимать что где искать, а не методом «тыка»

    #6261
    Захаров Максим
    Участник

    У меня еще вопрос, скажите, площадь моей штриховки 0.00 по свойствам. Надо самостоятельно что ли площадь в штриховку «вбивать», почему автоматом площадь не считается?

    #6263

    Добрый день! Да, Вы можете задать в штриховке «дырки» или несколько контуров через dwgHatch.BoundaryPath.Add. Управление образцом штриховки происходит через свойство Pattern, если штриховка выполнена через стандартные типы линии, описанные в файле acad.lin в каталоге [ProgramData]\Support. Если свойство Pattern не задано, выполняется заливка. Почему не считается площадь штриховки, пока Вам сказать не могу — будем разбираться.

    #6267
    Захаров Максим
    Участник

    Кстати, площадь 0 выходит даже если я создаю штриховки стандартными методами (Вашими методами). Может конечно это проблема моей сборки, но это так.
    Сборка 16.0.28.15 от 23.01.2023 Автомобильные дороги.
    И очень большая просьба, вы не могли бы штриховку SOLID сделать полупрозрачной. Или это в принципе невозможно…

    #6279

    Добрый день! Проблема с площадью штриховки передана разработчика, это не проблема конкретной сборки. По поводу полупрозрачной штриховки, я уточню и отвечу Вам позднее.

    #6283

    Добрый день! Я уточнил у коллег — прозрачную штриховку сделать технически возможно — постараемся включить эту задачу в план разработки.

Просмотр 9 сообщений - с 1 по 9 (из 9 всего)
  • Для ответа в этой теме необходимо авторизоваться.