Jump to content

параметрические объекты СПДС


Recommended Posts

Ну, при желании его всегда можно удалить или просто убрать "непечатный слой" с глаз долой. А вообще, у этого лишнего элемента есть достаточно большой функционал:

Например:

  • Перенести всю группу целиком (не выбирая объекты)
  • Скопировать группу
  • Добавить / Удалить объекты группы

Не стоит оценивать функционал групп по названию :-)

 

 

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

Про непечатный слой - разумеется, можно, но это лишние операции, а если можно обойтись без них, то...? =)

Link to comment
Share on other sites

Всем здравствуйте. Я начинающий пользователь по разработке своих параметрических объектов в СПДС в Autocad. Что-то уже получается на основе выложенных тут объектов и разборе скриптов.

Но вот пока не могу разобраться с тем, чтобы ручка объекта (например, которая удлиняет его) перемещалась только скажем по горизонтали, даже при выключенном режиме ORTHO. Подскажите пожалуйста.

Связь новая.zip

Link to comment
Share on other sites

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

Да вроде ничего там необычного не должно быть.

Посмотрите вот в это примере

Последовательный выбор по 4-м направлениям и ручка поворота.zip

  • Like 2
Link to comment
Share on other sites

Вот такая вот в итоге получилась красота. Мож кому пригодится.

 

ДОП: с "sptblprep", "spregenobj" и "sprefshow", повешенными на команды и кнопки, просто огонь получается. :wub:

Объемы ЗМ.7z

Edited by Mитька
  • Like 2
Link to comment
Share on other sites

Да вроде ничего там необычного не должно быть.

Посмотрите вот в это примере

Я извиняюсь. Просмотрел весь скрипт. Пробовал изменять в секции OnMoveGripPoint в своём объекте (по вашему примеру), но так и не получилось ничего. MCAD направьте пожалуйста на правильный путь. Может быть я не в той секции что-то прописываю или же в геометрии распознавания должно быть что-то добавлено :(

Link to comment
Share on other sites

Я извиняюсь. Просмотрел весь скрипт. Пробовал изменять в секции OnMoveGripPoint в своём объекте (по вашему примеру), но так и не получилось ничего. MCAD направьте пожалуйста на правильный путь. Может быть я не в той секции что-то прописываю или же в геометрии распознавания должно быть что-то добавлено :(

 

Посмотрел ваш объект. Загрузил себе - потянул за ручку - да, перемещается не только по горизонтали. Залез в скрипт, начал что-то там своё писать, потом посмотрел ,что написано у вас - вроде всё правильно. Удалил своё, обновил ваш объект - работает как надо - перемещает только по горизонтали, куда бы ручку не тянул.

Удалил его из базы, загрузил повторно - всё работает хорошо.

Чёт странности. Скрип у вас правильный, вроде как)

  • Like 1
Link to comment
Share on other sites

Вот такая вот в итоге получилась

Начал делать пример с "Универсальным маркером" , для исключения необходимости ставить дополнительные выноски. И наткнулся, что площадь считается у вас "Под стеной" :-( Так и должно быть?

http://www.youtube.com/watch?v=_P_Y_UwlYcQ

 

ДОП: с "sptblprep", "spregenobj" и "sprefshow", повешенными на команды и кнопки, просто огонь получается. :wub:/>
;-(
Link to comment
Share on other sites

Вот такая вот в итоге получилась

Начал делать пример с "Универсальным маркером" , для исключения необходимости ставить дополнительные выноски. И наткнулся, что площадь считается у вас "Под стеной" :-( Так и должно быть?

 

Да, так и должно быть, там фасадка навесная, если я правильно понял, о чём вы.

 

Про аналог площади - была такая мысль, но с площадью по внутренней точке у нас есть большая трудность периодически (нана весьма рандомно либо её не берет, либо берет не ту, рисует какие-то невидимые глазу фантомные контуры и т.д.), а отредактировать границы площади, полученной таким способом, за ручки потом нельзя. Поэтому и используем проверенные стандартные элементы. Хотя, как дополнительный элемент я её, пожалуй, действительно сделаю. местами может быть весьма удобно.

Edited by Mитька
Link to comment
Share on other sites

Посмотрел ваш объект. Загрузил себе - потянул за ручку - да, перемещается не только по горизонтали. Залез в скрипт, начал что-то там своё писать, потом посмотрел ,что написано у вас - вроде всё правильно. Удалил своё, обновил ваш объект - работает как надо - перемещает только по горизонтали, куда бы ручку не тянул.

Удалил его из базы, загрузил повторно - всё работает хорошо.

Чёт странности. Скрип у вас правильный, вроде как)

А могу я вас попросить этот (мой) объект, который заработал экспортнуть в mcd и выложить здесь я попробую загрузить его в базу. С моим объектом пока так и не заработало - удалял из базы и снова загружал - изменений нет :(

Link to comment
Share on other sites

А могу я вас попросить этот (мой) объект, который заработал экспортнуть в mcd и выложить здесь я попробую загрузить его в базу. С моим объектом пока так и не заработало - удалял из базы и снова загружал - изменений нет :(

 

После повторного просмотра, вроде нашёл косяк)

if (NMovingGrip == 1){
//  rL = vecLen(pntGrip0 - pntGrip1);
rL = cos(angleTwoPi(vecDirection, pntGrip1 - pntGrip0))*vecLen(pntGrip0 - pntGrip1);
//  rL = rL + ((OXPlane - pntGrip1) - (rL));
rL = max (rSH; int (rL/5+0.5)*5);
//  rSM = (rL-(int(rL/rSH)*rSH))/2;
n = 1 + max(1,int(rL/rSH);
vecDirection = pntGrip1 - pntGrip0;

 

Удалите vecDirection = pntGrip1 - pntGrip0, должно заработать)

Link to comment
Share on other sites

Было:

 

if (NMovingGrip == 1){
//  rL = vecLen(pntGrip0 - pntGrip1);
//  rL = cos(angleTwoPi(vecDirection, pntGrip1 - pntGrip0))*vecLen(pntGrip0 - pntGrip1); // Тут
rL = OXPlane - pntGrip1;// Вправо
//  rL = rL + ((OXPlane - pntGrip1) - (rL));
 rL = max (rSH; int (rL/5+0.5)*5);
//  rSM = (rL-(int(rL/rSH)*rSH))/2;
 n = 1 + max(1,int(rL/rSH);
 vecDirection = pntGrip1 - pntGrip0;

}

Стало:

if (NMovingGrip == 1){
rL = pntGrip1 - pntGrip0;
rL = OXPlane - pntGrip1;// Вправо
rL = max (rSH; int (rL/5+0.5)*5);
n = 1 + max(1,int(rL/rSH);


}

Test.zip

  • Like 2
Link to comment
Share on other sites

Подскажите, как правильно работать с оператором else в скрипте?

 

Что хочу сделать:

Блокировать редактирование определённого бокса в форме, при выборе исполнений объекта отличающихся от заданных.

 

Как решаю:

Пишу пользовательскую функцию

 

Function FormEdit {
if(strDesignName == "Implementation1")||
(strDesignName == "Implementation2") {Form.editbox255.Enabled = TRUE};
else {Form.editbox255.Enabled = FALSE};
};

 

Помещаю её в OnDialogChanged

 

function OnDialogChanged
{
FormEdit ();
};

 

Почему не работает?

Как я понимаю, оператор else должен срабатывать, если оператор if перед ним ложен.

 

При этом, если я заменю

else {Form.editbox255.Enabled = FALSE};

На условное

if(strDesignName != "Implementation1") {Form.editbox255.Enabled = FALSE};

то во время выбора исполнения объекта, бокс блокируется, если выбрано какое-то другое исполнение, акромясь Implementation1

 

UPD. Знаю, что решается мой случай просто. Если перед If'ами поставить Form.editbox255.Enabled = FALSE; и убрать else в принципе.

Но хотелось бы знать, как правильно работать с else)

Edited by dromandon
Link to comment
Share on other sites

синтаксис млин ;

пробуй так (не проверял)

Function FormEdit {
 if((strDesignName == "Implementation1")||(strDesignName == "Implementation2")) {
  Form.editbox255.Enabled = TRUE;
 } else {
 Form.editbox255.Enabled = FALSE;
 }
}

после фигурной скобки не надо ; это конец строки-выражения

ну и выражение

if (условие)

upd он у тебя проверяет первое условие в скобках (strDesignName == "Implementation1")

а второе после И тупо не видит )))

не жалейте скобок)))

Edited by doctorraz
  • Like 3
Link to comment
Share on other sites

синтаксис млин ;

после фигурной скобки не надо ; это конец строки-выражения

Угу, в этом и была проблема, программированием никогда не занимался, по сути, только начинаю что-то чуть по чуть изучать)

ну и выражение

if (условие)

Ага, у себя это поправил, а в сообщение на форуме забыл)

 

Спасибо!)

Link to comment
Share on other sites

Не подскажете, можно где-нить дёрнуть пример lsp-скрипта, который заменяет в файле слой А на слой Б...? Т.е. не переименовывает слой А, а перебрасывает объекты из А в Б, предварительно, если надо, этот самый Б создав, а А в последствии удалив..?

 

АПД: или просто примеры подобных операций (глядишь и сам сращу в один).

АПД2: и кстати, нигде на форуме у нас не собрана (ну а вдруг) коллекция лсп-скриптов пользовательских для изучения..?

АПД3: или хоть сколько-то базовой инструкции для чайников, с чего начать.

Edited by Mитька
Link to comment
Share on other sites

Не подскажете, можно где-нить дёрнуть пример lsp-скрипта, который заменяет в файле слой А на слой Б...? Т.е. не переименовывает слой А, а перебрасывает объекты из А в Б, предварительно, если надо, этот самый Б создав, а А в последствии удалив..?

 

АПД: или просто примеры подобных операций (глядишь и сам сращу в один).

АПД2: и кстати, нигде на форуме у нас не собрана (ну а вдруг) коллекция лсп-скриптов пользовательских для изучения..?

 

А чем не подходит функция стандартная нано удаления слоя с перемещением всех объектов на выбраный слой?

Лиспы под нано есть где-то на форуме, но их там вроде не так и много)

Link to comment
Share on other sites

Хочется сделать это принудительно. Т.е. чтобы при открытии нанокада+файла, автоматом запускался скрипт очистки. Не у себя на компе, а на всех.

Edited by Mитька
Link to comment
Share on other sites

Да, так и должно быть, там фасадка навесная, если я правильно понял, о чём вы.

Да, правильно. Но и площадь должна браться именно так же. И так и так нужно это учитывать

нана весьма рандомно либо её не берет, либо берет не ту, рисует какие-то невидимые глазу фантомные контуры и т.д.

А вот про это можно поподробнее. Желательно с примером :-(

Link to comment
Share on other sites

Mитька, делай тему тут http://forum.nanocad.ru/index.php?showforum=87 если хочешь, здесь это оффтоп(((

Edited by doctorraz
  • Like 2
Link to comment
Share on other sites

Да, так и должно быть, там фасадка навесная, если я правильно понял, о чём вы.

Да, правильно. Но и площадь должна браться именно так же. И так и так нужно это учитывать

нана весьма рандомно либо её не берет, либо берет не ту, рисует какие-то невидимые глазу фантомные контуры и т.д.

А вот про это можно поподробнее. Желательно с примером :-(

 

Перепроверил. На площади я пожалуй, зря ругаюсь. Они берут контуры более-менее корректно (кроме разве что того что учитывают скрытые объекты, что в принципе тоже легко обходится слоями при желании). Единственный минус - если выбрать площадь (или полную площадь) по внутренней точке, часто приходится много раз тыкать внутрь контура, т.к. он её далеко не 1 первого раза находит. С записьювидео у меня тут трабблы вечные, потому пруфа не будет. =(

 

нана весьма рандомно либо её не берет, либо берет не ту, рисует какие-то невидимые глазу фантомные контуры и т.д. - это целиком и полностью касается штриховок. Вот они ведут себя мерзко (формат такой: нарисуйте круг, разделите его линией на 1 половины, удалите линию и заштрихуйте круг - заштрихуется только половина круга так, как будто линия ещё там). А на загруженных чертежах, где всё по 100 раз туда-сюда перемещалось штриховать по внутренней точки вообще мертвяк. Начинается "Поиск контура", который может несколько минут висеть, а потом найдётся мельчайший его кусочек, т.к. см. выше... Не знаю, откуда такое растёт, но у нас прям повсеместное явление. Возможно таскается из файла в файл с чем-то, мож глюк платформы.

Но если скажете, что "ни у кого такого никогда не было", то я задумаюсь, пожалуй...

 

А если возвращаться к доп маркеру площади, то делать её таким способом - не наш вариант, т.к. её НЕ ПРОВЕРИШЬ. Если её делать, то вязать не на фактическую площадь некой зоны, а на значение с СПДС-площади (а саму СПДС площадь пихать в невидимые слои). Связь проверяется легко и контур площади тоже.

  • Like 1
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

  • Tell a friend

    Love Официальный форум компании Нанософт? Tell a friend!
×
×
  • Create New...