Schöck
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Как имя VLA-OBJECT преобразовать в текстовую строку? А потом обратно, еще надо)

Как имя VLA-OBJECT преобразовать в текстовую строку? А потом обратно, еще надо)

Ответ
Поиск в этой теме
Непрочитано 10.07.2019, 11:24
Как имя VLA-OBJECT преобразовать в текстовую строку? А потом обратно, еще надо)
OKJI
 
AutoLISP
 
Харьков
Регистрация: 19.06.2018
Сообщений: 101

Здравствуйте дорогие друзья)
Записываю ряд глобальных переменных в реестр для того чтобы можно было их повторно использовать после перезагрузки автокада. Для записи в реестр использую строковые представления данных.
Вот преобразователь данных:
Код:
[Выделить все]
 
(SETQ vl_1(nth 0 li_tab_spe_th))
;; где li_tab_spe_th = (#<VLA-OBJECT IAcadTable 0000000046a6b0b8> #<VLA-OBJECT IAcadTable 0000000056229498>)
(SETQ vs_1 (IF (= 'str (TYPE vl_1)) (STRCAT "v_m_s" vl_1)
		         (IF (= 'nil (TYPE vl_1)) (STRCAT "v_m_n" "")
			 (IF (= 'REAL (TYPE vl_1)) (STRCAT "v_m_r" (RTOS vl_1))
			   (IF (= 'INT (TYPE vl_1)) (STRCAT "v_m_i" (RTOS vl_1))
			     (IF (= 'VLA-OBJECT (TYPE vl_1)) (STRCAT "v_m_j"  (КАКАЯ-ТО_ФУНКЦИЯ vl_1))
			     ""
      ))))))
(VL-REGISTRY-WRITE "HKEY_CURRENT_USER\\autoLisP_sav\\" vs_ind_reg vs_1)
Данные типа:
- строка
- целое число
- вещественное число
- nil
получилось преобразовать в строку
__________________
Вечность это:
 (while T)
Просмотров: 1171
 
Непрочитано 11.07.2019, 11:09
#21
koMon


 
Регистрация: 26.09.2017
Сообщений: 355


заархивировать и приложить архив
koMon вне форума  
 
Непрочитано 11.07.2019, 11:13
#22
trir


 
Регистрация: 18.12.2010
Сообщений: 3,362


Цитата:
Как построить вот такую схему с помощью БД?
кучей разных способов
в БД умудрились запихать карту мира - с твоей схемой точно справятся

Последний раз редактировалось trir, 11.07.2019 в 11:24.
trir вне форума  
 
Непрочитано 11.07.2019, 11:32
#23
Vov.Ka


 
Регистрация: 21.07.2008
Луцьк
Сообщений: 168


Цитата:
Сообщение от OKJI Посмотреть сообщение
Не учил я в школе расширенные данные и словарные записи)))
для твоих целей достаточно функций vlax-ldata-*
Vov.Ka вне форума  
 
Непрочитано 11.07.2019, 12:27
1 | 1 #24
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 6,600


Цитата:
Сообщение от OKJI Посмотреть сообщение
Как построить вот такую схему с помощью БД?
Построить? БД не строит, она (точнее система управления БД - СУБД) хранит, и обрабатывает информацию перед выдачей)

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

Есть таблица данных спецификации:
Цитата:
Таблица данные_спецификации
----------------------------------
ID строки таблицы
Имя_продукта
Тип_продукта
Код_продукта
и дальше те поля, что фигурируют в спецификации
Есть таблица списка примитивов:

Цитата:
Список_примитивов
----------------------------------
ID строки таблицы
Хэндл примитива
ID внешнего ключа, ссылающийся на строки таблицы данных спецификации
Каждый примитив, участвующий в организации информационной модели (молчать про BIM -), заносится в данную таблицу. А в XData примитива заносится ID строки таблицы. Соответственно, надо через события отслеживать удаление/восстановление примитивов для поддержки актуальности таблицы. И кликнув по любому объекту, можно получить из его XData ID строки таблицы, потом - сделав запрос в БД по ID внешнего ключа - информацию из таблицы данных спецификации.


Теперь описываем соединение кабеля на плане:

Цитата:
Таблица_соединений_кабелей
----------------------------------
ID кабеля = ID строки таблицы "Список примитивов"
ID примитива, откуда идет
ID примитива, куда идет
Номер кабеля
И вводим таблицу связей с выносками
Цитата:
Связь с выносками
-----------------------
ID примитива
ID выноски
Вид вывода информации (перечисление - только номер кабеля, или еще и тип кабеля, например)
Выглядит сложновато, но что это дает: физическая связь с элементами чертежа на уровне таблицы "Список примитивов", вся остальная логика работает уже вне чертежа. Можно заменять любой примитив, предварительно сохранив его ID из XData и потом обновив запросом хэндл в таблице "Список_примитивов" - и все связи логические останутся. Метод обновления выноски (привязанной к кабелю) унифицирован, туда передается ID примитива - а остальное метод подгребет сам из БД соответствующим запросом (в завимости от значения "Вид вывода информации"). И т.д. А заодно таблица "Список_примитивов" поможет восстановить XData в чертеже, если "продвинутый" пользователь во время чистки чертежа или рукожопый "программист" очередной надстройки их снесет)

Ну это изначально надо было формировать БД в программе, а не когда уже написана куча кода)
Сергей812 вне форума  
 
Непрочитано 11.07.2019, 17:45
#25
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,788
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Цитата:
Сообщение от Vov.Ka Посмотреть сообщение
Не учил я в школе расширенные данные и словарные записи)))
Хранение пользовательских типов данных. Часть 3.2. ini-файлы.
А так же посмотри описание функций лиспа setcgf и getcfg

Код:
[Выделить все]
(setcfg "AppData/autoLisP_sav/VARNAME1" "VARNAME1_VALUE")
(getcfg "AppData/autoLisP_sav/VARNAME1")
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 11.07.2019, 18:06
#26
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 6,600


Цитата:
Сообщение от VVA Посмотреть сообщение
А так же посмотри описание функций лиспа setcgf и getcfg
тыц

Цитата:
Note: getcfg and setcfg are still available for compatibility, but might be removed in a future release. It is recommended to use the vl-registry-read and vl-registry-write functions as replacements.
Круг замкнулся)
Сергей812 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Как имя VLA-OBJECT преобразовать в текстовую строку? А потом обратно, еще надо)

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как построить среднюю линию между непараллельными? vigold AutoCAD 51 06.02.2019 23:44
На какие нормативные документы надо опереться при осуществлении перехода с 4х полосной дороги в 2х полосный мост и обратно. ИванГрозный Автомобильные и железные дороги, мосты, тоннели и организация движения 0 05.04.2017 11:55
Участок обезвреживания медицинских и биологических отходов надо ли там делать пожарную сигнализацию или надо спринклерную систему пожаротушения Виктор31 Прочее. Отраслевые разделы 1 01.07.2016 10:21
Надо ли считать на прогиб от собственного веса Миксер Металлические конструкции 10 18.09.2015 15:48
Размеры в текстовую строку flashground AutoCAD 6 25.03.2012 18:47