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

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

Реклама

Реклама на портале PROMEBELclub
шкаф-купе со скидкой по акции
Реклама на портале PROMEBELclub

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

Сказал(а) спасибо: 28
Поблагодарили 562 раз(а) в 70 сообщениях
Версия для печати Отправить по электронной почте
Igor_482 Igor_482 вне форума 13.01.2014, 11:22
Рейтинг: (34 голосов - 2.79 средняя оценка)

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

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..
Просмотров: 432336
Ответить с цитированием Вверх
Старый 08.08.2017, 20:14   #1361
EVGENTAR
Новичок
 
Регистрация: 28.07.2017
Сообщений: 3
Сказал(а) спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщениях
Вес репутации: 0
EVGENTAR пока не определено
По умолчанию

Большое спасибо Letos за помощь.
Где Вы находите все эти функции и как узнаете правильность записи?
EVGENTAR вне форума   Ответить с цитированием Вверх
Старый 08.08.2017, 23:56   #1362
Igor_482
VIP
 
Аватар для Igor_482
 
Регистрация: 03.09.2008
Сообщений: 129
Сказал(а) спасибо: 28
Поблагодарили 562 раз(а) в 70 сообщениях
Вес репутации: 236
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 вне форума   Ответить с цитированием Вверх
8 пользователя(ей) сказали cпасибо:
Старый 09.08.2017, 11:52   #1363
Letos
Новичок
 
Регистрация: 28.06.2017
Сообщений: 19
Сказал(а) спасибо: 3
Поблагодарили 48 раз(а) в 13 сообщениях
Вес репутации: 0
Letos на пути к лучшему
По умолчанию

Цитата:
Сообщение от EVGENTAR Посмотреть сообщение
Где Вы находите все эти функции и как узнаете правильность записи?
В принципе, в десятке можно скрипт прогнать через отладчик VSCode, в котором уже можно посмотреть все доступные свойства и методы объектов. А там уже по имени свойства/метода примерно можно догадаться для чего оно нужно.
Letos вне форума   Ответить с цитированием Вверх
2 пользователя(ей) сказали cпасибо:
Ovsyanicov (09.08.2017), volunka (09.08.2017)
Старый 11.08.2017, 17:57   #1364
Uncle
Модератор
 
Аватар для Uncle
 
Регистрация: 31.10.2009
Адрес: Рівне. УкраЇна
Сообщений: 7,572
Сказал(а) спасибо: 12,990
Поблагодарили 14,896 раз(а) в 4,709 сообщениях
Вес репутации: 3853
Uncle репутация неоспоримаUncle репутация неоспоримаUncle репутация неоспоримаUncle репутация неоспоримаUncle репутация неоспоримаUncle репутация неоспоримаUncle репутация неоспоримаUncle репутация неоспоримаUncle репутация неоспоримаUncle репутация неоспоримаUncle репутация неоспорима
По умолчанию

Коллеги, можно ли написать такой скрипт, что бы с помощью его можно было редактировать профиль канта при облицовке торцов панелей?
__________________
Уж лучше беспокойство в сомнении, чем успокоенность в заблуждении. .
(Мандзони Алессандро)
------------------------------------
Троллей не кормлю...
Uncle вне форума   Ответить с цитированием Вверх
Старый 22.08.2017, 09:25   #1365
v22884
Местный
 
Регистрация: 17.04.2014
Адрес: д.Сибирцево, ателье-уют.рф
Сообщений: 383
Сказал(а) спасибо: 180
Поблагодарили 748 раз(а) в 149 сообщениях
Вес репутации: 230
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 вне форума   Ответить с цитированием Вверх
Пользователь сказал cпасибо:
zorro (22.08.2017)
Старый 22.08.2017, 14:28   #1366
Igor_482
VIP
 
Аватар для Igor_482
 
Регистрация: 03.09.2008
Сообщений: 129
Сказал(а) спасибо: 28
Поблагодарили 562 раз(а) в 70 сообщениях
Вес репутации: 236
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   #1367
v22884
Местный
 
Регистрация: 17.04.2014
Адрес: д.Сибирцево, ателье-уют.рф
Сообщений: 383
Сказал(а) спасибо: 180
Поблагодарили 748 раз(а) в 149 сообщениях
Вес репутации: 230
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   #1368
v22884
Местный
 
Регистрация: 17.04.2014
Адрес: д.Сибирцево, ателье-уют.рф
Сообщений: 383
Сказал(а) спасибо: 180
Поблагодарили 748 раз(а) в 149 сообщениях
Вес репутации: 230
v22884 - просто великолепная личностьv22884 - просто великолепная личностьv22884 - просто великолепная личностьv22884 - просто великолепная личностьv22884 - просто великолепная личностьv22884 - просто великолепная личностьv22884 - просто великолепная личность
По умолчанию

Approximate()

Сообщите, пожалуйста, параметры.
Она, наверно, даёт отрезки, или точки.?
v22884 вне форума   Ответить с цитированием Вверх
Старый 07.09.2017, 07:00   #1369
v22884
Местный
 
Регистрация: 17.04.2014
Адрес: д.Сибирцево, ателье-уют.рф
Сообщений: 383
Сказал(а) спасибо: 180
Поблагодарили 748 раз(а) в 149 сообщениях
Вес репутации: 230
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 вне форума   Ответить с цитированием Вверх
5 пользователя(ей) сказали cпасибо:
AlexBolton (07.09.2017), Igor_482 (07.09.2017), Ovsyanicov (07.09.2017), Uncle (07.09.2017), zorro (07.09.2017)
Старый 07.09.2017, 11:11   #1370
Uncle
Модератор
 
Аватар для Uncle
 
Регистрация: 31.10.2009
Адрес: Рівне. УкраЇна
Сообщений: 7,572
Сказал(а) спасибо: 12,990
Поблагодарили 14,896 раз(а) в 4,709 сообщениях
Вес репутации: 3853
Uncle репутация неоспоримаUncle репутация неоспоримаUncle репутация неоспоримаUncle репутация неоспоримаUncle репутация неоспоримаUncle репутация неоспоримаUncle репутация неоспоримаUncle репутация неоспоримаUncle репутация неоспоримаUncle репутация неоспоримаUncle репутация неоспорима
По умолчанию

Цитата:
Сообщение от v22884 Посмотреть сообщение
Из DXF в Контур Панели:
Может быть туплю... Часто использую контур в DXF для редактирования контура панели и скрипт конечно же заинтересовал... Но как им пользоваться?
__________________
Уж лучше беспокойство в сомнении, чем успокоенность в заблуждении. .
(Мандзони Алессандро)
------------------------------------
Троллей не кормлю...
Uncle вне форума   Ответить с цитированием Вверх
Ответ

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

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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скрипты в БАЗИС 8 Igor_482 Базис-мебельщик 8.0 931 26.09.2017 03:43
БАЗИС 9 nayrogi Базис-мебельщик 9.0 591 25.09.2017 17:27
Заявки на скрипты dr_john Система БАЗИС 37 01.03.2016 09:36
БАЗИС-ЧПУ 8 chingisnah Базис-мебельщик 8.0 116 17.07.2015 23:09
Базис-7,"Народный Базис"и Windows-8 sergeyzak18 "НАРОДНЫЙ" базис 23 15.01.2014 22:37


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


Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
© 2007-2017 PROMEBEL