|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
Makswell, Через command вызываются стандартные команды, остальные как функции с префиксом C:
Пример: (C:VLIDE) (C:КАЛЬК)
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |
|
||||
Регистрация: 12.07.2008
Сообщений: 211
|
Ребят, срочно надо, а времени изучать нет... подскажите, пожалуйста, как в лиспе извлечь выражение только если несколько условий выполняются. С помощью какой функции?
Мне, например, нужно подгрузить пользовательское меню только в том случае, если оно не подгружено (not (menugroup "Bla-bla")) и если cui-файл с заданным именем находится в путях поиска support files (findfile "Bla-bla.cui"). И еще попутный вопрос: сделал redefine сомманды _qsave так, чтоб сначала выполнялся сброс масштабов (-scalelistedit), а затем уже .qsave. Так вот, се работает прекрасно если чертеж не новый. Т.е. если создать новый чертеж и воспользоваться этой коммандой чтоб впервые его сохранить и присвоить ему имя, то чертеж не сохраняется, точнее переменная Filedia слетает в ноль и просит вручную прописать путь и имя файла. Что с этим делать, никто не знает?
__________________
Users are not stupid, they are busy. Последний раз редактировалось acyxou, 23.03.2009 в 16:40. |
|||
![]() |
|
||||
Инженер-строитель Регистрация: 15.08.2007
Киров
Сообщений: 2,204
|
Цитата:
Код:
|
|||
![]() |
|
||||
Наконец то на работе смягчился “каторжный режим” и есть чуток времени чтоб продолжить изучение лиспа. Продолжаю писать код для создания ведомости расхода стали при применении SPEC5D от VVA. Застрял на элементарном с первого взгляда вопросе.
Имею лист такого рода. Код:
Требуется убрать красные скобки, чтобы лист стал таким Код:
Ясно что нужно оперировать mapcar, но я не знаю как вернуть содержимое листа без скобок. То есть не знаю как имея это Код:
Код:
__________________
Блог Последний раз редактировалось Red Nova, 13.04.2009 в 00:16. |
||||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411
|
Это так?
Код:
![]()
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Кулик Алексей aka kpblc, Спасибо, именно то.
__________________
Блог |
||||
![]() |
|
||||
Подскажите где взять информацию по тегам (как это правильно называется не знаю может и не теги) у примитива mtext.
Пример: создаю mtext не пргограмно с текстом ω в степени 3, далее (entget (entlast)) и вот что мне возвращается Код:
\\H0.7x;\\S - это как я понял тег для индексов, дробей и прочего, создаваемого кнопкой stack. Где взять полный список вот таких тегов (или не тегов)? Последний раз редактировалось Eximius, 25.04.2009 в 19:48. |
||||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
http://forum.dwg.ru/showthread.php?t=12717
http://docs.autodesk.com/ACD/2010/EN...mber=d0e123454 В справке раньше (по моему в 2004) была прямо таблица. В 2008 быстро не нашел
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
Цитата:
Примерно так - для примитива: Код:
Код:
|
|||
![]() |
|
||||
Инженер Регистрация: 27.04.2009
Deutschland
Сообщений: 208
|
ShaggyDoc, большое спасибо за помощь. Тогда у меня вопрос конкретно по моему лиспу
Имеею: (фунцкцию error пока не задействовал) (defun c ![]() ;******* funktion error (defun *error*(msg) (princ msg) ;text bei error (if oldosm (setvar "OSMODE" oldosm)) ;if oldosm - zadano -> oldosm=oldosm (if oldalay (setvar "CLAYER" oldlay));if layer gewechselt -> zurück ); end of *error* ;*************** (initget 7) (setq pl_L (getreal "\nLänge: ")) ;get Länge (длина рамки) (initget 7) (setq pl_B (getreal "\nBreite: ")) ;get Breite (ширина рамки) (setq pl_1 (getpoint "\nInput Start Point: ")) (начальная точка) (setq pl_2 (list (+ (car pl_1) pl_L)(+ (cadr pl_1) pl_B))) ;upper right point (верхний правый угол) (setq pl_o (list (+ (car pl_1) 10.0)(+ (cadr pl_1) 10.0))) ;lower left point für offset (точка для оффсета) (setq pl_rahmen (ssadd)) ; задание пустого набора (command "_.rectangle" pl_1 pl_2 "") ; вырисовка прямоугольной рамки (ssadd (entlast) pl_rahmen) ; добавление рамки в набор (command "_.chprop" "_last" "" "_layer" "SF-RAHMEN" "_c" "_bylayer" "") ; смена цвета и уровня (command "_.offset" "-t" pl_rahmen pl_o "_e") ; а вот здесь засада - никак не дойду как ![]() (princ) );end defun пробовал также так: (command "_offset" "10" pl_rahmen "1" ""), но как указать направление? С уважением, Александр |
|||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
alex8888, ну зачем так-то, "молекулы на атомы" разлагать, а потом снова их синтезировать:
(setq pl_2 (list (+ (car pl_1) pl_L)(+ (cadr pl_1) pl_B))) Используй функцию polar, и все проблемы пропадут, например Код:
|
|||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
alex8888,
1. Не обрабатываешь привязку (грабли №1) 2. В команде _rectangle лишняя "" 3. Нет необходимости создавать набор 4. Команде OFFSET нужно передавать список такой же, какой возвращает (entsel), т.е. (имя_примитива точка_выбора) 5. Середина диагонали прямоугольника всегда лежит внутри этого прямоугольника ![]() Код:
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |
|
||||
Инженер Регистрация: 27.04.2009
Deutschland
Сообщений: 208
|
ShaggyDoc,
я пытался использовать _.pline, но без polar (что то его не совсем понял), бывает путаюсь в углах. И вот там нужно сперва каждую точку высчитать, а _rectangle только двумя, вот бес и попутал ее взять. А чем плоха команда _rectangle для программистов? И можно ли использовать команды из механикла (типа AMRECT.... тыры-пыры)? 2. Отключение объектных привязок - сохранение-сбрасывание в 0 и восстановление "osmode" достаточно? Или еще какая переменная важна? Участок кода отрисовки, так? (setq pl_1 (getpoint "\nInput Start Point: ")) (setq pl_2 (polar pl_1 0 pl_L)) (setq pl_3 (polar pl_2 (/ pi 2) pl_B)) (setq pl_4 (polar pl_3 pi pl_L)) (command "_.pline" pl_1 pl_2 pl_3 pl_4 "_c" "") VVA, спасибо. Именно про синтаксис offset я и пытался выяснить. Тяжело изучать Lisp работая в немецкой версии Autocad Mechanical (2009-2010), книжки на русском, помощь по лиспу на английском, команды все тоже надо с немецкого переводить. В справке ничего нет, там только типа выбрать мышкой и ткнуть туда то. Все опции приходится искать методом тыка. Что касается отступа для offset, то я его попытался прописать так: (setq pl_o (polar pl_1 (/ pi 4) (* 10 (sqrt 2.0)))) (vl-cmdf "_.offset" 10 pl_rahmen pl_o "") Как ни странно, сработало. Может з переляху? Последний раз редактировалось alex8888, 27.04.2009 в 16:22. Причина: дополнение |
|||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
alex8888, polar одна из самых необходимых функций. Синтаксис простой:
(polar известная_точка угол_в_радианах расстояние) Возвращает точку, расположенную на расстояние от известная_точка по направлению угол_в_радианах. RECTANG - это команда-обертка (так же как и POLYGON, DONUT). Она создает полилинию, причем опции этой команды уже менялись неоднократно. Используя RECTANG можешь рисовать только прямоугольник, и только в ПСК. Это частные случаи. А может быть и "кривоугольник" и различные контуры. И под разными углами поворота. Учиться надо сразу правильно. Даже для прямоугольника координаты всех точек через polar высчитать проще, чем одной противоположной точки добавлением ординат. |
|||
![]() |
![]() |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
LISP. Вставка в таблицу поля, соотвествующего площади примитива | Profan | Готовые программы | 272 | 06.06.2021 23:12 |
Сейсмозащита и сейсмоизоляция существующих, построенных зд. | IANationalInformAgentstvo | Прочее. Архитектура и строительство | 216 | 20.01.2015 16:51 |
Мониторы LCD CRT | Разное | 94 | 17.06.2008 10:51 | |
ЮМОР 2006 =) | Perezz!! | Разное | 1122 | 04.01.2007 00:46 |