Форум профессиональных мебельщиков 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..
Просмотров: 985372
Ответить с цитированием Вверх
Пользователь сказал cпасибо:
evilbaby1989 (10.07.2023)
Старый 08.08.2017, 23:56   #1361
Igor_482
VIP
 
Аватар для Igor_482
 
Регистрация: 03.09.2008
Сообщений: 174
Сказал(а) спасибо: 34
Поблагодарили 794 раз(а) в 113 сообщениях
Вес репутации: 366
Igor_482 - просто великолепная личностьIgor_482 - просто великолепная личностьIgor_482 - просто великолепная личностьIgor_482 - просто великолепная личностьIgor_482 - просто великолепная личностьIgor_482 - просто великолепная личностьIgor_482 - просто великолепная личность
По умолчанию Задать произвольное наименование материала

Цитата:
Сообщение от FIDEL Посмотреть сообщение
...переименовать материал произвольным образом...
Ранее представлял скрипт для выполнения такой задачи. На сегодняшний день существует версия с более расширенным функционалом.
Текущая модификация позволяет редактировать:
1) наименование материала панелей, облицовки панелей, тел по траектории, профилей и параметры материала: толщина, ширина (если значение > 0 то это погонный материал, иначе - площадной);
2) обозначение, наименование кромочного материала и его параметры: толщина, ширина;
3) наименование пазов и их обозначение.
Выделенные заранее панели, а для случая когда панели небыли заранее выделены, то все панели модели группируются в список материалов отсортированный по его наименованию и параметрам в окне свойств. Далее по ПКМ на строке материала (столбца "параметр") возможно вызвать меню позволяющее произвольно отредактировать наименование материала.

код скрипта


Код HTML:
var Controls  = Action.Properties;
var Items     = new Array();
var Selection = new Array();
var RepMat    = /(\s*) \(Артикул ([^(Артикул )]*)\)/;
var Objects   = {
      Panels: {
        Items:  new Object(),
        Owners: new Object()
      },
      Butts:  {
        Items:  new Object(),
        Owners: new Object()
      },
      Cuts:   {
        Items:  new Object(),
        Owners: new Object()
      }
    };
var MainForm       = NewForm();
MainForm.Width     = 400;
MainForm.Height    = 41;
MainForm.Caption   = 'Редактировать наименование';
MainForm.Resizable = false;
MainForm.Dockable  = false;

function ReadIniFile(FileName) {
  var Data = system.readTextFile(FileName);
  var Regex = {
        Section: /^\s*\[\s*([^\]]*)\s*\]\s*$/,
        Param: /^\s*([\w\.\-\_]+)\s*=\s*(.*?)\s*$/,
        Comment: /^\s*;.*$/
      };
  var Value = {};
  var Lines = Data.split(/\r\n|\r|\n/);
  var Section = null;
  Lines.forEach(function(Line) {
    if (Regex.Comment.test(Line)) {
      return;
    } else if (Regex.Param.test(Line)) {
      var Match = Line.match(Regex.Param);
      if (Section) {
        Value[Section][Match[1]] = Match[2];
      } else {
        Value[Match[1]] = Match[2];
      };
    } else if (Regex.Section.test(Line)) {
      var Match = Line.match(Regex.Section);
      Value[Match[1]] = {};
      Section = Match[1];
    } else if (Line.length == 0 && Section) {
      Section = null;
    };
  });
  return Value;
};

if (!system.fileExists('ADODB.ini')) {
  alert('Не найден файл (ADODB.ini) с настройками для подключения к БД!');
  Action.Cancel();
} else {
  var IniFile = ReadIniFile('ADODB.ini');
  if (!system.fileExists(IniFile['General']['FBCFile'])) {
    alert('Настройки подключения к БД указанные в файле (ADODB.ini)' +
          ' не являются верными!');
    Action.Cancel();
  };
};

var ConnectionString = 'Driver={Firebird/InterBase(r) driver};' +
                       'Dbname=' + IniFile['General']['FDBServ'] + '/'
                                 + IniFile['General']['FBSPort'] + ':'
                                 + IniFile['General']['FDBFile'] + ';' +
                       'CHARSET=NONE;' +
                       'PWD=masterkey;' +
                       'UID=SYSDBA;' +
                       'Client=' + IniFile['General']['FBCFile'];
var Query = 'Select\n' +
            '  MATERIAL_ADVANCE.LABEL_EDGE,\n' +
            '  MATERIAL.NAME_MAT\n' +
            'From\n' +
            '  MATERIAL_ADVANCE Inner Join\n' +
            '  MATERIAL On MATERIAL.ID_M = MATERIAL_ADVANCE.ID_M';
var Connection = NewCOMObject('ADODB.Connection');
var Recordset  = NewCOMObject('ADODB.Recordset');

try {
  Connection.Open(ConnectionString);
  Recordset.ActiveConnection = Connection;
  Recordset.Open(Query);
} catch(Error) {
  Recordset.Close;
  Connection.Close;
  alert(decodeURIComponent(escape(Error.message)));
  Action.Cancel();
};

Array.prototype.ObjectInArray = function(Object) {
  for (var i = 0; i < this.length; i++) {
    if (this[i].UID == Object.UID) return true;
  };
  return false;
};

function SetSelection(List) {
  Model.UnSelectAll();
  for (var i = 0; i < List.length; i++) {
    List[i].Selected = true;
  };
};

function EqualsMaterial(A, B) {
  switch (true) {
    case (B instanceof TFurnPanel):
    case (B instanceof TExtrusionBody):
    case (B instanceof T2DTrajectoryBody):
      if (A.MaterialName  == B.MaterialName &&
          A.MaterialWidth == B.MaterialWidth &&
          A.Thickness     == B.Thickness) {
        return true;
      };
      break;
    case (B instanceof TFurnPlastic):
      if (A.MaterialName  == B.Material &&
          A.MaterialWidth == B.MaterialWidth &&
          A.Thickness     == B.Thickness) {
        return true;
      };
      break;
  };
  return false;
};

function EqualsPlastic(A, B) {
  switch (true) {
    case (B instanceof TFurnPanel):
    case (B instanceof TExtrusionBody):
    case (B instanceof T2DTrajectoryBody):
      if (A.Material      == B.MaterialName &&
          A.MaterialWidth == B.MaterialWidth &&
          A.Thickness     == B.Thickness) {
        return true;
      };
      break;
    case (B instanceof TFurnPlastic):
      if (A.Material      == B.Material &&
          A.MaterialWidth == B.MaterialWidth &&
          A.Thickness     == B.Thickness) {
        return true;
      };
      break;
  };
  return false;
};

function EqualsButts(A, B) {
  if (A.Material  == B.Material &&
      A.Width     == B.Width &&
      A.Thickness == B.Thickness &&
      A.Sign      == B.Sign) {
    return true;
  };
  return false;
};

function EqualsCuts(A, B) {
  if (A.Name == B.Name &&
      A.Sign == B.Sign) {
    return true;
  };
  return false;
};

function ListToArray(List) {
  var Result = new Array();
  for (var i = 0; i < List.Count; i++) {
    if (List[i].List === true) {
      Result = Result.concat(ListToArray(List[i]));
    } else {
      Result.push(List[i]);
    };
  };
  return Result;
};

function SetMaterials(Control) {
  system.log('SetMaterials');
  Panels = Objects.Panels.Items[Control.Name];
  Owners = Objects.Panels.Owners[Control.Name];
  for (var i = 0; i < Owners.length; i++) {
    StartEditing(Owners[i]);
  };
  for (var i = 0; i < Panels.length; i++) {
    switch (true) {
      case (Panels[i] instanceof TFurnPanel):
      case (Panels[i] instanceof TExtrusionBody):
      case (Panels[i] instanceof T2DTrajectoryBody):
        Panels[i].MaterialName = Control.Value;
        break;
      case (Panels[i] instanceof TFurnPlastic):
        Panels[i].Material     = Control.Value;
        break;
    };
    if (!(Panels[i] instanceof T2DTrajectoryBody)) {
      Panels[i].Thickness      = Control[1].Value;
    } else {
      system.log('T2DTrajectoryBody');
    };
    Panels[i].MaterialWidth    = Control[2].Value;
  };
  for (var i = 0; i < Owners.length; i++) {
    Owners[i].Build();
  };
};

function SetButts(Control) {
  system.log('SetButts');
  Butts =  Objects.Butts.Items[Control.Name];
  Owners = Objects.Butts.Owners[Control.Name];
  for (var i = 0; i < Owners.length; i++) {
    StartEditing(Owners[i]);
  };
  for (var i = 0; i < Butts.length; i++) {
    Butts[i].Material  = Control.Value;
    Butts[i].Thickness = Control[1].Value;
    Butts[i].Width     = Control[2].Value;
    Butts[i].Sign      = Control[3].Value;
  };
  for (var i = 0; i < Owners.length; i++) {
    Owners[i].Build();
  };
};

function SetCuts(Control) {
  system.log('SetCuts');
  Cuts   =  Objects.Cuts.Items[Control.Name];
  Owners = Objects.Cuts.Owners[Control.Name];
  for (var i = 0; i < Owners.length; i++) {
    StartEditing(Owners[i]);
  };
  for (var i = 0; i < Cuts.length; i++) {
    Cuts[i].Name = Control.Value;
    Cuts[i].Sign = Control[0].Value;
  };
  for (var i = 0; i < Owners.length; i++) {
    Owners[i].Build();
  };
};

function EditMaterialName(Control) {
  MainForm.Properties.Clear();
  MainForm.String = MainForm.Properties.NewString('', Control.Value);
  MainForm.String.SetLayout(0, 0, MainForm.Width, 22);
  MainForm.String.OnValueChange = function() {
    Control.Value = MainForm.String.Value;
  };
  MainForm.Show(WindowPosition.Default);
};

function GetSign(Control) {
  system.log('GetSign');
  var Result = new String();
  Recordset.Filter = "(NAME_MAT = '" + Control.Value.split(/\r/)[0] + "')";
  while (Recordset.EOF == 0) {
    Result = Recordset.Fields.Item('LABEL_EDGE').Value;
    Recordset.MoveNext();
  };
  return Result;
};

Action.OnFinish = function() {
  system.log('OnFinish');
  SetSelection(Selection);
  try {
    Recordset.Close;
    Connection.Close;
  } catch(Error) {
    alert(decodeURIComponent(escape(Error.message)));
  };
};

if (Model.Selected) {
  for (var i = 0; i < Model.SelectionCount; i++) {
    Selection.push(Model.Selections[i]);
    if (Model.Selections[i].List === true) {
      Items = Items.concat(ListToArray(Model.Selections[i]));
    } else {
      Items.push(Model.Selections[i]);
    };
  };
} else {
  if (confirm('Редактировать все панели модели?')) {
    Items = ListToArray(Model);
  } else {
    Action.Cancel();
  };
};

var j   = new Number();
var Key = new String();
for (var i = 0; i < Items.length; i++) {
  switch (true) {
    case (Items[i] instanceof TFurnPanel):
    case (Items[i] instanceof TExtrusionBody):
    case (Items[i] instanceof T2DTrajectoryBody):
      if (Items[i].MaterialName) {
        j   = 0;
        Key = Items[i].MaterialName.split(/\r/)[0] + '#' + j;
        while (Objects.Panels.Items[Key]  != undefined &&
               Objects.Panels.Owners[Key] != undefined &&
               !EqualsMaterial(Items[i], Objects.Panels.Items[Key][0])) {
          j++;
          Key = Items[i].MaterialName.split(/\r/)[0] + '#' + j;
        };
        if (Objects.Panels.Items[Key] == undefined) {
          Objects.Panels.Items[Key]  = new Array();
          Objects.Panels.Owners[Key] = new Array();
        };
        Objects.Panels.Items[Key].push(Items[i]);
        if (!Objects.Panels.Owners[Key].ObjectInArray(Items[i])) {
          Objects.Panels.Owners[Key].push(Items[i]);
        };
      };
      if (Items[i].Plastics) {
        for (var n = 0; n < Items[i].Plastics.Count; n++) {
          j   = 0;
          Key = Items[i].Plastics[n].Material.split(/\r/)[0] + '#' + j;
          while (Objects.Panels.Items[Key]  != undefined &&
                 Objects.Panels.Owners[Key] != undefined &&
                 !EqualsPlastic(Items[i].Plastics[n], Objects.Panels.Items[Key][0])) {
            j++;
            Key = Items[i].Plastics[n].Material.split(/\r/)[0] + '#' + j;
          };
          if (Objects.Panels.Items[Key]  == undefined &&
              Objects.Panels.Owners[Key] == undefined) {
            Objects.Panels.Items[Key]  = new Array();
            Objects.Panels.Owners[Key] = new Array();
          };
          Objects.Panels.Items[Key].push(Items[i].Plastics[n]);
          if (!Objects.Panels.Owners[Key].ObjectInArray(Items[i])) {
            Objects.Panels.Owners[Key].push(Items[i]);
          };
        };
      };
      if (Items[i].Butts) {
        for (var k = 0; k < Items[i].Butts.Count; k++) {
          j   = 0;
          Key = Items[i].Butts[k].Material.split(/\r/)[0] + '#' + j;
          while (Objects.Butts.Items[Key]  != undefined &&
                 Objects.Butts.Owners[Key] != undefined &&
                 !EqualsButts(Items[i].Butts[k], Objects.Butts.Items[Key][0])) {
            j++;
            Key = Items[i].Butts[k].Material.split(/\r/)[0] + '#' + j;
          };
          if (Objects.Butts.Items[Key]  == undefined &&
              Objects.Butts.Owners[Key] == undefined) {
            Objects.Butts.Items[Key]  = new Array();
            Objects.Butts.Owners[Key] = new Array();
          };
          Objects.Butts.Items[Key].push(Items[i].Butts[k]);
          if (!Objects.Butts.Owners[Key].ObjectInArray(Items[i])) {
            Objects.Butts.Owners[Key].push(Items[i]);
          };
        };
      };
      if (Items[i].Cuts) {
        for (var m = 0; m < Items[i].Cuts.Count; m++) {
          j   = 0;
          Key = Items[i].Cuts[m].Name.split(/\r/)[0] + '#' + j;
          while (Objects.Cuts.Items[Key]  != undefined &&
                 Objects.Cuts.Owners[Key] != undefined &&
                 !EqualsCuts(Items[i].Cuts[m], Objects.Cuts.Items[Key][0])) {
            j++;
            Key = Items[i].Cuts[m].Name.split(/\r/)[0] + '#' + j;
          };
          if (Objects.Cuts.Items[Key]  == undefined &&
              Objects.Cuts.Owners[Key] == undefined) {
            Objects.Cuts.Items[Key]  = new Array();
            Objects.Cuts.Owners[Key] = new Array();
          };
          Objects.Cuts.Items[Key].push(Items[i].Cuts[m]);
          if (!Objects.Cuts.Owners[Key].ObjectInArray(Items[i])) {
            Objects.Cuts.Owners[Key].push(Items[i]);
          };
        };
      };
      break;
  };
};

var i = new Number();
for (var Key in Objects.Panels.Items) {
  switch (true) {
    case (Objects.Panels.Items[Key][0] instanceof TFurnPanel):
    case (Objects.Panels.Items[Key][0] instanceof TExtrusionBody):
    case (Objects.Panels.Items[Key][0] instanceof T2DTrajectoryBody):
      Controls.NewSelector(Key, Objects.Panels.Items[Key][0].MaterialName).CanClear = false;
      break;
    case (Objects.Panels.Items[Key][0] instanceof TFurnPlastic):
      Controls.NewSelector(Key, Objects.Panels.Items[Key][0].Material).CanClear = false;
      break;
  };
  Controls[i].Expanded = false;
  Controls[i].NewMaterial('Материал:').Visible = false;
  Controls[i].NewNumber('Толщина:', Objects.Panels.Items[Key][0].Thickness);
  Controls[i].NewNumber('Ширина:', Objects.Panels.Items[Key][0].MaterialWidth);
  Controls[i].PopupMenu.NewButton('Править: наименование');
  eval(
    'Controls[' + i + '].OnClick = function() {                              \n' +
    '  Controls[' + i + '][0].Click();                                       \n' +
    '};                                                                      \n' +
    'Controls[' + i + '].PopupMenu[0].OnClick = function() {                 \n' +
    '  EditMaterialName(Controls[' + i + ']);                                \n' +
    '};                                                                      \n' +
    'Controls[' + i + '][0].OnValueChange = function() {                     \n' +
    '  Controls[' + i + '].Value    = Controls[' + i + '][0].ValueToString().\n' +
    '    replace(RepMat, "$1\\r$2");                                         \n' +
    '  Controls[' + i + '][1].Value = Controls[' + i + '][0].Thickness;      \n' +
    '  Controls[' + i + '][2].Value = Controls[' + i + '][0].Width;          \n' +
    '};                                                                      \n' +
    'Controls[' + i + '].OnChange = function() {                             \n' +
    '  SetMaterials(Controls[' + i + ']);                                    \n' +
    '};                                                                      \n' +
    'Controls[' + i + '].OnActivate = function() {                           \n' +
    '  SetSelection(Objects.Panels.Owners[Controls[' + i + '].Name]);        \n' +
    '};                                                                      \n' +
    'Controls[' + i + '][1].OnActivate = function() {                        \n' +
    '  SetSelection(Objects.Panels.Owners[Controls[' + i + '].Name]);        \n' +
    '};                                                                      \n' +
    'Controls[' + i + '][2].OnActivate = function() {                        \n' +
    '  SetSelection(Objects.Panels.Owners[Controls[' + i + '].Name]);        \n' +
    '};                                                                        '
  );
  i++;
};

for (var Key in Objects.Butts.Items) {
  Controls.NewSelector(Key, Objects.Butts.Items[Key][0].Material).CanClear = false;
  Controls[i].Expanded = false;
  Controls[i].NewButt('Кромка:').Visible = false;
  Controls[i].NewNumber('Толщина:', Objects.Butts.Items[Key][0].Thickness);
  Controls[i].NewNumber('Ширина:', Objects.Butts.Items[Key][0].Width);
  Controls[i].NewString('Обозначение:', Objects.Butts.Items[Key][0].Sign);
  Controls[i].PopupMenu.NewButton('Править: наименование');
  eval(
    'Controls[' + i + '].OnClick = function() {                              \n' +
    '  Controls[' + i + '][0].Click();                                       \n' +
    '};                                                                      \n' +
    'Controls[' + i + '].PopupMenu[0].OnClick = function() {                 \n' +
    '  EditMaterialName(Controls[' + i + ']);                                \n' +
    '};                                                                      \n' +
    'Controls[' + i + '][0].OnValueChange = function() {                     \n' +
    '  Controls[' + i + '].Value    = Controls[' + i + '][0].ValueToString().\n' +
    '    replace(RepMat, "$1\\r$2");                                         \n' +
    '  Controls[' + i + '][1].Value = Controls[' + i + '][0].Thickness;      \n' +
    '  Controls[' + i + '][2].Value = Controls[' + i + '][0].Width;          \n' +
    '  Controls[' + i + '][3].Value = GetSign(Controls[' + i + ']);          \n' +
    '};                                                                      \n' +
    'Controls[' + i + '].OnChange = function() {                             \n' +
    '  SetButts(Controls[' + i + ']);                                        \n' +
    '};                                                                      \n' +
    'Controls[' + i + '].OnActivate = function() {                           \n' +
    '  SetSelection(Objects.Butts.Owners[Controls[' + i + '].Name]);         \n' +
    '};                                                                      \n' +
    'Controls[' + i + '][1].OnActivate = function() {                        \n' +
    '  SetSelection(Objects.Butts.Owners[Controls[' + i + '].Name]);         \n' +
    '};                                                                      \n' +
    'Controls[' + i + '][2].OnActivate = function() {                        \n' +
    '  SetSelection(Objects.Butts.Owners[Controls[' + i + '].Name]);         \n' +
    '};                                                                      \n' +
    'Controls[' + i + '][3].OnActivate = function() {                        \n' +
    '  SetSelection(Objects.Butts.Owners[Controls[' + i + '].Name]);         \n' +
    '};                                                                        '
  );
  i++;
};

for (var Key in Objects.Cuts.Items) {
  Controls.NewCombo(Key, Objects.Cuts.Items[Key][0].Name);
  Controls[i].Expanded = false;
  Controls[i].NewString('Обозначение:', Objects.Cuts.Items[Key][0].Sign);
  Controls[i].PopupMenu.NewButton('Править: наименование');
  eval (
    'Controls[' + i + '].PopupMenu[0].OnClick = function() {                 \n' +
    '  EditMaterialName(Controls[' + i + ']);                                \n' +
    '};                                                                      \n' +
    'Controls[' + i + '].OnChange = function() {                             \n' +
    '  SetCuts(Controls[' + i + ']);                                         \n' +
    '};                                                                      \n' +
    'Controls[' + i + '].OnActivate = function() {                           \n' +
    '  SetSelection(Objects.Cuts.Owners[Controls[' + i + '].Name]);          \n' +
    '};                                                                      \n' +
    'Controls[' + i + '][0].OnActivate = function() {                        \n' +
    '  SetSelection(Objects.Cuts.Owners[Controls[' + i + '].Name]);          \n' +
    '};                                                                        '
  );
  i++;
};

Controls.NewButton('Завершить').OnClick = function() {
  Action.Commit();
  Action.Finish();
};

Action.Continue();
[свернуть]

Для работы скрипта необходим установленный ODBC драйвер FireBird и файл ADODB.ini в папке со скриптом
Igor_482 вне форума   Ответить с цитированием Вверх
10 пользователя(ей) сказали cпасибо:
Старый 09.08.2017, 11:52   #1362
Letos
Консультант
 
Регистрация: 28.06.2017
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,030 раз(а) в 366 сообщениях
Вес репутации: 344
Letos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордится
По умолчанию

Цитата:
Сообщение от EVGENTAR Посмотреть сообщение
Где Вы находите все эти функции и как узнаете правильность записи?
В принципе, в десятке можно скрипт прогнать через отладчик VSCode, в котором уже можно посмотреть все доступные свойства и методы объектов. А там уже по имени свойства/метода примерно можно догадаться для чего оно нужно.
Letos вне форума   Ответить с цитированием Вверх
3 пользователя(ей) сказали cпасибо:
Ovsyanicov (09.08.2017), volunka (09.08.2017), wizardpnz (21.05.2018)
Старый 11.08.2017, 17:57   #1363
Uncle
VIP
 
Аватар для Uncle
 
Регистрация: 31.10.2009
Адрес: Рівне. УкраЇна
Сообщений: 10,580
Сказал(а) спасибо: 14,588
Поблагодарили 20,024 раз(а) в 6,492 сообщениях
Вес репутации: 5257
Uncle репутация неоспоримаUncle репутация неоспоримаUncle репутация неоспоримаUncle репутация неоспоримаUncle репутация неоспоримаUncle репутация неоспоримаUncle репутация неоспоримаUncle репутация неоспоримаUncle репутация неоспоримаUncle репутация неоспоримаUncle репутация неоспорима
По умолчанию

Коллеги, можно ли написать такой скрипт, что бы с помощью его можно было редактировать профиль канта при облицовке торцов панелей?
__________________
Уж лучше беспокойство в сомнении, чем успокоенность в заблуждении. .
(Мандзони Алессандро)
------------------------------------
Троллей не кормлю...
Uncle вне форума   Ответить с цитированием Вверх
Старый 22.08.2017, 09:25   #1364
v22884
Местный
 
Регистрация: 17.04.2014
Адрес: д.Сибирцево, ателье-уют.рф
Сообщений: 454
Сказал(а) спасибо: 241
Поблагодарили 1,094 раз(а) в 210 сообщениях
Вес репутации: 386
v22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордится
По умолчанию

Самый простой BMP контура панели:

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


t = 'P1\r\n'

p = GetPanel("Укажите панель")

c = p.Contour.MakeCopy()

cMin = c.Min
c.Move(-c.Min.x, -c.Min.y)

h = Math.round(c.Height)
w = Math.round(c.Width)

t = t + h + ' ' + w + '\r\n'

for (iw = 0; iw < w; iw++) {
for (ih = 0; ih < h; ih++) {
Point = NewPoint(iw, ih)
ClosestPoint = c.ClosestPoint(Point);
if (Distance(Point, ClosestPoint) < 1) {
t = t + '1 '
} else {
t = t + '0 '
}
}
t = t + '\r\n'
}

system.askWriteTextFile('BMP', t)


function Distance(p1, p2) {
var dx = p2.x - p1.x;
var dy = p2.y - p1.y;
var dz = 0;
return Math.sqrt(dx * dx + dy * dy + dz * dz);
}


[свернуть]


Может не самое тонкое решение... У кого другие варианты -- буду рад увидеть.
v22884 вне форума   Ответить с цитированием Вверх
2 пользователя(ей) сказали cпасибо:
zorro (22.08.2017), АлКузнецов (24.09.2022)
Старый 22.08.2017, 14:28   #1365
Igor_482
VIP
 
Аватар для Igor_482
 
Регистрация: 03.09.2008
Сообщений: 174
Сказал(а) спасибо: 34
Поблагодарили 794 раз(а) в 113 сообщениях
Вес репутации: 366
Igor_482 - просто великолепная личностьIgor_482 - просто великолепная личностьIgor_482 - просто великолепная личностьIgor_482 - просто великолепная личностьIgor_482 - просто великолепная личностьIgor_482 - просто великолепная личностьIgor_482 - просто великолепная личность
По умолчанию

Цитата:
Сообщение от v22884 Посмотреть сообщение
...другие варианты...

код


Код HTML:
var Application       = Action.Control.Owner.Owner.Owner,
    MainForm          = Application.MainForm,
    BtnViewAll        = MainForm.SpTBXItem132,
    BtnBorderFrame    = MainForm.SpTBXItem237,
    BtnHideUnSelected = MainForm.dpModelTree.Components[3].BtnHideUnSelected,
    Panel             = new Object();

Panel = GetPanel('Укажите панель');
Model.UnSelectAll();
Panel.Selected = true;
if (BtnBorderFrame.Checked) BtnBorderFrame.Click();
BtnHideUnSelected.Click();
Action.DS.Camera.RotateTo(Panel.NToObject(Axis_Z));
BtnViewAll.Click();
MainForm.a1ExportBMP.Execute();
[свернуть]
Igor_482 вне форума   Ответить с цитированием Вверх
3 пользователя(ей) сказали cпасибо:
andronf (22.08.2017), v22884 (28.08.2017), zorro (22.08.2017)
Старый 28.08.2017, 04:15   #1366
v22884
Местный
 
Регистрация: 17.04.2014
Адрес: д.Сибирцево, ателье-уют.рф
Сообщений: 454
Сказал(а) спасибо: 241
Поблагодарили 1,094 раз(а) в 210 сообщениях
Вес репутации: 386
v22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордится
По умолчанию

BMP контура панели v2:


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


t = 'P1\r\n'
tochki = []
p = GetPanel("Укажите панель")

c = p.Contour.MakeCopy()

cMin = c.Min
c.Move(-c.Min.x, -c.Min.y)

h = Math.round(c.Height)+1
w = Math.round(c.Width)+1

t = t + h + ' ' + w + '\r\n'

mas=[]
for (iw = 0; iw < w; iw++) {
mas[iw] = [];
for (ih = 0; ih < h; ih++) {
/*
Point = NewPoint(iw, ih)
//ClosestPoint = c.ClosestPoint(Point);
if (yestiTochkaVMassive(Point, tochki)) {
t = t + '1 '
} else {
t = t + '0 '
}
*/
mas[iw][ih] = '0'
}
}



for(ic=0;ic< c.Count;ic++){
elc = c[ic]
TochkiChastey(elc, p)
}

for (it = 0; it < tochki.length; it++) {
point = tochki[it]
//system.log(JSON.stringify(point))
iw = Math.round(point.x)
ih = Math.round(point.y)
// system.log(iw+' -- '+ih)
mas[iw][ih] = '1'
radiusTocki=1

hMax=ih+radiusTocki
if(hMax>h)
{hMax=h}
hMin=ih-radiusTocki
if(hMin<0)
{hMin=0}

wMax=iw+radiusTocki
if(wMax>w)
{wMax=w}
wMin=iw-radiusTocki
if(wMin<0)
{wMin=0}



for (iwR = wMin; iwR < wMax; iwR++) {
for (ihR = hMin; ihR < hMax; ihR++) {
//system.log(iwR)
mas[iwR][ihR] = '1'


}
}
}
for (iw = 0; iw < mas.length; iw++) {
// mas_iw = mas[iw];
for (ih = 0; ih < mas[iw].length; ih++) {
t = t + mas[iw][ih] + ' '
}
t = t + '\r\n'
}






system.askWriteTextFile('BMP', t)




function TochkiChastey(elc, p) {
//TochkiElementa(elc)

if (elc.ElType == 1) {
TochkiLinii(elc, p, tochki)
} else if (elc.ElType == 2) {
TochkiDugi(elc, p, tochki)
} else if (elc.ElType == 3) {
TochkiKruga(elc, p, tochki)
}

//system.log("точек " + tochki.length)
}


function TochkiKruga(elc, p, tochki) {
dlina = elc.ObjLength()
lp1= elc.Center
lp2= NewPoint(lp1.x+elc.CirRadius+10, lp1.y)
c2 = NewContour()

l = c2.AddLine(lp1,lp2)
// ug1 = 0
// ug2 = 360
ArcAngle =360
//system.log( ArcAngle)
//system.log(ug1)
//system.log(ug2)

// c2.Rotate(lp1.x,lp1.y,ug1)
//c.Addition(c2)
// napravleniye = 1
shag= ArcAngle/dlina

//system.log(JSON.stringify(peresArray))
// if(!peresArray){napravleniye = -1}
//a= []
for (is=1;is< dlina-1;is++)
{
c2.Rotate(lp1.x,lp1.y,shag)
pos = geometry.Intersect(elc, c2[0])[0]
// if(pos===undefined){continue}
pos = okruglitTocku(pos)
tochki.push(pos)
//c.Addition(c2)
}
}

function TochkiDugi(elc, p, tochki) {
// system.log(elc)
dlina = elc.ObjLength()
/*
ccir = NewContour()
ccir.AddCircle(0, 0, elc.ArcRadius())
dlina = ccir[0].ObjLength()
*/

lp1= elc.Center
lp2= NewPoint(lp1.x+elc.ArcRadius()+10, lp1.y)
c2 = NewContour()

l = c2.AddLine(lp1,lp2)
ug1 = elc.Pos1Angle()*(180/Math.PI)
ug2 = elc.Pos2Angle()*(180/Math.PI)
ArcAngle =elc. ArcAngle() *(180/Math.PI)
//system.log( ArcAngle)
//system.log(ug1)
//system.log(ug2)

c2.Rotate(lp1.x,lp1.y,ug1)
peresArray = geometry.Intersect(elc, c2)

//c.Addition(c2)
napravleniye = 1
shag= ArcAngle/dlina
c3 = c2.MakeCopy()
c3.Rotate(lp1.x,lp1.y,shag)
peresArray=[]
peresArray = geometry.Intersect(elc, c3[0])
//system.log(JSON.stringify(peresArray))
if(!peresArray){
napravleniye = -1
//system.log(peresArray+'-----Пересекаются')
c3.Rotate(lp1.x,lp1.y,shag*(-2))
// c3.Rotate(lp1.x,lp1.y,shag*(-1))
peresArray = geometry.Intersect(elc, c3[0])
// system.log(peresArray+'-----Пересекаются')
}


//a= []
for (is=1;is< dlina-1;is++)
{
c2.Rotate(lp1.x,lp1.y,shag*(napravleniye))
pos = geometry.Intersect(elc, c2[0])[0]
if(pos===undefined){continue}
pos = okruglitTocku(pos)
tochki.push(pos)
//c.Addition(c2)
}

}


function TochkiLinii(elc, p, tochki) {
//system.log(elc)
dlina = elc.ObjLength()
tochki.push(elc.Pos1)
tochki.push(elc.Pos2)
NormDir =elc.NormDir()
lp1= elc.Pos1
lp2= NewPoint(lp1.x+NormDir.x, lp1.y+NormDir.y)
c2= NewContour()
l = c2.AddLine(lp1,lp2)

/*
system.log( JSON.stringify(lp1))
system.log( JSON.stringify(lp2))
system.log(JSON.stringify(NormDir) )
*/
//system.log(ug2)

// c2.Move(NormDir)
//c.Addition(c2)
// c.Add(c2[0].MakeCopy())

//shag= 1


for (is=1;is< dlina-1;is++)
{
l.Move(NormDir)
// c.Add(l.MakeCopy())
//pos = geometry.Intersect(elc, c2[0])[0]
//if(!(pos=== undefined ))
//{
pos=l.Pos2
tochki.push(pos)
//}
//c.Addition(c2)
}
}



function tockuV_mass(point)
{
point = okruglitTocku(point)
iw = point.x
ih = point.y
mas[iw][ih] = '1'
}

function okruglitTocku(tochka) {
//system.log(JSON.stringify( tochka))
x= Math.round(tochka.x)
y= Math.round(tochka.y)
tochka= NewPoint(x, y)
return tochka
}
[свернуть]


Добавлено через 9 минут
BMP контура панели v2.1:
(чуть поправлена толщина линии и положение)


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


t = 'P1\r\n'
tochki = []
p = GetPanel("Укажите панель")

c = p.Contour.MakeCopy()

cMin = c.Min
c.Move(-c.Min.x+2, -c.Min.y+2)

h = Math.round(c.Height)+4
w = Math.round(c.Width)+4

t = t + h + ' ' + w + '\r\n'

mas=[]
for (iw = 0; iw < w; iw++) {
mas[iw] = [];
for (ih = 0; ih < h; ih++) {
/*
Point = NewPoint(iw, ih)
//ClosestPoint = c.ClosestPoint(Point);
if (yestiTochkaVMassive(Point, tochki)) {
t = t + '1 '
} else {
t = t + '0 '
}
*/
mas[iw][ih] = '0'
}
}



for(ic=0;ic< c.Count;ic++){
elc = c[ic]
TochkiChastey(elc, p)
}

for (it = 0; it < tochki.length; it++) {
point = tochki[it]
//system.log(JSON.stringify(point))
iw = Math.round(point.x)
ih = Math.round(point.y)
// system.log(iw+' -- '+ih)
mas[iw][ih] = '1'
radiusTocki=2

hMax=ih+radiusTocki
if(hMax>h)
{hMax=h}
hMin=ih-radiusTocki
if(hMin<0)
{hMin=0}

wMax=iw+radiusTocki
if(wMax>w)
{wMax=w}
wMin=iw-radiusTocki
if(wMin<0)
{wMin=0}



for (iwR = wMin; iwR < wMax; iwR++) {
for (ihR = hMin; ihR < hMax; ihR++) {
//system.log(iwR)
mas[iwR][ihR] = '1'


}
}
}
for (iw = 0; iw < mas.length; iw++) {
// mas_iw = mas[iw];
for (ih = 0; ih < mas[iw].length; ih++) {
t = t + mas[iw][ih] + ' '
}
t = t + '\r\n'
}






system.askWriteTextFile('BMP', t)




function TochkiChastey(elc, p) {
//TochkiElementa(elc)

if (elc.ElType == 1) {
TochkiLinii(elc, p, tochki)
} else if (elc.ElType == 2) {
TochkiDugi(elc, p, tochki)
} else if (elc.ElType == 3) {
TochkiKruga(elc, p, tochki)
}

//system.log("точек " + tochki.length)
}


function TochkiKruga(elc, p, tochki) {
dlina = elc.ObjLength()
lp1= elc.Center
lp2= NewPoint(lp1.x+elc.CirRadius+10, lp1.y)
c2 = NewContour()

l = c2.AddLine(lp1,lp2)
// ug1 = 0
// ug2 = 360
ArcAngle =360
//system.log( ArcAngle)
//system.log(ug1)
//system.log(ug2)

// c2.Rotate(lp1.x,lp1.y,ug1)
//c.Addition(c2)
// napravleniye = 1
shag= ArcAngle/dlina

//system.log(JSON.stringify(peresArray))
// if(!peresArray){napravleniye = -1}
//a= []
for (is=1;is< dlina-1;is++)
{
c2.Rotate(lp1.x,lp1.y,shag)
pos = geometry.Intersect(elc, c2[0])[0]
// if(pos===undefined){continue}
pos = okruglitTocku(pos)
tochki.push(pos)
//c.Addition(c2)
}
}

function TochkiDugi(elc, p, tochki) {
// system.log(elc)
dlina = elc.ObjLength()
/*
ccir = NewContour()
ccir.AddCircle(0, 0, elc.ArcRadius())
dlina = ccir[0].ObjLength()
*/

lp1= elc.Center
lp2= NewPoint(lp1.x+elc.ArcRadius()+10, lp1.y)
c2 = NewContour()

l = c2.AddLine(lp1,lp2)
ug1 = elc.Pos1Angle()*(180/Math.PI)
ug2 = elc.Pos2Angle()*(180/Math.PI)
ArcAngle =elc. ArcAngle() *(180/Math.PI)
//system.log( ArcAngle)
//system.log(ug1)
//system.log(ug2)

c2.Rotate(lp1.x,lp1.y,ug1)
peresArray = geometry.Intersect(elc, c2)

//c.Addition(c2)
napravleniye = 1
shag= ArcAngle/dlina
c3 = c2.MakeCopy()
c3.Rotate(lp1.x,lp1.y,shag)
peresArray=[]
peresArray = geometry.Intersect(elc, c3[0])
//system.log(JSON.stringify(peresArray))
if(!peresArray){
napravleniye = -1
//system.log(peresArray+'-----Пересекаются')
c3.Rotate(lp1.x,lp1.y,shag*(-2))
// c3.Rotate(lp1.x,lp1.y,shag*(-1))
peresArray = geometry.Intersect(elc, c3[0])
// system.log(peresArray+'-----Пересекаются')
}


//a= []
for (is=1;is< dlina-1;is++)
{
c2.Rotate(lp1.x,lp1.y,shag*(napravleniye))
pos = geometry.Intersect(elc, c2[0])[0]
if(pos===undefined){continue}
pos = okruglitTocku(pos)
tochki.push(pos)
//c.Addition(c2)
}

}


function TochkiLinii(elc, p, tochki) {
//system.log(elc)
dlina = elc.ObjLength()
tochki.push(elc.Pos1)
tochki.push(elc.Pos2)
NormDir =elc.NormDir()
lp1= elc.Pos1
lp2= NewPoint(lp1.x+NormDir.x, lp1.y+NormDir.y)
c2= NewContour()
l = c2.AddLine(lp1,lp2)

/*
system.log( JSON.stringify(lp1))
system.log( JSON.stringify(lp2))
system.log(JSON.stringify(NormDir) )
*/
//system.log(ug2)

// c2.Move(NormDir)
//c.Addition(c2)
// c.Add(c2[0].MakeCopy())

//shag= 1


for (is=1;is< dlina-1;is++)
{
l.Move(NormDir)
// c.Add(l.MakeCopy())
//pos = geometry.Intersect(elc, c2[0])[0]
//if(!(pos=== undefined ))
//{
pos=l.Pos2
tochki.push(pos)
//}
//c.Addition(c2)
}
}



function tockuV_mass(point)
{
point = okruglitTocku(point)
iw = point.x
ih = point.y
mas[iw][ih] = '1'
}

function okruglitTocku(tochka) {
//system.log(JSON.stringify( tochka))
x= Math.round(tochka.x)
y= Math.round(tochka.y)
tochka= NewPoint(x, y)
return tochka
}
[свернуть]
v22884 вне форума   Ответить с цитированием Вверх
2 пользователя(ей) сказали cпасибо:
Igor_482 (07.09.2017), Ovsyanicov (28.08.2017)
Старый 02.09.2017, 02:47   #1367
v22884
Местный
 
Регистрация: 17.04.2014
Адрес: д.Сибирцево, ателье-уют.рф
Сообщений: 454
Сказал(а) спасибо: 241
Поблагодарили 1,094 раз(а) в 210 сообщениях
Вес репутации: 386
v22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордится
По умолчанию

Approximate()

Сообщите, пожалуйста, параметры.
Она, наверно, даёт отрезки, или точки.?
v22884 вне форума   Ответить с цитированием Вверх
Старый 07.09.2017, 07:00   #1368
v22884
Местный
 
Регистрация: 17.04.2014
Адрес: д.Сибирцево, ателье-уют.рф
Сообщений: 454
Сказал(а) спасибо: 241
Поблагодарили 1,094 раз(а) в 210 сообщениях
Вес репутации: 386
v22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордится
По умолчанию

Из DXF в Контур Панели:

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





ft = system.askReadTextFile('dxf')
ft = ft.replace(/\r/g, '')
izDXF(ft)


function izDXF(data) {



// l2_x1 = "6\nCONTINUOUS\n 62\n7\n370\n60\n100\nAcDbLine\n 10\n"
l2_x1 = "AcDbLine\n 10\n"
//alert(l2_x1)
l3_y1 = " 20\n"
l4_x2 = " 11\n"
l5_y2 = " 21\n"

a1_sloy = " 0\nARC\n 5\n110D2\n330\n1F\n100\nAcDbEntity\n 8\n"

// a2_cX = " 6\nCONTINUOUS\n 62\n7\n370\n60\n100\nAcDbCircle\n 10\n"
a2_cX = "AcDbCircle\n 10\n"
//alert(a2_cX)

a3_cY = " 20\n"
a4_R = " 40\n"
a5_p1A = "100\nAcDbArc\n 50\n"
a6_p2A = " 51\n"


c1_sloy = "0\nCIRCLE\n 5\n110D3\n330\n1F\n100\nAcDbEntity\n 8\n"
c2_cX = "6\nCONTINUOUS\n 62\n7\n370\n60\n100\nAcDbCircle\n 10\n"
c3_cY = " 20\n"
c4_R = " 40\n"

p = AddPanel(1, 1)
c = p.Contour
c.Clear();

////////////Линии

arL = data.toString().split(l2_x1)
system.log(JSON.stringify(arL))
system.log(arL.length)

for(i=1;i< arL.length;i++)
{
tt = arL[i]
artt= tt.toString().split(l3_y1)
p1x = +artt[0]
// system.log(p1x)
artt= artt[1].split(l4_x2)
p1y = +artt[0]
// system.log(p1y)
artt= artt[1].split(l5_y2)
p2x = +artt[0]
// system.log(p2x)
artt= artt[1].split('\n')
p2y = +artt[0]
// system.log(p2y)
c.AddLine(p1x, p1y, p2x, p2y)
}
////////////----Линии

////////////ДУГИ и Круги

arL = data.toString().split(a2_cX)
system.log(JSON.stringify(arL))
system.log(arL.length)


for(i=1;i< arL.length;i++)
{
tt = arL[i]
artt= tt.toString().split(a3_cY)
cx = +artt[0]
system.log('cx - '+cx)
artt= artt[1].split(a4_R)
cy = +artt[0]
system.log('cy - '+cy)
artt2 = artt
artt= artt[1].split(a5_p1A)
aR = +artt[0]
system.log('aR - '+aR)

if(isNaN(aR))
{


artt2= artt2[1].split('\n')
aR = +artt2[0]
system.log('aR - '+aR)

c.AddCircle(cx, cy, aR)
continue
}

artt= artt[1].split(a6_p2A)
p1A = +artt[0]
system.log('p1A - '+p1A)
artt= artt[1].split('\n')
p2A = +artt[0]
system.log('p2A - '+p2A)
/*
a1_sloy + sloy + "\n" +
a2_cX + c[i].Center.x + "\n" +
a3_cY + c[i].Center.y + "\n" +
a4_R + c[i].ArcRadius() + "\n" +
a5_p1A + p1A + "\n" +
a6_p2A + p2A + "\n"
*/

p1A = p1A/ (180 / Math.PI)
p2A = p2A/ (180 / Math.PI)
p1y = aR* Math.sin(p1A)
p1x = aR* Math.cos(p1A)
p2y = aR* Math.sin(p2A)
p2x = aR* Math.cos(p2A)

p1 = NewPoint(p1x+cx, p1y+cy)
p2 = NewPoint(p2x+cx, p2y+cy)
centre = NewPoint(cx, cy)
c.AddArc(p1, p2, centre, true)

}



////////////----------ДУГИ и Круги





p.Build()
/*


for(i=0;i< data.length;i++)
{
//alert('!!!'+data[i].sloy)
if(sloi.indexOf(data[i].sloy)== -1)
{
sloi.push(data[i].sloy)
}

}

tdxf = t1

for(i=0;i< sloi.length;i++)
{
tdxf = tdxf + t2_doSloya + sloi[i] + "\n" + t3_PosleSloya
}


tdxf = tdxf + t4_DoObjektov

for(ic=0;ic< data.length;ic++)
{
c = data[ic].c
sloy = data[ic].sloy
for (i = 0; i < c.Count; i++) {
if (c[i].ElType == 1) {

tdxf = tdxf

+ l1_sloy + sloy + "\n"
+ l2_x1 + c[i].Pos1.x + "\n"
+ l3_y1 + c[i].Pos1.y + "\n"
+ l4_x2 + c[i].Pos2.x + "\n"
+ l5_y2 + c[i].Pos2.y + "\n"






} else if (c[i].ElType == 2) {
p1A = c[i].Pos1Angle() * (180 / Math.PI)
p2A = c[i].Pos2Angle() * (180 / Math.PI)
if(!c[i].ArcDir)
{
pp=p1A
p1A = p2A
p2A = pp
}
//else {dir='1'}
tdxf = tdxf + a1_sloy + sloy + "\n" + a2_cX + c[i].Center.x + "\n" + a3_cY + c[i].Center.y + "\n" + a4_R + c[i].ArcRadius() + "\n" + a5_p1A + p1A + "\n" + a6_p2A + p2A + "\n"
} else if (c[i].ElType == 3) {
tdxf = tdxf + c1_sloy + sloy + "\n" + c2_cX + c[i].Center.x + "\n" + c3_cY + c[i].Center.y + "\n" + c4_R + c[i].CirRadius + "\n"
}
}
}
tdxf = tdxf + kanec
*/
// system.writeTextFile(ActiveFilePathNomenklatury()+ 'ЧПУ\\' + data[0].Pos + '.dxf', tdxf)
}

function DXF(data) {

t1 = "0\nVISION3D DXF\n0\nSECTION\n2\nHEADER\n9\n$ACADVER\n 1\nAC1015\n 9\n$ACADMAINTVER\n 70\n6\n 9\n$DWGCODEPAGE\n 3\nANSI_1251\n 9\n$INSBASE\n 10\n0.0\n 20\n0.0\n 30\n0.0\n 9\n$EXTMIN\n10\n0.0\n20\n0.0\n9\n$EXTMAX\n10\n1000.0\n20\n1000.0\n9\n$LINMIN\n10\n0.0\n20\n0.0\n9\n$LINMAX\n10\n1000.0\n20\n1000.0\n0\nENDSEC\n0\nSECTION\n2\nTABLES\n0\nTABLE\n2\nLTYPE\n70\n1\n0\nLTYPE\n2\nCONTINUOUS\n70\n64\n3\nSolid line\n72\n65\n73\n0\n40\n0.000000\n0\nENDTAB\n0\nTABLE\n2\n"
//alert(t1)
t2_doSloya = "LAYER\n70\n6\n0\nLAYER\n 5\n110D0\n330\n2\n100\nAcDbSymbolTableRecord\n100\nAcDbLayerTableRecord\n 2\n"
//alert(t2_doSloya)
t3_PosleSloya = "70\n64\n 62\n7\n 6\nCONTINUOUS\n0\n"
//alert(t3_PosleSloya)
t4_DoObjektov = "ENDTAB\n0\nTABLE\n2\nSTYLE\n70\n0\n0\nENDTAB\n0\nENDSEC\n0\nSECTION\n2\nBLOCKS\n0\nENDSEC\n0\nSECTION\n2\nENTITIES\n"
//alert(t4_DoObjektov)
l1_sloy = "0\nLINE\n 5\n110D1\n330\n1F\n100\nAcDbEntity\n 8\n"
//alert(l1_sloy)
l2_x1 = "6\nCONTINUOUS\n 62\n7\n370\n60\n100\nAcDbLine\n 10\n"
//alert(l2_x1)
l3_y1 = " 20\n"
l4_x2 = " 11\n"
l5_y2 = " 21\n"

a1_sloy = " 0\nARC\n 5\n110D2\n330\n1F\n100\nAcDbEntity\n 8\n"

a2_cX = " 6\nCONTINUOUS\n 62\n7\n370\n60\n100\nAcDbCircle\n 10\n"
//alert(a2_cX)

a3_cY = " 20\n"
a4_R = " 40\n"
a5_p1A = "100\nAcDbArc\n 50\n"
a6_p2A = " 51\n"


c1_sloy = "0\nCIRCLE\n 5\n110D3\n330\n1F\n100\nAcDbEntity\n 8\n"
c2_cX = "6\nCONTINUOUS\n 62\n7\n370\n60\n100\nAcDbCircle\n 10\n"
c3_cY = " 20\n"
c4_R = " 40\n"
kanec = "0\nENDSEC\n0\nEOF"


sloi = []
for(i=0;i< data.length;i++)
{
//alert('!!!'+data[i].sloy)
if(sloi.indexOf(data[i].sloy)== -1)
{
sloi.push(data[i].sloy)
}

}

tdxf = t1

for(i=0;i< sloi.length;i++)
{
tdxf = tdxf + t2_doSloya + sloi[i] + "\n" + t3_PosleSloya
}


tdxf = tdxf + t4_DoObjektov

for(ic=0;ic< data.length;ic++)
{
c = data[ic].c
sloy = data[ic].sloy
for (i = 0; i < c.Count; i++) {
if (c[i].ElType == 1) {

tdxf = tdxf

+ l1_sloy + sloy + "\n"
+ l2_x1 + c[i].Pos1.x + "\n"
+ l3_y1 + c[i].Pos1.y + "\n"
+ l4_x2 + c[i].Pos2.x + "\n"
+ l5_y2 + c[i].Pos2.y + "\n"






} else if (c[i].ElType == 2) {
p1A = c[i].Pos1Angle() * (180 / Math.PI)
p2A = c[i].Pos2Angle() * (180 / Math.PI)
if(!c[i].ArcDir)
{
pp=p1A
p1A = p2A
p2A = pp
}
//else {dir='1'}
tdxf = tdxf +

a1_sloy + sloy + "\n" +
a2_cX + c[i].Center.x + "\n" +
a3_cY + c[i].Center.y + "\n" +
a4_R + c[i].ArcRadius() + "\n" +
a5_p1A + p1A + "\n" +
a6_p2A + p2A + "\n"


} else if (c[i].ElType == 3) {
tdxf = tdxf +

c1_sloy + sloy + "\n" +
c2_cX + c[i].Center.x + "\n" +
c3_cY + c[i].Center.y + "\n" +
c4_R + c[i].CirRadius + "\n"

}
}
}
tdxf = tdxf + kanec

// system.writeTextFile(ActiveFilePathNomenklatury()+ 'ЧПУ\\' + data[0].Pos + '.dxf', tdxf)
}


[свернуть]
v22884 вне форума   Ответить с цитированием Вверх
6 пользователя(ей) сказали cпасибо:
Старый 07.09.2017, 11:11   #1369
Uncle
VIP
 
Аватар для Uncle
 
Регистрация: 31.10.2009
Адрес: Рівне. УкраЇна
Сообщений: 10,580
Сказал(а) спасибо: 14,588
Поблагодарили 20,024 раз(а) в 6,492 сообщениях
Вес репутации: 5257
Uncle репутация неоспоримаUncle репутация неоспоримаUncle репутация неоспоримаUncle репутация неоспоримаUncle репутация неоспоримаUncle репутация неоспоримаUncle репутация неоспоримаUncle репутация неоспоримаUncle репутация неоспоримаUncle репутация неоспоримаUncle репутация неоспорима
По умолчанию

Цитата:
Сообщение от v22884 Посмотреть сообщение
Из DXF в Контур Панели:
Может быть туплю... Часто использую контур в DXF для редактирования контура панели и скрипт конечно же заинтересовал... Но как им пользоваться?
__________________
Уж лучше беспокойство в сомнении, чем успокоенность в заблуждении. .
(Мандзони Алессандро)
------------------------------------
Троллей не кормлю...
Uncle вне форума   Ответить с цитированием Вверх
Старый 21.09.2017, 14:11   #1370
Shink1rou
Пользователь
 
Регистрация: 29.06.2017
Сообщений: 31
Сказал(а) спасибо: 5
Поблагодарили 15 раз(а) в 4 сообщениях
Вес репутации: 89
Shink1rou на пути к лучшему
По умолчанию

при помощи скриптов невозможно изменить наименование изделия в салоне? вроде бы составил простой скрипт, но при выполнении его выдает критическую ошибку. в принципе устраивало бы изменение артикула, но при экспорте в эксель артикулы обрезаются до 25 знаков
Shink1rou вне форума   Ответить с цитированием Вверх
Ответ

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

Опции темы
Опции просмотра

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
БАЗИС 8 - Скрипты Igor_482 Базис-мебельщик. Скрипты 1524 07.12.2022 19:53
БАЗИС 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


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


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

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