• Добро пожаловать на Форум пользователей ПО АСКОН. Пожалуйста, авторизуйтесь.
 

Уважаемые пользователи,

Хотим проинформировать вас о режиме работы регистрации на нашем сайте.

Зарегистрироваться возможно в рабочие дни, с 8:00 до 20:00 (мск).

Если у вас возникнут вопросы или потребуется дополнительная информация, не стесняйтесь обращаться к нашей службе поддержки. Вы можете связаться с нами по указанным контактным данным на нашем сайте.

Благодарим вас за понимание и сотрудничество. Мы ценим ваше терпение и стремимся предоставить вам лучший опыт использования нашего сервиса.

С уважением,
Команда Ascon

Построение кривой по точкам

Автор Poltava, 27.09.11, 13:26:27

« назад - далее »

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

Poltava

Немного с запозданием выкладываю но все же может кому то  кроме автора этой вот темы пригодиться данный макрос
# -*- coding: cp1251 -*-
#|Построение кривой бизье из файла со структурой как приведена ниже

"""
Запись в группы по 5 значений не обязательна значения
могут идти подряд даже не разделенные на разные строчки по х и y
тоесть просто строка с набором координат из n значений по х
затем n значений по y значения отделяються друг от друга пробелами
их количество тоже не регламентируеться и может быть разным между каздым значением
в результате будет построено столько кривых сколько строк   x1(n),y1(n) в файле.
Первой строкой файла и строкой для каждой последующей кривой должна быть строка типа
"    x.......(9)......" без кавычек пробелы перед х обязательны вместо ..... может быть
любой текст без пробелов либо ничего, затем обязательно число точек в()

   x1(9),y1(9)  Количество точек для построения 1 кривой
  .00000      .47400E-01  .11850      .23700      .35550      .47400    Набор координат х для построения 1 кривой в количестве указанном выше
  .71100      .94800      1.1850   
  1.1900      1.5225      1.7077      1.9348      2.1537      2.3653    Набор координат у для построения 1 кривой в количестве указанном выше
  2.7679      3.1449      3.4979    
  x2(7),y2(7)  Количество точек для построения 2 кривой
  .00000      .47400E-01  .11850      .23700      .35550      .47400    Набор координат х для построения 2 кривой в количестве указанном выше
  .71100      
  1.1900      1.5225      1.7077      1.9348      2.1537      2.3653    Набор координат у для построения 2 кривой в количестве указанном выше
  2.7679    
  xn(5),yn(5) Количество точек для построения n кривой
  .00000  .47400E-01   .11850   .23700      .35550       Набор координат у для построения n кривой в количестве указанном выше           
  .71100   .94800  1.1850  1.4220        1.8960       Набор координат у для построения n кривой в количестве указанном выше   
"""

import Kompas10API5 as KAPI
import Kompas10API7 as KAPI7
import pythoncom
from win32com.client import Dispatch
import LDefin2D
import LDefin3D
import ksConstants as CONST2D7
import ksConstants3D as CONST3D7
import MiscellaneousHelpers as MH

iKompasObject = Dispatch('KOMPAS.Application.5')
iKompasObject = KAPI.KompasObject(iKompasObject)
MH.iKompasObject = iKompasObject

iApplication = Dispatch('KOMPAS.Application.7')
iApplication = KAPI7.IApplication(iApplication)
MH.iApplication = iApplication

iDocument2D = iKompasObject.ActiveDocument2D()
iDocument = iApplication.ActiveDocument
iKompasDocument2D = KAPI7.IKompasDocument2D(iDocument)


fname = 'D:\\GFRT.txt' #путь к файлу с данными
f = open(fname, 'r')#открытие файла для чтения
pmt = f.read()#чтение данных из файла в переменную
f.close()#Закрываем файл
pmt = pmt.split ("   x")#Разделяем переменную на данные для построения отдельных сечений лопатки
for i in range(1,len(pmt)): #цикл строит сеченмя лопатки
    mt = pmt[i].split()#разделяем блок данных для построения сечения на подблоки(количество точек в сечении, координаты по х, координаты по у) и обрезаем все лишние пробелы
    a = int(mt[0][mt[0].index('(')+1:mt[0].index(')')])#определяем количество точек в сечении
    n = 1#счетчик цикла
    iDocument2D.ksBezier(1, 1)#Начинаем построение кривой бизье первый параметр 0 - разомкнутая 1 - замкнутая, второй параметр тип линии от 1(основная) 2(тонкая) ... до 25
    while n <= a:#Цикл для ввода координат точек кривой бизье
        iDocument2D.ksPoint(mt[n], mt[n+a], 0)#читаем из переменной координаты точек
        n += 1#Добавляем счетчику 1
    iDocument2D.ksEndObj()#заканчиваем построение кривой бизье


Во вложении сам файл макроса и файл с примером массива точек. Критика принимаеться

Bordes


Poltava

Я не против, если ув. администратор сочтет нужным я думаю обязательно перенесет