|
||
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
кнопка для вывода координаты Z заданной точки.
инженер-конструктор
Регистрация: 20.05.2010
Сообщений: 20
|
||
Просмотров: 9138
|
|
||||
Цитата:
![]()
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
![]() |
|
||||
инженер-конструктор Регистрация: 20.05.2010
Сообщений: 20
![]() |
Цитата:
![]() Цитата:
будешь в москве, я тебе пива куплю ![]() но для начала мне нужно чтото почитать, где будет написано как создать макрос и куда этот код вставить)) я правильно понял, он ставит координаты для выделенного массива точек?
__________________
ломать - не строить : ) Последний раз редактировалось alexdub, 18.10.2010 в 16:59. |
|||
![]() |
|
||||
Инженер Регистрация: 02.10.2008
С-Пб
Сообщений: 3,706
|
Цитата:
"Public Const heighttxt = 100" - це высота текста. Alt + F8 > диспетчер VBA > новый > Редактор VBA > вставить модуль. В модуль вставить код, сохранить как проект VBA. Подгрузить в акад (сервис - загрузка приложений или макросы > диспетчер VBA > загрузить, ну и запустить...
__________________
...Не пытайся гнуть ты ложку, Не вяжи её узлом. Ложка - ложка понарошку, А по правде, - это лом! |
|||
![]() |
|
||||
инженер-конструктор Регистрация: 20.05.2010
Сообщений: 20
![]() |
Цитата:
вопрос следующий: как сделать, чтобы он выводил только целые значения?
__________________
ломать - не строить : ) |
|||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
Дружище ты б написал все сразу, да 2 примера выложил (до и после), этож уже не первый раз - потом начнется, а можно чтоб еще и блоки, да на слой ХХХ и т.д.
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
![]() |
|
||||
инженер-конструктор Регистрация: 20.05.2010
Сообщений: 20
![]() |
мне только целые числа и все.
координату Y выводит целомй, а X и Z c 11-ю знаками после запятой. Цитата:
в общем сейчас докину пример "до" и "после".
__________________
ломать - не строить : ) Последний раз редактировалось alexdub, 19.10.2010 в 10:45. Причина: ошибся |
|||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
Если тебе лень нарисовать - то мне лень понимать - что тебе нужно только z или x,y,z? где их рисовать (на высоте точки или "в нуле"), чтобы написать программу надо прежде всего понять что нужно, то что нужно для написании программы ты не знаешь (иначеб смог сам написать) - поэтому и говорят - ВЫЛОЖИ ПРИМЕР.
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
![]() |
|
||||
инженер-конструктор Регистрация: 20.05.2010
Сообщений: 20
![]() |
вот, выложил. считаем, что слой "отклонения" для вставки координат Z и стиль текста "Standart" уже есть в файле. текст должен стоять "в нуле". расположение текста как в примере, чуть выше точки, середина - чуть левее точки. если значение координаты положительное, то писать "+", если 0, то писать "+0".
с X и Y я просто экспериментировал. еще пытался всунуть: Round(expression [,numdecimalplaces]). Но видимо не туда)) вроде бы все ![]()
__________________
ломать - не строить : ) |
|||
![]() |
|
||||
специалист по околачиванию грушевых деревьев Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 811
|
|
|||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
Чего?? А вызывать ты ее тоже анонимно будешь?
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
То Пастор - если Вы привыкли писать на vb, например, то это не значит, что на лиспе надо писать так-же - lambda четко выражает область определения аргумента - НЕ ДОЛЖНО БЫТЬ В ЛИСПЕ ПЕРЕМЕННЫХ - там аргументы с четко заданной областью видимости, сделано это для программ чуть побольше чем Ваша (в С++ это-же (с оговорками) называеться объектами), не учите "неправильному" если сами "плаваете". Выход функции должен определяться строго ТОЛЬКО входными данными. Чем быстрее Вы это поймете тем яснее для Вас станет лисп.
p.s. gодумаете на досуге что происходит со списочной структурой когда Вы вызываете setq, да еще и в цикле - это из разряда список как массив использовать.
__________________
Когда в руках молоток все вокруг кажется гвоздями. Последний раз редактировалось Дима_, 19.10.2010 в 15:38. |
|||
![]() |
|
||||
Программист-энтузиаст Регистрация: 17.07.2009
Воронеж
Сообщений: 575
|
Offtop:
Дима_, вопрос к Вам не по теме топика, а по искусству программирования, поэтому и оффтопом. Ваш код, пост #13 Строка (cons 10 ((lambda (pt) (list (- (car pt) 200 ) (+ 50 (cadr pt)))) pt)) зачем здесь использовать lambda, а не просто (list (- (car pt) 200 ) (+ 50 (cadr pt))), ведь выше ((lambda (pt) (entmakex ...)) (cdr (assoc 10 (entget ent)))) Вы уже локализовали переменную pt? Или я чего-то непонимаю? Прошу ответить, этот вопрос не ирония Во сказанул: вопрос не по теме топика - масло масленное
__________________
cadtools Последний раз редактировалось TararykovDG, 19.10.2010 в 16:30. |
|||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
Здесь лишнее, заметил когда выложил и испралять не стал - вначале писал чуть по другому - pt использовалось 2 раза только в той строке, а потом "вытащил" в главную - без нареканий со своей стороны можно заменить на "просто" (list (- (car pt) 200 ) (+ 50 (cadr pt))).
p.s. Тебе зачет за внимательность.
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
![]() |
|
||||
Программист-энтузиаст Регистрация: 17.07.2009
Воронеж
Сообщений: 575
|
Дима_, спасибо
![]()
__________________
cadtools |
|||
![]() |
|
||||
строю, ломаю Регистрация: 03.04.2008
Украина
Сообщений: 5,515
|
С чего вы взяли? используя лямбду вы создаете "переменную" Это во первых... Во вторых тогда уж так...
Код:
Последний раз редактировалось gomer, 19.10.2010 в 20:20. |
|||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
В языках подразумевающих постоянное использование переменных (бейсик, паскаль) их тип всегда задается явно, либо определяется через имя - для того, чтоб при их изменении не "плыла память", под них сразу отводится ячейки памяти соответствующего размера (кроме строк чуть по другому - схоже с лиспом, но не совсем) - лисп т.н. функциональный язык - то есть состоящий из функций - которые имеют входные и выходные аргументы - подобно математическим (в отличие от других языков где, как правило, функция еще обращается к десятку-другому переменных). В лиспе переменные (те самые которые задаются через / ) аттавизм наподобие goto в паскале. Используя лямбду я, как раз, никаких переменных не создаю поэтому и рекомендую их использовать (лямбды). Если Вы в своей программе используете setq значит "заведомо" теряете функциональность - Вам нужно постоянно отслеживать что хранится в Ваших переменных и можно, либо, нет вызвать какую либо функцию - это давно уже тупиковый путь и никакая большая программа так не работает - в ООП используются "объекты" с "закрытыми" переменными (даже в ассемблере есть локализация и уже по факту полностью отошли от задания аргументов через "общие" регистры). Лисп (при правильном написании) тем и силен, что любую функцию можно вызвать в любой момент времени (рекурсивно?) - я за все время писания на лиспе НИ РАЗУ не использовал отладчик (на ассемблере (а на нем, в свое время, я тоже не мало поработал) я можно сказать только в нем и писал). Еще раз повторю - не должно в лиспе быть переменных (есть ряд исключений связанных с "несовершенством" автолиспа), оно-же как и массивов (был бы автолисп нормально рекурсивным я б с удовольствием сюда еще и циклы добавил - но т.к. хвотовой рекурсии в автолиспе нет - приходиться пользоваться).
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
1. сравнил у меня 18 строк у Вас 23 (да у Вас добавленна "мощная строка" (defun *error* (msg) princ) - то есть если произойдет какая-либо ошибка мы даже не узнаем какая).
2. Код:
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
![]() |
|
||||
строю, ломаю Регистрация: 03.04.2008
Украина
Сообщений: 5,515
|
Дима, По нажатии эскейп в кс выпадает *Отмена*, чем не индикатор... + у меня еще и алерт чтоб узер не заснул...
По поводу 2. Согласен с вами.. в этом есть даже некая эстетика... Однако же большое количество лямбд может запутать любого программера, даже автора... так как ломает привычную "узерскую" логику... К тому же при таком подходе в хвосте скапливается большое кол-во "мусора" зы Pastor, аргументируйте ![]() |
|||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
Цитата:
Пастор бред - это то что Вам понять не под силу?
__________________
Когда в руках молоток все вокруг кажется гвоздями. Последний раз редактировалось Дима_, 19.10.2010 в 22:57. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
Дима_, касательно #25...
Представь себе ситуевину: есть fun1, которая вызывает fun2, передавая ей в качестве параметра указатель на COM-сервер (создается в fun1), указатель на графический примитив, обрабатываемый этим СОМ-сервером, ну и до кучи свойство примитива и значение этого свойства. Все должно работать а) быстро; б) вся занятая память должна быть очищена после выхода из fun1. Одного vlax-release-object недостаточно. Задача: реализовать без применения локальных или глобальных переменных. Скажу честно: я на такое не способен ![]()
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
Дима_, а теперь объясни разницу между переменной и параметром вызова. Особенно когда эта переменная локальная в одной функции и является параметром вызова второй
![]() P.S. Спор, если честно, мне кажется бессмысленным - все равно каждый прав и каждый останется при своем мнении ![]()
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
разница в том, что если принципально не подходить к аргументам как к переменным (проще говоря не использовать присваивания), то проблемы с порядком вызова процедур становяться глубоко паралельны - программа не использует ничего кроме входных параметров - а "общается" с другими ТОЛЬКО через выход - не нужно отслеживать "что сейчас в этой переменной", "инициализировал ли я ее и пр" - видим функцию (не важно кем написанную) видим ее входные параметры, а дальше что в ней творится - нам глубоко паралельно - если она протестированна со всеми вариантами входных параметров (имеется в виду диапазон) - то она 100% всегда будет работать - кто-бы и как ее не вызвал. А вот если она в пятой подпрограмме какой-либо "флажок" опрашивает (либо, не дай бог, устанавливает) - искать это можно крайне долго.
п.с. Пусть кто как хочет, так и пишет - полностью согласен. то Gomer такое будет работать долго в отличие от Код:
п.п.п.с твой намек верный - в более "серьезных" версиях лиспа предыдущий бы код работал, но вынеси mapcar в отдельную функцию - закончился бы ошибкой т.к. com там определяется только внутри лямбды и что-бы его увидела другая функция - нужно его явно передать (я поначалу на этом не мало копий наломал - пока не понял что четкое разграничение пространства видимости - это "великое благо" и писать так гораздо удобней и лаконичней (мне по крайней мере)).
__________________
Когда в руках молоток все вокруг кажется гвоздями. Последний раз редактировалось Дима_, 20.10.2010 в 00:43. |
|||
![]() |
|
||||
Очень странный спор у вас возник...
С одной стороны, без setq, получается код свободный от переменной, хотя с другой стороны, переменная создается внутри безымянной функции и удаляется после завершения. По сути, создание и загрузка дополнительной функции, может занять больше времени, с другой, можно для таких целей сделать постоянную функцию, которая будет выполнять код только при ненулевом аргументе. Для оценки двух подходов, стоит выбрать точку зрения и вектор, который считать верным... - выбирайте: 1. простой и лаконичный код 2. простая и удобная поддержка кода с возможностью его многократно использовать и занести в библиотеку 3. быстрый код 4. крутой код - сложный в понимании основной массой программистов Мое мнение: 1. лучший код в этой теме - первый работающий код, именно он позволил решить задачу просящему помощи и это не зависит от качества, скорости или других свойств программы! 2. Для форума, я обычно использую вариант, в котором меньше всего букв и это не зависит от setq или других функций и подходов. 3. Если уж блистать сутью лиспа, то стоит использовать mapcar и рекурсии, а так же бить код на подпрограммы. Ps. ну вот, теперь огребу ото всех разом... ![]() pps. я бы написал все совсем по другому... ![]()
__________________
Чем гениальнее ваш план, тем меньше людей с ним будут согласны. /Сунь Цзы/ Последний раз редактировалось Елпанов Евгений, 20.10.2010 в 17:28. Причина: add >> pps |
||||
![]() |
|
||||
строю, ломаю Регистрация: 03.04.2008
Украина
Сообщений: 5,515
|
А что тут думать, логика простая: для всех точек, выбранных юзером, рисуем тексты, содержащие координаты точек соответственно...
Все остальное исправление граблей, на которые будет натыкаться юзер, а не программер... |
|||
![]() |
|
||||
Регистрация: 02.11.2010
Сообщений: 3
|
Ребята, вы извините меня, я тут новичек и меня тоже интересует возможность использования скрипта, который бы выполнял за меня определенную работу - готов оплатить вебмани
![]() ![]() (Описание приложения - фотка 1 - это то как я вижу точки смотря на них сверху до изменения их формата отображения; фотка-2 - это после того, как я поменял формат отображения точек на тот, какой мне нужен; фотка 3 - это конечный вид после того, как ставлю на каждую точку новую точку, чтоб я ее нормально мог видеть и ставлю рядом с ней ее значение по Z) Последний раз редактировалось bem_ua, 02.11.2010 в 11:24. Причина: вставка изображения |
|||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
Вобщем,прочитав 4 раза "запрос" я выяснил следующие:
1. нужно чтоб округлялось согласно правилам математики; 2. чтоб прорисовывалась дополнительная точка в "округленном" месте и она была видна в двух проекциях (с переди и с верху) 3. Была возможность регулировки шрифта. Код:
p.s. это пример который показывает недостаток автолиспа - отсутствие т.н. "замыканий" - (то что я имел в виду в #25 под "рядом исключений") - поэтому "приходится" использовать setq - но обращаю внимание это глобальная переменная (без нее настройки не сохранить) локальных по прежнему нет (и надеюсь не будет).
__________________
Когда в руках молоток все вокруг кажется гвоздями. Последний раз редактировалось Дима_, 02.11.2010 в 16:34. |
|||
![]() |
|
||||
Регистрация: 02.11.2010
Сообщений: 3
|
Супер программа - очень признателен работает отлично!
Единственное, что сейчас не очень хорошо выглядит - так это в режиме любого из видов - теперь доступны два текста, но они в одном слое и таким образом при виде сверху один текст нормально виден, а тот, что сделан для вида спереди - отображается подчеркиванием (в виде черточек - см. приложение) а он в принципе не нужен, решил проблему отображения за счет изменения шрифта на ариал - эти подчеркивания просто исчезли. В целом супер, но если будет возможно/ желание разделить текст в разные слои буду примного благодарен, чтоб ненужный текст(слой) можно было отключить или удалить если в нем нет необходимости! А так все очень супер и решило проблему нудной обработки файла ![]() на сколько я понял - сначала запускаем set-test-param - задаем настройки для выполнения следующего скрипта, а после этого запускаем сам скрипт - test ![]() выбираем нужные объекты и получаем отличный результат!!!!!!! Еще раз огромное спасибо! Последний раз редактировалось bem_ua, 02.11.2010 в 15:49. |
|||
![]() |
![]() |
|
Опции темы | Поиск в этой теме |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
как средствами VBA нарисовать дугу, зная координаты центра, радиус, начальную и конечную точки? | tata-tau | Программирование | 9 | 03.03.2010 04:07 |
Нужно узнать координаты каждой точки 3D модели | Babun | AutoCAD | 8 | 14.10.2008 08:38 |
Провести линию параллельно заданной через заданные координаты. | bizon2008 | Программирование | 8 | 02.10.2008 17:23 |
Координаты точки пересечения line и pline (LISP) | paradoxvaha | LISP | 3 | 10.07.2007 13:04 |
Координаты точки, лежащей на полилинии | Al_Taron | Программирование | 1 | 27.11.2006 09:45 |