Мои динамические блоки - Страница 34
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Динамические блоки > Мои динамические блоки

Мои динамические блоки

Закрытая тема
Поиск в этой теме
Непрочитано 07.11.2006, 15:22
Мои динамические блоки
Shoorup
 
Минск
Регистрация: 16.09.2006
Сообщений: 1,587

Прогресс и опыт не стоит на месте. А по этому хочу поделиться своим опытом по созданию динамических блоков и конечно посмотреть на чужой.
Динамические блоки очень мощный инструмент, а умело им пользоваться далеко не каждый умеет. Уверен большинство идей (ухищрений, модификаций, построений) можно применить и для своей работы тем самым свести к минимуму однотонную и трудоемкую работу => что я и предлагаю на данной теме.
---
Дополнительно (спасибо VVA):
В 2010-2011-2012 в редакторе блоков при настройках по умолчанию нельзя добавлять к операциям некоторые вещи, например к операции Flip добавить Strech и т.д.
Описание проблемы:
http://forum.dwg.ru/showpost.php?p=7...postcount=2666
Решение:
http://forum.dwg.ru/showpost.php?p=7...postcount=2679
----
Тема закрыта, продолжение: http://forum.dwg.ru/showthread.php?t=66721
__________________
Поезд который устал от ржавого здравомыслия рельсов...

Последний раз редактировалось Кулик Алексей aka kpblc, 09.11.2011 в 14:01.
Просмотров: 1891453
 
Непрочитано 12.09.2008, 08:46
#661
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,405


Это у тебя или у меня? У меня-то рекурсия чистой воды. У тебя - итерационный.
Хотя, возможно и другое название
P.S. Где и как ты будешь делать ограничения - я ж не лимитирую. Хочешь - внутри функции, хочешь - "снаружи". Я бы делал именно в вызывающей, поскольку в случае проверок внутри get-num скорость выполнения еще больше упадет.
---
Исправился
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.

Последний раз редактировалось Кулик Алексей aka kpblc, 12.09.2008 в 09:02. Причина: Неправильно написал. Что знчит сидеть на работе с температурой 38...
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 12.09.2008, 08:48
#662
Makswell

Инженер-строитель
 
Регистрация: 15.08.2007
Киров
Сообщений: 2,204


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Понимаешь, Евгений Елпанов в свое время показывал код обращения к xls-файлу вообще без Excel'a (через ADO, насколько я помню). Так что я бы поискал его решение и попытался с ним разобраться, чем свое рисовать.
Вот здесь вот это:
http://dwg.ru/f/showpost.php?p=73059&postcount=9
Makswell вне форума  
 
Непрочитано 12.09.2008, 08:48
#663
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


И гдеж его искать? И какие это ключевые слова в поиске вставлять? И как собственно тема та называлась? Не проще у него самого спросить?
Доступ к экселю я делаю по Полищуковски. Дешево и сердито. Хотя и от ADO не откажусь, если кто подскажет где искать.
Supermax вне форума  
 
Непрочитано 12.09.2008, 08:49
#664
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,405


Makswell, это не единственный вариант, вроде бы.
Supermax, попробуй искать по "ADODB"
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 12.09.2008, 08:56
#665
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Во! Makswell меня опередил.
Ну nifigasebe код! Когда ж в нем разбираться? И в чем преимущество? Если нет офиса, то как таблицу составлять? Я ведь эксель->лукуп корректирую. Предполагается составление таблицы в экселе и перенос ее в лукуп. Чета не вижу +.
Supermax вне форума  
 
Непрочитано 12.09.2008, 09:02
#666
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,405


#661 исправлен
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 12.09.2008, 10:55
#667
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Долгожданный Эксель->лукуп (или лукап) готов!
Нате!
Работает при наличии папки C:\TMP
Код открытый, если надо, можете на свою папку переправить (в 4 местах).
До 16383 столбцов и любое количество строк (практически).
Также не критично к наличию большого количество столбцов в правой части.
Вложения
Тип файла: lsp Excel-Lookup2.lsp (9.5 Кб, 221 просмотров)

Последний раз редактировалось Supermax, 12.09.2008 в 11:34.
Supermax вне форума  
 
Непрочитано 12.09.2008, 12:16
#668
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Kpblc,
Цитата:
.....У тебя - итерационный.
Тут ты батенька даже в словарь не заглянул.
Итерация - по латински - повторение. Результат повторного выполнения одной и тй же математической функции. В моем случае я определяю вес старшего разряда; вычитаю из исходного числа его значение и затем определяю вес следующего, более младшего разряда, но уже совсем по другой формуле! Следующий разряд вычисляется по третьей формуле. А вот у тебя в рекурсии самое натуральное итерационное вычисление, на чем рекурсия собственно и основана.
Конвейерный метод преобразования как раз и основан на определении веса старшего разряда и вычитании из исходных данных его значения. с последующей обработкой остатка. Тут есть повторение, но не действия, а принципа. А итерация это повторение действия.
В моем случае вообще все три буквы вычисляются самостоятельно (если не считать участие в их вычислении пары промежуточных значений).
Я их расположил в такой последовательности, чтобы они правильно склеивались в строку.
Supermax вне форума  
 
Непрочитано 12.09.2008, 12:27
#669
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Вроде переправил. Теперь от папки TMP не зависит. Добавленные и исправленные строки помечены
;;; Add VVA 12.09.2008
;_Mod VVA 12.09.2008
Вложения
Тип файла: lsp Excel-Lookup2.lsp (9.9 Кб, 201 просмотров)
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 12.09.2008, 12:53
#670
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Глупость удалена автором.

Последний раз редактировалось Supermax, 12.09.2008 в 13:46.
Supermax вне форума  
 
Непрочитано 12.09.2008, 13:32
#671
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


VVA, снимаю шляпу! Я не прав. Файлы все время образуются в папке Temp, где правда и так всего дофига, но там им и место!
Я переправлю во всех макросах по обработке динамических блоков на такой способ вызова файлов.
Почему у меня с путем не кушало? Не пойму
Supermax вне форума  
 
Непрочитано 12.09.2008, 14:22
#672
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Ну и обратный процесс. Перенос данных из лукапа (или лукупа) в эксель.
С попраками VVA.
Вложения
Тип файла: lsp Lookup-Excel2.lsp (9.0 Кб, 178 просмотров)
Supermax вне форума  
 
Непрочитано 12.09.2008, 14:49
#673
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


В данлоадсе поменял файлы. И приписочки по поводу изменений внес.
Но кто обэтом узнает? Только если сюда заскочат все 400 с лишним посетителей ... После обновления ранее выложенная программа в титулах не появляется, а жаль.
Supermax вне форума  
 
Непрочитано 12.09.2008, 15:57
#674
Елпанов Евгений

программист
 
Регистрация: 20.12.2005
Москва
Сообщений: 1,439
Отправить сообщение для Елпанов Евгений с помощью Skype™


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Можно эту "математику" сделать рекурсией. Правда, в скорости выигрыш вряд ли будет
Код:
[Выделить все]
(defun get-num (code / tmp val)
  (cond
    ((minusp code)
     nil
     )
    ((<= code 26)
     (list (+ code 65))
     )
    (t
     (setq tmp (/ code 26)
           val (expt 26 2)
           ) ;_ end of setq
     (append
       (get-num
         (if (<= code val)
           (1- tmp)
           tmp
           ) ;_ end of if
         ) ;_ end of get-num
       (get-num (- code
                   (* tmp 26)
                   (if (<= code val)
                     1
                     0
                     ) ;_ end of if
                   ) ;_ end of -
                ) ;_ end of get-num
       ) ;_ end of append
     )
    ) ;_ end of cond
  ) ;_ end of defun

; Пример применения: (vl-list->string(get-num 16380))
У тебя ошибка в вычислениях..
(vl-list->string(get-num 26))
возвращает "[" а должен возвращать "AA"
Елпанов Евгений вне форума  
 
Непрочитано 12.09.2008, 15:59
#675
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,405


Исправленный вриант кода:
Код:
[Выделить все]
(defun get-num (code / tmp val)
  (cond
    ((minusp code)
     nil
    )
    ((< code 26)
     (list (+ code 65))
    )
    (t
     (setq tmp (/ code 26)
           val (expt 26 2)
     ) ;_ end of setq
     (append
       (get-num
         (if (<= code val)
           (1- tmp)
           tmp
         ) ;_ end of if
       ) ;_ end of get-num
       (get-num (- code
                   (* tmp 26)
                ) ;_ end of -
       ) ;_ end of get-num
     ) ;_ end of append
    ) ;_ end of cond
  ) ;_ end of cond
) ;_ end of defun

; Пример применения: (vl-list->string(get-num 16380))
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 12.09.2008, 16:34
#676
Елпанов Евгений

программист
 
Регистрация: 20.12.2005
Москва
Сообщений: 1,439
Отправить сообщение для Елпанов Евгений с помощью Skype™


Кулик Алексей aka kpblc,
поправил твою программу, теперь работает правильно.
Правда, появилось два изменения:
1. возвращает сразу строку - не надо в дальнейшем конвертировать список в текст.
2. нет ограничения на длину числа, т.е. нет ограничения на размер результирующей строки.
Код:
[Выделить все]
(defun conv(x)(if(< x 26)(chr(+ 65 x))(strcat(conv(1-(/ x 26)))(conv(rem x 26)))))
Елпанов Евгений вне форума  
 
Непрочитано 12.09.2008, 16:36
#677
Елпанов Евгений

программист
 
Регистрация: 20.12.2005
Москва
Сообщений: 1,439
Отправить сообщение для Елпанов Евгений с помощью Skype™


ну вот, Алексей меня обогнал...
Елпанов Евгений вне форума  
 
Непрочитано 12.09.2008, 16:40
#678
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,405


Результаты замера скорости выполнения:
Код:
[Выделить все]
(BENCHMARK '((convert-26 16380) (get-num 16380) (conv 16380)))
Benchmarking ..................Elapsed milliseconds / relative speed for 32768 iteration(s):

    (CONV 16380)...........1813 / 1.17 <fastest>
    (CONVERT-26 16380).....1953 / 1.09
    (GET-NUM 16380)........2125 / 1 <slowest>

(BENCHMARK '((convert-26 16380) (VL-LIST->STRING (get-num 16380)) (conv 16380)))
Benchmarking ..................Elapsed milliseconds / relative speed for 32768 iteration(s):

    (CONV 16380)..........................1016 / 1.15 <fastest>
    (CONVERT-26 16380)....................1094 / 1.07
    (VL-LIST->STRING (GET-NUM 16380)).....1171 / 1 <slowest>
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 12.09.2008, 16:41
#679
Елпанов Евгений

программист
 
Регистрация: 20.12.2005
Москва
Сообщений: 1,439
Отправить сообщение для Елпанов Евгений с помощью Skype™


зато, моя программа обогнала его программу!
Елпанов Евгений вне форума  
 
Непрочитано 12.09.2008, 17:40
#680
Елпанов Евгений

программист
 
Регистрация: 20.12.2005
Москва
Сообщений: 1,439
Отправить сообщение для Елпанов Евгений с помощью Skype™


Цитата:
Сообщение от Supermax Посмотреть сообщение
Ну и обратный процесс. Перенос данных из лукапа (или лукупа) в эксель.
С попраками VVA.
поправь файлик с программой:
Цитата:
; Выражаю глубочайшую признательность Полещуку Н.Н. и Кулик Анатолию (Kpblc) за внесенный вклад в данную программу.
Кулик Алексей aka kpblc имеет имя Алексей, а не Анатолий...
Елпанов Евгений вне форума  
Закрытая тема
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Динамические блоки > Мои динамические блоки