Перейти к содержанию

Рекомендуемые сообщения

Можно ли автоматически нарисовать полилинию (отрезки, точки...) имея координаты x/y, как например в автокаде и также получить списком координаты выбраного объекта (вершин полилинии)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Команды Список (List) в nanoCAD нет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Команды Список (List) в nanoCAD нет.

Команды в том то и дело нет но как всетаки можно их извлечь :angry:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Можно извлечь командой Координаты (меню Сервис - Сведения).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Можно извлечь командой Координаты (меню Сервис - Сведения).

Можно получается но если речь идет о сто точек, то есть большой полигон :blink:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

на эту тему что-то было уже на форуме... например вот : http://forum.nanocad.ru/index.php?showtopic=4256

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

на эту тему что-то было уже на форуме... например вот : http://forum.nanocad...?showtopic=4256

Хорошо но, не очень, координаты в одну строку где X где Y не понять, а хотелось бы в столбик :wacko:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ну, друг мой, нельзя же быть таким беспомощным! это же скрипт, его всегда можно под свои нужды отрихтовать!

меняем

echo(coords);

на

for (i = 0; i<coords.length; i += 2)
{
 ThisDrawing.Utility.Prompt(coords[i] + "," + coords[i+1]);
}

и получаем в столбик :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ну, друг мой, нельзя же быть таким беспомощным! это же скрипт, его всегда можно под свои нужды отрихтовать!

меняем

echo(coords);

на

for (i = 0; i<coords.length; i += 2)
{
 ThisDrawing.Utility.Prompt(coords[i] + "," + coords[i+1]);
}

и получаем в столбик :)

Огромное СПОСИБО :D получилось.

Остался только вопрос как имея координаты нарисовать полилинию

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Остался только вопрос как имея координаты нарисовать полилинию

По вводу координат списком замечание передано разработчикам.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Остался только вопрос как имея координаты нарисовать полилинию

Дык, ровно так же - скриптом! Они (скрипты), конечно, довольно чудные, но с их помощью можно много чего сотворить! :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Остался только вопрос как имея координаты нарисовать полилинию

Дык, ровно так же - скриптом! Они (скрипты), конечно, довольно чудные, но с их помощью можно много чего сотворить! :)

Только вот в скриптах я ноль :unsure:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну, если совсем примитивно делать - то как-то вот так :

var pts = new Array();
pts[0] = 0;
pts[1] = 0;
pts[2] = 0;
pts[3] = 100;
pts[4] = 100;
pts[5] = 0;
pts[6] = 200;
pts[7] = 100;
pts[8] = 0;
pts[9] = 200;
pts[10] = 000;
pts[11] = 0;
pts[12] = 0;
pts[13] = 0;
pts[14] = 0;

var pts2 = ThisDrawing.Utility.CreateTypedArrayFromJSArray(5, pts);
ThisDrawing.ModelSpace.AddPolyline(pts2);

А вообще, скрипты - штука полезная, да и несложная. Позволяют соорудить для себя массу полезняшек... :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

скрипты очень круто изучать на примерах ;)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для меня тоже темный лес хотя значимость я их понял. И всё таки помагите нарисовать скриптом полилинию или отрезки имея текстовый файл с координатами:

124.34,456.32

245.12,478.23

174.56,389.10

и т.д.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

да задачка не стоит выеденного яйца!

 

var fso = new ActiveXObject("Scripting.FileSystemObject");
var ts = fso.OpenTextFile("c:\\coords.txt", 1);
var done = false;
var re = /\s*,\s*/ // regular expression - splits by "," & remove unneeded spaces
var pline_coords = new Array();
while (!done && !ts.AtEndOfStream)
{
 var s = ts.ReadLine();
 var sCoords = s.split(re);
 if (sCoords.length < 2)
 {
done = true;
 } else
 {
pline_coords[pline_coords.length] = Number(sCoords[0]); // x coordinate
pline_coords[pline_coords.length] = Number(sCoords[1]); // y coordinate
if (sCoords.length > 2)
  pline_coords[pline_coords.length] = Number(sCoords[2]); // z coordinate if exist
else
  pline_coords[pline_coords.length] = 0;		  // z coordinate omited
 }
}
var pline_pts = ThisDrawing.Utility.CreateTypedArrayFromJSArray(5, pline_coords);
ThisDrawing.ModelSpace.AddPolyline(pline_pts);

 

данные, как нетрудно заметить, читаются из файла C:\COORDS.TXT примерно следующего содержания :

0, 0
100, 0
100, 100
0, 100
0, 0

если хочется выбрать файл вручную, то это можно сделать с помощью ThisDrawing.Utility.ChooseFile

 

зы : учите матчасть! :)

Изменено пользователем Lion007

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

зы : учите матчасть! :)

 

Мат уже выучил. Осталось выучить часть.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ребят, спасибо за помощь в скрипте, но у меня они работают почему-то только на версии 2.5, а на 3.7 free после запуска вообще ничего не происходит. Может я чего-то не знаю?

Изменено пользователем berkio

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ребят, спасибо за помощь в скрипте, но у меня они работают почему-то только на версии 2.5, а на 3.7 free после запуска вообще ничего не происходит. Может я чего-то не знаю?

как-то это категорически странно. на всякий случай - проверил, работает и в 3.7, и в следующих версиях без проблем. рискну предположить одну вещь : если для проверки использовался файлик с координатами, который я в качестве примера приводил, то в новом документе свежесозданой полилинии действительно не видно - она получается очень маленькая, и надо поближе подъехать, чтобы ее заметить. если же дело не в бобине... тогда нужно подробное описание чего и как делается :)

Изменено пользователем Lion007

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...

×
×
  • Создать...