|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
18.07.2015, 09:34 | #1 | |
Autolisp считывания переменных в новом файле
Регистрация: 24.06.2009
Сообщений: 94
|
||
Просмотров: 3517
|
|
||||
CAD Регистрация: 28.08.2003
Киев
Сообщений: 1,835
|
НЕ подтверждаю, Автокад 2014(рус):
Чертеж1 Код:
Код:
Код:
Делал всё копируя твой текст. М.б. какая-то переменная отвечает за это пространство? Я эту возможность не использовал, поэтому широкой практики применения не имею.
__________________
По теории майский жук летать не может. Но он этого не знает. И летает... |
|||
|
||||
Регистрация: 24.06.2009
Сообщений: 94
|
Цитата:
----- добавлено через ~60 мин. ----- а не мог бы ты прислать настроенные переменные на твоем автокаде? я бы сравнил с моими на 2015 |
|||
|
||||
CAD Регистрация: 28.08.2003
Киев
Сообщений: 1,835
|
VLIDE (Visual Lisp Integrated Development Environment) - надеюсь что отладку ЛИСП"а делаешь в этом редакторе.
Настройки переменных стандартные, использовался файл acadiso.dwt без всяких "приблуд". Что-то конечно висит в реестре...
__________________
По теории майский жук летать не может. Но он этого не знает. И летает... Последний раз редактировалось Alan, 19.07.2015 в 21:54. |
|||
|
||||
Регистрация: 24.06.2009
Сообщений: 94
|
Я уже проверил свою программу. Открыл файл задал все данные, загнав их в память. Закрыл файл, открыл новый и о чудо он определил мне точку по формуле. Но вот как только я ее запускаю полностью, чудо исчезает. В новом файле лисп не перестает работать, хоть мне и говорили что лисп работает в контексте только с одним файлом. У меня после открытия другого файла он работает. Он знает чему равны все данные беря их из памяти, но вот подставлять в формулу их не хочет
|
|||
|
||||
CAD Регистрация: 28.08.2003
Киев
Сообщений: 1,835
|
Гадание по фотографии на другом форуме.
Не знаю что ты имеешь ввиду. ЛИСП-программа, которая работала в файле1, в файле 2 НЕ работает пока ты её не загрузишь и запустишь. Переменные, помещенные в namespaces тебе доступны. Не знаю зачем тебе это надо, ведь всё это есть только в этом сеансе, но тебе виднее.
__________________
По теории майский жук летать не может. Но он этого не знает. И летает... |
|||
|
||||
Регистрация: 24.06.2009
Сообщений: 94
|
Ок.
;вводим данные (setq D (getint "\n Введите диаметр колонны D >: ")) (vl-propagate 'D) (setq L (getint "\n Введите ширину кармана L >: ")) (vl-propagate 'L) (setq S1 (getint "\n Введите основную толщину металла S1 >: ")) (vl-propagate 'S1) (setq S2 (getint "\n Введите дополнительную толщину металла S2 >: ")) (vl-propagate 'S2) ;вычисляем необходимые величины (setq P0 (list 0 0 (- 0 S1))) (vl-propagate 'P0) (setq P1 (list 0 0 (- 0 S1 500))) (vl-propagate 'P1) (setq Rn (/ D 2)) (vl-propagate 'Rn) (setq Rv (- Rn 60)) (vl-propagate 'Rv) (setq Kx (- Rn L 64)) (vl-propagate 'Kx) (setq L1 (atoi (rtos (sqrt (* 4 (- (expt Rn 2) (expt (- Rn L) 2)))) 2 0))) (vl-propagate 'L1) (setq L2 (atoi (rtos (sqrt (* 4 (- (expt Rn 2) (expt (- Rn L 63) 2)))) 2 0))) (vl-propagate 'L2) (setq L3 (atoi (rtos (sqrt (* 4 (- (expt Rn 2) (expt (- Rn L S1 20) 2)))) 2 0))) (vl-propagate 'L3) (setq Y1 (atoi (rtos (/ L3 6) 2 0))) (vl-propagate 'Y1) (setq L4 (atoi (rtos (sqrt (* 4 (- (expt Rn 2) (expt (- Rn (- Rn Y1)) 2)))) 2 0))) (vl-propagate 'L4) (setq X1 (atoi (rtos (/ L4 2) 2 0))) (vl-propagate 'X1) (setq L5 (atoi (rtos (sqrt (* 4 (- (expt Rn 2) (expt (- Rn (- L 72)) 2)))) 2 0))) (vl-propagate 'L5) (setq n1 (atoi (rtos (/ L1 2 200)))) (vl-propagate 'n1) (setq c (- (/ L1 2) (* n1 200))) (vl-propagate 'c) (if (or (and (>= c 0) (<= c 49)) (and (>= c 151) (<= c 199))) (setq n2 100) (setq n2 0)) (vl-propagate 'n2) ;построение косынки под кольцом (command "_.box" (list (- 0 (/ S2 2)) Rv (- 0 S1 60)) "_length" S2 60 60 ) (command "_.-view" "_swiso") (command "_.chamfer" (list 0 Rn (- S1)) "" "10" "10" (list 0 Rn (- S1)) "") (command "_.chamfer" (list 0 Rv (- 0 S1 60)) "" "40" "40" (list 0 Rv (- 0 S1 60)) "") (setq 1kosinka (entlast)) (command "_.-wblock" "D:\\Проект\\Сепаратор\\Опорные элементы\\01-01.00.002-Косынка.dwg" 1kosinka "0,0,0" 1kosinka"") (command "_.-insert" "D:\\Проект\\Сепаратор\\Опорные элементы\\01-01.00.002-Косынка.dwg" "0,0,0" "" "" "") (command "_sdi" 1) (setq Ch1 (command "_open" "_no" "D:\\Проект\\Сепаратор\\Опорные элементы\\01-00.00.000 СБ-Опорные элементы.dwg" "D:\\Проект\\Сепаратор\\Опорные элементы\\01-01.00.002-Косынка.dwg")) (command "_sdi" 0) (setq tm1 (list (- 0 (- Rn 10)) (- 0 S1))) !tm1 nil |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,848
|
Тебе немного усилий не приложить, чтобы другим удобнее было работать?
Добавил видео "как хотя бы [code][/code] добавить"
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
CAD Регистрация: 28.08.2003
Киев
Сообщений: 1,835
|
Мой тебе совет:
1. Повторюсь, учи матчасть 2. Используй во VLIDE пошаговую отладку с запоминанием переменных 3. Смотри также в командную строку после выполнения команд, при использовании "командного метода". Например, использование SDI Код:
данных элементов таким способом не верно по определению. Ты вроде это хочешь делать.... PPS. Вопрос данной темы был о использовании (vl-propagate Подтверждаю еще раз, (vl-propagate - РАБОТАЕТ Если не выполнять Код:
Код:
__________________
По теории майский жук летать не может. Но он этого не знает. И летает... |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,848
|
Отлично. Теперь:
1. Где определение функции? 2. Какая часть кода в каком файле выполняется? 3. Грабли с привязками - здрасьте.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Регистрация: 24.06.2009
Сообщений: 94
|
Цитата:
Все относится к первому файлу (setq Ch1 (command "_open" "_no" "D:\\Проект\\Сепаратор\\Опорные элементы\\01-00.00.000 СБ-Опорные элементы.dwg" "D:\\Проект\\Сепаратор\\Опорные элементы\\01-01.00.002-Косынка.dwg")) - эта строка закрывает первый файл и открывает второй. (command "_sdi" 0) (setq tm1 (list (- 0 (- Rn 10)) (- 0 S1))) !tm1 nil Вот эту !tm1 у меня почему то не определяет ----- добавлено через ~7 мин. ----- но мне надо выполнять, мне tm1 в первом файле вообще не нужна, она мне нужна во втором. |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,848
|
Цитата:
ПРоверяй значение SDI; проверяй открытие файла и теде.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Регистрация: 24.06.2009
Сообщений: 94
|
У меня только один файл открыт, других нету. Как раз когда задаю sdi 1, то он открывает новый файл, но при этом текущий принудительно закрывает
|
|||
|
||||
CAD Регистрация: 28.08.2003
Киев
Сообщений: 1,835
|
Забудь как тёмный сон!
цЫцЫрую kpblc Цитата:
Цитата:
Алексей написал о полезностях VLIDE http://autolisp.ru/2009/09/10/vlide-misc-01/ и http://autolisp.ru/2009/09/12/vlide-misc-02/ Правильнее просто закрыть один чертеж и открыть второй. Режим SDI=1 лучше не использовать никогда. ЯТД
__________________
По теории майский жук летать не может. Но он этого не знает. И летает... |
|||
|
||||
Регистрация: 11.10.2010
Сообщений: 980
|
DENBASS2004, по ходу читаешь только то, что хочется, хотя вроде не на китайском было сказано:
Не, как об стенку горох. Я уверен, что все, кто пытался тебе помочь прежде всего обеспечивали загрузку соответствующего кода. Тебе же это параллельно, похоже.
__________________
(/= RegDate StartReadDate) |
|||
|
||||
Регистрация: 24.06.2009
Сообщений: 94
|
кому там о стенку горох я не знаю. в файле 2 не работает пока не запущу? Я уже устал говорить, что лисп работает, команды выполняются, определены все переменные, но формула где присутствуют эти переменные не вычисляется, почему уже голову всю сломал, но так и не пойму. У меня есть пока только один вариант, что бы снова сделал запрос на данные и снова все переменные высчитал. Но это белиберда получится. Я понимаю ,что может пытаюсь сделать невозможное. Но я не понимаю как он одновременно знает переменные, но формулу не вычисляет.
|
|||
|
||||
Регистрация: 11.10.2010
Сообщений: 980
|
Вот йопырысыты! Да потому что не определена она! Не загружена! Код вычисления формулы загрузи сначала.
Читай матчасть внимательно и вдумчиво - lisp работает только в том документе, куда он загружен. Учи, что такое видимость переменных и функций, что такое пространство документа, что такое пространство приложения.
__________________
(/= RegDate StartReadDate) |
|||
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
AutoLisp не получается задать точку при помощи переменных | granit201z | LISP | 1 | 11.10.2014 13:32 |
AutoLISP: Просачивание локальных переменных в тело используемых в выражении функций | Supermax | LISP | 22 | 26.10.2010 00:27 |
Как перебрать все текстовые строки в открытом Автокадовском файле используя AutoLISP? | lexluther | LISP | 9 | 26.08.2009 17:37 |