Форум профессиональных мебельщиков PROMEBELclub
 
PROMEBELclub - Форум для мебельщиков: конструкторов, дизайнеров, мастеров, технологов и всех, кто имеет отношение к производству и изготовлению мебели. Программы для конструирования и дизайна мебели. Мебельная литература и обучающие пособия.
 
 

Вернуться   Форум профессиональных мебельщиков PROMEBELclub > Программы для мебельщиков > Программы для конструирования и дизайна мебели > Система БАЗИС > Базис-мебельщик. Скрипты

Меню

Маркет


Ответ
 
Опции темы Опции просмотра
Старый 13.01.2014, 13:22  
БАЗИС 9 - Скрипты
 
Аватар для Igor_482
Igor_482
VIP
Регистрация: 03.09.2008
Сообщений: 174

Сказал(а) спасибо: 34
Поблагодарили 794 раз(а) в 113 сообщениях
Версия для печати Отправить по электронной почте
Igor_482 Igor_482 вне форума 13.01.2014, 13:22
Рейтинг: ()

ВНИМАНИЕ! Правила выкладывания скриптов.

1. Если в скрипте нет ссылок на фурнитуру, фрагменты и.т.д то достаточно его упаковать в архив и выложить.

2. Если в скрипте есть ссылки на фурнитуру, фрагменты и т.д. то архив должен содержать папку с самим скриптом и всеми файлами на которые есть ссылки в тексте скрипта.


Т.к. при запуске скрипта на другом компе возникает ошибка о не возможности открыть то или иной файл и скрипт до конца не отрабатывает свой текст. Не соблюдается "чистота проверки" работы скрипта.

__________________________________________________ _______________

Интересует информация по редактору скриптов в БМ8. Существует ли справочная документация и примеры использования скриптов в БМ8. Какие возможности дает данная функция? Владеющим информацией по данному вопросу просьба поделиться ею.

Для работы скриптов от Igor_482 необходим установленный ODBC драйвер FireBird, установленные и зарегистрированные в ОС модули FBDBDialog.dll, MSDATGRD.OCX, MSCOMCTL.OCX и MSSTDFMT.DLL (сообщение с описанием установки этих модулей в ОС, ссылка на модули и исходник "FBDBDialog.dll") а так же файл "ADODB.ini" с настройками соединения к БД в папке со скриптом.

ADODB.ini


[General]
FDBServ = t001
FBSPort = 14357
FDBFile = D:\DBBM\Библиотека\БД\BMDB09.FDB
FBCFile = C:\Windows\System32\fbclient.dll
----------------------------------------------
Переменные .ini:
FDBServ - имя ПК на котором находится сервер FireBird с используемой БД (если локально, то параметр: localhost или 127.0.0.1);
FBSPort - в настройке не нуждается (по умолчанию: 14357);
FDBFile - локальный путь к БД на сервере FireBird;
FBCFile - путь к файлу "fbclient.dll" (находится в корневой папке программы Базис).
[свернуть]

Последний раз редактировалось systland; 23.09.2016 в 11:52..
Просмотров: 994451
Ответить с цитированием Вверх
Пользователь сказал cпасибо:
evilbaby1989 (10.07.2023)
Старый 12.07.2014, 15:37   #361
v22884
Местный
 
Регистрация: 17.04.2014
Адрес: д.Сибирцево, ателье-уют.рф
Сообщений: 454
Сказал(а) спасибо: 242
Поблагодарили 1,094 раз(а) в 210 сообщениях
Вес репутации: 386
v22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордится
По умолчанию

Как нарисовать эллипс?

или хотябы мож кто знает как найти точки пересечения элементов контура.

для рисования элипса по этому методу:http://oval.ing-grafika.ru/3.html
v22884 вне форума   Ответить с цитированием Вверх
Старый 13.07.2014, 14:11   #362
v22884
Местный
 
Регистрация: 17.04.2014
Адрес: д.Сибирцево, ателье-уют.рф
Сообщений: 454
Сказал(а) спасибо: 242
Поблагодарили 1,094 раз(а) в 210 сообщениях
Вес репутации: 386
v22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордится
По умолчанию

Эллипс (не совсем исконно базисный но...):

Скрытый текст


Obj= AddPanel(500, 500);



kontur=Obj.Contour;


StartEditing(Obj);

Hole = NewContour();
Linii = NewContour();
centr = NewPoint(250, 250)
r1 = 100
r2 = 200
c1 = Hole.AddCircle(centr.x,centr.y, r1 );
c2 = Hole.AddCircle(centr.x,centr.y, r2 );

kolSectorov=64;
for (i=0;i<kolSectorov;i++)
{
Linii.Rotate(centr.x,centr.y, i*360/kolSectorov)
l=Linii.AddLine(centr.x,centr.y+r1+2 , centr.x, centr.y+r1)
l=Linii.AddLine(centr.x,centr.y+r2+4 , centr.x, centr.y+r2)

}

k = Linii.Count;
//alert('количество Элементов: '+k)
k = (k)/4;
//alert('количество ДУГ по 6 точек: '+k)

//for (i=0;i<k;i++) {alert('Нарисовали дугу '+i)}
// Obj.Build();
h2= NewContour();

for (i=0;i<k;i++)
{
//StartEditing(Obj); //if (i==1)
{
//n=i;
//alert(' Первый элемент первого цикла: '+n)
}
//else

n=(i)*4;
// alert(' Первый элемент '+i+'го цикла: '+n)


if (i==k-1)
{
n1=n;
n2=n+1;
n3=n+2;
n4=n+3;
n5=0;
n6=1;

}
else if( i==k)
{
n1=n;
n2=n+1;
n3=0;
n4=1;
n5=2;
n6=3;
}
else
{
n1=n;
n2=n+1;
n3=n+2;
n4=n+3;
n5=n+4;
n6=n+5;
}
// alert(' n1 = '+n1+'. n2 = '+n2+' n3 = '+n3+'. n4 = '+n4+ '. n5 = '+ n5 +'. n6 = '+ n6)
p1 = NewPoint(Linii[n2].ClosestPoint(centr).x, Linii[n1].ClosestPoint(centr).y);
//alert(Linii[n2].ClosestPoint(centr).x);
p2 = NewPoint(Linii[n4].ClosestPoint(centr).x, Linii[n3].ClosestPoint(centr).y);
//p3 = NewPoint(Linii[n6].ClosestPoint(centr).x, Linii[n5].ClosestPoint(centr).y);




h2.AddCircle(p1.x, p1.y, 2)
h2.AddCircle(p2.x, p2.y, 4)

// h2.AddCircle(p3.x, p3.y, 6)
//h2.AddCircle(p2.x, p2.y, 10)
// h2.AddArc3(p1, p2, p3);
//alert(p1.x+' -- '+p1.y+'\n'+p2.x+' -- '+p2.y+'\n'+p3.x+' -- '+p3.y+'\n')
//Obj.Contour.Subtraction(h2);

//Obj.Build();
//h2.AddLine(p1.x,p1.y, p3.x,p3.y);
// alert('Нарисовали дугу '+i)
}


k = h2.Count;


//alert('количество окружностей = '+k)

el = NewContour();

x2= h2[0].Center.x;
y2=h2[0].Center.y;

for (i=0;i<k;i++)
{
p2 = NewPoint(h2[i].Center.x,h2[i].Center.y);

if (p2.x<x2) {x2=p2.x; y2=p2.y;}
}

p2L=NewPoint(x2,y2);
p_L_Elipsa=p2L;


x1= h2[1].Center.x;
y1=h2[1].Center.y;

for (i=0;i<k;i++)
{
p1L = NewPoint(h2[i].Center.x,h2[i].Center.y);

if (p1L.x<x1 & p1L.x!=p2L.x & p1L.y<p2L.y) {x1=p1L.x; y1=p1L.y;}
}

p1L=NewPoint(x1,y1);

p3L=NewPoint(x1,p2L.y+(p2L.y-p1L.y));

//arc1 = el.AddArc3(p1, p2, p3); // АРК Левый


x2= h2[2].Center.x;
y2=h2[2].Center.y;

for (i=0;i<k;i++)
{
p2V = NewPoint(h2[i].Center.x,h2[i].Center.y);

if (p2V.y<y2) {x2=p2V.x; y2=p2V.y;}
}

p2V=NewPoint(x2,y2);
p_V_Elipsa=p2V;


x1= h2[3].Center.x;
y1=h2[3].Center.y;

for (i=0;i<k;i++)
{
p1V = NewPoint(h2[i].Center.x,h2[i].Center.y);

if (p1V.y<y1 & p1V.y!=p2V.y & p1V.x<p2V.x) {x1=p1V.x; y1=p1V.y;}
}

p1V=NewPoint(x1,y1);

p3V=NewPoint(p2V.x+(p2V.x-p1V.x),y1);

//arc2 = el.AddArc3(p1, p2, p3); // АРК Верхний

kDug = (k/4)/2-1;
//alert(kDug)
x_ur=p3L.x;
y_ur=p3L.y;

for (d=0;d<kDug;d++)
{
p1=NewPoint(x_ur,y_ur);

x2=p_V_Elipsa.x;
y2=p_V_Elipsa.y;
for (i=0;i<k;i++)
{
p2 = NewPoint(h2[i].Center.x,h2[i].Center.y);

if (p2.x<x2 & p2.x>p1.x & p2.y>p1.y) {x2=p2.x; y2=p2.y;}
}
p2=NewPoint(x2,y2);




x2=p_V_Elipsa.x;
y2=p_V_Elipsa.y;
for (i=0;i<k;i++)
{
p3 = NewPoint(h2[i].Center.x,h2[i].Center.y);

if (p3.x<x2 & p3.x>p2.x & p3.y>p2.y) {x2=p3.x; y2=p3.y;}
}
p3=NewPoint(x2,y2);

// alert(p1.x+ ' --- '+p1.y + '\n'+ p2.x+ ' --- '+p2.y + '\n'+p3.x+ ' --- '+p3.y )

el.AddArc3(p1, p2, p3);

x_ur=p3.x;
y_ur=p3.y;
}


el.Symmetry(p_V_Elipsa.x, 0, p_V_Elipsa.x, 1, true);

arc2 = el.AddArc3(p1V, p2V, p3V); // АРК Верхний

el.Symmetry(0,p_L_Elipsa.y, 1, p_L_Elipsa.y, true);

arc1 = el.AddArc3(p1L, p2L, p3L); // АРК Левый
p1P = NewPoint(p1L.x+(p_V_Elipsa.x-p1L.x)*2, p1L.y)
p2P = NewPoint(p2L.x+(p_V_Elipsa.x-p2L.x)*2, p2L.y)
p3P = NewPoint(p3L.x+(p_V_Elipsa.x-p3L.x)*2, p3L.y)


arc1 = el.AddArc3(p1P, p2P, p3P); // АРК Правый

Obj.Contour.Subtraction(el);

Obj.Build();


[свернуть]



Конечно, было б не плохо базисной командой эллипс рисовать. ( а не изобретать велосипед ).
Будем надеется что спромогутся таки.

УПС. Обнаружил ошибку на некоторых значениях радиусов, например r1=150, или r1 = 200.

Исправляю....
v22884 вне форума   Ответить с цитированием Вверх
Старый 13.07.2014, 17:09   #363
nayrogi
VIP
 
Аватар для nayrogi
 
Регистрация: 15.12.2008
Адрес: Санкт-Петербург
Сообщений: 1,828
Сказал(а) спасибо: 3,440
Поблагодарили 6,426 раз(а) в 1,108 сообщениях
Вес репутации: 1654
nayrogi репутация неоспоримаnayrogi репутация неоспоримаnayrogi репутация неоспоримаnayrogi репутация неоспоримаnayrogi репутация неоспоримаnayrogi репутация неоспоримаnayrogi репутация неоспоримаnayrogi репутация неоспоримаnayrogi репутация неоспоримаnayrogi репутация неоспоримаnayrogi репутация неоспорима
По умолчанию

Цитата:
Конечно, было б не плохо базисной командой эллипс рисовать. ( а не изобретать велосипед ).
Будем надеется что спромогутся таки.
Возможно я чего-то не знаю по сути вашего вопроса, но в базисе есть команда построения элипса (причем давно была, еще до 8-ки).
Или она вам не подходит?
Миниатюры
2014-07-13_170852.jpg  
__________________
Дайте мне "исходники" и я сделаю этот мир лучше!
---------------------------------------------------
http://optimebel.com
nayrogi вне форума   Ответить с цитированием Вверх
Старый 13.07.2014, 17:26   #364
FIDEL
VIP
 
Аватар для FIDEL
 
Регистрация: 24.06.2010
Адрес: Україна, Проскурів
Сообщений: 1,950
Сказал(а) спасибо: 6,603
Поблагодарили 5,053 раз(а) в 1,304 сообщениях
Вес репутации: 1374
FIDEL репутация неоспоримаFIDEL репутация неоспоримаFIDEL репутация неоспоримаFIDEL репутация неоспоримаFIDEL репутация неоспоримаFIDEL репутация неоспоримаFIDEL репутация неоспоримаFIDEL репутация неоспоримаFIDEL репутация неоспоримаFIDEL репутация неоспоримаFIDEL репутация неоспорима
По умолчанию

Цитата:
Сообщение от nayrogi Посмотреть сообщение
Возможно я чего-то не знаю по сути вашего вопроса, но в базисе есть команда построения элипса (причем давно была, еще до 8-ки).
Или она вам не подходит?
Я так понимаю, что стоит задача построить эллипс именно скриптом. Например сделать вырезы в указанных фасадах в виде эллипса. Как это сделано в скриптах выше для выреза прямоугольного и арочного контура в указанных фасадах.
FIDEL вне форума   Ответить с цитированием Вверх
Старый 14.07.2014, 00:13   #365
v22884
Местный
 
Регистрация: 17.04.2014
Адрес: д.Сибирцево, ателье-уют.рф
Сообщений: 454
Сказал(а) спасибо: 242
Поблагодарили 1,094 раз(а) в 210 сообщениях
Вес репутации: 386
v22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордится
По умолчанию

Цитата:
но в базисе есть команда построения элипса
Высокоуважаемый nayrogi, мы ж в разделе Базис скрипты. Разумеется команда эллипс есть давно. А в скриптах её нет. В документированных возможностях Базис скриптов, тем более. Есть только какие-то не документированные функции AsEllipse() и IsEllipse(), которыми как строить я не понял, судя по их названию они не для построения эллипсов.

Может где-то глубоко глубоко затаилась не документированная функция построения эллипсов.

Поэтому я и задаю вопрос третий раз, может кто-то знает как рисовать эллипс в Базис скрипте, функциями Базис скрипта? Подскажите, пожалуйста.

Многоугольников кстати в базис скрипте тоже нет.
v22884 вне форума   Ответить с цитированием Вверх
Старый 14.07.2014, 12:56   #366
Briz
Местный
 
Регистрация: 30.11.2011
Сообщений: 283
Сказал(а) спасибо: 275
Поблагодарили 803 раз(а) в 179 сообщениях
Вес репутации: 358
Briz - просто великолепная личностьBriz - просто великолепная личностьBriz - просто великолепная личностьBriz - просто великолепная личностьBriz - просто великолепная личностьBriz - просто великолепная личностьBriz - просто великолепная личность
По умолчанию

Эллипс можно сделать множеством способов, например так:

Скрытый текст


function MakeEllipsePart(Contour, A, B)
{
// Intermediate ellipse quantities.
a2 = A * A;
b2 = B * B;
ab = A * B;
invB2mA2 = 1 / ( b2 - a2 );

// Curvature at end points, store curvature
// for computing arcs.
curv0 = A / b2;
curv1 = B / a2;

// Select ellipse points
// based on curvature properties.
ElemsCount = 16;
invNumArcs = 1 / ElemsCount;

Points = [];
for (i = 0; i <= ElemsCount; i++)
{
// Curvature at new point is weighted average of curvature at ends.
weight1 = i*invNumArcs;
weight0 = 1 - weight1;
curv = weight0 * curv0 + weight1 * curv1;

// Compute point having this curvature.
tmp = Math.pow( ab / curv, 2 / 3 );
px = A * Math.sqrt( Math.abs( ( tmp - a2 ) * invB2mA2 ));
py = B * Math.sqrt( Math.abs( ( tmp - b2 ) * invB2mA2 ));
Points.push(NewPoint(px, py));
}

// Compute arcs at intermediate points between (a,0) and (0,b).
m = 2;
while (m <= Points.length - 1)
{
p1 = Points[m - 2];
p2 = Points[m - 1];
p3 = Points[m];
Arc = Contour.AddArc3(p1, p2, p3);
m = m + 2;
}
}

function MakeEllipse(A, B, x, y)
{
Ellipse = NewContour();
MakeEllipsePart(Ellipse, A, B);
Ellipse.Symmetry(0, 0, 1, 0, true);
Ellipse.Symmetry(0, 0, 0, 1, true);
Ellipse.Move(x, y);
return Ellipse;
}

P = AddPanel(100, 100);
P.Contour.Addition(MakeEllipse(40, 30, 30, 20));
P.Contour.Subtraction(MakeEllipse(20, 50, 90, 100));
[свернуть]
Briz вне форума   Ответить с цитированием Вверх
Старый 14.07.2014, 14:46   #367
v22884
Местный
 
Регистрация: 17.04.2014
Адрес: д.Сибирцево, ателье-уют.рф
Сообщений: 454
Сказал(а) спасибо: 242
Поблагодарили 1,094 раз(а) в 210 сообщениях
Вес репутации: 386
v22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордится
По умолчанию

Цитата:
можно сделать множеством способов
Подскажите, пожалуйста, где или как искать в интернете подобные алгоритмы.

Наверняка кроме эллипса там же лежат и другие параметрические фигуры разной степени сложности.

БОЛЬШОЕ СПАСИБО за эллипс.
v22884 вне форума   Ответить с цитированием Вверх
Старый 14.07.2014, 15:02   #368
Briz
Местный
 
Регистрация: 30.11.2011
Сообщений: 283
Сказал(а) спасибо: 275
Поблагодарили 803 раз(а) в 179 сообщениях
Вес репутации: 358
Briz - просто великолепная личностьBriz - просто великолепная личностьBriz - просто великолепная личностьBriz - просто великолепная личностьBriz - просто великолепная личностьBriz - просто великолепная личностьBriz - просто великолепная личность
По умолчанию

Я ищу в гугле. Для эллипса на первой странице поиска по запросу "ellipse approximation arc" выдает 3 таких метода
Briz вне форума   Ответить с цитированием Вверх
Старый 14.07.2014, 15:24   #369
v22884
Местный
 
Регистрация: 17.04.2014
Адрес: д.Сибирцево, ателье-уют.рф
Сообщений: 454
Сказал(а) спасибо: 242
Поблагодарили 1,094 раз(а) в 210 сообщениях
Вес репутации: 386
v22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордится
По умолчанию

Прямоугольный, Арка, Эллипс.

За эллипс большое спасибо Briz 'у.
Вложения
Тип файла: rar Параметрические контуры.rar (29.8 Кб, 14 просмотров)
v22884 вне форума   Ответить с цитированием Вверх
Старый 15.07.2014, 12:52   #370
v22884
Местный
 
Регистрация: 17.04.2014
Адрес: д.Сибирцево, ателье-уют.рф
Сообщений: 454
Сказал(а) спасибо: 242
Поблагодарили 1,094 раз(а) в 210 сообщениях
Вес репутации: 386
v22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордится
По умолчанию

Немного доработал эллипс от Briz 'a:

когда эллипс был длинный и узкий например на дверях 770*300 с отступами 70 по центру длинной выпирал угол.

Передвинул дуги на одну точку.
Вложения
Тип файла: rar Параметрические контуры.rar (29.9 Кб, 14 просмотров)
v22884 вне форума   Ответить с цитированием Вверх
Ответ

Нижняя навигация
Вернуться   Форум профессиональных мебельщиков PROMEBELclub > Программы для мебельщиков > Программы для конструирования и дизайна мебели > Система БАЗИС > Базис-мебельщик. Скрипты


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
БАЗИС 8 - Скрипты Igor_482 Базис-мебельщик. Скрипты 1525 30.03.2024 15:03
БАЗИС 9 nayrogi Базис-мебельщик 9 785 01.10.2022 23:13
БАЗИС-ЧПУ 8 chingisnah Базис-мебельщик 8 119 21.12.2017 22:04
Заявки на скрипты dr_john Система БАЗИС 37 01.03.2016 10:36
Базис-7,"Народный Базис"и Windows-8 sergeyzak18 "НАРОДНЫЙ" базис 23 16.01.2014 00:37


Текущее время: 06:39. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
© 2007-2023 PROMEBEL

џндекс.Њетрика