Сплайн по точкам VBA + Excel + Компас

Автор mlhzv2204, 07.02.20, 10:20:20

« предыдущая - следующая »

0 Пользователей и 1 гость просматривают эту тему.

mlhzv2204

Здравствуйте форумчане!
Есть вопрос по автоматизации построения сплайна по точкам из исходных данных Excel таблицы в Компасе.
Я уже разобрался как строить обычные отрезки, в них нет ничего сложного так как параметры передаются явно, но для сплайна не могу разобраться

Мой код выглядит так, как мне построить 2D сплайн по трем и более точкам?
Sub Ascon()
    Set kompas = New Kompas6API5.Application
        kompas.Visible = True
   
    Set ksdoc = kompas.Document2D 'чертеж
        ksdoc.ksOpenDocument ("C:\Users\mlhzv\Documents\ptr.frw"), False
   
    Set doc = kompas.ActiveDocument2D

    ksdoc = doc.ksLineSeg(10,20,10,60,1) ' так построить отрезок
    ksdoc = doc.ksText(30,40,0,7,0,100, "Какой-то текст") 'так вставить текст
End Sub

Николай

А кривая Безье не подойдёт?

mlhzv2204


ACiD

Если это графики функций, но можно обойтись без программирования:
построение графиков
xls->ftt->ftdraw


mlhzv2204

07.02.20, 18:40:17 #4 Последнее редактирование: 07.02.20, 19:22:20 от mlhzv2204
В ответ я получил это сообщение (2016 года Excel):
13213.png

Проблема ещё в том, что я уже автоматизировал создание трех графиков и они все линейные, а четвертый точно должен быть криволинейным

Николай

   Dim T As Double
     'Кривая Безье
ksDocument2D.ksBezier 0, 1 '0-незамкнутая ;1-замкнутая
  For T = ti To td Step 0.01
    X = (0.5 * ddn / Cos(T)) * Cos(Tan(T) - T)
    Y = (0.5 * ddn / Cos(T)) * Sin(Tan(T) - T)
ksDocument2D.ksPoint X, Y, 1
Next T
ksDocument2D.ksEndObj 'Завершить вызов Безье

Это- из программы на VB6. Конечно, X, Y и зависимости должны быть своими.

mlhzv2204

Спасибо большое, Николай, это то, что нужно!
Приспособил ваш код к своему проекту и все заработало как надо

Кому интересно, вот живой пример работы кода:
Sub TestCode()
   Set kompas = New Kompas6API5.Application
   kompas.Visible = True

   Set ksdoc = kompas.Document2D
   ksdoc.ksOpenDocument ("C:\Users\mlhzv\Documents\ptr.frw"), False

   Set doc = kompas.ActiveDocument2D

   ksdoc = doc.ksLineSeg(10, 20, 5, 60, 1) ' x, y, x, y, стиль линии
   ksdoc = doc.ksText(30, 40, 0, 7, 0, 100, "текст") 'x, y, угол наклона текста, высота символов, сужение текста, битовый вектор, задающий признаки начертания текста, строка символов

   ksdoc = doc.ksBezier(0, 1) '0 - незамкнутая 1 - замкнутая
   ksdoc = doc.ksPoint(30, 10, 1) '1 точка
   ksdoc = doc.ksPoint(50, 30, 1) '2 точка
   ksdoc = doc.ksPoint(120, -10, 1) '3 точка
   ksdoc = doc.ksEndObj 'завершение вызова Безье
End Sub
kompas.png